diff options
author | Kuba Brecka <kuba.brecka@gmail.com> | 2016-09-15 11:04:53 +0000 |
---|---|---|
committer | Kuba Brecka <kuba.brecka@gmail.com> | 2016-09-15 11:04:53 +0000 |
commit | 50bc34ca31d1499472a1117ded41be34e4c44067 (patch) | |
tree | 2558bb5896553a7369d63c967dfd6730873ac569 /libcxx/test | |
parent | 22d82cf1796b6353f3d898e82671d98caede5cd0 (diff) | |
download | bcm5719-llvm-50bc34ca31d1499472a1117ded41be34e4c44067.tar.gz bcm5719-llvm-50bc34ca31d1499472a1117ded41be34e4c44067.zip |
[libcxx] Allow sanitizing libcxx with ASan+UBSan simultaneously
Allow building with LLVM_USE_SANITIZER=“Address;Undefined” (and “Undefined;Address”).
Differential Revision: https://reviews.llvm.org/D24569
llvm-svn: 281603
Diffstat (limited to 'libcxx/test')
-rw-r--r-- | libcxx/test/libcxx/test/config.py | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/libcxx/test/libcxx/test/config.py b/libcxx/test/libcxx/test/config.py index 70f2094aac9..9812e358b65 100644 --- a/libcxx/test/libcxx/test/config.py +++ b/libcxx/test/libcxx/test/config.py @@ -610,9 +610,17 @@ class Configuration(object): os.pathsep + symbolizer_search_paths) llvm_symbolizer = lit.util.which('llvm-symbolizer', symbolizer_search_paths) + + def add_ubsan(): + self.cxx.flags += ['-fsanitize=undefined', + '-fno-sanitize=vptr,function,float-divide-by-zero', + '-fno-sanitize-recover=all'] + self.env['UBSAN_OPTIONS'] = 'print_stacktrace=1' + self.config.available_features.add('ubsan') + # Setup the sanitizer compile flags self.cxx.flags += ['-g', '-fno-omit-frame-pointer'] - if san == 'Address': + if san == 'Address' or san == 'Address;Undefined' or san == 'Undefined;Address': self.cxx.flags += ['-fsanitize=address'] if llvm_symbolizer is not None: self.env['ASAN_SYMBOLIZER_PATH'] = llvm_symbolizer @@ -622,6 +630,8 @@ class Configuration(object): self.config.available_features.add('asan') self.config.available_features.add('sanitizer-new-delete') self.cxx.compile_flags += ['-O1'] + if san == 'Address;Undefined' or san == 'Undefined;Address': + add_ubsan() elif san == 'Memory' or san == 'MemoryWithOrigins': self.cxx.flags += ['-fsanitize=memory'] if san == 'MemoryWithOrigins': @@ -633,12 +643,8 @@ class Configuration(object): self.config.available_features.add('sanitizer-new-delete') self.cxx.compile_flags += ['-O1'] elif san == 'Undefined': - self.cxx.flags += ['-fsanitize=undefined', - '-fno-sanitize=vptr,function,float-divide-by-zero', - '-fno-sanitize-recover=all'] + add_ubsan() self.cxx.compile_flags += ['-O2'] - self.env['UBSAN_OPTIONS'] = 'print_stacktrace=1' - self.config.available_features.add('ubsan') elif san == 'Thread': self.cxx.flags += ['-fsanitize=thread'] self.config.available_features.add('tsan') |