Skip to content

Commit

Permalink
[lsan] Run the tests for each supported arch and suffix each one to d…
Browse files Browse the repository at this point in the history
…istinguish 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
  • Loading branch information
dsandersllvm committed Feb 9, 2016
1 parent 922f95c commit f6678a6
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 11 deletions.
46 changes: 36 additions & 10 deletions 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")
3 changes: 2 additions & 1 deletion compiler-rt/test/lsan/lit.common.cfg
Expand Up @@ -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
Expand Down
5 changes: 5 additions & 0 deletions 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.
Expand Down

0 comments on commit f6678a6

Please sign in to comment.