forked from OSchip/llvm-project
Only test sanitizers that are built when COMPILER_RT_SANITIZERS_TO_BUILD is used
Summary: This allows check-all to be used when only a subset of the sanitizers are built. Reviewers: beanz, compnerd, rnk, pcc Subscribers: llvm-commits, mgorny Differential Revision: https://reviews.llvm.org/D34644 llvm-svn: 306450
This commit is contained in:
parent
e8bf6c9629
commit
57a3f4584d
|
@ -28,7 +28,6 @@ function(compiler_rt_build_runtime runtime)
|
|||
endfunction()
|
||||
|
||||
function(compiler_rt_build_sanitizer sanitizer)
|
||||
string(TOUPPER ${sanitizer} sanitizer_uppercase)
|
||||
string(TOLOWER ${sanitizer} sanitizer_lowercase)
|
||||
list(FIND COMPILER_RT_SANITIZERS_TO_BUILD ${sanitizer_lowercase} result)
|
||||
if(NOT ${result} EQUAL -1)
|
||||
|
|
|
@ -35,6 +35,24 @@ if(NOT ANDROID)
|
|||
endif()
|
||||
endif()
|
||||
|
||||
function(compiler_rt_test_runtime runtime)
|
||||
string(TOUPPER ${runtime} runtime_uppercase)
|
||||
if(COMPILER_RT_HAS_${runtime_uppercase})
|
||||
add_subdirectory(${runtime})
|
||||
foreach(directory ${ARGN})
|
||||
add_subdirectory(${directory})
|
||||
endforeach()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(compiler_rt_test_sanitizer sanitizer)
|
||||
string(TOLOWER ${sanitizer} sanitizer_lowercase)
|
||||
list(FIND COMPILER_RT_SANITIZERS_TO_BUILD ${sanitizer_lowercase} result)
|
||||
if(NOT ${result} EQUAL -1)
|
||||
compiler_rt_test_runtime(${sanitizer} ${ARGN})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Run sanitizer tests only if we're sure that clang would produce
|
||||
# working binaries.
|
||||
if(COMPILER_RT_CAN_EXECUTE_TESTS)
|
||||
|
@ -42,49 +60,25 @@ if(COMPILER_RT_CAN_EXECUTE_TESTS)
|
|||
add_subdirectory(builtins)
|
||||
endif()
|
||||
if(COMPILER_RT_BUILD_SANITIZERS)
|
||||
if(COMPILER_RT_HAS_ASAN)
|
||||
add_subdirectory(asan)
|
||||
endif()
|
||||
if(COMPILER_RT_HAS_DFSAN)
|
||||
add_subdirectory(dfsan)
|
||||
endif()
|
||||
if (COMPILER_RT_HAS_INTERCEPTION)
|
||||
add_subdirectory(interception)
|
||||
endif()
|
||||
if(COMPILER_RT_HAS_LSAN)
|
||||
add_subdirectory(lsan)
|
||||
endif()
|
||||
if(COMPILER_RT_HAS_MSAN)
|
||||
add_subdirectory(msan)
|
||||
endif()
|
||||
if(COMPILER_RT_HAS_PROFILE)
|
||||
add_subdirectory(profile)
|
||||
endif()
|
||||
if(COMPILER_RT_HAS_SANITIZER_COMMON)
|
||||
add_subdirectory(sanitizer_common)
|
||||
endif()
|
||||
if(COMPILER_RT_HAS_TSAN)
|
||||
add_subdirectory(tsan)
|
||||
endif()
|
||||
if(COMPILER_RT_HAS_UBSAN)
|
||||
add_subdirectory(ubsan)
|
||||
endif()
|
||||
compiler_rt_test_runtime(interception)
|
||||
|
||||
compiler_rt_test_runtime(lsan)
|
||||
# CFI tests require diagnostic mode, which is implemented in UBSan.
|
||||
if(COMPILER_RT_HAS_UBSAN)
|
||||
add_subdirectory(cfi)
|
||||
endif()
|
||||
if(COMPILER_RT_HAS_SAFESTACK)
|
||||
add_subdirectory(safestack)
|
||||
endif()
|
||||
if(COMPILER_RT_HAS_ESAN)
|
||||
add_subdirectory(esan)
|
||||
endif()
|
||||
if(COMPILER_RT_HAS_SCUDO)
|
||||
add_subdirectory(scudo)
|
||||
endif()
|
||||
compiler_rt_test_runtime(ubsan cfi)
|
||||
compiler_rt_test_runtime(sanitizer_common)
|
||||
|
||||
compiler_rt_test_sanitizer(asan)
|
||||
compiler_rt_test_sanitizer(dfsan)
|
||||
compiler_rt_test_sanitizer(msan)
|
||||
compiler_rt_test_sanitizer(tsan)
|
||||
compiler_rt_test_sanitizer(safestack)
|
||||
compiler_rt_test_sanitizer(esan)
|
||||
compiler_rt_test_sanitizer(scudo)
|
||||
|
||||
compiler_rt_test_runtime(profile)
|
||||
endif()
|
||||
if(COMPILER_RT_BUILD_XRAY AND COMPILER_RT_HAS_XRAY)
|
||||
add_subdirectory(xray)
|
||||
if(COMPILER_RT_BUILD_XRAY)
|
||||
compiler_rt_test_runtime(xray)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
|
Loading…
Reference in New Issue