From c06e22fe07aa5eb8a9f8ce824cbab1bfe5a96581 Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Fri, 31 Jul 2020 00:04:09 -0700 Subject: [PATCH] [Driver] Exclude options::LinkerInput for GCC linking options::LinkerInput options may get duplicated after 6a75496836ea14bcfd2f4b59d35a1cad4ac58cee.. --- clang/lib/Driver/ToolChains/Gnu.cpp | 3 +++ clang/test/Driver/gcc_forward.c | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp index 1806c14..9ca6745 100644 --- a/clang/lib/Driver/ToolChains/Gnu.cpp +++ b/clang/lib/Driver/ToolChains/Gnu.cpp @@ -38,6 +38,9 @@ using tools::addMultilibFlag; using tools::addPathIfExists; static bool forwardToGCC(const Option &O) { + // LinkerInput options have been forwarded. Don't duplicate. + if (O.hasFlag(options::LinkerInput)) + return false; return O.matches(options::OPT_Link_Group) || O.hasFlag(options::LinkOption); } diff --git a/clang/test/Driver/gcc_forward.c b/clang/test/Driver/gcc_forward.c index 9579d0d..a99944f 100644 --- a/clang/test/Driver/gcc_forward.c +++ b/clang/test/Driver/gcc_forward.c @@ -1,7 +1,7 @@ // RUN: %clang -### %s -target aarch64-none-elf \ -// RUN: --coverage -fuse-ld=lld --ld-path=ld -nostdlib -r -rdynamic -static -static-pie \ +// RUN: --coverage -e _start -fuse-ld=lld --ld-path=ld -nostdlib -r -rdynamic -static -static-pie \ // RUN: 2>&1 | FileCheck --check-prefix=FORWARD %s -// FORWARD: gcc{{[^"]*}}" "--coverage" "-fuse-ld=lld" "--ld-path=ld" "-nostdlib" "-r" "-rdynamic" "-static" "-static-pie" +// FORWARD: gcc{{[^"]*}}" "--coverage" "-fuse-ld=lld" "--ld-path=ld" "-nostdlib" "-rdynamic" "-static" "-static-pie" "-o" "a.out" "{{.*}}.o" "-e" "_start" "-r" // Check that we don't try to forward -Xclang or -mlinker-version to GCC. // PR12920 -- Check also we may not forward W_Group options to GCC. -- 2.7.4