[lsan] [aarch64] Fix calculating TLS area
authorStrahinja Petrovic <strahinja.petrovic@rt-rk.com>
Wed, 28 Sep 2016 10:15:15 +0000 (10:15 +0000)
committerStrahinja Petrovic <strahinja.petrovic@rt-rk.com>
Wed, 28 Sep 2016 10:15:15 +0000 (10:15 +0000)
This patch fixes calculating begin of TLS area on AARCH64.
Differential Revision: https://reviews.llvm.org/D24454

llvm-svn: 282571

compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc

index 000bcfeb9f38f28d4e638a6decb7ba9c8e76838f..eb14c970a7fbcb7cc1abbdbb9b5348e0f514a143 100644 (file)
@@ -298,7 +298,10 @@ uptr ThreadSelf() {
                 rdhwr %0,$29;\
                 .set pop" : "=r" (thread_pointer));
   descr_addr = thread_pointer - kTlsTcbOffset - TlsPreTcbSize();
-# elif defined(__aarch64__) || defined(__s390__)
+# elif defined(__aarch64__)
+  descr_addr = reinterpret_cast<uptr>(__builtin_thread_pointer()) -
+                                      ThreadDescriptorSize();
+# elif defined(__s390__)
   descr_addr = reinterpret_cast<uptr>(__builtin_thread_pointer());
 # elif defined(__powerpc64__)
   // PPC64LE uses TLS variant I. The thread pointer (in GPR 13)