tsan: Implement pthread_exit() interceptor for Thread sanitizer
authorVitaly Buka <vitalybuka@google.com>
Sat, 9 Feb 2019 22:08:31 +0000 (22:08 +0000)
committerVitaly Buka <vitalybuka@google.com>
Sat, 9 Feb 2019 22:08:31 +0000 (22:08 +0000)
This change is preparation for fiber support.

Author: yuri (Yuri Per)
Reviewed in: https://reviews.llvm.org/D57876
Context: https://reviews.llvm.org/D54889

> llvm-svn: 353385

llvm-svn: 353627

compiler-rt/lib/tsan/rtl/tsan_interceptors.cc

index 2a642a1..72ca5ae 100644 (file)
@@ -1050,6 +1050,13 @@ TSAN_INTERCEPTOR(int, pthread_detach, void *th) {
   return res;
 }
 
+TSAN_INTERCEPTOR(void, pthread_exit, void *retval) {
+  {
+    SCOPED_INTERCEPTOR_RAW(pthread_exit, retval);
+  }
+  REAL(pthread_exit)(retval);
+}
+
 #if SANITIZER_LINUX
 TSAN_INTERCEPTOR(int, pthread_tryjoin_np, void *th, void **ret) {
   SCOPED_TSAN_INTERCEPTOR(pthread_tryjoin_np, th, ret);
@@ -2664,6 +2671,7 @@ void InitializeInterceptors() {
   TSAN_INTERCEPT(pthread_create);
   TSAN_INTERCEPT(pthread_join);
   TSAN_INTERCEPT(pthread_detach);
+  TSAN_INTERCEPT(pthread_exit);
   #if SANITIZER_LINUX
   TSAN_INTERCEPT(pthread_tryjoin_np);
   TSAN_INTERCEPT(pthread_timedjoin_np);