[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