summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Sanders <daniel.sanders@imgtec.com>2016-02-09 16:22:39 +0000
committerDaniel Sanders <daniel.sanders@imgtec.com>2016-02-09 16:22:39 +0000
commitf6678a635cbdee7c65fa2be14e60091fab92bc7f (patch)
tree58fd7f66fe2928b4c360ed0a1281ee2dfd75d390
parent922f95ce4b46676fdab4678714dfe8a4bd18b0ba (diff)
downloadbcm5719-llvm-f6678a635cbdee7c65fa2be14e60091fab92bc7f.tar.gz
bcm5719-llvm-f6678a635cbdee7c65fa2be14e60091fab92bc7f.zip
[lsan] Run the tests for each supported arch and suffix each one to distinguish them.
Summary: Previously, the tests only ran for the 64-bit equivalent of the default target (see -m64). Given the supported architecture list only contains 64-bit targets, this happens to work out the same as the supported targets in most cases but may matter for X86_64/X86_64h on Darwin. For other targets, the practical effect is that the test names contain the architecture. This resolves some confusion when lsan tests fail since their name no longer implies that they are trying to test the default target. Reviewers: samsonov Subscribers: tberghammer, danalbert, llvm-commits, srhines Differential Revision: http://reviews.llvm.org/D16859 llvm-svn: 260232
-rw-r--r--compiler-rt/test/lsan/CMakeLists.txt46
-rw-r--r--compiler-rt/test/lsan/lit.common.cfg3
-rw-r--r--compiler-rt/test/lsan/lit.site.cfg.in5
3 files changed, 43 insertions, 11 deletions
diff --git a/compiler-rt/test/lsan/CMakeLists.txt b/compiler-rt/test/lsan/CMakeLists.txt
index 6cca00a90b6..d2ac402bd05 100644
--- a/compiler-rt/test/lsan/CMakeLists.txt
+++ b/compiler-rt/test/lsan/CMakeLists.txt
@@ -1,21 +1,47 @@
set(LSAN_LIT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
-set(LSAN_LIT_TEST_MODE "Standalone")
-configure_lit_site_cfg(
- ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
- ${CMAKE_CURRENT_BINARY_DIR}/LsanConfig/lit.site.cfg)
+set(LSAN_TESTSUITES)
+
+set(LSAN_TEST_ARCH ${LSAN_SUPPORTED_ARCH})
+if(APPLE)
+ darwin_filter_host_archs(LSAN_SUPPORTED_ARCH LSAN_TEST_ARCH)
+endif()
+
+foreach(arch ${LSAN_TEST_ARCH})
+ string(TOLOWER "-${arch}" LSAN_TEST_CONFIG_SUFFIX)
+ if(ANDROID OR ${arch} MATCHES "arm|aarch64")
+ # This is only true if we are cross-compiling.
+ # Build all tests with host compiler and use host tools.
+ set(LSAN_TEST_TARGET_CC ${COMPILER_RT_TEST_COMPILER})
+ set(LSAN_TEST_TARGET_CFLAGS ${COMPILER_RT_TEST_COMPILER_CFLAGS})
+ else()
+ get_target_flags_for_arch(${arch} LSAN_TEST_TARGET_CFLAGS)
+ string(REPLACE ";" " " LSAN_TEST_TARGET_CFLAGS "${LSAN_TEST_TARGET_CFLAGS}")
+ endif()
+
+ string(TOUPPER ${arch} ARCH_UPPER_CASE)
+ set(LSAN_LIT_TEST_MODE "Standalone")
+ set(CONFIG_NAME ${ARCH_UPPER_CASE}LsanConfig)
+
+ configure_lit_site_cfg(
+ ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
+ ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/lit.site.cfg)
+ list(APPEND LSAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME})
+
+ set(CONFIG_NAME ${ARCH_UPPER_CASE}AsanConfig)
+ set(LSAN_LIT_TEST_MODE "AddressSanitizer")
-set(LSAN_LIT_TEST_MODE "AddressSanitizer")
-configure_lit_site_cfg(
- ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
- ${CMAKE_CURRENT_BINARY_DIR}/AsanConfig/lit.site.cfg)
+ configure_lit_site_cfg(
+ ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
+ ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/lit.site.cfg)
+ list(APPEND LSAN_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME})
+endforeach()
set(LSAN_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS})
if(NOT COMPILER_RT_STANDALONE_BUILD)
list(APPEND LSAN_TEST_DEPS lsan asan)
endif()
add_lit_testsuite(check-lsan "Running the LeakSanitizer tests"
- ${CMAKE_CURRENT_BINARY_DIR}/LsanConfig
- ${CMAKE_CURRENT_BINARY_DIR}/AsanConfig
+ ${LSAN_TESTSUITES}
DEPENDS ${LSAN_TEST_DEPS})
set_target_properties(check-lsan PROPERTIES FOLDER "LSan tests")
diff --git a/compiler-rt/test/lsan/lit.common.cfg b/compiler-rt/test/lsan/lit.common.cfg
index ba9c283ca84..a04c113269f 100644
--- a/compiler-rt/test/lsan/lit.common.cfg
+++ b/compiler-rt/test/lsan/lit.common.cfg
@@ -27,8 +27,9 @@ elif lsan_lit_test_mode == "AddressSanitizer":
config.available_features.add('asan')
else:
lit_config.fatal("Unknown LSan test mode: %r" % lsan_lit_test_mode)
+config.name += config.name_suffix
-clang_cflags = ["-O0", "-m64"] + config.debug_info_flags
+clang_cflags = ["-O0", config.target_cflags] + config.debug_info_flags
clang_cxxflags = config.cxx_mode_flags + clang_cflags
clang_lsan_cflags = clang_cflags + lsan_cflags
clang_lsan_cxxflags = clang_cxxflags + lsan_cflags
diff --git a/compiler-rt/test/lsan/lit.site.cfg.in b/compiler-rt/test/lsan/lit.site.cfg.in
index 7d2877bdc52..c703d0da48b 100644
--- a/compiler-rt/test/lsan/lit.site.cfg.in
+++ b/compiler-rt/test/lsan/lit.site.cfg.in
@@ -1,7 +1,12 @@
+## Autogenerated by LLVM/Clang configuration.
+# Do not edit!
+
# Load common config for all compiler-rt lit tests.
lit_config.load_config(config, "@COMPILER_RT_BINARY_DIR@/test/lit.common.configured")
# Tool-specific config options.
+config.name_suffix = "@LSAN_TEST_CONFIG_SUFFIX@"
+config.target_cflags = "@LSAN_TEST_TARGET_CFLAGS@"
config.lsan_lit_test_mode = "@LSAN_LIT_TEST_MODE@"
# Load tool-specific config that would do the real work.
OpenPOWER on IntegriCloud