[PATCH] D42608: Driver: Prefer vendor supplied gcc toolchain

Tom Stellard via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 26 15:38:29 PST 2018


tstellar created this revision.
Herald added a subscriber: srhines.

This patch fixes an issue on Fedora where if you had the x86_64 cross
compiler installed on your x86_64 system, then clang would use that compiler
as the default toolchain.  This was happening because the cross compiler
is installed to /usr/lib/gcc/x86_64-linux-gnu/ and this directory comes before
the default compiler directory (/usr/lib/gcc/x86_64-redhat-linux/) in the search
list.

This patch re-orders the search list so that vendor supplied gcc toolchains
are selected before toolchains with a generic target, which should prevent
these kind of issues on other OSes too.


Repository:
  rC Clang

https://reviews.llvm.org/D42608

Files:
  lib/Driver/ToolChains/Gnu.cpp


Index: lib/Driver/ToolChains/Gnu.cpp
===================================================================
--- lib/Driver/ToolChains/Gnu.cpp
+++ lib/Driver/ToolChains/Gnu.cpp
@@ -1809,40 +1809,41 @@
   // lifetime or initialization issues.
   static const char *const AArch64LibDirs[] = {"/lib64", "/lib"};
   static const char *const AArch64Triples[] = {
-      "aarch64-none-linux-gnu", "aarch64-linux-gnu", "aarch64-linux-android",
-      "aarch64-redhat-linux", "aarch64-suse-linux"};
+      "aarch64-redhat-linux", "aarch64-suse-linux",
+      "aarch64-none-linux-gnu", "aarch64-linux-gnu", "aarch64-linux-android"};
   static const char *const AArch64beLibDirs[] = {"/lib"};
   static const char *const AArch64beTriples[] = {"aarch64_be-none-linux-gnu",
                                                  "aarch64_be-linux-gnu"};
 
   static const char *const ARMLibDirs[] = {"/lib"};
   static const char *const ARMTriples[] = {"arm-linux-gnueabi",
                                            "arm-linux-androideabi"};
-  static const char *const ARMHFTriples[] = {"arm-linux-gnueabihf",
-                                             "armv7hl-redhat-linux-gnueabi",
+  static const char *const ARMHFTriples[] = {"armv7hl-redhat-linux-gnueabi",
                                              "armv6hl-suse-linux-gnueabi",
-                                             "armv7hl-suse-linux-gnueabi"};
+                                             "armv7hl-suse-linux-gnueabi",
+                                             "arm-linux-gnueabihf",
+  };
   static const char *const ARMebLibDirs[] = {"/lib"};
   static const char *const ARMebTriples[] = {"armeb-linux-gnueabi",
                                              "armeb-linux-androideabi"};
   static const char *const ARMebHFTriples[] = {
       "armeb-linux-gnueabihf", "armebv7hl-redhat-linux-gnueabi"};
 
   static const char *const X86_64LibDirs[] = {"/lib64", "/lib"};
   static const char *const X86_64Triples[] = {
-      "x86_64-linux-gnu",       "x86_64-unknown-linux-gnu",
-      "x86_64-pc-linux-gnu",    "x86_64-redhat-linux6E",
-      "x86_64-redhat-linux",    "x86_64-suse-linux",
-      "x86_64-manbo-linux-gnu", "x86_64-linux-gnu",
-      "x86_64-slackware-linux", "x86_64-linux-android",
+      "x86_64-redhat-linux6E",    "x86_64-redhat-linux",
+      "x86_64-suse-linux",        "x86_64-slackware-linux",
+      "x86_64-manbo-linux-gnu",   "x86_64-linux-gnu",
+      "x86_64-unknown-linux-gnu", "x86_64-pc-linux-gnu",
+      "x86_64-linux-gnu",         "x86_64-linux-android",
       "x86_64-unknown-linux"};
   static const char *const X32LibDirs[] = {"/libx32"};
   static const char *const X86LibDirs[] = {"/lib32", "/lib"};
   static const char *const X86Triples[] = {
-      "i686-linux-gnu",       "i686-pc-linux-gnu",     "i486-linux-gnu",
-      "i386-linux-gnu",       "i386-redhat-linux6E",   "i686-redhat-linux",
-      "i586-redhat-linux",    "i386-redhat-linux",     "i586-suse-linux",
-      "i486-slackware-linux", "i686-montavista-linux", "i686-linux-android",
+      "i386-redhat-linux6E",   "i686-redhat-linux", "i586-redhat-linuxll",
+      "i386-redhat-linux",     "i586-suse-linux",   "i486-slackware-linux",
+      "i686-montavista-linux", "i686-linux-gnu",    "i686-pc-linux-gnu",
+      "i486-linux-gnu",        "i386-linux-gnu",    "i686-linux-android",
       "i586-linux-gnu"};
 
   static const char *const MIPSLibDirs[] = {"/lib"};
@@ -1872,16 +1873,16 @@
 
   static const char *const PPCLibDirs[] = {"/lib32", "/lib"};
   static const char *const PPCTriples[] = {
-      "powerpc-linux-gnu", "powerpc-unknown-linux-gnu", "powerpc-linux-gnuspe",
-      "powerpc-suse-linux", "powerpc-montavista-linuxspe"};
+      "powerpc-suse-linux", "powerpc-montavista-linuxspe",
+      "powerpc-linux-gnu", "powerpc-unknown-linux-gnu", "powerpc-linux-gnuspe"};
   static const char *const PPC64LibDirs[] = {"/lib64", "/lib"};
   static const char *const PPC64Triples[] = {
-      "powerpc64-linux-gnu", "powerpc64-unknown-linux-gnu",
-      "powerpc64-suse-linux", "ppc64-redhat-linux"};
+      "powerpc64-suse-linux", "ppc64-redhat-linux",
+      "powerpc64-linux-gnu", "powerpc64-unknown-linux-gnu"};
   static const char *const PPC64LELibDirs[] = {"/lib64", "/lib"};
   static const char *const PPC64LETriples[] = {
-      "powerpc64le-linux-gnu", "powerpc64le-unknown-linux-gnu",
-      "powerpc64le-suse-linux", "ppc64le-redhat-linux"};
+      "powerpc64le-suse-linux", "ppc64le-redhat-linux",
+      "powerpc64le-linux-gnu", "powerpc64le-unknown-linux-gnu"};
 
   static const char *const RISCV32LibDirs[] = {"/lib", "/lib32"};
   static const char *const RISCVTriples[] = {"riscv32-unknown-linux-gnu",
@@ -1896,8 +1897,8 @@
 
   static const char *const SystemZLibDirs[] = {"/lib64", "/lib"};
   static const char *const SystemZTriples[] = {
-      "s390x-linux-gnu", "s390x-unknown-linux-gnu", "s390x-ibm-linux-gnu",
-      "s390x-suse-linux", "s390x-redhat-linux"};
+      "s390x-ibm-linux-gnu", "s390x-suse-linux", "s390x-redhat-linux",
+      "s390x-linux-gnu", "s390x-unknown-linux-gnu"};
 
 
   using std::begin;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D42608.131667.patch
Type: text/x-patch
Size: 5123 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180126/2a348a4d/attachment-0001.bin>


More information about the cfe-commits mailing list