From fc5300dd2750d68eb6f934e713331143edefde33 Mon Sep 17 00:00:00 2001 From: Pavel Artsishevsky Date: Sat, 8 Jun 2024 13:10:03 +0200 Subject: [PATCH] CodeSanitizing: remove static sanitizer linking It caused problems when building clang-tidy, because of incompatible options like -static-libasan in GCC and -static-libsan in Clang. Maybe will redesign this in future. Signed-off-by: Pavel Artsishevsky --- cmake/CodeSanitizing.cmake | 37 +++++++------------------------------ 1 file changed, 7 insertions(+), 30 deletions(-) diff --git a/cmake/CodeSanitizing.cmake b/cmake/CodeSanitizing.cmake index 65c8523..c3686c6 100644 --- a/cmake/CodeSanitizing.cmake +++ b/cmake/CodeSanitizing.cmake @@ -79,18 +79,17 @@ function(sanitizer_add_blacklist_file fileName) check_compiler_flags_list("-fsanitize-blacklist=${fileName}" "SanitizerBlacklist" "SanBlist") endfunction() -# [cmake_documentation] sanitizer_add_flags(targetName, targetCompiler, targetLang, varPrefix) +# [cmake_documentation] sanitizer_add_flags(targetName, targetCompiler, varPrefix) # # Helper to assign sanitizer flags for `targetName`. # # Required arguments: # @arg __targetName__: Name of the target # @arg __targetCompiler__: Name of the compiler used to build target -# @arg __targetLang__: Language used for target # @arg __varPrefix__: Prefix for resulting variables # # [/cmake_documentation] -function(sanitizer_add_flags targetName targetCompiler targetLang varPrefix) +function(sanitizer_add_flags targetName targetCompiler varPrefix) # Get list of compilers used by target and check, if sanitizer is available for this target. # Other compiler checks like check for conflicting compilers will be done in add_sanitizers # function. @@ -99,28 +98,6 @@ function(sanitizer_add_flags targetName targetCompiler targetLang varPrefix) return() endif() - # If compiler is a GNU compiler, search for static flag, if SANITIZE_LINK_STATIC is enabled. - if(targetCompiler MATCHES "GNU" - AND targetLang - AND NOT DEFINED ${varPrefix}_STATIC_DETECTED - ) - option(SANITIZE_LINK_STATIC "Try to link static against sanitizers." ON) - - string(TOLOWER ${varPrefix} varPrefix_lower) - set(sanitizer_flags_static "-static-lib${varPrefix_lower} ${sanitizer_flags}") - - check_compiler_flags(${sanitizer_flags_static} ${targetLang} ${varPrefix}_STATIC_DETECTED) - if(${varPrefix}_STATIC_DETECTED) - set(sanitizer_flags ${sanitizer_flags_static}) - # Update cached variable to prevent extra checks next time - unset(${varPrefix}_${targetCompiler}_FLAGS CACHE) - set(${varPrefix}_${targetCompiler}_FLAGS - "${sanitizer_flags_static}" - CACHE STRING "" - ) - endif() - endif() - separate_arguments( flags_list UNIX_COMMAND "${sanitizer_flags} ${SanBlist_${targetCompiler}_FLAGS}" ) @@ -166,26 +143,26 @@ function(target_enable_sanitizers targetName) # Enable AddressSanitizer if(SANITIZE_ADDRESS) - sanitizer_add_flags(${targetName} "${target_compiler}" "${target_lang}" "ASan") + sanitizer_add_flags(${targetName} "${target_compiler}" "ASan") endif() # Enable UndefinedBehaviorSanitizer if(SANITIZE_UNDEFINED) - sanitizer_add_flags(${targetName} "${target_compiler}" "${target_lang}" "UBSan") + sanitizer_add_flags(${targetName} "${target_compiler}" "UBSan") endif() # Enable LeakSanitizer if(SANITIZE_LEAK) - sanitizer_add_flags(${targetName} "${target_compiler}" "${target_lang}" "LSan") + sanitizer_add_flags(${targetName} "${target_compiler}" "LSan") endif() # Enable MemorySanitizer if(SANITIZE_MEMORY) - sanitizer_add_flags(${targetName} "${target_compiler}" "${target_lang}" "MSan") + sanitizer_add_flags(${targetName} "${target_compiler}" "MSan") endif() # Enable ThreadSanitizer if(SANITIZE_THREAD) - sanitizer_add_flags(${targetName} "${target_compiler}" "${target_lang}" "TSan") + sanitizer_add_flags(${targetName} "${target_compiler}" "TSan") endif() endfunction()