forked from OSchip/llvm-project
[TSan] use llvm-symbolizer to run tsan tests
llvm-svn: 168146
This commit is contained in:
parent
cc8990f629
commit
038e3489d9
|
@ -12,7 +12,7 @@ if("${CMAKE_HOST_SYSTEM}" STREQUAL "${CMAKE_SYSTEM}")
|
|||
# Run TSan output tests only if we're not cross-compiling,
|
||||
# and can be sure that clang would produce working binaries.
|
||||
set(TSAN_TEST_DEPS
|
||||
clang clang-headers FileCheck count not
|
||||
clang clang-headers FileCheck count not llvm-symbolizer
|
||||
${TSAN_RUNTIME_LIBRARIES}
|
||||
)
|
||||
set(TSAN_TEST_PARAMS
|
||||
|
@ -31,6 +31,6 @@ elseif(LLVM_INCLUDE_TESTS)
|
|||
# Otherwise run only TSan unit tests.
|
||||
add_lit_testsuite(check-tsan "Running ThreadSanitizer tests"
|
||||
${CMAKE_CURRENT_BINARY_DIR}/Unit
|
||||
DEPENDS TsanUnitTests)
|
||||
DEPENDS TsanUnitTests llvm-symbolizer)
|
||||
set_target_properties(check-tsan PROPERTIES FOLDER "TSan unittests")
|
||||
endif()
|
||||
|
|
|
@ -27,3 +27,11 @@ config.test_exec_root = os.path.join(llvm_obj_root, "projects",
|
|||
"compiler-rt", "lib",
|
||||
"tsan", "tests")
|
||||
config.test_source_root = config.test_exec_root
|
||||
|
||||
# Get path to external LLVM symbolizer to run ThreadSanitizer unit tests.
|
||||
llvm_tools_dir = getattr(config, 'llvm_tools_dir', None)
|
||||
if llvm_tools_dir:
|
||||
llvm_symbolizer_path = os.path.join(llvm_tools_dir, "llvm-symbolizer")
|
||||
config.environment['TSAN_OPTIONS'] = ("external_symbolizer_path=" +
|
||||
llvm_symbolizer_path)
|
||||
|
||||
|
|
|
@ -4,6 +4,15 @@
|
|||
config.build_type = "@CMAKE_BUILD_TYPE@"
|
||||
config.llvm_obj_root = "@LLVM_BINARY_DIR@"
|
||||
config.llvm_src_root = "@LLVM_SOURCE_DIR@"
|
||||
config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
|
||||
|
||||
# LLVM tools dir can be passed in lit parameters, so try to
|
||||
# apply substitution.
|
||||
try:
|
||||
config.llvm_tools_dir = config.llvm_tools_dir % lit.params
|
||||
except KeyError,e:
|
||||
key, = e.args
|
||||
lit.fatal("unable to find %r parameter, use '--param=%s=VALUE'" % (key, key))
|
||||
|
||||
# Let the main config do the real work.
|
||||
lit.load_config(config, "@CMAKE_CURRENT_SOURCE_DIR@/Unit/lit.cfg")
|
||||
|
|
|
@ -57,7 +57,14 @@ if (not compiler_rt_lit_cfg) or (not os.path.exists(compiler_rt_lit_cfg)):
|
|||
lit.load_config(config, compiler_rt_lit_cfg)
|
||||
|
||||
# Setup environment variables for running ThreadSanitizer.
|
||||
config.environment['TSAN_OPTIONS'] = "atexit_sleep_ms=0"
|
||||
tsan_options = "atexit_sleep_ms=0"
|
||||
# Get path to external LLVM symbolizer to run ThreadSanitizer output tests.
|
||||
llvm_tools_dir = getattr(config, 'llvm_tools_dir', None)
|
||||
if llvm_tools_dir:
|
||||
llvm_symbolizer_path = os.path.join(llvm_tools_dir, "llvm-symbolizer")
|
||||
tsan_options += " " + "external_symbolizer_path=" + llvm_symbolizer_path
|
||||
|
||||
config.environment['TSAN_OPTIONS'] = tsan_options
|
||||
|
||||
# Setup default compiler flags used with -fsanitize=thread option.
|
||||
# FIXME: Review the set of required flags and check if it can be reduced.
|
||||
|
|
Loading…
Reference in New Issue