summaryrefslogtreecommitdiff
path: root/wscript
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-12-07 00:46:33 +0100
committerRobin Gareus <robin@gareus.org>2019-12-07 00:46:33 +0100
commit8be727114c60308eed71309851a3587a42abfc30 (patch)
tree7dd35ee60ba891283880650d51e8309b30ff4374 /wscript
parent052f3a683676c4aee671b2c8d81ab4c8cba35ec1 (diff)
Add tsan option to trace data-races
Diffstat (limited to 'wscript')
-rw-r--r--wscript8
1 files changed, 8 insertions, 0 deletions
diff --git a/wscript b/wscript
index 75ff792971..e9fb579dc9 100644
--- a/wscript
+++ b/wscript
@@ -384,6 +384,12 @@ int main() { return 0; }''',
cxx_flags.append('-fno-omit-frame-pointer')
linker_flags.append('-fsanitize=address')
+ if conf.options.tsan:
+ conf.check_cxx(cxxflags=["-fsanitize=thread", "-fno-omit-frame-pointer"], linkflags=["-fsanitize=thread"])
+ c_flags.extend(('-fsanitize=thread', '-fno-omit-frame-pointer'))
+ cxx_flags.extend(('-fsanitize=thread', '-fno-omit-frame-pointer'))
+ linker_flags.append('-fsanitize=thread')
+
if opt.gprofile:
debug_flags = [ flags_dict['gprofile'] ]
@@ -828,6 +834,8 @@ def options(opt):
help='use libc++ instead of default or auto-detected stdlib')
opt.add_option('--address-sanitizer', action='store_true', default=False, dest='asan',
help='Turn on AddressSanitizer (requires GCC >= 4.8 or clang >= 3.1)')
+ opt.add_option('--thread-sanitizer', action='store_true', default=False, dest='tsan',
+ help='Turn on ThreadSanitizer (requires GCC >= 4.8 or clang, and 64bit CPU)')
opt.add_option('--ptformat', action='store_true', default=False, dest='ptformat',
help='Turn on PT session import option')
opt.add_option('--no-threaded-waveviews', action='store_true', default=False, dest='no_threaded_waveviews',