diff --git a/src-self-hosted/clang_options_data.zig b/src-self-hosted/clang_options_data.zig index ddf3f36a94..d8bd020431 100644 --- a/src-self-hosted/clang_options_data.zig +++ b/src-self-hosted/clang_options_data.zig @@ -4255,7 +4255,14 @@ flagpd1("fno-whole-file"), flagpd1("fwhole-program"), flagpd1("fno-whole-program"), flagpd1("whyload"), -sepd1("z"), +.{ + .name = "z", + .syntax = .separate, + .zig_equivalent = .linker_input_z, + .pd1 = true, + .pd2 = false, + .psl = false, +}, joinpd1("fsanitize-undefined-strip-path-components="), joinpd1("fopenmp-cuda-teams-reduction-recs-num="), joinpd1("analyzer-config-compatibility-mode="), diff --git a/src-self-hosted/stage2.zig b/src-self-hosted/stage2.zig index bd413d34d8..2c4fe99abe 100644 --- a/src-self-hosted/stage2.zig +++ b/src-self-hosted/stage2.zig @@ -1290,6 +1290,7 @@ pub const ClangArgIterator = extern struct { rtti, no_rtti, for_linker, + linker_input_z, }; const Args = struct { diff --git a/src/main.cpp b/src/main.cpp index 1e99545399..a7a9b41950 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -737,6 +737,10 @@ static int main0(int argc, char **argv) { case Stage2ClangArgForLinker: linker_args.append(buf_create_from_str(it.only_arg)); break; + case Stage2ClangArgLinkerInputZ: + linker_args.append(buf_create_from_str("-z")); + linker_args.append(buf_create_from_str(it.only_arg)); + break; } } // Parse linker args diff --git a/src/stage2.h b/src/stage2.h index 42a144f4ce..5cea30dbab 100644 --- a/src/stage2.h +++ b/src/stage2.h @@ -350,6 +350,7 @@ enum Stage2ClangArg { Stage2ClangArgRtti, Stage2ClangArgNoRtti, Stage2ClangArgForLinker, + Stage2ClangArgLinkerInputZ, }; // ABI warning diff --git a/tools/update_clang_options.zig b/tools/update_clang_options.zig index f8d1987206..b673fa0503 100644 --- a/tools/update_clang_options.zig +++ b/tools/update_clang_options.zig @@ -90,6 +90,10 @@ const known_options = [_]KnownOpt{ .name = "for-linker=", .ident = "for_linker", }, + .{ + .name = "z", + .ident = "linker_input_z", + }, .{ .name = "E", .ident = "preprocess",