From c3e88a21fbe9c9e1d163bb7bef10cc5072aeb19e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 3 Apr 2025 07:23:23 +0200 Subject: [PATCH] compiler: Recognize -fno-sanitize=<...> in addition to -fsanitize=<...>. --- src/clang_options_data.zig | 2 +- src/main.zig | 10 ++++++---- tools/update_clang_options.zig | 4 ++++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/clang_options_data.zig b/src/clang_options_data.zig index 483433f1a3..6f636e90a3 100644 --- a/src/clang_options_data.zig +++ b/src/clang_options_data.zig @@ -7043,7 +7043,7 @@ joinpd1("fmsc-version="), .{ .name = "fno-sanitize=", .syntax = .comma_joined, - .zig_equivalent = .other, + .zig_equivalent = .no_sanitize, .pd1 = true, .pd2 = false, .psl = false, diff --git a/src/main.zig b/src/main.zig index a377b38494..9a4fd1112e 100644 --- a/src/main.zig +++ b/src/main.zig @@ -2217,18 +2217,19 @@ fn buildOutputType( mod_opts.strip = false; create_module.opts.debug_format = .{ .dwarf = .@"64" }; }, - .sanitize => { + .sanitize, .no_sanitize => |t| { + const enable = t == .sanitize; var san_it = std.mem.splitScalar(u8, it.only_arg, ','); var recognized_any = false; while (san_it.next()) |sub_arg| { if (mem.eql(u8, sub_arg, "undefined")) { - mod_opts.sanitize_c = true; + mod_opts.sanitize_c = enable; recognized_any = true; } else if (mem.eql(u8, sub_arg, "thread")) { - mod_opts.sanitize_thread = true; + mod_opts.sanitize_thread = enable; recognized_any = true; } else if (mem.eql(u8, sub_arg, "fuzzer") or mem.eql(u8, sub_arg, "fuzzer-no-link")) { - mod_opts.fuzz = true; + mod_opts.fuzz = enable; recognized_any = true; } } @@ -5904,6 +5905,7 @@ pub const ClangArgIterator = struct { gdwarf32, gdwarf64, sanitize, + no_sanitize, linker_script, dry_run, verbose, diff --git a/tools/update_clang_options.zig b/tools/update_clang_options.zig index 2573d173a9..5b8d5ae4f7 100644 --- a/tools/update_clang_options.zig +++ b/tools/update_clang_options.zig @@ -284,6 +284,10 @@ const known_options = [_]KnownOpt{ .name = "fsanitize", .ident = "sanitize", }, + .{ + .name = "fno-sanitize", + .ident = "no_sanitize", + }, .{ .name = "T", .ident = "linker_script",