forked from OSchip/llvm-project
![]() Detailed motivation here: https://docs.google.com/document/d/1xUNo5ovPKJMYxitiHUQVRxGI3iUmspI51Jm4w8puMwo check-asan (with LSAN enabled) and check-lsan are currently broken on recent macOS versions, due to pervasive false positives. Whenever the Objective-C runtime realizes a class, it allocates data for it, then stores that data with flags in the low bits. This means LSAN can not recognize it as a pointer while scanning. This change checks every potential pointer on Apple platforms, and if the high bit is set, attempts to extract a pointer by masking out the high bit and flags. This is ugly, but it's also the best approach I could think of (see doc above); very open to other suggestions. Differential Revision: https://reviews.llvm.org/D133126 |
||
---|---|---|
.. | ||
.clang-format | ||
CMakeLists.txt | ||
lsan.cpp | ||
lsan.h | ||
lsan_allocator.cpp | ||
lsan_allocator.h | ||
lsan_common.cpp | ||
lsan_common.h | ||
lsan_common_fuchsia.cpp | ||
lsan_common_linux.cpp | ||
lsan_common_mac.cpp | ||
lsan_flags.inc | ||
lsan_fuchsia.cpp | ||
lsan_fuchsia.h | ||
lsan_interceptors.cpp | ||
lsan_linux.cpp | ||
lsan_mac.cpp | ||
lsan_malloc_mac.cpp | ||
lsan_posix.cpp | ||
lsan_posix.h | ||
lsan_preinit.cpp | ||
lsan_thread.cpp | ||
lsan_thread.h | ||
weak_symbols.txt |