|
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, 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 |
|
| #
62914bad |
| 17-Feb-2022 |
Mitch Phillips <[email protected]> |
[ASan] Fix TLS teardown.
TLS teardown is currently broken, as we unpoison the shadow a little bit and to the right of the TLS section, rather than the full TLS section itself. This currently breaks
[ASan] Fix TLS teardown.
TLS teardown is currently broken, as we unpoison the shadow a little bit and to the right of the TLS section, rather than the full TLS section itself. This currently breaks at -O0, and breaks with some upcoming globals code that I have.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D120080
show more ...
|
|
Revision tags: llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2 |
|
| #
ad56941a |
| 07-Dec-2021 |
Kirill Stoimenov <[email protected]> |
[ASan] Renamed SHADOW_XYZ to ASAN_SHADOW_XYZ.
Follow up from D115271.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D115293
|
|
Revision tags: llvmorg-13.0.1-rc1 |
|
| #
bdabf3c3 |
| 15-Nov-2021 |
Dmitry Vyukov <[email protected]> |
asan: don't use thread user_id
asan does not use user_id for anything, so don't pass it to ThreadCreate. Passing a random uninitialized field of AsanThread as user_id does not make much sense anyway
asan: don't use thread user_id
asan does not use user_id for anything, so don't pass it to ThreadCreate. Passing a random uninitialized field of AsanThread as user_id does not make much sense anyway.
Depends on D113921.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D113922
show more ...
|
| #
629b40da |
| 03-Nov-2021 |
Martin Liska <[email protected]> |
Fix -Wformat warnings reported by GCC.
Differential Revision: https://reviews.llvm.org/D113099
|
|
Revision tags: llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1 |
|
| #
56debbf5 |
| 28-Jul-2021 |
Dmitry Vyukov <[email protected]> |
sanitizers: switch BlockingMutex(LINKER_INITIALIZED) to Mutex
Mutex does not support LINKER_INITIALIZED support. As preparation to switching BlockingMutex to Mutex, proactively replace all BlockingM
sanitizers: switch BlockingMutex(LINKER_INITIALIZED) to Mutex
Mutex does not support LINKER_INITIALIZED support. As preparation to switching BlockingMutex to Mutex, proactively replace all BlockingMutex(LINKER_INITIALIZED) to Mutex. All of these are objects with static storage duration and Mutex ctor is constexpr, so it should be equivalent.
Reviewed By: melver
Differential Revision: https://reviews.llvm.org/D106944
show more ...
|
|
Revision tags: llvmorg-14-init |
|
| #
dfd9808b |
| 12-Jul-2021 |
Dmitry Vyukov <[email protected]> |
sanitizer_common: add simpler ThreadRegistry ctor
Currently ThreadRegistry is overcomplicated because of tsan, it needs tid quarantine and reuse counters. Other sanitizers don't need that. It also s
sanitizer_common: add simpler ThreadRegistry ctor
Currently ThreadRegistry is overcomplicated because of tsan, it needs tid quarantine and reuse counters. Other sanitizers don't need that. It also seems that no other sanitizer now needs max number of threads. Asan used to need 2^24 limit, but it does not seem to be needed now. Other sanitizers blindly copy-pasted that without reasons. Lsan also uses quarantine, but I don't see why that may be potentially needed.
Add a ThreadRegistry ctor that does not require any sizes and use it in all sanitizers except for tsan. In preparation for new tsan runtime, which won't need any of these parameters as well.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D105713
show more ...
|
| #
b4a6fa12 |
| 12-Jul-2021 |
Vitaly Buka <[email protected]> |
Revert "sanitizer_common: add simpler ThreadRegistry ctor"
Breaks https://lab.llvm.org/buildbot/#/builders/sanitizer-x86_64-linux-android
This reverts commit 6062c672bc5e560a4c3dc73741f9e82b39d0852
Revert "sanitizer_common: add simpler ThreadRegistry ctor"
Breaks https://lab.llvm.org/buildbot/#/builders/sanitizer-x86_64-linux-android
This reverts commit 6062c672bc5e560a4c3dc73741f9e82b39d08527. This reverts commit 8e489b4b96e31cfb004e03cfa1393c425c504013.
show more ...
|
| #
8e489b4b |
| 09-Jul-2021 |
Dmitry Vyukov <[email protected]> |
sanitizer_common: add simpler ThreadRegistry ctor
Currently ThreadRegistry is overcomplicated because of tsan, it needs tid quarantine and reuse counters. Other sanitizers don't need that. It also s
sanitizer_common: add simpler ThreadRegistry ctor
Currently ThreadRegistry is overcomplicated because of tsan, it needs tid quarantine and reuse counters. Other sanitizers don't need that. It also seems that no other sanitizer now needs max number of threads. Asan used to need 2^24 limit, but it does not seem to be needed now. Other sanitizers blindly copy-pasted that without reasons. Lsan also uses quarantine, but I don't see why that may be potentially needed.
Add a ThreadRegistry ctor that does not require any sizes and use it in all sanitizers except for tsan. In preparation for new tsan runtime, which won't need any of these parameters as well.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D105713
show more ...
|
|
Revision tags: llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3 |
|
| #
249d9b05 |
| 17-Jun-2021 |
Kevin Athey <[email protected]> |
Revert "Remove obsolete call to AsyncSignalSafeLazyInitiFakeStack."
This reverts commit 07481b37961f5b9a670c924367d2ead2e3c32b86.
Differential Revision: https://reviews.llvm.org/D104469
|
|
Revision tags: llvmorg-12.0.1-rc2 |
|
| #
07481b37 |
| 16-Jun-2021 |
Kevin Athey <[email protected]> |
Remove obsolete call to AsyncSignalSafeLazyInitiFakeStack.
Code was originally added for Myriad D46626 which was removed with D104279.
related to: https://github.com/google/sanitizers/issues/1394
Remove obsolete call to AsyncSignalSafeLazyInitiFakeStack.
Code was originally added for Myriad D46626 which was removed with D104279.
related to: https://github.com/google/sanitizers/issues/1394
Reviewed By: vitalybuka, morehouse
Differential Revision: https://reviews.llvm.org/D104419
show more ...
|
| #
6478ef61 |
| 15-Jun-2021 |
Vitaly Buka <[email protected]> |
[asan] Remove Asan, Ubsan support of RTEMS and Myriad
Differential Revision: https://reviews.llvm.org/D104279
|
| #
5b0e5055 |
| 05-Jun-2021 |
Vitaly Buka <[email protected]> |
[NFC][asan] Split fake_stack() into two funcions
|
| #
585b9679 |
| 05-Jun-2021 |
Vitaly Buka <[email protected]> |
[NFC][asan] format ThreadStackContainsAddress
|
|
Revision tags: llvmorg-12.0.1-rc1 |
|
| #
92a3a2dc |
| 28-Apr-2021 |
Dmitry Vyukov <[email protected]> |
sanitizer_common: introduce kInvalidTid/kMainTid
Currently we have a bit of a mess related to tids: - sanitizers re-declare kInvalidTid multiple times - some call it kUnknownTid - implicit assump
sanitizer_common: introduce kInvalidTid/kMainTid
Currently we have a bit of a mess related to tids: - sanitizers re-declare kInvalidTid multiple times - some call it kUnknownTid - implicit assumptions that main tid is 0 - asan/memprof claim their tids need to fit into 24 bits, but this does not seem to be true anymore - inconsistent use of u32/int to store tids
Introduce kInvalidTid/kMainTid in sanitizer_common and use them consistently.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D101428
show more ...
|
| #
afec9538 |
| 15-Apr-2021 |
Fangrui Song <[email protected]> |
[sanitizer] Simplify GetTls with dl_iterate_phdr on Linux and use it on musl/FreeBSD
... so that FreeBSD specific GetTls/glibc specific pthread_self code can be removed. This also helps FreeBSD arm6
[sanitizer] Simplify GetTls with dl_iterate_phdr on Linux and use it on musl/FreeBSD
... so that FreeBSD specific GetTls/glibc specific pthread_self code can be removed. This also helps FreeBSD arm64/powerpc64 which don't have GetTls implementation yet.
GetTls is the range of
* thread control block and optional TLS_PRE_TCB_SIZE * static TLS blocks plus static TLS surplus
On glibc, lsan requires the range to include `pthread::{specific_1stblock,specific}` so that allocations only referenced by `pthread_setspecific` can be scanned.
This patch uses `dl_iterate_phdr` to collect TLS blocks. Find the one with `dlpi_tls_modid==1` as one of the initially loaded module, then find consecutive ranges. The boundaries give us addr and size.
This allows us to drop the glibc internal `_dl_get_tls_static_info` and `InitTlsSize`. However, huge glibc x86-64 binaries with numerous shared objects may observe time complexity penalty, so exclude them for now. Use the simplified method with non-Android Linux for now, but in theory this can be used with *BSD and potentially other ELF OSes.
This removal of RISC-V `__builtin_thread_pointer` makes the code compilable with more compiler versions (added in Clang in 2020-03, added in GCC in 2020-07).
This simplification enables D99566 for TLS Variant I architectures.
Note: as of musl 1.2.2 and FreeBSD 12.2, dlpi_tls_data returned by dl_iterate_phdr is not desired: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=254774 This can be worked around by using `__tls_get_addr({modid,0})` instead of `dlpi_tls_data`. The workaround can be shared with the workaround for glibc<2.25.
This fixes some tests on Alpine Linux x86-64 (musl)
``` test/lsan/Linux/cleanup_in_tsd_destructor.c test/lsan/Linux/fork.cpp test/lsan/Linux/fork_threaded.cpp test/lsan/Linux/use_tls_static.cpp test/lsan/many_tls_keys_thread.cpp
test/msan/tls_reuse.cpp ```
and `test/lsan/TestCases/many_tls_keys_pthread.cpp` on glibc aarch64.
The number of sanitizer test failures does not change on FreeBSD/amd64 12.2.
Differential Revision: https://reviews.llvm.org/D98926
show more ...
|
|
Revision tags: llvmorg-12.0.0, llvmorg-12.0.0-rc5 |
|
| #
0e92cbd6 |
| 05-Apr-2021 |
Nico Weber <[email protected]> |
Revert "[sanitizer] Simplify GetTls with dl_iterate_phdr on Linux"
This reverts commit ec575e3b0a462ff7a3d23d0f39a22147606050de. Still doesn't work, see https://crbug.com/1196037
|
| #
ec575e3b |
| 04-Apr-2021 |
Fangrui Song <[email protected]> |
[sanitizer] Simplify GetTls with dl_iterate_phdr on Linux
This was reverted by f176803ef1f4050a350e01868d64fe09a674d3bf due to Ubuntu 16.04 x86-64 glibc 2.23 problems. This commit additionally calls
[sanitizer] Simplify GetTls with dl_iterate_phdr on Linux
This was reverted by f176803ef1f4050a350e01868d64fe09a674d3bf due to Ubuntu 16.04 x86-64 glibc 2.23 problems. This commit additionally calls `__tls_get_addr({modid,0})` to work around the dlpi_tls_data==NULL issues for glibc<2.25 (https://sourceware.org/bugzilla/show_bug.cgi?id=19826)
GetTls is the range of
* thread control block and optional TLS_PRE_TCB_SIZE * static TLS blocks plus static TLS surplus
On glibc, lsan requires the range to include `pthread::{specific_1stblock,specific}` so that allocations only referenced by `pthread_setspecific` can be scanned.
This patch uses `dl_iterate_phdr` to collect TLS blocks. Find the one with `dlpi_tls_modid==1` as one of the initially loaded module, then find consecutive ranges. The boundaries give us addr and size.
This allows us to drop the glibc internal `_dl_get_tls_static_info` and `InitTlsSize` entirely. Use the simplified method with non-Android Linux for now, but in theory this can be used with *BSD and potentially other ELF OSes.
This simplification enables D99566 for TLS Variant I architectures.
See https://reviews.llvm.org/D93972#2480556 for analysis on GetTls usage across various sanitizers.
Differential Revision: https://reviews.llvm.org/D98926
show more ...
|
| #
f176803e |
| 02-Apr-2021 |
Nico Weber <[email protected]> |
Revert "[sanitizer] Simplify GetTls with dl_iterate_phdr"
This reverts commit 9be8f8b34d9b150cd1811e3556fe9d0cd735ae29. This breaks tsan on Ubuntu 16.04:
$ cat tiny_race.c #include <pthread
Revert "[sanitizer] Simplify GetTls with dl_iterate_phdr"
This reverts commit 9be8f8b34d9b150cd1811e3556fe9d0cd735ae29. This breaks tsan on Ubuntu 16.04:
$ cat tiny_race.c #include <pthread.h> int Global; void *Thread1(void *x) { Global = 42; return x; } int main() { pthread_t t; pthread_create(&t, NULL, Thread1, NULL); Global = 43; pthread_join(t, NULL); return Global; } $ out/gn/bin/clang -fsanitize=thread -g -O1 tiny_race.c --sysroot ~/src/chrome/src/build/linux/debian_sid_amd64-sysroot/ $ docker run -v $PWD:/foo ubuntu:xenial /foo/a.out FATAL: ThreadSanitizer CHECK failed: ../../compiler-rt/lib/tsan/rtl/tsan_platform_linux.cpp:447 "((thr_beg)) >= ((tls_addr))" (0x7fddd76beb80, 0xfffffffffffff980) #0 <null> <null> (a.out+0x4960b6) #1 <null> <null> (a.out+0x4b677f) #2 <null> <null> (a.out+0x49cf94) #3 <null> <null> (a.out+0x499bd2) #4 <null> <null> (a.out+0x42aaf1) #5 <null> <null> (libpthread.so.0+0x76b9) #6 <null> <null> (libc.so.6+0x1074dc)
(Get the sysroot from here: https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain/500976182686961e34974ea7bdc0a21fca32be06/debian_sid_amd64_sysroot.tar.xz)
Also reverts follow-on commits: This reverts commit 58c62fd9768594ec8dd57e8320ba2396bf8b87e5. This reverts commit 31e541e37587100a5b21378380f54c028fda2d04.
show more ...
|
|
Revision tags: llvmorg-12.0.0-rc4 |
|
| #
9be8f8b3 |
| 26-Mar-2021 |
Fangrui Song <[email protected]> |
[sanitizer] Simplify GetTls with dl_iterate_phdr
GetTls is the range of
* thread control block and optional TLS_PRE_TCB_SIZE * static TLS blocks plus static TLS surplus
On glibc, lsan requires the
[sanitizer] Simplify GetTls with dl_iterate_phdr
GetTls is the range of
* thread control block and optional TLS_PRE_TCB_SIZE * static TLS blocks plus static TLS surplus
On glibc, lsan requires the range to include `pthread::{specific_1stblock,specific}` so that allocations only referenced by `pthread_setspecific` can be scanned.
This patch uses `dl_iterate_phdr` to collect TLS ranges. Find the one with `dlpi_tls_modid==1` as one of the initially loaded module, then find consecutive ranges. The boundaries give us addr and size.
This allows us to drop the glibc internal `_dl_get_tls_static_info` and `InitTlsSize` entirely. Use the simplified method with non-Android Linux for now, but in theory this can be used with *BSD and potentially other ELF OSes.
In the future, we can move `ThreadDescriptorSize` code to lsan (and consider intercepting `pthread_setspecific`) to avoid hacks in generic code.
See https://reviews.llvm.org/D93972#2480556 for analysis on GetTls usage across various sanitizers.
Differential Revision: https://reviews.llvm.org/D98926
show more ...
|
|
Revision tags: llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2, llvmorg-11.1.0, llvmorg-11.1.0-rc3 |
|
| #
9da05cf6 |
| 30-Jan-2021 |
Vitaly Buka <[email protected]> |
[asan] Fix pthread_create interceptor
AsanThread::Destroy implementation expected to be called on child thread.
I missed authors concern regarding this reviewing D95184.
Reviewed By: delcypher
Di
[asan] Fix pthread_create interceptor
AsanThread::Destroy implementation expected to be called on child thread.
I missed authors concern regarding this reviewing D95184.
Reviewed By: delcypher
Differential Revision: https://reviews.llvm.org/D95731
show more ...
|
|
Revision tags: llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1 |
|
| #
596d534a |
| 07-Jan-2021 |
Dan Liew <[email protected]> |
[ASan] Stop blocking child thread progress from parent thread in `pthread_create` interceptor.
Previously in ASan's `pthread_create` interceptor we would block in the `pthread_create` interceptor wa
[ASan] Stop blocking child thread progress from parent thread in `pthread_create` interceptor.
Previously in ASan's `pthread_create` interceptor we would block in the `pthread_create` interceptor waiting for the child thread to start.
Unfortunately this has bad performance characteristics because the OS scheduler doesn't know the relationship between the parent and child thread (i.e. the parent thread cannot make progress until the child thread makes progress) and may make the wrong scheduling decision which stalls progress.
It turns out that ASan didn't use to block in this interceptor but was changed to do so to try to address http://llvm.org/bugs/show_bug.cgi?id=21621/.
In that bug the problem being addressed was a LeakSanitizer false positive. That bug concerns a heap object being passed as `arg` to `pthread_create`. If:
* The calling thread loses a live reference to the object (e.g. `pthread_create` finishes and the thread no longer has a live reference to the object). * Leak checking is triggered. * The child thread has not yet started (once it starts it will have a live reference).
then the heap object will incorrectly appear to be leaked.
This bug is covered by the `lsan/TestCases/leak_check_before_thread_started.cpp` test case.
In b029c5101fb49b3577a1c322f42ef9fc616f25bf ASan was changed to block in `pthread_create()` until the child thread starts so that `arg` is kept alive for the purposes of leaking check.
While this change "works" its problematic due to the performance problems it causes. The change is also completely unnecessary if leak checking is disabled (via detect_leaks runtime option or CAN_SANITIZE_LEAKS compile time config).
This patch does two things:
1. Takes a different approach to solving the leak false positive by making LSan's leak checking mechanism treat the `arg` pointer of created but not started threads as reachable. This is done by implementing the `ForEachRegisteredThreadContextCb` callback for ASan.
2. Removes the blocking behaviour in the ASan `pthread_create` interceptor.
rdar://problem/63537240
Differential Revision: https://reviews.llvm.org/D95184
show more ...
|
|
Revision tags: llvmorg-11.0.1, llvmorg-11.0.1-rc2, llvmorg-11.0.1-rc1 |
|
| #
1e09dbb6 |
| 24-Oct-2020 |
Drew Fisher <[email protected]> |
[asan] Fix stack-use-after-free checks on non-main thread on Fuchsia
While some platforms call `AsanThread::Init()` from the context of the thread being started, others (like Fuchsia) call `AsanThre
[asan] Fix stack-use-after-free checks on non-main thread on Fuchsia
While some platforms call `AsanThread::Init()` from the context of the thread being started, others (like Fuchsia) call `AsanThread::Init()` from the context of the thread spawning a child. Since `AsyncSignalSafeLazyInitFakeStack` writes to a thread-local, we need to avoid calling it from the spawning thread on Fuchsia. Skipping the call here on Fuchsia is fine; it'll get called from the new thread lazily on first attempted access.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D89607
show more ...
|
| #
29480c6c |
| 24-Oct-2020 |
Drew Fisher <[email protected]> |
[asan][fuchsia] set current thread before reading thread state
When enabling stack use-after-free detection, we discovered that we read the thread ID on the main thread while it is still set to 2^24
[asan][fuchsia] set current thread before reading thread state
When enabling stack use-after-free detection, we discovered that we read the thread ID on the main thread while it is still set to 2^24-1.
This patch moves our call to AsanThread::Init() out of CreateAsanThread, so that we can call SetCurrentThread first on the main thread.
Reviewed By: mcgrathr
Differential Revision: https://reviews.llvm.org/D89606
show more ...
|
| #
ad2be02a |
| 16-Oct-2020 |
Martin Liska <[email protected]> |
ASAN: Support detect_invalid_pointer_pairs=1 with detect_stack_use_after_return=1
Do not crash when AsanThread::GetStackVariableShadowStart does not find a variable for a pointer on a shadow stack.
ASAN: Support detect_invalid_pointer_pairs=1 with detect_stack_use_after_return=1
Do not crash when AsanThread::GetStackVariableShadowStart does not find a variable for a pointer on a shadow stack.
Differential Revision: https://reviews.llvm.org/D89552
show more ...
|
|
Revision tags: llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3, llvmorg-11.0.0-rc2, 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 |
|
| #
90a10f00 |
| 28-Jan-2020 |
Roland McGrath <[email protected]> |
[lsan] Support LeakSanitizer runtime on Fuchsia
Support LeakSanitizer runtime on Fuchsia.
Patch By: mcgrathr
Differential Revision: https://reviews.llvm.org/D72887
|