aboutsummaryrefslogtreecommitdiff
path: root/contrib/compiler-rt/lib/asan/asan_interceptors_memintrinsics.h
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2018-08-02 17:06:03 +0000
committerDimitry Andric <dim@FreeBSD.org>2018-08-02 17:06:03 +0000
commit68dc77c284115e8f103290474b3b9e35a3906c53 (patch)
tree6cf1bb878a12790567a211e3524c30bdb693fd80 /contrib/compiler-rt/lib/asan/asan_interceptors_memintrinsics.h
parent42cc09696338406730ddb31d83d0eef9f6ade00d (diff)
parent93c1b73a09a52d4a265f683bf1954b08bb430049 (diff)
downloadsrc-68dc77c284115e8f103290474b3b9e35a3906c53.tar.gz
src-68dc77c284115e8f103290474b3b9e35a3906c53.zip
Merge compiler-rt trunk r338150, and resolve conflicts.
Notes
Notes: svn path=/projects/clang700-import/; revision=337136
Diffstat (limited to 'contrib/compiler-rt/lib/asan/asan_interceptors_memintrinsics.h')
-rw-r--r--contrib/compiler-rt/lib/asan/asan_interceptors_memintrinsics.h25
1 files changed, 16 insertions, 9 deletions
diff --git a/contrib/compiler-rt/lib/asan/asan_interceptors_memintrinsics.h b/contrib/compiler-rt/lib/asan/asan_interceptors_memintrinsics.h
index 5a8339a23e97..a071e8f684a0 100644
--- a/contrib/compiler-rt/lib/asan/asan_interceptors_memintrinsics.h
+++ b/contrib/compiler-rt/lib/asan/asan_interceptors_memintrinsics.h
@@ -133,15 +133,22 @@ static inline bool RangesOverlap(const char *offset1, uptr length1,
const char *offset2, uptr length2) {
return !((offset1 + length1 <= offset2) || (offset2 + length2 <= offset1));
}
-#define CHECK_RANGES_OVERLAP(name, _offset1, length1, _offset2, length2) do { \
- const char *offset1 = (const char*)_offset1; \
- const char *offset2 = (const char*)_offset2; \
- if (RangesOverlap(offset1, length1, offset2, length2)) { \
- GET_STACK_TRACE_FATAL_HERE; \
- ReportStringFunctionMemoryRangesOverlap(name, offset1, length1, \
- offset2, length2, &stack); \
- } \
-} while (0)
+#define CHECK_RANGES_OVERLAP(name, _offset1, length1, _offset2, length2) \
+ do { \
+ const char *offset1 = (const char *)_offset1; \
+ const char *offset2 = (const char *)_offset2; \
+ if (RangesOverlap(offset1, length1, offset2, length2)) { \
+ GET_STACK_TRACE_FATAL_HERE; \
+ bool suppressed = IsInterceptorSuppressed(name); \
+ if (!suppressed && HaveStackTraceBasedSuppressions()) { \
+ suppressed = IsStackTraceSuppressed(&stack); \
+ } \
+ if (!suppressed) { \
+ ReportStringFunctionMemoryRangesOverlap(name, offset1, length1, \
+ offset2, length2, &stack); \
+ } \
+ } \
+ } while (0)
} // namespace __asan