[llvm-branch-commits] [clang] release/23.x: [clang][Driver] Fix libc++ include path on NetBSD (#212716) (PR #213535)

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Sun Aug 2 05:31:13 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-driver

@llvm/pr-subscribers-clang

Author: llvmbot

<details>
<summary>Changes</summary>

Backport 9a19c7750f949c979372ba1d2eec8a7a40061aef

Requested by: @<!-- -->rorth

---
Full diff: https://github.com/llvm/llvm-project/pull/213535.diff


6 Files Affected:

- (modified) clang/lib/Driver/ToolChains/NetBSD.cpp (-21) 
- (modified) clang/lib/Driver/ToolChains/NetBSD.h (-3) 
- (added) clang/test/Driver/Inputs/install_tree_with_libcxx/bin/.keep () 
- (added) clang/test/Driver/Inputs/install_tree_with_libcxx/include/c++/v1/.keep () 
- (added) clang/test/Driver/Inputs/install_tree_with_libcxx/lib/.keep () 
- (modified) clang/test/Driver/netbsd.cpp (+8) 


``````````diff
diff --git a/clang/lib/Driver/ToolChains/NetBSD.cpp b/clang/lib/Driver/ToolChains/NetBSD.cpp
index 31a5723c17c2f..f03114b53bb61 100644
--- a/clang/lib/Driver/ToolChains/NetBSD.cpp
+++ b/clang/lib/Driver/ToolChains/NetBSD.cpp
@@ -495,27 +495,6 @@ void NetBSD::AddClangSystemIncludeArgs(
                           concat(D.SysRoot, "/usr/include"));
 }
 
-void NetBSD::addLibCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
-                                   llvm::opt::ArgStringList &CC1Args) const {
-  const std::string Candidates[] = {
-    // directory relative to build tree
-    concat(getDriver().Dir, "/../include/c++/v1"),
-    // system install with full upstream path
-    concat(getDriver().SysRoot, "/usr/include/c++/v1"),
-    // system install from src
-    concat(getDriver().SysRoot, "/usr/include/c++"),
-  };
-
-  for (const auto &IncludePath : Candidates) {
-    if (!getVFS().exists(IncludePath + "/__config"))
-      continue;
-
-    // Use the first candidate that looks valid.
-    addSystemInclude(DriverArgs, CC1Args, IncludePath);
-    return;
-  }
-}
-
 void NetBSD::addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
                                       llvm::opt::ArgStringList &CC1Args) const {
   addLibStdCXXIncludePaths(concat(getDriver().SysRoot, "/usr/include/g++"), "", "",
diff --git a/clang/lib/Driver/ToolChains/NetBSD.h b/clang/lib/Driver/ToolChains/NetBSD.h
index c6a40ff34036c..bb0953c02e62e 100644
--- a/clang/lib/Driver/ToolChains/NetBSD.h
+++ b/clang/lib/Driver/ToolChains/NetBSD.h
@@ -61,9 +61,6 @@ class LLVM_LIBRARY_VISIBILITY NetBSD : public Generic_ELF {
   void
   AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
                             llvm::opt::ArgStringList &CC1Args) const override;
-  void addLibCxxIncludePaths(
-      const llvm::opt::ArgList &DriverArgs,
-      llvm::opt::ArgStringList &CC1Args) const override;
   void addLibStdCxxIncludePaths(
       const llvm::opt::ArgList &DriverArgs,
       llvm::opt::ArgStringList &CC1Args) const override;
diff --git a/clang/test/Driver/Inputs/install_tree_with_libcxx/bin/.keep b/clang/test/Driver/Inputs/install_tree_with_libcxx/bin/.keep
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/install_tree_with_libcxx/include/c++/v1/.keep b/clang/test/Driver/Inputs/install_tree_with_libcxx/include/c++/v1/.keep
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/Inputs/install_tree_with_libcxx/lib/.keep b/clang/test/Driver/Inputs/install_tree_with_libcxx/lib/.keep
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/netbsd.cpp b/clang/test/Driver/netbsd.cpp
index 6b8a86d6ee532..97ed44b841ed8 100644
--- a/clang/test/Driver/netbsd.cpp
+++ b/clang/test/Driver/netbsd.cpp
@@ -191,6 +191,14 @@
 // DRIVER-PASS-INCLUDES:      "-internal-isystem" "[[RESOURCE]]{{/|\\\\}}include"
 // DRIVER-PASS-INCLUDES:      "-internal-externc-isystem" "{{.*}}/usr/include"
 
+// Test that NetBSD prefers install tree libc++ headers over system ones.
+// RUN: %clang -### %s --target=x86_64-unknown-netbsd -r 2>&1 \
+// RUN:     -ccc-install-dir %S/Inputs/install_tree_with_libcxx/bin \
+// RUN:     --sysroot=%S/Inputs/basic_netbsd_tree \
+// RUN:   | FileCheck %s --check-prefix=DRIVER-INSTALL-INCLUDES
+// DRIVER-INSTALL-INCLUDES:      "-internal-isystem" "{{.*}}bin[[SEP:/|\\\\]]..[[SEP]]include[[SEP]]c++[[SEP]]v1"
+// DRIVER-INSTALL-INCLUDES-NOT:  "-internal-isystem" "{{.*}}usr[[SEP]]include[[SEP]]c++[[SEP]]v1"
+
 // Test NetBSD with libstdc++ when the sysroot path ends with `/`.
 // RUN: %clangxx -### %s 2>&1 \
 // RUN:     --target=x86_64-unknown-netbsd \

``````````

</details>


https://github.com/llvm/llvm-project/pull/213535


More information about the llvm-branch-commits mailing list