diff options
| author | Alex Rønne Petersen <alex@alexrp.com> | 2025-04-16 02:44:55 +0200 |
|---|---|---|
| committer | Alex Rønne Petersen <alex@alexrp.com> | 2025-04-26 22:54:34 +0200 |
| commit | b3537d0f4adeff824348a4918b495976ae230731 (patch) | |
| tree | 4635a2febd416352452e5b909afad138db43b601 /lib/std/Build/Module.zig | |
| parent | 23440fbb99a501fac9cfb6af85c6303732cf0b06 (diff) | |
| download | zig-b3537d0f4adeff824348a4918b495976ae230731.tar.gz zig-b3537d0f4adeff824348a4918b495976ae230731.zip | |
compiler: Allow configuring UBSan mode at the module level.
* Accept -fsanitize-c=trap|full in addition to the existing form.
* Accept -f(no-)sanitize-trap=undefined in zig cc.
* Change type of std.Build.Module.sanitize_c to std.zig.SanitizeC.
* Add some missing Compilation.Config fields to the cache.
Closes #23216.
Diffstat (limited to 'lib/std/Build/Module.zig')
| -rw-r--r-- | lib/std/Build/Module.zig | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/std/Build/Module.zig b/lib/std/Build/Module.zig index ff85d5a6c7..d95da55efa 100644 --- a/lib/std/Build/Module.zig +++ b/lib/std/Build/Module.zig @@ -22,7 +22,7 @@ unwind_tables: ?std.builtin.UnwindTables, single_threaded: ?bool, stack_protector: ?bool, stack_check: ?bool, -sanitize_c: ?bool, +sanitize_c: ?std.zig.SanitizeC, sanitize_thread: ?bool, fuzz: ?bool, code_model: std.builtin.CodeModel, @@ -256,7 +256,7 @@ pub const CreateOptions = struct { code_model: std.builtin.CodeModel = .default, stack_protector: ?bool = null, stack_check: ?bool = null, - sanitize_c: ?bool = null, + sanitize_c: ?std.zig.SanitizeC = null, sanitize_thread: ?bool = null, fuzz: ?bool = null, /// Whether to emit machine code that integrates with Valgrind. @@ -559,13 +559,18 @@ pub fn appendZigProcessFlags( try addFlag(zig_args, m.stack_protector, "-fstack-protector", "-fno-stack-protector"); try addFlag(zig_args, m.omit_frame_pointer, "-fomit-frame-pointer", "-fno-omit-frame-pointer"); try addFlag(zig_args, m.error_tracing, "-ferror-tracing", "-fno-error-tracing"); - try addFlag(zig_args, m.sanitize_c, "-fsanitize-c", "-fno-sanitize-c"); try addFlag(zig_args, m.sanitize_thread, "-fsanitize-thread", "-fno-sanitize-thread"); try addFlag(zig_args, m.fuzz, "-ffuzz", "-fno-fuzz"); try addFlag(zig_args, m.valgrind, "-fvalgrind", "-fno-valgrind"); try addFlag(zig_args, m.pic, "-fPIC", "-fno-PIC"); try addFlag(zig_args, m.red_zone, "-mred-zone", "-mno-red-zone"); + if (m.sanitize_c) |sc| switch (sc) { + .off => try zig_args.append("-fno-sanitize-c"), + .trap => try zig_args.append("-fsanitize-c=trap"), + .full => try zig_args.append("-fsanitize-c=full"), + }; + if (m.dwarf_format) |dwarf_format| { try zig_args.append(switch (dwarf_format) { .@"32" => "-gdwarf32", |
