Added Thread Sanitizer
This commit is contained in:
parent
045ab51ae5
commit
14c16d6851
|
@ -35,6 +35,7 @@ def get_opts():
|
||||||
BoolVariable('use_ubsan', 'Use LLVM/GCC compiler undefined behavior sanitizer (UBSAN)', False),
|
BoolVariable('use_ubsan', 'Use LLVM/GCC compiler undefined behavior sanitizer (UBSAN)', False),
|
||||||
BoolVariable('use_asan', 'Use LLVM/GCC compiler address sanitizer (ASAN))', False),
|
BoolVariable('use_asan', 'Use LLVM/GCC compiler address sanitizer (ASAN))', False),
|
||||||
BoolVariable('use_lsan', 'Use LLVM/GCC compiler leak sanitizer (LSAN))', False),
|
BoolVariable('use_lsan', 'Use LLVM/GCC compiler leak sanitizer (LSAN))', False),
|
||||||
|
BoolVariable('use_tsan', 'Use LLVM/GCC compiler thread sanitizer (TSAN))', False),
|
||||||
EnumVariable('debug_symbols', 'Add debugging symbols to release builds', 'yes', ('yes', 'no', 'full')),
|
EnumVariable('debug_symbols', 'Add debugging symbols to release builds', 'yes', ('yes', 'no', 'full')),
|
||||||
BoolVariable('separate_debug_symbols', 'Create a separate file containing debugging symbols', False),
|
BoolVariable('separate_debug_symbols', 'Create a separate file containing debugging symbols', False),
|
||||||
BoolVariable('execinfo', 'Use libexecinfo on systems where glibc is not available', False),
|
BoolVariable('execinfo', 'Use libexecinfo on systems where glibc is not available', False),
|
||||||
|
@ -99,7 +100,7 @@ def configure(env):
|
||||||
env.extra_suffix = ".llvm" + env.extra_suffix
|
env.extra_suffix = ".llvm" + env.extra_suffix
|
||||||
|
|
||||||
|
|
||||||
if env['use_ubsan'] or env['use_asan'] or env['use_lsan']:
|
if env['use_ubsan'] or env['use_asan'] or env['use_lsan'] or env['use_tsan']:
|
||||||
env.extra_suffix += "s"
|
env.extra_suffix += "s"
|
||||||
|
|
||||||
if env['use_ubsan']:
|
if env['use_ubsan']:
|
||||||
|
@ -114,6 +115,10 @@ def configure(env):
|
||||||
env.Append(CCFLAGS=['-fsanitize=leak'])
|
env.Append(CCFLAGS=['-fsanitize=leak'])
|
||||||
env.Append(LINKFLAGS=['-fsanitize=leak'])
|
env.Append(LINKFLAGS=['-fsanitize=leak'])
|
||||||
|
|
||||||
|
if env['use_tsan']:
|
||||||
|
env.Append(CCFLAGS=['-fsanitize=thread'])
|
||||||
|
env.Append(LINKFLAGS=['-fsanitize=thread'])
|
||||||
|
|
||||||
if env['use_lto']:
|
if env['use_lto']:
|
||||||
env.Append(CCFLAGS=['-flto'])
|
env.Append(CCFLAGS=['-flto'])
|
||||||
if not env['use_llvm'] and env.GetOption("num_jobs") > 1:
|
if not env['use_llvm'] and env.GetOption("num_jobs") > 1:
|
||||||
|
|
|
@ -64,6 +64,7 @@ def get_opts():
|
||||||
BoolVariable('use_ubsan', 'Use LLVM/GCC compiler undefined behavior sanitizer (UBSAN)', False),
|
BoolVariable('use_ubsan', 'Use LLVM/GCC compiler undefined behavior sanitizer (UBSAN)', False),
|
||||||
BoolVariable('use_asan', 'Use LLVM/GCC compiler address sanitizer (ASAN))', False),
|
BoolVariable('use_asan', 'Use LLVM/GCC compiler address sanitizer (ASAN))', False),
|
||||||
BoolVariable('use_lsan', 'Use LLVM/GCC compiler leak sanitizer (LSAN))', False),
|
BoolVariable('use_lsan', 'Use LLVM/GCC compiler leak sanitizer (LSAN))', False),
|
||||||
|
BoolVariable('use_tsan', 'Use LLVM/GCC compiler thread sanitizer (TSAN))', False),
|
||||||
BoolVariable('pulseaudio', 'Detect and use PulseAudio', True),
|
BoolVariable('pulseaudio', 'Detect and use PulseAudio', True),
|
||||||
BoolVariable('udev', 'Use udev for gamepad connection callbacks', False),
|
BoolVariable('udev', 'Use udev for gamepad connection callbacks', False),
|
||||||
EnumVariable('debug_symbols', 'Add debugging symbols to release builds', 'yes', ('yes', 'no', 'full')),
|
EnumVariable('debug_symbols', 'Add debugging symbols to release builds', 'yes', ('yes', 'no', 'full')),
|
||||||
|
@ -140,7 +141,7 @@ def configure(env):
|
||||||
print("Using LLD with GCC is not supported yet, try compiling with 'use_llvm=yes'.")
|
print("Using LLD with GCC is not supported yet, try compiling with 'use_llvm=yes'.")
|
||||||
sys.exit(255)
|
sys.exit(255)
|
||||||
|
|
||||||
if env['use_ubsan'] or env['use_asan'] or env['use_lsan']:
|
if env['use_ubsan'] or env['use_asan'] or env['use_lsan'] or env['use_tsan']:
|
||||||
env.extra_suffix += "s"
|
env.extra_suffix += "s"
|
||||||
|
|
||||||
if env['use_ubsan']:
|
if env['use_ubsan']:
|
||||||
|
@ -155,6 +156,10 @@ def configure(env):
|
||||||
env.Append(CCFLAGS=['-fsanitize=leak'])
|
env.Append(CCFLAGS=['-fsanitize=leak'])
|
||||||
env.Append(LINKFLAGS=['-fsanitize=leak'])
|
env.Append(LINKFLAGS=['-fsanitize=leak'])
|
||||||
|
|
||||||
|
if env['use_tsan']:
|
||||||
|
env.Append(CCFLAGS=['-fsanitize=thread'])
|
||||||
|
env.Append(LINKFLAGS=['-fsanitize=thread'])
|
||||||
|
|
||||||
if env['use_lto']:
|
if env['use_lto']:
|
||||||
if not env['use_llvm'] and env.GetOption("num_jobs") > 1:
|
if not env['use_llvm'] and env.GetOption("num_jobs") > 1:
|
||||||
env.Append(CCFLAGS=['-flto'])
|
env.Append(CCFLAGS=['-flto'])
|
||||||
|
|
Loading…
Reference in New Issue