[compiler-rt] separate lsan, ubsan, stats configuration from SANITIZER_COMMON_SUPPORTED_OS

Currently, SANITIZER_COMMON_SUPPORTED_OS is being used to enable many libraries.
Unfortunately this makes it impossible to selectively disable a library based on the OS.
This patch removes this limitation by adding a separate list of supported OSs for the lsan, ubsan, ubsan_minimal, and stats libraries.

Reviewed By: delcypher

Differential Revision: https://reviews.llvm.org/D113444
This commit is contained in:
Emily Shi 2021-11-08 17:19:57 -08:00
parent 56efafeabf
commit 919ca9fc04
6 changed files with 18 additions and 9 deletions

View File

@ -394,6 +394,9 @@ if(APPLE)
set(XRAY_SUPPORTED_OS osx)
set(FUZZER_SUPPORTED_OS osx)
set(ORC_SUPPORTED_OS osx)
set(UBSAN_SUPPORTED_OS osx)
set(LSAN_SUPPORTED_OS osx)
set(STATS_SUPPORTED_OS osx)
# Note: In order to target x86_64h on OS X the minimum deployment target must
# be 10.8 or higher.
@ -480,6 +483,9 @@ if(APPLE)
list(APPEND TSAN_SUPPORTED_OS ${platform}sim)
list(APPEND FUZZER_SUPPORTED_OS ${platform}sim)
list(APPEND ORC_SUPPORTED_OS ${platform}sim)
list(APPEND UBSAN_SUPPORTED_OS ${platform}sim)
list(APPEND LSAN_SUPPORTED_OS ${platform}sim)
list(APPEND STATS_SUPPORTED_OS ${platform}sim)
endif()
foreach(arch ${DARWIN_${platform}sim_ARCHS})
list(APPEND COMPILER_RT_SUPPORTED_ARCH ${arch})
@ -511,6 +517,9 @@ if(APPLE)
endif()
list(APPEND FUZZER_SUPPORTED_OS ${platform})
list(APPEND ORC_SUPPORTED_OS ${platform})
list(APPEND UBSAN_SUPPORTED_OS ${platform})
list(APPEND LSAN_SUPPORTED_OS ${platform})
list(APPEND STATS_SUPPORTED_OS ${platform})
endif()
foreach(arch ${DARWIN_${platform}_ARCHS})
list(APPEND COMPILER_RT_SUPPORTED_ARCH ${arch})

View File

@ -53,7 +53,7 @@ if(COMPILER_RT_HAS_LSAN)
add_compiler_rt_runtime(clang_rt.lsan
SHARED
OS ${SANITIZER_COMMON_SUPPORTED_OS}
OS ${LSAN_SUPPORTED_OS}
ARCHS ${LSAN_SUPPORTED_ARCH}
SOURCES ${LSAN_SOURCES}
ADDITIONAL_HEADERS ${LSAN_HEADERS}

View File

@ -23,7 +23,7 @@ endif()
add_compiler_rt_runtime(clang_rt.stats
${STATS_LIB_FLAVOR}
ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH}
OS ${SANITIZER_COMMON_SUPPORTED_OS}
OS ${STATS_SUPPORTED_OS}
SOURCES stats.cpp
ADDITIONAL_HEADERS ${STATS_HEADERS}
OBJECT_LIBS RTSanitizerCommon
@ -37,7 +37,7 @@ add_compiler_rt_runtime(clang_rt.stats
add_compiler_rt_runtime(clang_rt.stats_client
STATIC
ARCHS ${SANITIZER_COMMON_SUPPORTED_ARCH}
OS ${SANITIZER_COMMON_SUPPORTED_OS}
OS ${STATS_SUPPORTED_OS}
SOURCES stats_client.cpp
ADDITIONAL_HEADERS ${STATS_HEADERS}
CFLAGS ${SANITIZER_COMMON_CFLAGS}

View File

@ -83,7 +83,7 @@ if(APPLE)
if(COMPILER_RT_HAS_UBSAN)
# Initializer of standalone UBSan runtime.
add_compiler_rt_object_libraries(RTUbsan_standalone
OS ${SANITIZER_COMMON_SUPPORTED_OS}
OS ${UBSAN_SUPPORTED_OS}
ARCHS ${UBSAN_SUPPORTED_ARCH}
SOURCES ${UBSAN_STANDALONE_SOURCES}
ADDITIONAL_HEADERS ${UBSAN_HEADERS}
@ -94,7 +94,7 @@ if(APPLE)
add_compiler_rt_runtime(clang_rt.ubsan
SHARED
OS ${SANITIZER_COMMON_SUPPORTED_OS}
OS ${UBSAN_SUPPORTED_OS}
ARCHS ${UBSAN_SUPPORTED_ARCH}
OBJECT_LIBS RTUbsan
RTUbsan_standalone
@ -108,7 +108,7 @@ if(APPLE)
add_compiler_rt_runtime(clang_rt.ubsan
STATIC
OS ${SANITIZER_COMMON_SUPPORTED_OS}
OS ${UBSAN_SUPPORTED_OS}
ARCHS ${UBSAN_SUPPORTED_ARCH}
OBJECT_LIBS RTUbsan
RTUbsan_standalone

View File

@ -26,7 +26,7 @@ if(COMPILER_RT_HAS_UBSAN_MINIMAL)
# Standalone minimal UBSan runtimes.
add_compiler_rt_runtime(clang_rt.ubsan_minimal
STATIC
OS ${SANITIZER_COMMON_SUPPORTED_OS}
OS ${UBSAN_SUPPORTED_OS}
ARCHS ${UBSAN_SUPPORTED_ARCH}
OBJECT_LIBS RTUbsan_minimal
CFLAGS ${UBSAN_CFLAGS}
@ -34,7 +34,7 @@ if(COMPILER_RT_HAS_UBSAN_MINIMAL)
add_compiler_rt_runtime(clang_rt.ubsan_minimal
SHARED
OS ${SANITIZER_COMMON_SUPPORTED_OS}
OS ${UBSAN_SUPPORTED_OS}
ARCHS ${UBSAN_SUPPORTED_ARCH}
OBJECT_LIBS RTUbsan_minimal
CFLAGS ${UBSAN_CFLAGS}

View File

@ -109,7 +109,7 @@ if(APPLE)
# "check-asan-iossim-x86_64" and similar. They also require that an extra env
# variable to select which iOS device or simulator to use, e.g.:
# SANITIZER_IOSSIM_TEST_DEVICE_IDENTIFIER="iPhone 6"
set(UBSAN_APPLE_PLATFORMS ${SANITIZER_COMMON_SUPPORTED_OS})
set(UBSAN_APPLE_PLATFORMS ${UBSAN_SUPPORTED_OS})
foreach(platform ${UBSAN_APPLE_PLATFORMS})
list_intersect(
UBSAN_TEST_${platform}_ARCHS