aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLouis Dionne <ldionne.2@gmail.com>2023-11-29 09:29:44 -0500
committerGitHub <noreply@github.com>2023-11-29 09:29:44 -0500
commitfa712b0764d30e415159537d3e89c994cdef73f9 (patch)
treef820537de6159ff4e82ab8444d424ac3156f13be
parent68433f6b27a2d95d8132d4a636a7e18ed85ca9e6 (diff)
downloadllvm-fa712b0764d30e415159537d3e89c994cdef73f9.zip
llvm-fa712b0764d30e415159537d3e89c994cdef73f9.tar.gz
llvm-fa712b0764d30e415159537d3e89c994cdef73f9.tar.bz2
[libc++] Build the dylib with sanitizers when requested (#73656)
We were detecting which sanitizer flags to use when building libc++.dylib but we were never actually adding those flags to the targets, which means that our sanitized builds would basically build the dylib without any sanitizers enabled.
-rw-r--r--libcxx/CMakeLists.txt7
1 files changed, 5 insertions, 2 deletions
diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt
index 843ccbd..8572e75 100644
--- a/libcxx/CMakeLists.txt
+++ b/libcxx/CMakeLists.txt
@@ -621,10 +621,10 @@ function(get_sanitizer_flags OUT_VAR USE_SANITIZER)
append_flags(SANITIZER_FLAGS "-fsanitize-memory-track-origins")
endif()
elseif (USE_SANITIZER STREQUAL "Undefined")
- append_flags(SANITIZER_FLAGS "-fsanitize=undefined -fno-sanitize=vptr,function -fno-sanitize-recover=all")
+ append_flags(SANITIZER_FLAGS "-fsanitize=undefined" "-fno-sanitize=vptr,function" "-fno-sanitize-recover=all")
elseif (USE_SANITIZER STREQUAL "Address;Undefined" OR
USE_SANITIZER STREQUAL "Undefined;Address")
- append_flags(SANITIZER_FLAGS "-fsanitize=address,undefined -fno-sanitize=vptr,function -fno-sanitize-recover=all")
+ append_flags(SANITIZER_FLAGS "-fsanitize=address,undefined" "-fno-sanitize=vptr,function" "-fno-sanitize-recover=all")
elseif (USE_SANITIZER STREQUAL "Thread")
append_flags(SANITIZER_FLAGS -fsanitize=thread)
elseif (USE_SANITIZER STREQUAL "DataFlow")
@@ -639,6 +639,8 @@ function(get_sanitizer_flags OUT_VAR USE_SANITIZER)
endfunction()
get_sanitizer_flags(SANITIZER_FLAGS "${LLVM_USE_SANITIZER}")
+add_library(cxx-sanitizer-flags INTERFACE)
+target_compile_options(cxx-sanitizer-flags INTERFACE ${SANITIZER_FLAGS})
# Link system libraries =======================================================
function(cxx_link_system_libraries target)
@@ -821,6 +823,7 @@ function(cxx_add_common_build_flags target)
cxx_add_rtti_flags(${target})
cxx_add_module_flags(${target})
cxx_link_system_libraries(${target})
+ target_link_libraries(${target} PRIVATE cxx-sanitizer-flags)
endfunction()
#===============================================================================