diff options
| -rw-r--r-- | compiler-rt/cmake/Modules/CompilerRTUtils.cmake | 19 | ||||
| -rw-r--r-- | compiler-rt/cmake/config-ix.cmake | 90 | ||||
| -rw-r--r-- | compiler-rt/lib/CMakeLists.txt | 41 | ||||
| -rw-r--r-- | compiler-rt/lib/lsan/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | compiler-rt/lib/tsan/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | compiler-rt/lib/ubsan/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | compiler-rt/test/CMakeLists.txt | 35 | ||||
| -rw-r--r-- | compiler-rt/test/cfi/CMakeLists.txt | 6 | ||||
| -rw-r--r-- | compiler-rt/test/interception/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | compiler-rt/test/ubsan/CMakeLists.txt | 14 | 
10 files changed, 113 insertions, 98 deletions
diff --git a/compiler-rt/cmake/Modules/CompilerRTUtils.cmake b/compiler-rt/cmake/Modules/CompilerRTUtils.cmake index f9c7f0fedea..cf690f4a33c 100644 --- a/compiler-rt/cmake/Modules/CompilerRTUtils.cmake +++ b/compiler-rt/cmake/Modules/CompilerRTUtils.cmake @@ -36,16 +36,6 @@ macro(append_list_if condition value)    endif()  endmacro() -# Appends values to list if it isn't already there -macro(append_list_unique list) -  foreach(val ${ARGN}) -    list(FIND ${list} ${val} idx) -    if(idx EQUAL -1) -      list(APPEND ${list} ${val}) -    endif() -  endforeach() -endmacro() -  # Appends value to all strings in ARGN, if the condition is true.  macro(append_string_if condition value)    if(${condition}) @@ -77,12 +67,3 @@ macro(list_union output input1 input2)      endif()    endforeach()  endmacro() - -macro(check_list_contains outvar list input) -  list(FIND ${list} ${input} idx) -  if(idx GREATER -1) -    set(${outvar} True) -  else() -    set(${outvar} False) -  endif() -endmacro() diff --git a/compiler-rt/cmake/config-ix.cmake b/compiler-rt/cmake/config-ix.cmake index 2d1bbbbc3ce..700422b7cb7 100644 --- a/compiler-rt/cmake/config-ix.cmake +++ b/compiler-rt/cmake/config-ix.cmake @@ -505,82 +505,78 @@ endif()  if (SANITIZER_COMMON_SUPPORTED_ARCH AND NOT LLVM_USE_SANITIZER AND      (OS_NAME MATCHES "Android|Darwin|Linux|FreeBSD" OR      (OS_NAME MATCHES "Windows" AND MSVC))) -  list(APPEND DEFAULT_RUNTIMES sanitizer_common) +  set(COMPILER_RT_HAS_SANITIZER_COMMON TRUE) +else() +  set(COMPILER_RT_HAS_SANITIZER_COMMON FALSE)  endif() -if (NOT OS_NAME MATCHES "Windows" OR CMAKE_SIZEOF_VOID_P EQUAL 4) -  list(APPEND DEFAULT_RUNTIMES interception) -  list(APPEND REQUIRES_COMMON interception) +if (COMPILER_RT_HAS_SANITIZER_COMMON AND +    (NOT OS_NAME MATCHES "Windows" OR CMAKE_SIZEOF_VOID_P EQUAL 4)) +  set(COMPILER_RT_HAS_INTERCEPTION TRUE) +else() +  set(COMPILER_RT_HAS_INTERCEPTION FALSE)  endif() -if (ASAN_SUPPORTED_ARCH AND +if (COMPILER_RT_HAS_SANITIZER_COMMON AND ASAN_SUPPORTED_ARCH AND      (NOT OS_NAME MATCHES "Windows" OR CMAKE_SIZEOF_VOID_P EQUAL 4)) -  list(APPEND DEFAULT_RUNTIMES asan) -  list(APPEND REQUIRES_COMMON asan) +  set(COMPILER_RT_HAS_ASAN TRUE) +else() +  set(COMPILER_RT_HAS_ASAN FALSE)  endif()  if (OS_NAME MATCHES "Linux|FreeBSD|Windows") -  set(COMPILER_RT_ASAN_HAS_STATIC_RUNTIME On) +  set(COMPILER_RT_ASAN_HAS_STATIC_RUNTIME TRUE) +else() +  set(COMPILER_RT_ASAN_HAS_STATIC_RUNTIME FALSE)  endif()  # TODO: Add builtins support. -if (DFSAN_SUPPORTED_ARCH AND +if (COMPILER_RT_HAS_SANITIZER_COMMON AND DFSAN_SUPPORTED_ARCH AND      OS_NAME MATCHES "Linux") -  list(APPEND DEFAULT_RUNTIMES dfsan) -  list(APPEND REQUIRES_COMMON dfsan) +  set(COMPILER_RT_HAS_DFSAN TRUE) +else() +  set(COMPILER_RT_HAS_DFSAN FALSE)  endif() -if (LSAN_SUPPORTED_ARCH AND OS_NAME MATCHES "Linux|FreeBSD") -  list(APPEND DEFAULT_RUNTIMES lsan) -  list(APPEND REQUIRES_COMMON lsan) +if (COMPILER_RT_HAS_SANITIZER_COMMON AND LSAN_SUPPORTED_ARCH AND +    OS_NAME MATCHES "Linux|FreeBSD") +  set(COMPILER_RT_HAS_LSAN TRUE) +else() +  set(COMPILER_RT_HAS_LSAN FALSE)  endif() -if (MSAN_SUPPORTED_ARCH AND +if (COMPILER_RT_HAS_SANITIZER_COMMON AND MSAN_SUPPORTED_ARCH AND      OS_NAME MATCHES "Linux") -  list(APPEND DEFAULT_RUNTIMES msan) -  list(APPEND REQUIRES_COMMON msan) +  set(COMPILER_RT_HAS_MSAN TRUE) +else() +  set(COMPILER_RT_HAS_MSAN FALSE)  endif()  if (PROFILE_SUPPORTED_ARCH AND      OS_NAME MATCHES "Darwin|Linux|FreeBSD") -  list(APPEND DEFAULT_RUNTIMES profile) +  set(COMPILER_RT_HAS_PROFILE TRUE) +else() +  set(COMPILER_RT_HAS_PROFILE FALSE)  endif() -if (TSAN_SUPPORTED_ARCH AND +if (COMPILER_RT_HAS_SANITIZER_COMMON AND TSAN_SUPPORTED_ARCH AND      OS_NAME MATCHES "Darwin|Linux|FreeBSD") -  list(APPEND DEFAULT_RUNTIMES tsan) -  list(APPEND REQUIRES_COMMON tsan) +  set(COMPILER_RT_HAS_TSAN TRUE) +else() +  set(COMPILER_RT_HAS_TSAN FALSE)  endif() -if (UBSAN_SUPPORTED_ARCH AND +if (COMPILER_RT_HAS_SANITIZER_COMMON AND UBSAN_SUPPORTED_ARCH AND      OS_NAME MATCHES "Darwin|Linux|FreeBSD|Windows") -  list(APPEND DEFAULT_RUNTIMES ubsan) -  list(APPEND REQUIRES_COMMON ubsan) +  set(COMPILER_RT_HAS_UBSAN TRUE) +else() +  set(COMPILER_RT_HAS_UBSAN FALSE)  endif() -list(APPEND DEFAULT_RUNTIMES cfi) -if (SAFESTACK_SUPPORTED_ARCH AND +if (COMPILER_RT_HAS_SANITIZER_COMMON AND SAFESTACK_SUPPORTED_ARCH AND      OS_NAME MATCHES "Darwin|Linux|FreeBSD") -  list(APPEND DEFAULT_RUNTIMES safestack) -  list(APPEND REQUIRES_COMMON safestack) -endif() - -set(COMPILER_RT_RUNTIMES_TO_BUILD "all" -    CACHE STRING "Semicolon-separated list of runtimes to build, or \"all\".") - -if(COMPILER_RT_RUNTIMES_TO_BUILD STREQUAL "all") -  set(COMPILER_RT_RUNTIMES_TO_BUILD ${DEFAULT_RUNTIMES}) -endif() - -# Several of the runtimes produce object libraries that are consumed by other -# runtimes (i.e. asan relies on ubsan). If you're building a library that relies -# on common bits we need to build this full set of libraries. -list_union(SHOULD_BUILD_COMMON REQUIRES_COMMON COMPILER_RT_RUNTIMES_TO_BUILD) - -if(SHOULD_BUILD_COMMON) -  append_list_unique(COMPILER_RT_RUNTIMES_TO_BUILD sanitizer_common) -  append_list_unique(COMPILER_RT_RUNTIMES_TO_BUILD lsan) -  append_list_unique(COMPILER_RT_RUNTIMES_TO_BUILD ubsan) -  append_list_unique(COMPILER_RT_RUNTIMES_TO_BUILD interception) +  set(COMPILER_RT_HAS_SAFESTACK TRUE) +else() +  set(COMPILER_RT_HAS_SAFESTACK FALSE)  endif() diff --git a/compiler-rt/lib/CMakeLists.txt b/compiler-rt/lib/CMakeLists.txt index d461dffc1b2..9215b080b7b 100644 --- a/compiler-rt/lib/CMakeLists.txt +++ b/compiler-rt/lib/CMakeLists.txt @@ -9,9 +9,40 @@ if(COMPILER_RT_BUILD_BUILTINS)  endif()  if(COMPILER_RT_BUILD_SANITIZERS) -  message(STATUS "Adding runtimes...") -  foreach(runtime ${COMPILER_RT_RUNTIMES_TO_BUILD}) -    message(STATUS "Adding runtime: ${runtime}") -    add_subdirectory(${runtime}) -  endforeach() +  if(COMPILER_RT_HAS_INTERCEPTION) +    add_subdirectory(interception) +  endif() + +  if(COMPILER_RT_HAS_SANITIZER_COMMON) +    add_subdirectory(sanitizer_common) +    add_subdirectory(lsan) +    add_subdirectory(ubsan) +  endif() + +  add_subdirectory(cfi) + +  if(COMPILER_RT_HAS_ASAN) +    add_subdirectory(asan) +  endif() + +  if(COMPILER_RT_HAS_DFSAN) +    add_subdirectory(dfsan) +  endif() + +  if(COMPILER_RT_HAS_MSAN) +    add_subdirectory(msan) +  endif() + +  if(COMPILER_RT_HAS_PROFILE) +    add_subdirectory(profile) +  endif() + +  if(COMPILER_RT_HAS_TSAN) +    add_subdirectory(tsan) +    add_subdirectory(tsan/dd) +  endif() + +  if(COMPILER_RT_HAS_SAFESTACK) +    add_subdirectory(safestack) +  endif()  endif() diff --git a/compiler-rt/lib/lsan/CMakeLists.txt b/compiler-rt/lib/lsan/CMakeLists.txt index a04aa629e4e..20e40932165 100644 --- a/compiler-rt/lib/lsan/CMakeLists.txt +++ b/compiler-rt/lib/lsan/CMakeLists.txt @@ -24,7 +24,6 @@ add_compiler_rt_object_libraries(RTLSanCommon      SOURCES ${LSAN_COMMON_SOURCES}      CFLAGS ${LSAN_CFLAGS}) -check_list_contains(COMPILER_RT_HAS_LSAN COMPILER_RT_RUNTIMES_TO_BUILD lsan)  if(COMPILER_RT_HAS_LSAN)    foreach(arch ${LSAN_SUPPORTED_ARCH})      add_compiler_rt_runtime(clang_rt.lsan diff --git a/compiler-rt/lib/tsan/CMakeLists.txt b/compiler-rt/lib/tsan/CMakeLists.txt index 176e855bf0e..0e60cd3464d 100644 --- a/compiler-rt/lib/tsan/CMakeLists.txt +++ b/compiler-rt/lib/tsan/CMakeLists.txt @@ -213,5 +213,3 @@ endif()  if(COMPILER_RT_INCLUDE_TESTS)    add_subdirectory(tests)  endif() - -add_subdirectory(dd) diff --git a/compiler-rt/lib/ubsan/CMakeLists.txt b/compiler-rt/lib/ubsan/CMakeLists.txt index c447042c266..5ece9a62cfe 100644 --- a/compiler-rt/lib/ubsan/CMakeLists.txt +++ b/compiler-rt/lib/ubsan/CMakeLists.txt @@ -1,7 +1,5 @@  # Build for the undefined behavior sanitizer runtime support library. -check_list_contains(COMPILER_RT_HAS_UBSAN COMPILER_RT_RUNTIMES_TO_BUILD ubsan) -  set(UBSAN_SOURCES    ubsan_diag.cc    ubsan_init.cc diff --git a/compiler-rt/test/CMakeLists.txt b/compiler-rt/test/CMakeLists.txt index 1a721577430..e5c51c8cd47 100644 --- a/compiler-rt/test/CMakeLists.txt +++ b/compiler-rt/test/CMakeLists.txt @@ -36,9 +36,37 @@ endif()  # Run sanitizer tests only if we're sure that clang would produce  # working binaries.  if(COMPILER_RT_CAN_EXECUTE_TESTS) -  foreach(runtime ${COMPILER_RT_RUNTIMES_TO_BUILD}) -    add_subdirectory(${runtime}) -  endforeach() +  if(COMPILER_RT_HAS_ASAN) +    add_subdirectory(asan) +  endif() +  if(COMPILER_RT_HAS_DFSAN) +    add_subdirectory(dfsan) +  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() +  # 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()  endif()  if(COMPILER_RT_STANDALONE_BUILD) @@ -51,4 +79,3 @@ if(COMPILER_RT_STANDALONE_BUILD)      ${LLVM_LIT_TESTSUITES}      DEPENDS ${LLVM_LIT_DEPENDS})  endif() -  diff --git a/compiler-rt/test/cfi/CMakeLists.txt b/compiler-rt/test/cfi/CMakeLists.txt index e7db8e8d0cd..09672953b51 100644 --- a/compiler-rt/test/cfi/CMakeLists.txt +++ b/compiler-rt/test/cfi/CMakeLists.txt @@ -1,9 +1,3 @@ -check_list_contains(HAS_UBSAN COMPILER_RT_RUNTIMES_TO_BUILD ubsan) -# CFI tests require diagnostic mode, which is implemented in UBSan. -if(NOT HAS_UBSAN) -  return() -endif() -  configure_lit_site_cfg(    ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in    ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg diff --git a/compiler-rt/test/interception/CMakeLists.txt b/compiler-rt/test/interception/CMakeLists.txt deleted file mode 100644 index 0c0dfdb5b4f..00000000000 --- a/compiler-rt/test/interception/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -# Placeholder to avoid special casing. diff --git a/compiler-rt/test/ubsan/CMakeLists.txt b/compiler-rt/test/ubsan/CMakeLists.txt index f61b0b30314..0938ea2b1c0 100644 --- a/compiler-rt/test/ubsan/CMakeLists.txt +++ b/compiler-rt/test/ubsan/CMakeLists.txt @@ -20,10 +20,6 @@ if(APPLE)    darwin_filter_host_archs(UBSAN_SUPPORTED_ARCH UBSAN_TEST_ARCH)  endif() -check_list_contains(HAS_ASAN COMPILER_RT_RUNTIMES_TO_BUILD asan) -check_list_contains(HAS_MSAN COMPILER_RT_RUNTIMES_TO_BUILD msan) -check_list_contains(HAS_TSAN COMPILER_RT_RUNTIMES_TO_BUILD tsan) -  foreach(arch ${UBSAN_TEST_ARCH})    set(UBSAN_TEST_TARGET_ARCH ${arch})    if(${arch} MATCHES "arm|aarch64") @@ -35,17 +31,13 @@ foreach(arch ${UBSAN_TEST_ARCH})    endif()    add_ubsan_testsuite("Standalone" ubsan ${arch}) -  check_list_contains(ASAN_HAS_ARCH ASAN_SUPPORTED_ARCH ${arch}) -  check_list_contains(MSAN_HAS_ARCH MSAN_SUPPORTED_ARCH ${arch}) -  check_list_contains(TSAN_HAS_ARCH TSAN_SUPPORTED_ARCH ${arch}) - -  if(HAS_ASAN AND ASAN_HAS_ARCH) +  if(COMPILER_RT_HAS_ASAN AND ";${ASAN_SUPPORTED_ARCH};" MATCHES ";${arch};")      add_ubsan_testsuite("AddressSanitizer" asan ${arch})    endif() -  if(HAS_MSAN AND MSAN_HAS_ARCH) +  if(COMPILER_RT_HAS_MSAN AND ";${MSAN_SUPPORTED_ARCH};" MATCHES ";${arch};")      add_ubsan_testsuite("MemorySanitizer" msan ${arch})    endif() -  if(HAS_TSAN AND TSAN_HAS_ARCH) +  if(COMPILER_RT_HAS_TSAN AND ";${TSAN_SUPPORTED_ARCH};" MATCHES ";${arch};")      add_ubsan_testsuite("ThreadSanitizer" tsan ${arch})    endif()  endforeach()  | 

