[PATCH] D110663: [Driver] Support Debian multiarch style lib/clang/14.0.0/x86_64-linux-gnu runtime path

Fangrui Song via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Sep 28 15:25:55 PDT 2021


MaskRay updated this revision to Diff 375722.
MaskRay added a comment.

add missing file


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D110663/new/

https://reviews.llvm.org/D110663

Files:
  clang/lib/Driver/ToolChain.cpp
  clang/test/Driver/Inputs/resource_dir_with_per_target_subdir_debian/lib/x86_64-linux-gnu/libclang_rt.builtins.a
  clang/test/Driver/linux-per-target-runtime-dir.c


Index: clang/test/Driver/linux-per-target-runtime-dir.c
===================================================================
--- clang/test/Driver/linux-per-target-runtime-dir.c
+++ clang/test/Driver/linux-per-target-runtime-dir.c
@@ -25,3 +25,10 @@
 // RUN:     -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
 // RUN:   | FileCheck --check-prefix=CHECK-FILE-NAME-X8664 %s
 // CHECK-FILE-NAME-X8664: lib{{/|\\}}x86_64-unknown-linux-gnu{{/|\\}}libclang_rt.builtins.a
+
+/// On Debian, LLVM_DEFAULT_TARGET_TRIPLE may use Debian multiarch style "x86_64-linux-gnu".
+// RUN: %clangxx -### %s --target=x86_64-linux-gnu --sysroot=%S/Inputs/basic_linux_libcxx_tree \
+// RUN:   -ccc-install-dir %S/Inputs/basic_linux_libcxx_tree/usr/bin \
+// RUN:   -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir_debian \
+// RUN:   --rtlib=compiler-rt 2>&1 | FileCheck --check-prefix=CHECK-DEBIAN-X8664 %s
+// CHECK-DEBIAN-X8664: lib{{/|\\}}x86_64-linux-gnu{{/|\\}}libclang_rt.builtins.a
Index: clang/lib/Driver/ToolChain.cpp
===================================================================
--- clang/lib/Driver/ToolChain.cpp
+++ clang/lib/Driver/ToolChain.cpp
@@ -490,7 +490,18 @@
 std::string ToolChain::getRuntimePath() const {
   SmallString<128> P(D.ResourceDir);
   llvm::sys::path::append(P, "lib", getTripleString());
-  return std::string(P.str());
+  std::string Ret(P);
+  // When LLVM_DEFAULT_TARGET_TRIPLE uses Debian multiarch style
+  // "x86_64-linux-gnu" (no vendor part), use the unnormalized
+  // D.getTargetTriple() instead of the normalized getTripleString()
+  // ("x86_64-unknown-linux-gnu").
+  if (!getVFS().exists(Ret)) {
+    P.clear();
+    llvm::sys::path::append(P, D.ResourceDir, "lib", D.getTargetTriple());
+    if (getVFS().exists(P))
+      Ret = std::string(P);
+  }
+  return Ret;
 }
 
 std::string ToolChain::getStdlibPath() const {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D110663.375722.patch
Type: text/x-patch
Size: 1880 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210928/539b7134/attachment.bin>


More information about the cfe-commits mailing list