[libcxxabi] Add support for running libc++abi tests with sanitizers
Summary: Add support for LLVM_USE_SANITIZER to the libc++abi tests. Currently, if libc++abi is configured with LLVM_USE_SANITIZER then none of the tests will pass. Reviewers: jroelofs, mclow.lists, danalbert Reviewed By: danalbert Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D5926 llvm-svn: 220464
This commit is contained in:
parent
062e6ee121
commit
78d325c143
|
@ -222,6 +222,31 @@ include_paths = ['-I' + libcxxabi_src_root + '/include',
|
|||
library_paths = ['-L' + libcxxabi_obj_root + '/lib']
|
||||
compile_flags = ['-std=c++11']
|
||||
|
||||
|
||||
san = lit_config.params.get('llvm_use_sanitizer', None)
|
||||
if san is None:
|
||||
san = getattr(config, 'llvm_use_sanitizer', None)
|
||||
if san:
|
||||
if not sys.platform.startswith('freebsd'):
|
||||
link_flags += ['-ldl']
|
||||
if san == 'Address':
|
||||
compile_flags += ['-fsanitize=address']
|
||||
config.available_features.add('asan')
|
||||
elif san == 'Memory' or san == 'MemoryWithOrigins':
|
||||
compile_flags += ['-fsanitize=memory']
|
||||
config.available_features.add('msan')
|
||||
if san == 'MemoryWithOrigins':
|
||||
compile_flags += ['-fsanitize-memory-track-origins']
|
||||
elif san == 'Undefined':
|
||||
compile_flags += ['-fsanitize=undefined',
|
||||
'-fno-sanitize=vptr,function',
|
||||
'-fno-sanitize-recover']
|
||||
config.available_features.add('ubsan')
|
||||
else:
|
||||
lit_config.fatal('unsupported value for '
|
||||
'llvm_use_sanitizer: {0}'.format(san))
|
||||
|
||||
|
||||
# Configure extra linker parameters.
|
||||
exec_env = {}
|
||||
if sys.platform == 'darwin':
|
||||
|
|
|
@ -6,6 +6,7 @@ config.python_executable = "@PYTHON_EXECUTABLE@"
|
|||
config.enable_shared = @LIBCXXABI_ENABLE_SHARED@
|
||||
config.libcxx_includes = "@LIBCXXABI_LIBCXX_INCLUDES@"
|
||||
config.llvm_unwinder = @LIBCXXABI_USE_LLVM_UNWINDER@
|
||||
config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
|
||||
|
||||
# Let the main config do the real work.
|
||||
lit_config.load_config(config, "@LIBCXXABI_SOURCE_DIR@/test/lit.cfg")
|
||||
|
|
Loading…
Reference in New Issue