From 6cbe589b51c9404a0f485733cbc4e3b46499d480 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 25 Mar 2020 12:05:33 -0400 Subject: [PATCH] zig cc: support -T linker script option --- src-self-hosted/clang_options_data.zig | 9 ++++++++- src-self-hosted/stage2.zig | 1 + src/main.cpp | 3 +++ src/stage2.h | 1 + tools/update_clang_options.zig | 4 ++++ 5 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src-self-hosted/clang_options_data.zig b/src-self-hosted/clang_options_data.zig index 1e472f80a..d94a6fd00 100644 --- a/src-self-hosted/clang_options_data.zig +++ b/src-self-hosted/clang_options_data.zig @@ -5614,7 +5614,14 @@ jspd1("L"), .psl = false, }, joinpd1("R"), -jspd1("T"), +.{ + .name = "T", + .syntax = .joined_or_separate, + .zig_equivalent = .linker_script, + .pd1 = true, + .pd2 = false, + .psl = false, +}, jspd1("U"), jspd1("V"), joinpd1("W"), diff --git a/src-self-hosted/stage2.zig b/src-self-hosted/stage2.zig index ff6ef4734..a5ca6ccfa 100644 --- a/src-self-hosted/stage2.zig +++ b/src-self-hosted/stage2.zig @@ -1278,6 +1278,7 @@ pub const ClangArgIterator = extern struct { optimize, debug, sanitize, + linker_script, }; fn init(argv: []const [*:0]const u8) ClangArgIterator { diff --git a/src/main.cpp b/src/main.cpp index 23a933d53..edeaad356 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -704,6 +704,9 @@ static int main0(int argc, char **argv) { } } break; + case Stage2ClangArgLinkerScript: + linker_script = it.only_arg; + break; } } // Parse linker args diff --git a/src/stage2.h b/src/stage2.h index 8893b1e27..1aef0efe8 100644 --- a/src/stage2.h +++ b/src/stage2.h @@ -340,6 +340,7 @@ enum Stage2ClangArg { Stage2ClangArgOptimize, Stage2ClangArgDebug, Stage2ClangArgSanitize, + Stage2ClangArgLinkerScript, }; // ABI warning diff --git a/tools/update_clang_options.zig b/tools/update_clang_options.zig index f65c89c25..6fd50de92 100644 --- a/tools/update_clang_options.zig +++ b/tools/update_clang_options.zig @@ -146,6 +146,10 @@ const known_options = [_]KnownOpt{ .name = "fsanitize", .ident = "sanitize", }, + .{ + .name = "T", + .ident = "linker_script", + }, }; const blacklisted_options = [_][]const u8{};