Index: CMakeLists.txt =================================================================== --- CMakeLists.txt +++ CMakeLists.txt @@ -221,9 +221,9 @@ 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 @@ -353,14 +353,14 @@ # 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) Index: lib/lsan/CMakeLists.txt =================================================================== --- lib/lsan/CMakeLists.txt +++ lib/lsan/CMakeLists.txt @@ -19,7 +19,7 @@ # 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) Index: test/asan/CMakeLists.txt =================================================================== --- test/asan/CMakeLists.txt +++ test/asan/CMakeLists.txt @@ -32,6 +32,21 @@ 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") Index: test/ubsan/CMakeLists.txt =================================================================== --- test/ubsan/CMakeLists.txt +++ test/ubsan/CMakeLists.txt @@ -5,10 +5,12 @@ ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in ${CMAKE_CURRENT_BINARY_DIR}/UbsanConfig/lit.site.cfg) -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) +endif() set(UBSAN_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS}) if(NOT COMPILER_RT_STANDALONE_BUILD)