From fa712b0764d30e415159537d3e89c994cdef73f9 Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Wed, 29 Nov 2023 09:29:44 -0500 Subject: [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. --- libcxx/CMakeLists.txt | 7 +++++-- 1 file 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() #=============================================================================== -- cgit v1.1