[llvm-branch-commits] [libcxx] dfc24b8 - [libc++][NFC] Work around false positive ODR violations from ASan.

Louis Dionne via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Tue Feb 15 12:17:01 PST 2022


Author: Konstantin Varlamov
Date: 2022-02-15T15:16:41-05:00
New Revision: dfc24b8522ba9943e20bc4162d42d6b49bf85214

URL: https://github.com/llvm/llvm-project/commit/dfc24b8522ba9943e20bc4162d42d6b49bf85214
DIFF: https://github.com/llvm/llvm-project/commit/dfc24b8522ba9943e20bc4162d42d6b49bf85214.diff

LOG: [libc++][NFC] Work around false positive ODR violations from ASan.

This works around a known issue in ASan. ASan doesn't instrument weak
symbols. Because instrumentation increases object size, the binary can
end up with two versions of the same object, one instrumented and one
not instrumented, with different sizes, which ASan will report as an ODR
violation. In libc++, this affects typeinfo for `std::bad_function_call`
which is emitted as a weak symbol in the test executable and as a strong
symbol in the shared library.

The main open issue for ASan appears to be
https://github.com/google/sanitizers/issues/1017.

Differential Revision: https://reviews.llvm.org/D119410

(cherry picked from commit 10953974ed6b61247fd4b070b3a6e390e02d0edb)

Added: 
    

Modified: 
    libcxx/cmake/caches/Generic-asan.cmake

Removed: 
    


################################################################################
diff  --git a/libcxx/cmake/caches/Generic-asan.cmake b/libcxx/cmake/caches/Generic-asan.cmake
index cf919765c3a29..a86b34748550b 100644
--- a/libcxx/cmake/caches/Generic-asan.cmake
+++ b/libcxx/cmake/caches/Generic-asan.cmake
@@ -1 +1,3 @@
 set(LLVM_USE_SANITIZER "Address" CACHE STRING "")
+# This is a temporary (hopefully) workaround for an ASan issue (see https://llvm.org/D119410).
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mllvm -asan-use-private-alias=1" CACHE INTERNAL "")


        


More information about the llvm-branch-commits mailing list