aboutsummaryrefslogtreecommitdiff
path: root/test/asan/lit.cfg
diff options
context:
space:
mode:
Diffstat (limited to 'test/asan/lit.cfg')
-rw-r--r--test/asan/lit.cfg37
1 files changed, 26 insertions, 11 deletions
diff --git a/test/asan/lit.cfg b/test/asan/lit.cfg
index 7703f5a31b0d..7d684a1ae7a7 100644
--- a/test/asan/lit.cfg
+++ b/test/asan/lit.cfg
@@ -2,6 +2,7 @@
import os
import platform
+import re
import lit.formats
@@ -132,16 +133,22 @@ if config.asan_dynamic:
# Windows-specific tests might also use the clang-cl.exe driver.
if platform.system() == 'Windows':
- clang_cl_asan_cxxflags = ["-fsanitize=address",
- "-Wno-deprecated-declarations",
- "-WX",
- "-D_HAS_EXCEPTIONS=0",
- "-Zi"] + target_cflags
+ clang_cl_cxxflags = ["-Wno-deprecated-declarations",
+ "-WX",
+ "-D_HAS_EXCEPTIONS=0",
+ "-Zi"] + target_cflags
+ clang_cl_asan_cxxflags = ["-fsanitize=address"] + clang_cl_cxxflags
if config.asan_dynamic:
clang_cl_asan_cxxflags.append("-MD")
- clang_invocation = build_invocation(clang_cl_asan_cxxflags)
- clang_cl_invocation = clang_invocation.replace("clang.exe","clang-cl.exe")
- config.substitutions.append( ("%clang_cl_asan ", clang_cl_invocation) )
+
+ clang_cl_invocation = build_invocation(clang_cl_cxxflags)
+ clang_cl_invocation = clang_cl_invocation.replace("clang.exe","clang-cl.exe")
+ config.substitutions.append( ("%clang_cl ", clang_cl_invocation) )
+
+ clang_cl_asan_invocation = build_invocation(clang_cl_asan_cxxflags)
+ clang_cl_asan_invocation = clang_cl_asan_invocation.replace("clang.exe","clang-cl.exe")
+ config.substitutions.append( ("%clang_cl_asan ", clang_cl_asan_invocation) )
+
base_lib = os.path.join(config.compiler_rt_libdir, "clang_rt.asan%%s-%s.lib" % config.target_arch)
config.substitutions.append( ("%asan_lib", base_lib % "") )
config.substitutions.append( ("%asan_cxx_lib", base_lib % "_cxx") )
@@ -196,16 +203,21 @@ elif config.host_os == 'Linux':
config.substitutions.append( ("%ld_flags_rpath_so", '') )
# Must be defined after the substitutions that use %dynamiclib.
-config.substitutions.append( ("%dynamiclib", '%T/lib%xdynamiclib_namespec.so') )
-config.substitutions.append( ("%xdynamiclib_namespec", '$(basename %t).dynamic') )
+config.substitutions.append( ("%dynamiclib", '%T/%xdynamiclib_filename') )
+config.substitutions.append( ("%xdynamiclib_filename", 'lib%xdynamiclib_namespec.so') )
+config.substitutions.append( ("%xdynamiclib_namespec", '%basename_t.dynamic') )
# Allow tests to use REQUIRES=stable-runtime. For use when you cannot use XFAIL
# because the test hangs. Adding armhf as we now have two modes.
if config.target_arch != 'arm' and config.target_arch != 'armhf' and config.target_arch != 'aarch64':
config.available_features.add('stable-runtime')
+# Fast unwinder doesn't work with Thumb
+if re.search('mthumb', config.target_cflags) is not None:
+ config.available_features.add('fast-unwinder-works')
+
# Turn on leak detection on 64-bit Linux.
-if config.host_os == 'Linux' and config.target_arch == 'x86_64':
+if config.host_os == 'Linux' and (config.target_arch == 'x86_64' or config.target_arch == 'i386'):
config.available_features.add('leak-detection')
# Set LD_LIBRARY_PATH to pick dynamic runtime up properly.
@@ -241,3 +253,6 @@ else:
# Only run the tests on supported OSs.
if config.host_os not in ['Linux', 'Darwin', 'FreeBSD', 'Windows']:
config.unsupported = True
+
+if config.host_os == 'Darwin' and config.target_arch in ["x86_64", "x86_64h"]:
+ config.parallelism_group = "darwin-64bit-sanitizer"