[compiler-rt] [TSan] Clarify and enforce shadow end alignment (PR #144648)
Thurston Dang via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 25 09:23:27 PDT 2025
================
@@ -688,16 +688,17 @@ void MemoryAccessRangeT(ThreadState* thr, uptr pc, uptr addr, uptr size) {
DCHECK(IsShadowMem(shadow_mem));
}
- RawShadow* shadow_mem_end = reinterpret_cast<RawShadow*>(
- reinterpret_cast<uptr>(shadow_mem) + size * kShadowMultiplier - 1);
- if (!IsShadowMem(shadow_mem_end)) {
- Printf("Bad shadow end addr: %p (%p)\n", shadow_mem_end,
+ uptr size1 =
+ (RoundUpTo(addr + size, kShadowCell) - RoundDownTo(addr, kShadowCell));
+ RawShadow* shadow_mem_end = shadow_mem + size1 / kShadowCell * kShadowCnt;
+ if (!IsShadowMem(shadow_mem_end - 1)) {
+ Printf("Bad shadow end addr: %p (%p)\n", shadow_mem_end - 1,
----------------
thurstond wrote:
Nit: please add size1 to one of the Printfs
https://github.com/llvm/llvm-project/pull/144648
More information about the llvm-commits
mailing list