forked from OSchip/llvm-project
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
This commit is contained in:
parent
22a03e435a
commit
693163e723
|
|
@ -660,8 +660,13 @@ u32 *MemToMetaImpl(uptr x) {
|
||||||
return (u32*)(((((x) & ~(Mapping::kAppMemMsk | (kMetaShadowCell - 1)))) /
|
return (u32*)(((((x) & ~(Mapping::kAppMemMsk | (kMetaShadowCell - 1)))) /
|
||||||
kMetaShadowCell * kMetaShadowSize) | Mapping::kMetaShadowBeg);
|
kMetaShadowCell * kMetaShadowSize) | Mapping::kMetaShadowBeg);
|
||||||
#else
|
#else
|
||||||
|
# ifndef SANITIZER_WINDOWS
|
||||||
return (u32*)(((x & ~(kMetaShadowCell - 1)) / \
|
return (u32*)(((x & ~(kMetaShadowCell - 1)) / \
|
||||||
kMetaShadowCell * kMetaShadowSize) | Mapping::kMetaShadowBeg);
|
kMetaShadowCell * kMetaShadowSize) | Mapping::kMetaShadowBeg);
|
||||||
|
# else
|
||||||
|
return (u32*)(((x & ~(kMetaShadowCell - 1)) / \
|
||||||
|
kMetaShadowCell * kMetaShadowSize) + Mapping::kMetaShadowBeg);
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue