summaryrefslogtreecommitdiffstats
path: root/compiler-rt
diff options
context:
space:
mode:
authorAlexey Samsonov <samsonov@google.com>2012-08-09 08:32:33 +0000
committerAlexey Samsonov <samsonov@google.com>2012-08-09 08:32:33 +0000
commitc0ff933d8b25efd7bed663b07761221d671dcec5 (patch)
tree6675a419e2e5ad922d195c19b840938c8581e166 /compiler-rt
parentb4b316fc5b8594e52ea7c9e30f0438eae8c61b67 (diff)
downloadbcm5719-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.cc9
-rw-r--r--compiler-rt/lib/asan/asan_report.cc9
-rw-r--r--compiler-rt/lib/asan/asan_report.h3
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
OpenPOWER on IntegriCloud