[PATCH] A fix for sanitizers' TLS support on FreeBSD

Alexey Samsonov samsonov at google.com
Tue Mar 18 01:37:31 PDT 2014



================
Comment at: lib/sanitizer_common/sanitizer_linux_libcdep.cc:392
@@ +391,3 @@
+  uptr tls;
+  GetTls(&tls, &g_tls_size);
+#elif !SANITIZER_ANDROID
----------------
On Linux we assume that TLS size is equal for all threads and store it in g_tls_size.

On FreeBSD you calculate it every time in GetTls(...) function using ThreadSelfSegbase(). If it may be different in different threads, then g_tls_size doesn't make any sense, and you should call GetTls(...) in GetTlsSize(). If it is the same in all threads, then you should cache it in g_tls_size in the same way as we do on Linux.


http://llvm-reviews.chandlerc.com/D3099



More information about the llvm-commits mailing list