https://github.com/tonykuttai updated https://github.com/llvm/llvm-project/pull/182292
>From 41ee8f0f6a10dc6a980bf7547020a8057b4d0f38 Mon Sep 17 00:00:00 2001 From: Tony Varghese <[email protected]> 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..a9b37937e87ff 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 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
