asan_report.h revision 2d1fdb26e458c4ddc04155c1d421bced3ba90cd0
1//===-- asan_report.h -------------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file is a part of AddressSanitizer, an address sanity checker. 11// 12// ASan-private header for error reporting functions. 13//===----------------------------------------------------------------------===// 14 15#include "asan_allocator.h" 16#include "asan_internal.h" 17#include "asan_thread.h" 18 19namespace __asan { 20 21// The following functions prints address description depending 22// on the memory type (shadow/heap/stack/global). 23void DescribeHeapAddress(uptr addr, uptr access_size); 24bool DescribeAddressIfGlobal(uptr addr, uptr access_size); 25bool DescribeAddressRelativeToGlobal(uptr addr, uptr access_size, 26 const __asan_global &g); 27bool DescribeAddressIfShadow(uptr addr); 28bool DescribeAddressIfStack(uptr addr, uptr access_size); 29// Determines memory type on its own. 30void DescribeAddress(uptr addr, uptr access_size); 31 32void DescribeThread(AsanThreadContext *context); 33 34// Different kinds of error reports. 35void NORETURN 36 ReportStackOverflow(uptr pc, uptr sp, uptr bp, void *context, uptr addr); 37void NORETURN 38 ReportSIGSEGV(uptr pc, uptr sp, uptr bp, void *context, uptr addr); 39void NORETURN ReportDoubleFree(uptr addr, StackTrace *free_stack); 40void NORETURN ReportFreeNotMalloced(uptr addr, StackTrace *free_stack); 41void NORETURN ReportAllocTypeMismatch(uptr addr, StackTrace *free_stack, 42 AllocType alloc_type, 43 AllocType dealloc_type); 44void NORETURN ReportMallocUsableSizeNotOwned(uptr addr, 45 StackTrace *stack); 46void NORETURN ReportAsanGetAllocatedSizeNotOwned(uptr addr, 47 StackTrace *stack); 48void NORETURN ReportStringFunctionMemoryRangesOverlap( 49 const char *function, const char *offset1, uptr length1, 50 const char *offset2, uptr length2, StackTrace *stack); 51void NORETURN 52ReportStringFunctionSizeOverflow(uptr offset, uptr size, StackTrace *stack); 53void NORETURN 54ReportBadParamsToAnnotateContiguousContainer(uptr beg, uptr end, uptr old_mid, 55 uptr new_mid, StackTrace *stack); 56 57void NORETURN 58ReportODRViolation(const __asan_global *g1, const __asan_global *g2); 59 60// Mac-specific errors and warnings. 61void WarnMacFreeUnallocated( 62 uptr addr, uptr zone_ptr, const char *zone_name, StackTrace *stack); 63void NORETURN ReportMacMzReallocUnknown( 64 uptr addr, uptr zone_ptr, const char *zone_name, StackTrace *stack); 65void NORETURN ReportMacCfReallocUnknown( 66 uptr addr, uptr zone_ptr, const char *zone_name, StackTrace *stack); 67 68} // namespace __asan 69