summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorEric Christopher <echristo@gmail.com>2013-06-07 23:25:01 +0000
committerEric Christopher <echristo@gmail.com>2013-06-07 23:25:01 +0000
commitac0217424cb4e040236b15f2f78ad69e09502ce7 (patch)
treeda1dc44fb08291ddfb31c94ca42c1496eae04413 /clang
parentc11c169530ab6ac3cba982c9c10597c3bcaaa309 (diff)
downloadbcm5719-llvm-ac0217424cb4e040236b15f2f78ad69e09502ce7.tar.gz
bcm5719-llvm-ac0217424cb4e040236b15f2f78ad69e09502ce7.zip
When we're compiling with -pg make sure to link with gcrt1.o on linux. Be
sure to do this always, this matches the behavior for the gcc driver. Fixes PR16251. Based on a patch by Qiao Yang. llvm-svn: 183591
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Driver/Tools.cpp4
-rw-r--r--clang/test/Driver/linux-ld.c6
2 files changed, 9 insertions, 1 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 8e670dbf0a3..c407a3bb805 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -6076,7 +6076,9 @@ void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA,
if (!isAndroid) {
const char *crt1 = NULL;
if (!Args.hasArg(options::OPT_shared)){
- if (IsPIE)
+ if (Args.hasArg(options::OPT_pg))
+ crt1 = "gcrt1.o";
+ else if (IsPIE)
crt1 = "Scrt1.o";
else
crt1 = "crt1.o";
diff --git a/clang/test/Driver/linux-ld.c b/clang/test/Driver/linux-ld.c
index ebac718b33b..78223bb06bc 100644
--- a/clang/test/Driver/linux-ld.c
+++ b/clang/test/Driver/linux-ld.c
@@ -667,3 +667,9 @@
// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
// CHECK-CRTFASTMATH: usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtfastmath.o
// CHECK-NOCRTFASTMATH-NOT: crtfastmath.o
+
+// Check that we link in gcrt1.o when compiling with -pg
+// RUN: %clang -pg -target x86_64-unknown-linux -### %s \
+// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>& 1 \
+// RUN: | FileCheck --check-prefix=CHECK-PG %s
+// CHECK-PG: gcrt1.o
OpenPOWER on IntegriCloud