[compiler-rt] r200462 - [asan] disable __tls_get_addr interceptor while I am investigating why it causes trouble; few more debugging

Kostya Serebryany kcc at google.com
Thu Jan 30 01:00:42 PST 2014


Author: kcc
Date: Thu Jan 30 03:00:42 2014
New Revision: 200462

URL: http://llvm.org/viewvc/llvm-project?rev=200462&view=rev
Log:
[asan] disable __tls_get_addr interceptor while I am investigating why it causes trouble; few more debugging 

Modified:
    compiler-rt/trunk/lib/asan/lit_tests/TestCases/Linux/stress_dtls.c
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_interceptors.h
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_tls_get_addr.cc

Modified: compiler-rt/trunk/lib/asan/lit_tests/TestCases/Linux/stress_dtls.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/lit_tests/TestCases/Linux/stress_dtls.c?rev=200462&r1=200461&r2=200462&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/lit_tests/TestCases/Linux/stress_dtls.c (original)
+++ compiler-rt/trunk/lib/asan/lit_tests/TestCases/Linux/stress_dtls.c Thu Jan 30 03:00:42 2014
@@ -1,3 +1,5 @@
+// Currently broken...
+// XFAIL: *
 // REQUIRES: asan-64-bits
 // Stress test dynamic TLS + dlopen + threads.
 //
@@ -95,7 +97,10 @@ int main(int argc, char *argv[]) {
   return 0;
 }
 #else  // SO_NAME
-__thread void *huge_thread_local_array[1 << 17];
+#ifndef DTLS_SIZE
+# define DTLS_SIZE (1 << 17)
+#endif
+__thread void *huge_thread_local_array[DTLS_SIZE];
 void **SO_NAME() {
   return &huge_thread_local_array[0];
 }

Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_interceptors.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_interceptors.h?rev=200462&r1=200461&r2=200462&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_interceptors.h (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_interceptors.h Thu Jan 30 03:00:42 2014
@@ -177,6 +177,6 @@
 #define SANITIZER_INTERCEPT_PTHREAD_COND SI_NOT_WINDOWS
 #define SANITIZER_INTERCEPT_PTHREAD_SETNAME_NP SI_LINUX_NOT_ANDROID
 
-#define SANITIZER_INTERCEPT_TLS_GET_ADDR SI_LINUX_NOT_ANDROID
+#define SANITIZER_INTERCEPT_TLS_GET_ADDR 0  // SI_LINUX_NOT_ANDROID
 
 #endif  // #ifndef SANITIZER_PLATFORM_INTERCEPTORS_H

Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_tls_get_addr.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_tls_get_addr.cc?rev=200462&r1=200461&r2=200462&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_tls_get_addr.cc (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_tls_get_addr.cc Thu Jan 30 03:00:42 2014
@@ -74,8 +74,8 @@ void DTLS_on_tls_get_addr(void *arg_void
     return;
   uptr tls_size = 0;
   uptr tls_beg = reinterpret_cast<uptr>(res) - arg->offset;
-  VPrintf(2, "__tls_get_addr: %p {%p,%p} => %p; tls_beg: %p\n", arg,
-          arg->dso_id, arg->offset, res, tls_beg);
+  VPrintf(2, "__tls_get_addr: %p {%p,%p} => %p; tls_beg: %p; sp: %p\n", arg,
+          arg->dso_id, arg->offset, res, tls_beg, &tls_beg);
   if (dtls.last_memalign_ptr == tls_beg) {
     tls_size = dtls.last_memalign_size;
     VPrintf(2, "__tls_get_addr: glibc <=2.18 suspected; tls={%p,%p}\n", tls_beg,





More information about the llvm-commits mailing list