[clang] aae84b8 - Revert "[Driver] Bring back "Clean up Debian multiarch /usr/include/<triplet> madness" and restore i586-linux-gnu"
Nico Weber via cfe-commits
cfe-commits at lists.llvm.org
Tue Mar 23 21:23:37 PDT 2021
(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 at 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 at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210324/c7bf4bb1/attachment.html>
More information about the cfe-commits
mailing list