[clang] 424bf5d - [Driver] Bring back "Clean up Debian multiarch /usr/include/<triplet> madness" and restore i586-linux-gnu
Fangrui Song via cfe-commits
cfe-commits at lists.llvm.org
Mon Mar 22 13:25:42 PDT 2021
Author: Fangrui Song
Date: 2021-03-22T13:25:35-07:00
New Revision: 424bf5d8918f6356f1b8e99205c5fc8b4783ca22
URL: https://github.com/llvm/llvm-project/commit/424bf5d8918f6356f1b8e99205c5fc8b4783ca22
DIFF: https://github.com/llvm/llvm-project/commit/424bf5d8918f6356f1b8e99205c5fc8b4783ca22.diff
LOG: [Driver] Bring back "Clean up Debian multiarch /usr/include/<triplet> madness" and restore i586-linux-gnu
This reverts commit 933d146f38c6d77a9b4fdde2b6b394f6ad9f8bf5 and 21b211a8f24f8ecfab8b380ff761a90d9cf73924
(which mis-identified the issue) but restores i586-linux-gnu which was
removed by `Gnu.cpp: remove obsoleted i386 triple detection from end-of-life distribution versions`.
Looks like i586-linux-gnu was not dead enough (used in a sysroot by Fuchsia build bot based on Debian jessie:)
but i486-linux-gnu should be very dead by now.
Added:
Modified:
clang/lib/Driver/ToolChains/Gnu.cpp
clang/lib/Driver/ToolChains/Linux.cpp
Removed:
################################################################################
diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp
index f2106a8c09f3..bf0c3fa679d2 100644
--- a/clang/lib/Driver/ToolChains/Gnu.cpp
+++ b/clang/lib/Driver/ToolChains/Gnu.cpp
@@ -2109,9 +2109,11 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
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", "i386-redhat-linux6E",
- "i686-redhat-linux", "i386-redhat-linux", "i586-suse-linux",
- "i686-montavista-linux", "i686-linux-android", "i386-gnu",
+ "i586-linux-gnu", "i686-linux-gnu",
+ "i686-pc-linux-gnu", "i386-redhat-linux6E",
+ "i686-redhat-linux", "i386-redhat-linux",
+ "i586-suse-linux", "i686-montavista-linux",
+ "i686-linux-android", "i386-gnu",
};
static const char *const M68kLibDirs[] = {"/lib"};
@@ -3013,8 +3015,6 @@ Generic_GCC::addGCCLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
const Multilib &Multilib = GCCInstallation.getMultilib();
const std::string Triple = getMultiarchTriple(
getDriver(), GCCInstallation.getTriple(), getDriver().SysRoot);
- const std::string TargetMultiarchTriple =
- getMultiarchTriple(getDriver(), getTriple(), getDriver().SysRoot);
const GCCVersion &Version = GCCInstallation.getVersion();
// Try /../$triple/include/c++/$version then /../include/c++/$version.
diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
index cbfa5152bc8e..0df2d3793819 100644
--- a/clang/lib/Driver/ToolChains/Linux.cpp
+++ b/clang/lib/Driver/ToolChains/Linux.cpp
@@ -604,172 +604,11 @@ void Linux::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
return;
}
- // Implement generic Debian multiarch support.
- const StringRef X86_64MultiarchIncludeDirs[] = {
- "/usr/include/x86_64-linux-gnu",
-
- // FIXME: These are older forms of multiarch. It's not clear that they're
- // in use in any released version of Debian, so we should consider
- // removing them.
- "/usr/include/i686-linux-gnu/64", "/usr/include/i486-linux-gnu/64"};
- const StringRef X86MultiarchIncludeDirs[] = {
- "/usr/include/i386-linux-gnu",
-
- // FIXME: These are older forms of multiarch. It's not clear that they're
- // in use in any released version of Debian, so we should consider
- // removing them.
- "/usr/include/x86_64-linux-gnu/32", "/usr/include/i686-linux-gnu",
- "/usr/include/i486-linux-gnu"};
- const StringRef AArch64MultiarchIncludeDirs[] = {
- "/usr/include/aarch64-linux-gnu"};
- const StringRef ARMMultiarchIncludeDirs[] = {
- "/usr/include/arm-linux-gnueabi"};
- const StringRef ARMHFMultiarchIncludeDirs[] = {
- "/usr/include/arm-linux-gnueabihf"};
- const StringRef ARMEBMultiarchIncludeDirs[] = {
- "/usr/include/armeb-linux-gnueabi"};
- const StringRef ARMEBHFMultiarchIncludeDirs[] = {
- "/usr/include/armeb-linux-gnueabihf"};
- const StringRef M68kMultiarchIncludeDirs[] = {"/usr/include/m68k-linux-gnu"};
- const StringRef MIPSMultiarchIncludeDirs[] = {"/usr/include/mips-linux-gnu"};
- const StringRef MIPSELMultiarchIncludeDirs[] = {
- "/usr/include/mipsel-linux-gnu"};
- const StringRef MIPS64MultiarchIncludeDirs[] = {
- "/usr/include/mips64-linux-gnuabi64"};
- const StringRef MIPS64ELMultiarchIncludeDirs[] = {
- "/usr/include/mips64el-linux-gnuabi64"};
- const StringRef MIPSN32MultiarchIncludeDirs[] = {
- "/usr/include/mips64-linux-gnuabin32"};
- const StringRef MIPSN32ELMultiarchIncludeDirs[] = {
- "/usr/include/mips64el-linux-gnuabin32"};
- const StringRef MIPSR6MultiarchIncludeDirs[] = {
- "/usr/include/mipsisa32-linux-gnu"};
- const StringRef MIPSR6ELMultiarchIncludeDirs[] = {
- "/usr/include/mipsisa32r6el-linux-gnu"};
- const StringRef MIPS64R6MultiarchIncludeDirs[] = {
- "/usr/include/mipsisa64r6-linux-gnuabi64"};
- const StringRef MIPS64R6ELMultiarchIncludeDirs[] = {
- "/usr/include/mipsisa64r6el-linux-gnuabi64"};
- const StringRef MIPSN32R6MultiarchIncludeDirs[] = {
- "/usr/include/mipsisa64r6-linux-gnuabin32"};
- const StringRef MIPSN32R6ELMultiarchIncludeDirs[] = {
- "/usr/include/mipsisa64r6el-linux-gnuabin32"};
- const StringRef PPCMultiarchIncludeDirs[] = {
- "/usr/include/powerpc-linux-gnu",
- "/usr/include/powerpc-linux-gnuspe"};
- const StringRef PPCLEMultiarchIncludeDirs[] = {
- "/usr/include/powerpcle-linux-gnu"};
- const StringRef PPC64MultiarchIncludeDirs[] = {
- "/usr/include/powerpc64-linux-gnu"};
- const StringRef PPC64LEMultiarchIncludeDirs[] = {
- "/usr/include/powerpc64le-linux-gnu"};
- const StringRef SparcMultiarchIncludeDirs[] = {
- "/usr/include/sparc-linux-gnu"};
- const StringRef Sparc64MultiarchIncludeDirs[] = {
- "/usr/include/sparc64-linux-gnu"};
- const StringRef SYSTEMZMultiarchIncludeDirs[] = {
- "/usr/include/s390x-linux-gnu"};
- ArrayRef<StringRef> MultiarchIncludeDirs;
- switch (getTriple().getArch()) {
- case llvm::Triple::x86_64:
- MultiarchIncludeDirs = X86_64MultiarchIncludeDirs;
- break;
- case llvm::Triple::x86:
- MultiarchIncludeDirs = X86MultiarchIncludeDirs;
- break;
- case llvm::Triple::aarch64:
- case llvm::Triple::aarch64_be:
- MultiarchIncludeDirs = AArch64MultiarchIncludeDirs;
- break;
- case llvm::Triple::arm:
- case llvm::Triple::thumb:
- if (getTriple().getEnvironment() == llvm::Triple::GNUEABIHF)
- MultiarchIncludeDirs = ARMHFMultiarchIncludeDirs;
- else
- MultiarchIncludeDirs = ARMMultiarchIncludeDirs;
- break;
- case llvm::Triple::armeb:
- case llvm::Triple::thumbeb:
- if (getTriple().getEnvironment() == llvm::Triple::GNUEABIHF)
- MultiarchIncludeDirs = ARMEBHFMultiarchIncludeDirs;
- else
- MultiarchIncludeDirs = ARMEBMultiarchIncludeDirs;
- break;
- case llvm::Triple::m68k:
- MultiarchIncludeDirs = M68kMultiarchIncludeDirs;
- break;
- case llvm::Triple::mips:
- if (getTriple().getSubArch() == llvm::Triple::MipsSubArch_r6)
- MultiarchIncludeDirs = MIPSR6MultiarchIncludeDirs;
- else
- MultiarchIncludeDirs = MIPSMultiarchIncludeDirs;
- break;
- case llvm::Triple::mipsel:
- if (getTriple().getSubArch() == llvm::Triple::MipsSubArch_r6)
- MultiarchIncludeDirs = MIPSR6ELMultiarchIncludeDirs;
- else
- MultiarchIncludeDirs = MIPSELMultiarchIncludeDirs;
- break;
- case llvm::Triple::mips64:
- if (getTriple().getSubArch() == llvm::Triple::MipsSubArch_r6)
- if (getTriple().getEnvironment() == llvm::Triple::GNUABIN32)
- MultiarchIncludeDirs = MIPSN32R6MultiarchIncludeDirs;
- else
- MultiarchIncludeDirs = MIPS64R6MultiarchIncludeDirs;
- else if (getTriple().getEnvironment() == llvm::Triple::GNUABIN32)
- MultiarchIncludeDirs = MIPSN32MultiarchIncludeDirs;
- else
- MultiarchIncludeDirs = MIPS64MultiarchIncludeDirs;
- break;
- case llvm::Triple::mips64el:
- if (getTriple().getSubArch() == llvm::Triple::MipsSubArch_r6)
- if (getTriple().getEnvironment() == llvm::Triple::GNUABIN32)
- MultiarchIncludeDirs = MIPSN32R6ELMultiarchIncludeDirs;
- else
- MultiarchIncludeDirs = MIPS64R6ELMultiarchIncludeDirs;
- else if (getTriple().getEnvironment() == llvm::Triple::GNUABIN32)
- MultiarchIncludeDirs = MIPSN32ELMultiarchIncludeDirs;
- else
- MultiarchIncludeDirs = MIPS64ELMultiarchIncludeDirs;
- break;
- case llvm::Triple::ppc:
- MultiarchIncludeDirs = PPCMultiarchIncludeDirs;
- break;
- case llvm::Triple::ppcle:
- MultiarchIncludeDirs = PPCLEMultiarchIncludeDirs;
- break;
- case llvm::Triple::ppc64:
- MultiarchIncludeDirs = PPC64MultiarchIncludeDirs;
- break;
- case llvm::Triple::ppc64le:
- MultiarchIncludeDirs = PPC64LEMultiarchIncludeDirs;
- break;
- case llvm::Triple::sparc:
- MultiarchIncludeDirs = SparcMultiarchIncludeDirs;
- break;
- case llvm::Triple::sparcv9:
- MultiarchIncludeDirs = Sparc64MultiarchIncludeDirs;
- break;
- case llvm::Triple::systemz:
- MultiarchIncludeDirs = SYSTEMZMultiarchIncludeDirs;
- break;
- default:
- break;
- }
-
- const std::string AndroidMultiarchIncludeDir =
- std::string("/usr/include/") +
- getMultiarchTriple(D, getTriple(), SysRoot);
- const StringRef AndroidMultiarchIncludeDirs[] = {AndroidMultiarchIncludeDir};
- if (getTriple().isAndroid())
- MultiarchIncludeDirs = AndroidMultiarchIncludeDirs;
-
- for (StringRef Dir : MultiarchIncludeDirs) {
- if (D.getVFS().exists(SysRoot + Dir)) {
- addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + Dir);
- break;
- }
- }
+ // On Android and Debian, add /usr/include/$triple if exists.
+ std::string MultiarchIncludeDir = getMultiarchTriple(D, getTriple(), SysRoot);
+ if (!MultiarchIncludeDir.empty() &&
+ D.getVFS().exists(SysRoot + "/usr/include/" + MultiarchIncludeDir))
+ addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + "/usr/include/" + MultiarchIncludeDir);
if (getTriple().getOS() == llvm::Triple::RTEMS)
return;
More information about the cfe-commits
mailing list