summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2016-10-28 17:25:27 +0000
committerDmitry Vyukov <dvyukov@google.com>2016-10-28 17:25:27 +0000
commit693163e72364e96ee735bd1a477e162c6f52668c (patch)
tree8d56cbeae80b1594025f4314b57a0754d7860186
parent22a03e435aa73a7b8c25713bd1c64da315b4e9df (diff)
downloadbcm5719-llvm-693163e72364e96ee735bd1a477e162c6f52668c.tar.gz
bcm5719-llvm-693163e72364e96ee735bd1a477e162c6f52668c.zip
tsan: fix windows meta mapping
Currently windows fails on startup with: CHECK failed: gotsan.cc:3077 "(((m - prev_m) / kMetaShadowSize)) == (((p - prev) / kMetaShadowCell))" (0x3ffffffeffffff7e, 0x6ffffff7e) Make MemToMeta do the same MemToShadow does on windows: add offset instead of or'ing it. llvm-svn: 285420
-rw-r--r--compiler-rt/lib/tsan/rtl/tsan_platform.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/compiler-rt/lib/tsan/rtl/tsan_platform.h b/compiler-rt/lib/tsan/rtl/tsan_platform.h
index 31837c6fc8d..e6c261539b7 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_platform.h
+++ b/compiler-rt/lib/tsan/rtl/tsan_platform.h
@@ -660,8 +660,13 @@ u32 *MemToMetaImpl(uptr x) {
return (u32*)(((((x) & ~(Mapping::kAppMemMsk | (kMetaShadowCell - 1)))) /
kMetaShadowCell * kMetaShadowSize) | Mapping::kMetaShadowBeg);
#else
+# ifndef SANITIZER_WINDOWS
return (u32*)(((x & ~(kMetaShadowCell - 1)) / \
kMetaShadowCell * kMetaShadowSize) | Mapping::kMetaShadowBeg);
+# else
+ return (u32*)(((x & ~(kMetaShadowCell - 1)) / \
+ kMetaShadowCell * kMetaShadowSize) + Mapping::kMetaShadowBeg);
+# endif
#endif
}
OpenPOWER on IntegriCloud