From: Fangrui Song Date: Fri, 31 Jul 2020 07:04:09 +0000 (-0700) Subject: [Driver] Exclude options::LinkerInput for GCC linking X-Git-Tag: llvmorg-13-init~16187 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c06e22fe07aa5eb8a9f8ce824cbab1bfe5a96581;p=platform%2Fupstream%2Fllvm.git [Driver] Exclude options::LinkerInput for GCC linking options::LinkerInput options may get duplicated after 6a75496836ea14bcfd2f4b59d35a1cad4ac58cee.. --- diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp index 1806c14c395d..9ca674511dab 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 9579d0d60d1c..a99944f8f533 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.