diff options
Diffstat (limited to 'test/fuzzer/lit.cfg')
-rw-r--r-- | test/fuzzer/lit.cfg | 58 |
1 files changed, 47 insertions, 11 deletions
diff --git a/test/fuzzer/lit.cfg b/test/fuzzer/lit.cfg index 0350a1ad7797..8a44860d4a5d 100644 --- a/test/fuzzer/lit.cfg +++ b/test/fuzzer/lit.cfg @@ -2,7 +2,7 @@ import lit.formats import sys import os -config.name = "LLVMFuzzer" +config.name = "libFuzzer" + config.name_suffix config.test_format = lit.formats.ShTest(True) config.suffixes = ['.test'] config.test_source_root = os.path.dirname(__file__) @@ -25,12 +25,20 @@ else: config.test_format = lit.formats.ShTest(execute_external) # LeakSanitizer is not supported on OSX right now. -if sys.platform.startswith('darwin'): +if sys.platform.startswith('darwin') or sys.platform.startswith('freebsd'): lit_config.note('lsan feature unavailable') else: lit_config.note('lsan feature available') config.available_features.add('lsan') +# MemorySanitizer is not supported on OSX right now +if sys.platform.startswith('darwin'): + lit_config.note('msan feature unavailable') + assert 'msan' not in config.available_features +else: + lit_config.note('msan feature available') + config.available_features.add('msan') + if sys.platform.startswith('win') or sys.platform.startswith('cygwin'): config.available_features.add('windows') @@ -49,18 +57,36 @@ config.substitutions.append(('%build_dir', config.cmake_binary_dir)) libfuzzer_src_root = os.path.join(config.compiler_rt_src_root, "lib", "fuzzer") config.substitutions.append(('%libfuzzer_src', libfuzzer_src_root)) -def generate_compiler_cmd(is_cpp=True, fuzzer_enabled=True): - compiler_cmd = config.c_compiler - link_cmd = '-lc++' if 'darwin' in config.target_triple else '-lstdc++' - std_cmd = '-std=c++11' if is_cpp else '' - sanitizers = ['address'] +def generate_compiler_cmd(is_cpp=True, fuzzer_enabled=True, msan_enabled=False): + compiler_cmd = config.clang + extra_cmd = config.target_flags + if config.clang and config.stdlib == 'libc++': + link_cmd = '-stdlib=libc++ -Wl,-rpath=%s' % config.runtime_library_dir + elif config.clang and config.stdlib == 'static-libc++': + link_cmd = '-stdlib=libc++ -lc++abi -static-libstdc++ -Wl,-rpath=%s' % ( + config.runtime_library_dir) + elif any(x in config.target_triple for x in ('darwin', 'freebsd')): + link_cmd = '-lc++' + else: + link_cmd = '-lstdc++' + + std_cmd = '--driver-mode=g++ -std=c++11' if is_cpp else '' + if msan_enabled: + sanitizers = ['memory'] + else: + sanitizers = ['address'] if fuzzer_enabled: sanitizers.append('fuzzer') sanitizers_cmd = ('-fsanitize=%s' % ','.join(sanitizers)) - isysroot_cmd = config.osx_sysroot_flag if config.osx_sysroot_flag else '' - include_cmd = '-I%s' % libfuzzer_src_root - return '%s %s %s -gline-tables-only %s %s %s' % ( - compiler_cmd, std_cmd, link_cmd, isysroot_cmd, sanitizers_cmd, include_cmd) + return " ".join([ + compiler_cmd, + std_cmd, + link_cmd, + "-O2 -gline-tables-only", + sanitizers_cmd, + "-I%s" % libfuzzer_src_root, + extra_cmd + ]) config.substitutions.append(('%cpp_compiler', generate_compiler_cmd(is_cpp=True, fuzzer_enabled=True) @@ -77,3 +103,13 @@ config.substitutions.append(('%no_fuzzer_cpp_compiler', config.substitutions.append(('%no_fuzzer_c_compiler', generate_compiler_cmd(is_cpp=False, fuzzer_enabled=False) )) + +config.substitutions.append(('%msan_compiler', + generate_compiler_cmd(is_cpp=True, fuzzer_enabled=True, msan_enabled=True) + )) + +if config.host_os == 'Darwin': + if config.target_arch in ["x86_64", "x86_64h"]: + config.parallelism_group = "darwin-64bit-sanitizer" + elif config.apple_platform != "osx" and not config.apple_platform.endswith("sim"): + config.parallelism_group = "darwin-ios-device-sanitizer" |