diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2018-08-02 17:06:03 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2018-08-02 17:06:03 +0000 |
commit | 68dc77c284115e8f103290474b3b9e35a3906c53 (patch) | |
tree | 6cf1bb878a12790567a211e3524c30bdb693fd80 /contrib/compiler-rt/lib/asan/asan_interceptors_memintrinsics.h | |
parent | 42cc09696338406730ddb31d83d0eef9f6ade00d (diff) | |
parent | 93c1b73a09a52d4a265f683bf1954b08bb430049 (diff) | |
download | src-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.h | 25 |
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 |