(Reduced repro: https://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20210322/362775.html )
On Tue, Mar 23, 2021 at 11:14 PM Zequan Wu via cfe-commits < cfe-commits@lists.llvm.org> wrote: > > Author: Zequan Wu > Date: 2021-03-23T20:12:09-07:00 > New Revision: aae84b8e3939e815bbc1e64b3b30c0f10b055be4 > > URL: > https://github.com/llvm/llvm-project/commit/aae84b8e3939e815bbc1e64b3b30c0f10b055be4 > DIFF: > https://github.com/llvm/llvm-project/commit/aae84b8e3939e815bbc1e64b3b30c0f10b055be4.diff > > LOG: Revert "[Driver] Bring back "Clean up Debian multiarch > /usr/include/<triplet> madness" and restore i586-linux-gnu" > > This breaks bots in chromium goma building. > > This reverts commit 424bf5d8918f6356f1b8e99205c5fc8b4783ca22. > > 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 bf0c3fa679d2..f2106a8c09f3 100644 > --- a/clang/lib/Driver/ToolChains/Gnu.cpp > +++ b/clang/lib/Driver/ToolChains/Gnu.cpp > @@ -2109,11 +2109,9 @@ void > Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes( > static const char *const X32LibDirs[] = {"/libx32"}; > static const char *const X86LibDirs[] = {"/lib32", "/lib"}; > static const char *const X86Triples[] = { > - "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", > + "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"}; > @@ -3015,6 +3013,8 @@ 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 0df2d3793819..cbfa5152bc8e 100644 > --- a/clang/lib/Driver/ToolChains/Linux.cpp > +++ b/clang/lib/Driver/ToolChains/Linux.cpp > @@ -604,11 +604,172 @@ void Linux::AddClangSystemIncludeArgs(const ArgList > &DriverArgs, > return; > } > > - // 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); > + // 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; > + } > + } > > if (getTriple().getOS() == llvm::Triple::RTEMS) > return; > > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits