[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':