[PATCH] D73973: Revert "[TSan] #include header instead of forward declaring interceptees"

Julian Lettner via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 4 09:26:25 PST 2020


yln created this revision.
yln added reviewers: hans, dmajor.
Herald added projects: Sanitizers, LLVM.
Herald added subscribers: llvm-commits, Sanitizers.

The reverted change silently bumped the minimal macOS SDK required for
building the TSan runtime to SDK 10.12.  Let's ensure release 10 does
not unexpectedly break builders with old SDKs and add proper minimal SDK
checking in CMake for subsequent releases.

This reverts commit 894abb46f891cba2e0ef581650f27f512a7824b4.

Fixes bug #44682.
https://bugs.llvm.org/show_bug.cgi?id=44682


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D73973

Files:
  compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cpp


Index: compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cpp
===================================================================
--- compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cpp
+++ compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cpp
@@ -23,7 +23,6 @@
 #include <errno.h>
 #include <libkern/OSAtomic.h>
 #include <objc/objc-sync.h>
-#include <os/lock.h>
 #include <sys/ucontext.h>
 
 #if defined(__has_include) && __has_include(<xpc/xpc.h>)
@@ -247,7 +246,21 @@
   REAL(os_lock_unlock)(lock);
 }
 
-TSAN_INTERCEPTOR(void, os_unfair_lock_lock, os_unfair_lock_t lock) {
+extern "C" {
+  #define _LOCK_AVAILABILITY \
+    __OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0) \
+    __TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0)
+
+  _LOCK_AVAILABILITY void os_unfair_lock_lock(void *lock);
+  // NOTE: `options` actually has type `os_unfair_lock_options_t` but this
+  // should be ABI compatible.
+  _LOCK_AVAILABILITY void os_unfair_lock_lock_with_options(void *lock,
+                                                           u32 options);
+  _LOCK_AVAILABILITY bool os_unfair_lock_trylock(void *lock);
+  _LOCK_AVAILABILITY void os_unfair_lock_unlock(void *lock);
+}
+
+TSAN_INTERCEPTOR(void, os_unfair_lock_lock, void *lock) {
   if (!cur_thread()->is_inited || cur_thread()->is_dead) {
     return REAL(os_unfair_lock_lock)(lock);
   }
@@ -256,7 +269,7 @@
   Acquire(thr, pc, (uptr)lock);
 }
 
-TSAN_INTERCEPTOR(void, os_unfair_lock_lock_with_options, os_unfair_lock_t lock,
+TSAN_INTERCEPTOR(void, os_unfair_lock_lock_with_options, void *lock,
                  u32 options) {
   if (!cur_thread()->is_inited || cur_thread()->is_dead) {
     return REAL(os_unfair_lock_lock_with_options)(lock, options);
@@ -266,7 +279,7 @@
   Acquire(thr, pc, (uptr)lock);
 }
 
-TSAN_INTERCEPTOR(bool, os_unfair_lock_trylock, os_unfair_lock_t lock) {
+TSAN_INTERCEPTOR(bool, os_unfair_lock_trylock, void *lock) {
   if (!cur_thread()->is_inited || cur_thread()->is_dead) {
     return REAL(os_unfair_lock_trylock)(lock);
   }
@@ -277,7 +290,7 @@
   return result;
 }
 
-TSAN_INTERCEPTOR(void, os_unfair_lock_unlock, os_unfair_lock_t lock) {
+TSAN_INTERCEPTOR(void, os_unfair_lock_unlock, void *lock) {
   if (!cur_thread()->is_inited || cur_thread()->is_dead) {
     return REAL(os_unfair_lock_unlock)(lock);
   }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D73973.242353.patch
Type: text/x-patch
Size: 2299 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200204/43def863/attachment.bin>


More information about the llvm-commits mailing list