summaryrefslogtreecommitdiff
path: root/lib/sanitizer_common/sanitizer_linux_libcdep.cc
diff options
context:
space:
mode:
authorStrahinja Petrovic <strahinja.petrovic@rt-rk.com>2016-09-28 10:15:15 +0000
committerStrahinja Petrovic <strahinja.petrovic@rt-rk.com>2016-09-28 10:15:15 +0000
commit6eef723e08d4d943cbe9221c0709404e194e20f9 (patch)
tree4190efbeb1b90eda9a414707eb9e21e2cc11820d /lib/sanitizer_common/sanitizer_linux_libcdep.cc
parent9eb9daae69171e9795f128ef5fb9980ce55fe4d8 (diff)
[lsan] [aarch64] Fix calculating TLS area
This patch fixes calculating begin of TLS area on AARCH64. Differential Revision: https://reviews.llvm.org/D24454 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@282571 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/sanitizer_common/sanitizer_linux_libcdep.cc')
-rw-r--r--lib/sanitizer_common/sanitizer_linux_libcdep.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/sanitizer_common/sanitizer_linux_libcdep.cc b/lib/sanitizer_common/sanitizer_linux_libcdep.cc
index 000bcfeb9..eb14c970a 100644
--- a/lib/sanitizer_common/sanitizer_linux_libcdep.cc
+++ b/lib/sanitizer_common/sanitizer_linux_libcdep.cc
@@ -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)