[libcxx] Add support for LLVM_USE_SANITIZER to libcxx when being built standalone and in-tree
Summary:
This patch adds support for LLVM_USE_SANITIZER when being built in-tree and standalone.
This patch does the following things:
1. define the LLVM_USE_SANITIZER option to "" when being built standalone. This also helps show we support it.
2. Translate LLVM_USE_SANITIZER when standalone in a very similar way done in llvm/cmake/HandleLLVMOptions.cmake.
3. Add config.llvm_use_sanitizer to lit.site.cfg.in
4. Add code to translate config.llvm_use_sanitizer's value into the needed compile flags in lit.cfg.
Currently lit.cfg assumes that that the compiler supports '-fno-omit-frame-pointer' while CMakeLists.txt actually checks to see if its supported. We could pass this information to lit but I'm not sure its needed.
Reviewers: mclow.lists, danalbert
Reviewed By: danalbert
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D4949
llvm-svn: 215872
diff --git a/libcxx/test/lit.cfg b/libcxx/test/lit.cfg
index edb0ab0..f41187b 100644
--- a/libcxx/test/lit.cfg
+++ b/libcxx/test/lit.cfg
@@ -314,6 +314,22 @@
lit_config.note('using user specified std: \'-std={}\''.format(std))
compile_flags += ['-std={}'.format(std)]
+built_w_san = getattr(config, 'llvm_use_sanitizer')
+if built_w_san and built_w_san.strip():
+ built_w_san = built_w_san.strip()
+ compile_flags += ['-fno-omit-frame-pointer']
+ if built_w_san == 'Address':
+ compile_flags += ['-fsanitize=address']
+ config.available_features.add('asan')
+ elif built_w_san == 'Memory' or built_w_san == 'MemoryWithOrigins':
+ compile_flags += ['-fsanitize=memory']
+ if built_w_san == 'MemoryWithOrigins':
+ compile_flags += ['-fsanitize-memory-track-origins']
+ config.available_features.add('msan')
+ else:
+ lit_config.fatal(
+ 'unsupported value for libcxx_use_sanitizer: {}'.format(built_w_san))
+
# Configure extra linker parameters.
exec_env = {}
if sys.platform == 'darwin':