[PATCH] D131563: [WIP] [clang] Fix clang multiarch isssue with musl

Brahmajit via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Aug 11 00:50:43 PDT 2022


listout updated this revision to Diff 451757.
listout added a comment.

Using `getEnvironmentTypeName()` instead of `isMusl()`


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

https://reviews.llvm.org/D131563

Files:
  clang/lib/Driver/ToolChains/Linux.cpp


Index: clang/lib/Driver/ToolChains/Linux.cpp
===================================================================
--- clang/lib/Driver/ToolChains/Linux.cpp
+++ clang/lib/Driver/ToolChains/Linux.cpp
@@ -46,6 +46,9 @@
   bool IsMipsR6 = TargetTriple.getSubArch() == llvm::Triple::MipsSubArch_r6;
   bool IsMipsN32Abi = TargetTriple.getEnvironment() == llvm::Triple::GNUABIN32;
 
+  llvm::StringRef EnvName =
+      llvm::Triple::getEnvironmentTypeName(TargetTriple.getEnvironment());
+
   // For most architectures, just use whatever we have rather than trying to be
   // clever.
   switch (TargetTriple.getArch()) {
@@ -62,34 +65,35 @@
       return "arm-linux-androideabi";
     if (TargetEnvironment == llvm::Triple::GNUEABIHF)
       return "arm-linux-gnueabihf";
-    return "arm-linux-gnueabi";
+    return "arm-linux-" + llvm::Twine(EnvName).str() + "eabi";
   case llvm::Triple::armeb:
   case llvm::Triple::thumbeb:
     if (TargetEnvironment == llvm::Triple::GNUEABIHF)
       return "armeb-linux-gnueabihf";
-    return "armeb-linux-gnueabi";
+    return "armeb-linux-" + llvm::Twine(EnvName).str() + "eabi";
   case llvm::Triple::x86:
     if (IsAndroid)
       return "i686-linux-android";
-    return "i386-linux-gnu";
+    return "i386-linux-" + llvm::Twine(EnvName).str();
   case llvm::Triple::x86_64:
     if (IsAndroid)
       return "x86_64-linux-android";
     if (TargetEnvironment == llvm::Triple::GNUX32)
       return "x86_64-linux-gnux32";
-    return "x86_64-linux-gnu";
+    return "x86_64-linux-" + llvm::Twine(EnvName).str();
   case llvm::Triple::aarch64:
     if (IsAndroid)
       return "aarch64-linux-android";
-    return "aarch64-linux-gnu";
+    return "aarch64-linux-" + llvm::Twine(EnvName).str();
   case llvm::Triple::aarch64_be:
-    return "aarch64_be-linux-gnu";
+    return "aarch64_be-linux-" + llvm::Twine(EnvName).str();
 
   case llvm::Triple::m68k:
-    return "m68k-linux-gnu";
+    return "m68k-linux-" + llvm::Twine(EnvName).str();
 
   case llvm::Triple::mips:
-    return IsMipsR6 ? "mipsisa32r6-linux-gnu" : "mips-linux-gnu";
+    return IsMipsR6 ? "mipsisa32r6-linux-gnu"
+                    : "mips-linux-" + llvm::Twine(EnvName).str();
   case llvm::Triple::mipsel:
     if (IsAndroid)
       return "mipsel-linux-android";
@@ -117,19 +121,19 @@
   case llvm::Triple::ppc:
     if (D.getVFS().exists(concat(SysRoot, "/lib/powerpc-linux-gnuspe")))
       return "powerpc-linux-gnuspe";
-    return "powerpc-linux-gnu";
+    return "powerpc-linux-" + llvm::Twine(EnvName).str();
   case llvm::Triple::ppcle:
-    return "powerpcle-linux-gnu";
+    return "powerpcle-linux-" + llvm::Twine(EnvName).str();
   case llvm::Triple::ppc64:
-    return "powerpc64-linux-gnu";
+    return "powerpc64-linux-" + llvm::Twine(EnvName).str();
   case llvm::Triple::ppc64le:
-    return "powerpc64le-linux-gnu";
+    return "powerpc64le-linux-" + llvm::Twine(EnvName).str();
   case llvm::Triple::riscv64:
-    return "riscv64-linux-gnu";
+    return "riscv64-linux-" + llvm::Twine(EnvName).str();
   case llvm::Triple::sparc:
-    return "sparc-linux-gnu";
+    return "sparc-linux-" + llvm::Twine(EnvName).str();
   case llvm::Triple::sparcv9:
-    return "sparc64-linux-gnu";
+    return "sparc64-linux-" + llvm::Twine(EnvName).str();
   case llvm::Triple::systemz:
     return "s390x-linux-gnu";
   }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D131563.451757.patch
Type: text/x-patch
Size: 3347 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20220811/cc25e1b2/attachment.bin>


More information about the cfe-commits mailing list