tsan: fix cur_thread alignment
authorDmitry Vyukov <dvyukov@google.com>
Tue, 28 Sep 2021 14:43:28 +0000 (16:43 +0200)
committerDmitry Vyukov <dvyukov@google.com>
Tue, 28 Sep 2021 14:49:44 +0000 (16:49 +0200)
Commit 354ded67b3 ("tsan: align ThreadState to cache line")
did an incomplete thing. It marked ThreadState as cache line
aligned, but the thread local ThreadState instance is declared
as an aligned char array with hard-coded 64-byte alignment.
On PowerPC cache line size is 128 bytes, so the hard-coded
64-byte alignment is not enough.
Use cache line alignment consistently.

Differential Revision: https://reviews.llvm.org/D110629

compiler-rt/lib/tsan/rtl/tsan_rtl.cpp

index d679282..ea7ff56 100644 (file)
@@ -43,9 +43,10 @@ int (*on_finalize)(int);
 
 #if !SANITIZER_GO && !SANITIZER_MAC
 __attribute__((tls_model("initial-exec")))
-THREADLOCAL char cur_thread_placeholder[sizeof(ThreadState)] ALIGNED(64);
+THREADLOCAL char cur_thread_placeholder[sizeof(ThreadState)] ALIGNED(
+    SANITIZER_CACHE_LINE_SIZE);
 #endif
-static char ctx_placeholder[sizeof(Context)] ALIGNED(64);
+static char ctx_placeholder[sizeof(Context)] ALIGNED(SANITIZER_CACHE_LINE_SIZE);
 Context *ctx;
 
 // Can be overriden by a front-end.