Skip to content

Commit

Permalink
light up sanitizers for ARM
Browse files Browse the repository at this point in the history
You can expect the sanitizers to be built under any of the following conditions:

1) CMAKE_C_COMPILER is GCC built to cross-compile to ARM
2) CMAKE_C_COMPILER is Clang built to cross-compile to ARM (ARM is default target)
3) CMAKE_C_COMPILER is Clang and CMAKE_C_FLAGS contains -target and --sysroot

Differential Revision: http://reviews.llvm.org/D3794

llvm-svn: 209835
  • Loading branch information
Greg Fitzgerald committed May 29, 2014
1 parent a02e664 commit 32685ec
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 13 deletions.
12 changes: 6 additions & 6 deletions compiler-rt/CMakeLists.txt
Expand Up @@ -215,9 +215,9 @@ else()
test_target_arch(i386 ${TARGET_32_BIT_CFLAGS})
elseif("${LLVM_NATIVE_ARCH}" STREQUAL "PowerPC")
test_target_arch(powerpc64 ${TARGET_64_BIT_CFLAGS})
elseif("${LLVM_NATIVE_ARCH}" STREQUAL "ARM")
test_target_arch(arm "")
endif()
test_target_arch(arm "-march=armv7-a")
test_target_arch(aarch64 "-march=armv8-a")
endif()

# We support running instrumented tests when we're not cross compiling
Expand Down Expand Up @@ -347,14 +347,14 @@ endif()
# Architectures supported by Sanitizer runtimes. Specific sanitizers may
# support only subset of these (e.g. TSan works on x86_64 only).
filter_available_targets(SANITIZER_COMMON_SUPPORTED_ARCH
x86_64 i386 powerpc64 arm)
filter_available_targets(ASAN_SUPPORTED_ARCH x86_64 i386 powerpc64)
x86_64 i386 powerpc64 arm aarch64)
filter_available_targets(ASAN_SUPPORTED_ARCH x86_64 i386 powerpc64 arm)
filter_available_targets(DFSAN_SUPPORTED_ARCH x86_64)
filter_available_targets(LSAN_SUPPORTED_ARCH x86_64)
filter_available_targets(MSAN_SUPPORTED_ARCH x86_64)
filter_available_targets(PROFILE_SUPPORTED_ARCH x86_64 i386 arm)
filter_available_targets(PROFILE_SUPPORTED_ARCH x86_64 i386 arm aarch64)
filter_available_targets(TSAN_SUPPORTED_ARCH x86_64)
filter_available_targets(UBSAN_SUPPORTED_ARCH x86_64 i386)
filter_available_targets(UBSAN_SUPPORTED_ARCH x86_64 i386 arm aarch64)

add_subdirectory(include)

Expand Down
2 changes: 1 addition & 1 deletion compiler-rt/lib/lsan/CMakeLists.txt
Expand Up @@ -19,7 +19,7 @@ set(LSAN_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR})
# The common files need to build on every arch supported by ASan.
# (Even if they build into dummy object files.)
filter_available_targets(LSAN_COMMON_SUPPORTED_ARCH
x86_64 i386 powerpc64 arm)
x86_64 i386 powerpc64 arm aarch64)

add_custom_target(lsan)

Expand Down
15 changes: 15 additions & 0 deletions compiler-rt/test/asan/CMakeLists.txt
Expand Up @@ -34,6 +34,21 @@ if(CAN_TARGET_arm)
list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/ARMLinuxConfig)
endif()

if(CAN_TARGET_aarch64)
# This is only true if we are cross-compiling.
# Build all tests with host compiler and use host tools.
set(ASAN_TEST_TARGET_CC ${COMPILER_RT_TEST_COMPILER})
set(ASAN_TEST_TARGET_CFLAGS ${COMPILER_RT_TEST_COMPILER_CFLAGS})
set(ASAN_TEST_CONFIG_SUFFIX "-aarch64-linux")
set(ASAN_TEST_BITS "64")
set(ASAN_TEST_DYNAMIC False)
configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/AArch64LinuxConfig/lit.site.cfg
)
list(APPEND ASAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/AArch64LinuxConfig)
endif()

if(CAN_TARGET_x86_64 OR CAN_TARGET_powerpc64)
set(ASAN_TEST_CONFIG_SUFFIX "64")
set(ASAN_TEST_BITS "64")
Expand Down
15 changes: 9 additions & 6 deletions compiler-rt/test/ubsan/CMakeLists.txt
Expand Up @@ -4,19 +4,22 @@ set(UBSAN_LIT_TEST_MODE "Standalone")
configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/UbsanConfig/lit.site.cfg)
set(UBSAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/UbsanConfig)

set(UBSAN_LIT_TEST_MODE "AddressSanitizer")
configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/AsanConfig/lit.site.cfg)
if(ASAN_SUPPORTED_ARCH)
set(UBSAN_LIT_TEST_MODE "AddressSanitizer")
configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/AsanConfig/lit.site.cfg)
list(APPEND UBSAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/AsanConfig)
endif()

set(UBSAN_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS})
if(NOT COMPILER_RT_STANDALONE_BUILD)
list(APPEND UBSAN_TEST_DEPS ubsan asan)
endif()

add_lit_testsuite(check-ubsan "Running UndefinedBehaviorSanitizer tests"
${CMAKE_CURRENT_BINARY_DIR}/UbsanConfig
${CMAKE_CURRENT_BINARY_DIR}/AsanConfig
${UBSAN_TESTSUITES}
DEPENDS ${UBSAN_TEST_DEPS})
set_target_properties(check-ubsan PROPERTIES FOLDER "UBSan unittests")

0 comments on commit 32685ec

Please sign in to comment.