aboutsummaryrefslogtreecommitdiff
path: root/test/fuzzer/lit.cfg
diff options
context:
space:
mode:
Diffstat (limited to 'test/fuzzer/lit.cfg')
-rw-r--r--test/fuzzer/lit.cfg58
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"