diff options
author | Dmitry Vyukov <dvyukov@google.com> | 2016-04-27 13:34:01 +0000 |
---|---|---|
committer | Dmitry Vyukov <dvyukov@google.com> | 2016-04-27 13:34:01 +0000 |
commit | 3e0315c0448d68f8b75a8cbfe1f72bc32431c38d (patch) | |
tree | 77f731017e3b30bff3491c2e4f81a0e9dde12a73 /compiler-rt/lib/tsan | |
parent | 02e98331c04b9235d4b54c524db4885053c9fce0 (diff) | |
download | bcm5719-llvm-3e0315c0448d68f8b75a8cbfe1f72bc32431c38d.tar.gz bcm5719-llvm-3e0315c0448d68f8b75a8cbfe1f72bc32431c38d.zip |
tsan: make windows shadow mapping a bijection
CheckShadowMapping function started catching that
mem->shadow->mem mapping is not bijection.
Make it bijection.
llvm-svn: 267713
Diffstat (limited to 'compiler-rt/lib/tsan')
-rw-r--r-- | compiler-rt/lib/tsan/rtl/tsan_platform.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/compiler-rt/lib/tsan/rtl/tsan_platform.h b/compiler-rt/lib/tsan/rtl/tsan_platform.h index 3d4abbbbef8..118e01b091a 100644 --- a/compiler-rt/lib/tsan/rtl/tsan_platform.h +++ b/compiler-rt/lib/tsan/rtl/tsan_platform.h @@ -587,7 +587,11 @@ uptr MemToShadowImpl(uptr x) { return (((x) & ~(Mapping::kAppMemMsk | (kShadowCell - 1))) ^ Mapping::kAppMemXor) * kShadowCnt; #else +# ifndef SANITIZER_WINDOWS return ((x & ~(kShadowCell - 1)) * kShadowCnt) | Mapping::kShadowBeg; +# else + return ((x & ~(kShadowCell - 1)) * kShadowCnt) + Mapping::kShadowBeg; +# endif #endif } @@ -662,7 +666,6 @@ uptr ShadowToMemImpl(uptr s) { # ifndef SANITIZER_WINDOWS return (s & ~Mapping::kShadowBeg) / kShadowCnt; # else - // FIXME(dvyukov): this is most likely wrong as the mapping is not bijection. return (s - Mapping::kShadowBeg) / kShadowCnt; # endif // SANITIZER_WINDOWS #endif |