summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2014-06-26 01:08:54 +0000
committerReid Kleckner <reid@kleckner.net>2014-06-26 01:08:54 +0000
commit5937825128564ab750d20467a91d6776afe8cc73 (patch)
tree1aaf4c170457b1eff12732c42a40dbb8f50f8dbf
parent0dfafa59cace8b477d3ae3ab89f2e662fea0954c (diff)
downloadclang-5937825128564ab750d20467a91d6776afe8cc73.tar.gz
clang-5937825128564ab750d20467a91d6776afe8cc73.tar.bz2
clang-5937825128564ab750d20467a91d6776afe8cc73.tar.xz
Forward -u to the linker on gnutools toolchains
Summary: The BSDs and Darwin all forward the whole 'u' group, but gcc only forwards -u so far as I can tell. I only forward -u, since that's a minimal change, and many people object to magically recognizing and forwarding linker arguments. Reviewers: chandlerc, joerg Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D4304 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211756 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Driver/Tools.cpp1
-rw-r--r--test/Driver/linux-ld.c6
2 files changed, 7 insertions, 0 deletions
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index f652fadf0f..1f89d39f0d 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -7158,6 +7158,7 @@ void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA,
}
Args.AddAllArgs(CmdArgs, options::OPT_L);
+ Args.AddAllArgs(CmdArgs, options::OPT_u);
const ToolChain::path_list Paths = ToolChain.getFilePaths();
diff --git a/test/Driver/linux-ld.c b/test/Driver/linux-ld.c
index c476ec24f9..6cc143f2c2 100644
--- a/test/Driver/linux-ld.c
+++ b/test/Driver/linux-ld.c
@@ -1119,3 +1119,9 @@
// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>& 1 \
// RUN: | FileCheck --check-prefix=CHECK-PG %s
// CHECK-PG: gcrt1.o
+
+// GCC forwards -u to the linker.
+// RUN: %clang -u asdf --target=x86_64-unknown-linux -### %s \
+// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>& 1 \
+// RUN: | FileCheck --check-prefix=CHECK-u %s
+// CHECK-u: "-u" "asdf"