|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4 |
|
| #
8246b2e1 |
| 23-May-2022 |
Mariusz Borsa <[email protected]> |
[Sanitizers][Darwin] Replace SANITIZER_MAC with SANITIZER_APPLE in source files
This is a follow up to [Sanitizers][Darwin] Rename Apple macro SANITIZER_MAC -> SANITIZER_APPLE (D125816)
Performed a
[Sanitizers][Darwin] Replace SANITIZER_MAC with SANITIZER_APPLE in source files
This is a follow up to [Sanitizers][Darwin] Rename Apple macro SANITIZER_MAC -> SANITIZER_APPLE (D125816)
Performed a global search/replace as in title against LLVM sources
Differential Revision: https://reviews.llvm.org/D126263
show more ...
|
|
Revision tags: llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1, llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2, llvmorg-12.0.1-rc1, llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2, llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2, llvmorg-11.0.1-rc1, llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3 |
|
| #
4cefa861 |
| 02-Sep-2020 |
Julian Lettner <[email protected]> |
[TSan][libdispatch] Fix compilation error on Linux
The interceptor for the block variants of the API references the function versions (via `REAL(name##_f)`). On Linux, this accesses the underlying
[TSan][libdispatch] Fix compilation error on Linux
The interceptor for the block variants of the API references the function versions (via `REAL(name##_f)`). On Linux, this accesses the underlying "real pointer", defined by the interceptor macro. So we need to declare interceptors in the right order to avoid undefined symbol compiler error: ``` error: no member named 'real_dispatch_async_and_wait_f' in namespace '__tsan::__interception' ```
rdar://68181542
show more ...
|
| #
c1d25e9a |
| 24-Aug-2020 |
Julian Lettner <[email protected]> |
[TSan][libdispatch] Add interceptors for dispatch_barrier_async_and_wait(), pt. 2
Also intercept these target functions on Linux.
|
| #
fa0a855c |
| 24-Aug-2020 |
Julian Lettner <[email protected]> |
[TSan][libdispatch] Add interceptors for dispatch_barrier_async_and_wait()
Add interceptors for the barrier variants of the "async and wait" dispatch API family.
|
|
Revision tags: llvmorg-11.0.0-rc2 |
|
| #
686fe293 |
| 17-Aug-2020 |
Julian Lettner <[email protected]> |
[TSan][libdispatch] Ensure TSan dylib works on old systems
`dispatch_async_and_wait()` was introduced in macOS 10.14, which is greater than our minimal deployment target. We need to forward declare
[TSan][libdispatch] Ensure TSan dylib works on old systems
`dispatch_async_and_wait()` was introduced in macOS 10.14, which is greater than our minimal deployment target. We need to forward declare it as a "weak import" to ensure we generate a weak reference so the TSan dylib continues to work on older systems. We cannot simply `#include <dispatch.h>` or use the Darwin availability macros since this file is multi-platform.
In addition, we want to prevent building these interceptors at all when building with older SDKs because linking always fails.
Before: ``` ➤ dyldinfo -bind ./lib/clang/12.0.0/lib/darwin/libclang_rt.tsan_osx_dynamic.dylib | grep dispatch_async_and_wait __DATA __interpose 0x000F5E68 pointer 0 libSystem _dispatch_async_and_wait_f ```
After: ``` ➤ dyldinfo -bind ./lib/clang/12.0.0/lib/darwin/libclang_rt.tsan_osx_dynamic.dylib | grep dispatch_async_and_wait __DATA __got 0x000EC0A8 pointer 0 libSystem _dispatch_async_and_wait (weak import) __DATA __interpose 0x000F5E78 pointer 0 libSystem _dispatch_async_and_wait (weak import) ```
This is a follow-up to D85854 and should fix: https://reviews.llvm.org/D85854#2221529
Reviewed By: kubamracek
Differential Revision: https://reviews.llvm.org/D86103
show more ...
|
| #
0c4863a2 |
| 11-Aug-2020 |
Julian Lettner <[email protected]> |
Reland "[TSan][libdispatch] Add interceptors for dispatch_async_and_wait()"
The linker errors caused by this revision have been addressed.
Add interceptors for `dispatch_async_and_wait[_f]()` which
Reland "[TSan][libdispatch] Add interceptors for dispatch_async_and_wait()"
The linker errors caused by this revision have been addressed.
Add interceptors for `dispatch_async_and_wait[_f]()` which was added in macOS 10.14. This pair of functions is similar to `dispatch_sync()`, but does not force a context switch of the queue onto the caller thread when the queue is active (and hence is more efficient). For TSan, we can apply the same semantics as for `dispatch_sync()`.
From the header docs: > Differences with dispatch_sync() > > When the runtime has brought up a thread to invoke the asynchronous > workitems already submitted to the specified queue, that servicing > thread will also be used to execute synchronous work submitted to the > queue with dispatch_async_and_wait(). > > However, if the runtime has not brought up a thread to service the > specified queue (because it has no workitems enqueued, or only > synchronous workitems), then dispatch_async_and_wait() will invoke the > workitem on the calling thread, similar to the behaviour of functions > in the dispatch_sync family.
Additional context: > The guidance is to use `dispatch_async_and_wait()` instead of > `dispatch_sync()` when it is necessary to mix async and sync calls on > the same queue. `dispatch_async_and_wait()` does not guarantee > execution on the caller thread which allows to reduce context switches > when the target queue is active. > https://gist.github.com/tclementdev/6af616354912b0347cdf6db159c37057
rdar://35757961
Reviewed By: kubamracek
Differential Revision: https://reviews.llvm.org/D85854
show more ...
|
| #
501a078c |
| 18-Aug-2020 |
Arthur Eubanks <[email protected]> |
Revert "[TSan][libdispatch] Add interceptors for dispatch_async_and_wait()"
This reverts commit d137db80297f286f3a19eacc63d4a980646da437.
Breaks builds on older SDKs.
|
| #
d137db80 |
| 11-Aug-2020 |
Julian Lettner <[email protected]> |
[TSan][libdispatch] Add interceptors for dispatch_async_and_wait()
Add interceptors for `dispatch_async_and_wait[_f]()` which was added in macOS 10.14. This pair of functions is similar to `dispatc
[TSan][libdispatch] Add interceptors for dispatch_async_and_wait()
Add interceptors for `dispatch_async_and_wait[_f]()` which was added in macOS 10.14. This pair of functions is similar to `dispatch_sync()`, but does not force a context switch of the queue onto the caller thread when the queue is active (and hence is more efficient). For TSan, we can apply the same semantics as for `dispatch_sync()`.
From the header docs: > Differences with dispatch_sync() > > When the runtime has brought up a thread to invoke the asynchronous > workitems already submitted to the specified queue, that servicing > thread will also be used to execute synchronous work submitted to the > queue with dispatch_async_and_wait(). > > However, if the runtime has not brought up a thread to service the > specified queue (because it has no workitems enqueued, or only > synchronous workitems), then dispatch_async_and_wait() will invoke the > workitem on the calling thread, similar to the behaviour of functions > in the dispatch_sync family.
Additional context: > The guidance is to use `dispatch_async_and_wait()` instead of > `dispatch_sync()` when it is necessary to mix async and sync calls on > the same queue. `dispatch_async_and_wait()` does not guarantee > execution on the caller thread which allows to reduce context switches > when the target queue is active. > https://gist.github.com/tclementdev/6af616354912b0347cdf6db159c37057
rdar://35757961
Reviewed By: kubamracek
Differential Revision: https://reviews.llvm.org/D85854
show more ...
|
|
Revision tags: llvmorg-11.0.0-rc1, llvmorg-12-init, llvmorg-10.0.1, llvmorg-10.0.1-rc4, llvmorg-10.0.1-rc3, llvmorg-10.0.1-rc2, llvmorg-10.0.1-rc1, llvmorg-10.0.0, llvmorg-10.0.0-rc6, llvmorg-10.0.0-rc5, llvmorg-10.0.0-rc4, llvmorg-10.0.0-rc3, llvmorg-10.0.0-rc2, llvmorg-10.0.0-rc1, llvmorg-11-init, llvmorg-9.0.1, llvmorg-9.0.1-rc3, llvmorg-9.0.1-rc2, llvmorg-9.0.1-rc1, llvmorg-9.0.0, llvmorg-9.0.0-rc6, llvmorg-9.0.0-rc5, llvmorg-9.0.0-rc4, llvmorg-9.0.0-rc3 |
|
| #
def061e6 |
| 20-Aug-2019 |
Julian Lettner <[email protected]> |
[TSan] Rename file with libdispatch interceptors
llvm-svn: 369314
|