[AIX][pg] Add Correct Search Paths for Profiled Libraries
authorMichael Francis <michaelfrancis@ibm.com>
Thu, 10 Nov 2022 21:50:53 +0000 (21:50 +0000)
committerChris Bowler <cebowleratibm@gmail.com>
Tue, 29 Nov 2022 15:16:27 +0000 (10:16 -0500)
On AIX, profiled system libraries are stored at `/lib/profiled` and
`/usr/lib/profiled`. When compiling with `-pg`, we want to link against
libraries in those directories. This PR modifies the AIX toolchain to
add those directories to the linker search paths.

Differential Review: https://reviews.llvm.org/D137375

clang/lib/Driver/ToolChains/AIX.cpp
clang/test/Driver/aix-ld.c

index 1e72f1e..3bf97ee 100644 (file)
@@ -250,6 +250,13 @@ void aix::Linker::ConstructJob(Compilation &C, const JobAction &JA,
       CmdArgs.push_back("-lm");
 
     CmdArgs.push_back("-lc");
+
+    if (Args.hasArg(options::OPT_pg)) {
+      CmdArgs.push_back(Args.MakeArgString((llvm::Twine("-L") + D.SysRoot) +
+                                           "/lib/profiled"));
+      CmdArgs.push_back(Args.MakeArgString((llvm::Twine("-L") + D.SysRoot) +
+                                           "/usr/lib/profiled"));
+    }
   }
 
   const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
index 8aae6b0..42631f4 100644 (file)
 // CHECK-LD32-GPROF-NOT: "--no-as-needed"
 // CHECK-LD32-GPROF-NOT: "-lm"
 // CHECK-LD32-GPROF:     "-lc"
+// CHECK-LD32-GPROF:     "-L[[SYSROOT]]/lib/profiled"
+// CHECK-LD32-GPROF:     "-L[[SYSROOT]]/usr/lib/profiled"
 
 // Check powerpc64-ibm-aix7.1.0.0, 64-bit. Enable g-profiling.
 // RUN: %clang %s -### 2>&1 \
 // CHECK-LD64-GPROF-NOT: "--no-as-needed"
 // CHECK-LD64-GPROF-NOT: "-lm"
 // CHECK-LD64-GPROF:     "-lc"
+// CHECK-LD64-GPROF:     "-L[[SYSROOT]]/lib/profiled"
+// CHECK-LD64-GPROF:     "-L[[SYSROOT]]/usr/lib/profiled"
 
 // Check powerpc-ibm-aix7.1.0.0, 32-bit. Static linking.
 // RUN: %clang %s -### 2>&1 \