From a4b134746f61a2f07ea5450c0504f51cba8f6be3 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 22 Dec 2020 20:45:37 -0700 Subject: [PATCH] zig cc: support both ubsan and tsan at the same time --- src/Compilation.zig | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/Compilation.zig b/src/Compilation.zig index 6372dbff3a..5c38d131e6 100644 --- a/src/Compilation.zig +++ b/src/Compilation.zig @@ -2076,10 +2076,6 @@ pub fn addCCArgs( try argv.append("-ffunction-sections"); } - if (comp.bin_file.options.tsan) { - try argv.append("-fsanitize=thread"); - } - try argv.ensureCapacity(argv.items.len + comp.bin_file.options.framework_dirs.len * 2); for (comp.bin_file.options.framework_dirs) |framework_dir| { argv.appendAssumeCapacity("-iframework"); @@ -2203,9 +2199,14 @@ pub fn addCCArgs( try argv.append("-fomit-frame-pointer"); } - if (comp.sanitize_c) { + if (comp.sanitize_c and !comp.bin_file.options.tsan) { try argv.append("-fsanitize=undefined"); try argv.append("-fsanitize-trap=undefined"); + } else if (comp.sanitize_c and comp.bin_file.options.tsan) { + try argv.append("-fsanitize=undefined,thread"); + try argv.append("-fsanitize-trap=undefined"); + } else if (!comp.sanitize_c and comp.bin_file.options.tsan) { + try argv.append("-fsanitize=thread"); } switch (comp.bin_file.options.optimize_mode) {