diff options
author | Alexey Samsonov <samsonov@google.com> | 2012-08-09 08:32:33 +0000 |
---|---|---|
committer | Alexey Samsonov <samsonov@google.com> | 2012-08-09 08:32:33 +0000 |
commit | c0ff933d8b25efd7bed663b07761221d671dcec5 (patch) | |
tree | 6675a419e2e5ad922d195c19b840938c8581e166 /compiler-rt | |
parent | b4b316fc5b8594e52ea7c9e30f0438eae8c61b67 (diff) | |
download | bcm5719-llvm-c0ff933d8b25efd7bed663b07761221d671dcec5.tar.gz bcm5719-llvm-c0ff933d8b25efd7bed663b07761221d671dcec5.zip |
[ASan] Move error reporting code away from file with interceptors
llvm-svn: 161570
Diffstat (limited to 'compiler-rt')
-rw-r--r-- | compiler-rt/lib/asan/asan_interceptors.cc | 9 | ||||
-rw-r--r-- | compiler-rt/lib/asan/asan_report.cc | 9 | ||||
-rw-r--r-- | compiler-rt/lib/asan/asan_report.h | 3 |
3 files changed, 16 insertions, 5 deletions
diff --git a/compiler-rt/lib/asan/asan_interceptors.cc b/compiler-rt/lib/asan/asan_interceptors.cc index ec03fff0216..59903f75839 100644 --- a/compiler-rt/lib/asan/asan_interceptors.cc +++ b/compiler-rt/lib/asan/asan_interceptors.cc @@ -17,6 +17,7 @@ #include "asan_interface.h" #include "asan_internal.h" #include "asan_mapping.h" +#include "asan_report.h" #include "asan_stack.h" #include "asan_stats.h" #include "asan_thread_registry.h" @@ -190,11 +191,9 @@ static inline bool RangesOverlap(const char *offset1, uptr length1, const char *offset1 = (const char*)_offset1; \ const char *offset2 = (const char*)_offset2; \ if (RangesOverlap(offset1, length1, offset2, length2)) { \ - AsanReport("ERROR: AddressSanitizer %s-param-overlap: " \ - "memory ranges [%p,%p) and [%p, %p) overlap\n", \ - name, offset1, offset1 + length1, offset2, offset2 + length2); \ - PRINT_CURRENT_STACK(); \ - ShowStatsAndAbort(); \ + GET_STACK_TRACE_HERE(kStackTraceMax); \ + ReportStringFunctionMemoryRangesOverlap(name, offset1, length1, \ + offset2, length2, &stack); \ } \ } while (0) diff --git a/compiler-rt/lib/asan/asan_report.cc b/compiler-rt/lib/asan/asan_report.cc index 05d938680d3..bf6c7d3314b 100644 --- a/compiler-rt/lib/asan/asan_report.cc +++ b/compiler-rt/lib/asan/asan_report.cc @@ -62,5 +62,14 @@ void ReportAsanGetAllocatedSizeNotOwned(uptr addr, AsanStackTrace *stack) { ShowStatsAndAbort(); } +void ReportStringFunctionMemoryRangesOverlap( + const char *function, const char *offset1, uptr length1, + const char *offset2, uptr length2, AsanStackTrace *stack) { + AsanReport("ERROR: AddressSanitizer %s-param-overlap: " + "memory ranges [%p,%p) and [%p, %p) overlap\n", \ + function, offset1, offset1 + length1, offset2, offset2 + length2); + stack->PrintStack(); + ShowStatsAndAbort(); +} } // namespace __asan diff --git a/compiler-rt/lib/asan/asan_report.h b/compiler-rt/lib/asan/asan_report.h index 952a4ba6034..5e0e2de1ed4 100644 --- a/compiler-rt/lib/asan/asan_report.h +++ b/compiler-rt/lib/asan/asan_report.h @@ -24,5 +24,8 @@ void NORETURN ReportMallocUsableSizeNotOwned(uptr addr, AsanStackTrace *stack); void NORETURN ReportAsanGetAllocatedSizeNotOwned(uptr addr, AsanStackTrace *stack); +void NORETURN ReportStringFunctionMemoryRangesOverlap( + const char *function, const char *offset1, uptr length1, + const char *offset2, uptr length2, AsanStackTrace *stack); } // namespace __asan |