diff options
author | Hal Finkel <hfinkel@anl.gov> | 2014-03-30 13:00:06 +0000 |
---|---|---|
committer | Hal Finkel <hfinkel@anl.gov> | 2014-03-30 13:00:06 +0000 |
commit | ecdb454aa72be85c2a99627d719e62bc2a3d49ec (patch) | |
tree | 23fe24fc3ae0f9cdad3779130b2d9a0381871cd4 | |
parent | 9df0fd4018b8234c7100b9edf7871d76892fce34 (diff) | |
download | bcm5719-llvm-ecdb454aa72be85c2a99627d719e62bc2a3d49ec.tar.gz bcm5719-llvm-ecdb454aa72be85c2a99627d719e62bc2a3d49ec.zip |
[PowerPC] Make -pg generate calls to _mcount not mcount
At least on REL6 (Linux/glibc 2.12), the proper symbol for generating gprof
data is _mcount, not mcount. Prior to this change, compiling with -pg would
generate linking errors (because of unresolved references to mcount), after
this change -pg seems at least minimally functional.
llvm-svn: 205144
-rw-r--r-- | clang/lib/Basic/Targets.cpp | 10 | ||||
-rw-r--r-- | clang/test/CodeGen/mcount.c | 4 |
2 files changed, 14 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 6811b3096a1..3d294cefa00 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -355,6 +355,16 @@ public: LinuxTargetInfo(const llvm::Triple &Triple) : OSTargetInfo<Target>(Triple) { this->UserLabelPrefix = ""; this->WIntType = TargetInfo::UnsignedInt; + + switch (Triple.getArch()) { + default: + break; + case llvm::Triple::ppc: + case llvm::Triple::ppc64: + case llvm::Triple::ppc64le: + this->MCountName = "_mcount"; + break; + } } const char *getStaticInitSectionSpecifier() const override { diff --git a/clang/test/CodeGen/mcount.c b/clang/test/CodeGen/mcount.c index 1cf3d6a0716..5c608bcd365 100644 --- a/clang/test/CodeGen/mcount.c +++ b/clang/test/CodeGen/mcount.c @@ -1,4 +1,8 @@ // RUN: %clang_cc1 -pg -triple i386-unknown-unknown -emit-llvm -o - %s | FileCheck %s +// RUN: %clang_cc1 -pg -triple powerpc-unknown-gnu-linux -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-PPC %s +// RUN: %clang_cc1 -pg -triple powerpc64-unknown-gnu-linux -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-PPC %s +// RUN: %clang_cc1 -pg -triple powerpc64le-unknown-gnu-linux -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-PPC %s void foo(void) { // CHECK: call void @mcount() +// CHECK-PPC: call void @_mcount() } |