[clang] [AIX] Include system library paths in -print-search-dirs output (PR #182292)
Tony Varghese via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 19 07:07:25 PST 2026
https://github.com/tonykuttai updated https://github.com/llvm/llvm-project/pull/182292
>From ff0c6dc3228f331da352bd1d1c9d72a7cf5bbb68 Mon Sep 17 00:00:00 2001
From: Tony Varghese <tony.varghese at ibm.com>
Date: Thu, 19 Feb 2026 09:31:35 -0500
Subject: [PATCH] [AIX] Include system library paths in -print-search-dirs
output
---
clang/include/clang/Driver/ToolChain.h | 2 +-
clang/lib/Driver/ToolChains/AIX.cpp | 17 +++++++++++++++++
clang/lib/Driver/ToolChains/AIX.h | 3 +++
clang/test/Driver/aix-print-search-dirs.c | 19 +++++++++++++++++++
4 files changed, 40 insertions(+), 1 deletion(-)
create mode 100644 clang/test/Driver/aix-print-search-dirs.c
diff --git a/clang/include/clang/Driver/ToolChain.h b/clang/include/clang/Driver/ToolChain.h
index 16573a6589813..52d8f06a00ae8 100644
--- a/clang/include/clang/Driver/ToolChain.h
+++ b/clang/include/clang/Driver/ToolChain.h
@@ -749,7 +749,7 @@ class ToolChain {
llvm::opt::ArgStringList &CmdArgs) const;
/// AddFilePathLibArgs - Add each thing in getFilePaths() as a "-L" option.
- void AddFilePathLibArgs(const llvm::opt::ArgList &Args,
+ virtual void AddFilePathLibArgs(const llvm::opt::ArgList &Args,
llvm::opt::ArgStringList &CmdArgs) const;
/// AddCCKextLibArgs - Add the system specific linker arguments to use
diff --git a/clang/lib/Driver/ToolChains/AIX.cpp b/clang/lib/Driver/ToolChains/AIX.cpp
index 6b037bff137d6..2078ad57aee18 100644
--- a/clang/lib/Driver/ToolChains/AIX.cpp
+++ b/clang/lib/Driver/ToolChains/AIX.cpp
@@ -350,6 +350,10 @@ AIX::AIX(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
ParseInlineAsmUsingAsmParser = Args.hasFlag(
options::OPT_fintegrated_as, options::OPT_fno_integrated_as, true);
getLibraryPaths().push_back(getDriver().SysRoot + "/usr/lib");
+
+ // FilePaths gets System Paths for -print-search-dirs
+ getFilePaths().push_back(getDriver().SysRoot + "/usr/lib");
+ getFilePaths().push_back(getDriver().SysRoot + "/lib");
}
// Returns the effective header sysroot path to use.
@@ -447,6 +451,19 @@ void AIX::AddClangCXXStdlibIncludeArgs(
llvm_unreachable("Unexpected C++ library type; only libc++ is supported.");
}
+void AIX::AddFilePathLibArgs(const llvm::opt::ArgList &Args,
+ llvm::opt::ArgStringList &CmdArgs) const {
+ // AIX linker searches /usr/lib and /lib by default. Don't add them as -L
+ // flags to avoid duplicates. But keep them in FilePaths for
+ // -print-search-dirs
+ for (const auto &LibPath : getFilePaths()) {
+ if (LibPath.length() > 0 && LibPath != getDriver().SysRoot + "/usr/lib" &&
+ LibPath != getDriver().SysRoot + "/lib") {
+ CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
+ }
+ }
+}
+
void AIX::AddCXXStdlibLibArgs(const llvm::opt::ArgList &Args,
llvm::opt::ArgStringList &CmdArgs) const {
switch (GetCXXStdlibType(Args)) {
diff --git a/clang/lib/Driver/ToolChains/AIX.h b/clang/lib/Driver/ToolChains/AIX.h
index 23c93aaf86ba8..6183c9e1b1643 100644
--- a/clang/lib/Driver/ToolChains/AIX.h
+++ b/clang/lib/Driver/ToolChains/AIX.h
@@ -77,6 +77,9 @@ class LLVM_LIBRARY_VISIBILITY AIX : public ToolChain {
const llvm::opt::ArgList &DriverArgs,
llvm::opt::ArgStringList &CC1Args) const override;
+ void AddFilePathLibArgs(const llvm::opt::ArgList &Args,
+ llvm::opt::ArgStringList &CmdArgs) const override;
+
void AddCXXStdlibLibArgs(const llvm::opt::ArgList &Args,
llvm::opt::ArgStringList &CmdArgs) const override;
diff --git a/clang/test/Driver/aix-print-search-dirs.c b/clang/test/Driver/aix-print-search-dirs.c
new file mode 100644
index 0000000000000..4db08869ef254
--- /dev/null
+++ b/clang/test/Driver/aix-print-search-dirs.c
@@ -0,0 +1,19 @@
+// Test that -print-search-dirs includes system library paths on AIX
+
+// RUN: %clang -print-search-dirs --target=powerpc-ibm-aix7.3.0.0 \
+// RUN: --sysroot=%S/Inputs/aix_ppc_tree 2>&1 \
+// RUN: | FileCheck --check-prefix=CHECK-PRINT-SEARCH-DIRS-32 %s
+
+// CHECK-PRINT-SEARCH-DIRS-32: programs: =
+// CHECK-PRINT-SEARCH-DIRS-32: libraries: =
+// CHECK-PRINT-SEARCH-DIRS-32-SAME: {{.*}}/usr/lib
+// CHECK-PRINT-SEARCH-DIRS-32-SAME: {{.*}}/lib
+
+// RUN: %clang -print-search-dirs --target=powerpc64-ibm-aix7.3.0.0 \
+// RUN: --sysroot=%S/Inputs/aix_ppc_tree 2>&1 \
+// RUN: | FileCheck --check-prefix=CHECK-PRINT-SEARCH-DIRS-64 %s
+
+// CHECK-PRINT-SEARCH-DIRS-64: programs: =
+// CHECK-PRINT-SEARCH-DIRS-64: libraries: =
+// CHECK-PRINT-SEARCH-DIRS-64-SAME: {{.*}}/usr/lib
+// CHECK-PRINT-SEARCH-DIRS-64-SAME: {{.*}}/lib
More information about the cfe-commits
mailing list