On Tue, Mar 23, 2021 at 9:22 PM Nico Weber <tha...@chromium.org> wrote: > > Yes. > > 1. Download > https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain/500976182686961e34974ea7bdc0a21fca32be06/debian_sid_amd64_sysroot.tar.xz > 2. Unpack somewhere > 3. Delete the lib/ folder in it > 4. Try to use that sysroot like so: > > thakis@thakis:~/src/llvm-project$ cat test.cc > #include <features.h> > int main(int argc, char* argv[]) { > } > thakis@thakis:~/src/llvm-project$ out/gn/bin/clang --sysroot > ~/src/chrome/src/build/linux/debian_sid_amd64-sysroot -c test.cc > In file included from test.cc:1: > /usr/local/google/home/thakis/src/chrome/src/build/linux/debian_sid_amd64-sysroot/usr/include/features.h:461:12: > fatal error: 'sys/cdefs.h' file not found > # include <sys/cdefs.h> > ^~~~~~~~~~~~~ > 1 error generated.
There is another debian/ directory in the unpacked directory. clang++ --sysroot=/tmp/c/debian /tmp/c/a.cc works fine. If your `Delete the lib/ folder in it` steps means to delete lib/x86_64-linux-gnu, that compile error is expected. Even if the previous behavior does not error for the compile action, it will fail for the link action. If you want to make compile action work, you need lib/x86_64-linux-gnu. I think it is fairly reasonable for clang to assume that some directories need to exist for a sysroot to look less like a fake one. If you really want to make compile action work without an empty lib/x86_64-linux-gnu, perhaps delete some D.getVFS().exists in clang/lib/Driver/ToolChains/Linux.cpp:Linux::getMultiarchTriple. This is actually something I intend to do next. > > > On Tue, Mar 23, 2021 at 11:01 PM Fangrui Song <i...@maskray.me> wrote: >> >> On Tue, Mar 23, 2021 at 7:09 PM Nico Weber <tha...@chromium.org> wrote: >> > >> > Was this reviewed anywhere? >> >> No. This is a nice code cleanup. Do you find a case it does not handle >> correctly? >> >> > On Mon, Mar 22, 2021 at 1:40 AM Fangrui Song via cfe-commits >> > <cfe-commits@lists.llvm.org> wrote: >> >> >> >> >> >> Author: Fangrui Song >> >> Date: 2021-03-21T22:40:38-07:00 >> >> New Revision: 874bdc8e61662b5f39a9626b9132e0979fae556f >> >> >> >> URL: >> >> https://github.com/llvm/llvm-project/commit/874bdc8e61662b5f39a9626b9132e0979fae556f >> >> DIFF: >> >> https://github.com/llvm/llvm-project/commit/874bdc8e61662b5f39a9626b9132e0979fae556f.diff >> >> >> >> LOG: [Driver] Clean up Debian multiarch /usr/include/<triplet> madness >> >> >> >> Debian multiarch additionally adds /usr/include/<triplet> and somehow >> >> Android borrowed the idea. (Note /usr/<triplet>/include is already an >> >> include dir...). On Debian, we should just assume a GCC installation is >> >> available and use its triple. >> >> >> >> Added: >> >> >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabi/crt1.o >> >> >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabi/crti.o >> >> >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabi/crtn.o >> >> >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabihf/crt1.o >> >> >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabihf/crti.o >> >> >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabihf/crtn.o >> >> >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabi/crt1.o >> >> >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabi/crti.o >> >> >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabi/crtn.o >> >> >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabihf/crt1.o >> >> >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabihf/crti.o >> >> >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabihf/crtn.o >> >> >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/gcc/arm-linux-gnueabi/10/crtbegin.o >> >> >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/gcc/arm-linux-gnueabihf/10/crtbegin.o >> >> >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/gcc/armeb-linux-gnueabi/10/crtbegin.o >> >> >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/gcc/armeb-linux-gnueabihf/10/crtbegin.o >> >> >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/usr/include/arm-linux-gnueabihf/.keep >> >> >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/usr/include/armeb-linux-gnueabi/.keep >> >> >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/usr/include/armeb-linux-gnueabihf/.keep >> >> >> >> Modified: >> >> clang/lib/Driver/ToolChains/Gnu.cpp >> >> clang/lib/Driver/ToolChains/Linux.cpp >> >> clang/test/Driver/arm-multilibs.c >> >> >> >> Removed: >> >> >> >> clang/test/Driver/Inputs/multilib_armeb_linux_tree/usr/include/armeb-linux-gnueabi/.keep >> >> >> >> clang/test/Driver/Inputs/multilib_armebhf_linux_tree/usr/include/armeb-linux-gnueabihf/.keep >> >> >> >> clang/test/Driver/Inputs/multilib_armhf_linux_tree/usr/include/arm-linux-gnueabihf/.keep >> >> >> >> >> >> ################################################################################ >> >> diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp >> >> b/clang/lib/Driver/ToolChains/Gnu.cpp >> >> index c554047beac3..972044fb615e 100644 >> >> --- a/clang/lib/Driver/ToolChains/Gnu.cpp >> >> +++ b/clang/lib/Driver/ToolChains/Gnu.cpp >> >> @@ -2999,8 +2999,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..e889791d19b2 100644 >> >> --- a/clang/lib/Driver/ToolChains/Linux.cpp >> >> +++ b/clang/lib/Driver/ToolChains/Linux.cpp >> >> @@ -604,172 +604,16 @@ 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}; >> >> + // On Android and Debian, add /usr/include/$triple if exists. On >> >> Debian, we >> >> + // can assume a GCC installation is available. >> >> + std::string MultiarchIncludeDir; >> >> if (getTriple().isAndroid()) >> >> - MultiarchIncludeDirs = AndroidMultiarchIncludeDirs; >> >> - >> >> - for (StringRef Dir : MultiarchIncludeDirs) { >> >> - if (D.getVFS().exists(SysRoot + Dir)) { >> >> - addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + Dir); >> >> - break; >> >> - } >> >> - } >> >> + MultiarchIncludeDir = getMultiarchTriple(D, getTriple(), SysRoot); >> >> + else if (GCCInstallation.isValid()) >> >> + MultiarchIncludeDir = GCCInstallation.getTriple().str(); >> >> + if (!MultiarchIncludeDir.empty() && >> >> + D.getVFS().exists(SysRoot + "/usr/include/" + MultiarchIncludeDir)) >> >> + addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + >> >> "/usr/include/" + MultiarchIncludeDir); >> >> >> >> if (getTriple().getOS() == llvm::Triple::RTEMS) >> >> return; >> >> >> >> diff --git >> >> a/clang/test/Driver/Inputs/multilib_armeb_linux_tree/usr/include/armeb-linux-gnueabi/.keep >> >> >> >> b/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabi/crt1.o >> >> similarity index 100% >> >> rename from >> >> clang/test/Driver/Inputs/multilib_armeb_linux_tree/usr/include/armeb-linux-gnueabi/.keep >> >> rename to >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabi/crt1.o >> >> >> >> diff --git >> >> a/clang/test/Driver/Inputs/multilib_armebhf_linux_tree/usr/include/armeb-linux-gnueabihf/.keep >> >> >> >> b/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabi/crti.o >> >> similarity index 100% >> >> rename from >> >> clang/test/Driver/Inputs/multilib_armebhf_linux_tree/usr/include/armeb-linux-gnueabihf/.keep >> >> rename to >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabi/crti.o >> >> >> >> diff --git >> >> a/clang/test/Driver/Inputs/multilib_armhf_linux_tree/usr/include/arm-linux-gnueabihf/.keep >> >> >> >> b/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabi/crtn.o >> >> similarity index 100% >> >> rename from >> >> clang/test/Driver/Inputs/multilib_armhf_linux_tree/usr/include/arm-linux-gnueabihf/.keep >> >> rename to >> >> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabi/crtn.o >> >> >> >> diff --git >> >> a/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabihf/crt1.o >> >> >> >> b/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabihf/crt1.o >> >> new file mode 100644 >> >> index 000000000000..e69de29bb2d1 >> >> >> >> diff --git >> >> a/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabihf/crti.o >> >> >> >> b/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabihf/crti.o >> >> new file mode 100644 >> >> index 000000000000..e69de29bb2d1 >> >> >> >> diff --git >> >> a/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabihf/crtn.o >> >> >> >> b/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabihf/crtn.o >> >> new file mode 100644 >> >> index 000000000000..e69de29bb2d1 >> >> >> >> diff --git >> >> a/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabi/crt1.o >> >> >> >> b/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabi/crt1.o >> >> new file mode 100644 >> >> index 000000000000..e69de29bb2d1 >> >> >> >> diff --git >> >> a/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabi/crti.o >> >> >> >> b/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabi/crti.o >> >> new file mode 100644 >> >> index 000000000000..e69de29bb2d1 >> >> >> >> diff --git >> >> a/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabi/crtn.o >> >> >> >> b/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabi/crtn.o >> >> new file mode 100644 >> >> index 000000000000..e69de29bb2d1 >> >> >> >> diff --git >> >> a/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabihf/crt1.o >> >> >> >> b/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabihf/crt1.o >> >> new file mode 100644 >> >> index 000000000000..e69de29bb2d1 >> >> >> >> diff --git >> >> a/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabihf/crti.o >> >> >> >> b/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabihf/crti.o >> >> new file mode 100644 >> >> index 000000000000..e69de29bb2d1 >> >> >> >> diff --git >> >> a/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabihf/crtn.o >> >> >> >> b/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabihf/crtn.o >> >> new file mode 100644 >> >> index 000000000000..e69de29bb2d1 >> >> >> >> diff --git >> >> a/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/gcc/arm-linux-gnueabi/10/crtbegin.o >> >> >> >> b/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/gcc/arm-linux-gnueabi/10/crtbegin.o >> >> new file mode 100644 >> >> index 000000000000..e69de29bb2d1 >> >> >> >> diff --git >> >> a/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/gcc/arm-linux-gnueabihf/10/crtbegin.o >> >> >> >> b/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/gcc/arm-linux-gnueabihf/10/crtbegin.o >> >> new file mode 100644 >> >> index 000000000000..e69de29bb2d1 >> >> >> >> diff --git >> >> a/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/gcc/armeb-linux-gnueabi/10/crtbegin.o >> >> >> >> b/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/gcc/armeb-linux-gnueabi/10/crtbegin.o >> >> new file mode 100644 >> >> index 000000000000..e69de29bb2d1 >> >> >> >> diff --git >> >> a/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/gcc/armeb-linux-gnueabihf/10/crtbegin.o >> >> >> >> b/clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/gcc/armeb-linux-gnueabihf/10/crtbegin.o >> >> new file mode 100644 >> >> index 000000000000..e69de29bb2d1 >> >> >> >> diff --git >> >> a/clang/test/Driver/Inputs/multilib_arm_linux_tree/usr/include/arm-linux-gnueabihf/.keep >> >> >> >> b/clang/test/Driver/Inputs/multilib_arm_linux_tree/usr/include/arm-linux-gnueabihf/.keep >> >> new file mode 100644 >> >> index 000000000000..e69de29bb2d1 >> >> >> >> diff --git >> >> a/clang/test/Driver/Inputs/multilib_arm_linux_tree/usr/include/armeb-linux-gnueabi/.keep >> >> >> >> b/clang/test/Driver/Inputs/multilib_arm_linux_tree/usr/include/armeb-linux-gnueabi/.keep >> >> new file mode 100644 >> >> index 000000000000..e69de29bb2d1 >> >> >> >> diff --git >> >> a/clang/test/Driver/Inputs/multilib_arm_linux_tree/usr/include/armeb-linux-gnueabihf/.keep >> >> >> >> b/clang/test/Driver/Inputs/multilib_arm_linux_tree/usr/include/armeb-linux-gnueabihf/.keep >> >> new file mode 100644 >> >> index 000000000000..e69de29bb2d1 >> >> >> >> diff --git a/clang/test/Driver/arm-multilibs.c >> >> b/clang/test/Driver/arm-multilibs.c >> >> index bd9c80e8b16a..3ec9ea0b97c5 100644 >> >> --- a/clang/test/Driver/arm-multilibs.c >> >> +++ b/clang/test/Driver/arm-multilibs.c >> >> @@ -1,14 +1,14 @@ >> >> -// RUN: %clang -target armv7-linux-gnueabi >> >> --sysroot=%S/Inputs/multilib_arm_linux_tree -### -c %s -o /dev/null 2>&1 >> >> | FileCheck -check-prefix CHECK-ARM %s >> >> -// RUN: %clang -target thumbv7-linux-gnueabi >> >> --sysroot=%S/Inputs/multilib_arm_linux_tree -### -c %s -o /dev/null 2>&1 >> >> | FileCheck -check-prefix CHECK-ARM %s >> >> +// RUN: %clang --target=armv7-linux-gnueabi >> >> --sysroot=%S/Inputs/multilib_arm_linux_tree -### -c %s 2>&1 | FileCheck >> >> --check-prefix=CHECK-ARM %s >> >> +// RUN: %clang --target=thumbv7-linux-gnueabi >> >> --sysroot=%S/Inputs/multilib_arm_linux_tree -### -c %s 2>&1 | FileCheck >> >> --check-prefix=CHECK-ARM %s >> >> >> >> -// RUN: %clang -target armv7-linux-gnueabihf >> >> --sysroot=%S/Inputs/multilib_armhf_linux_tree -### -c %s -o /dev/null >> >> 2>&1 | FileCheck -check-prefix CHECK-ARMHF %s >> >> -// RUN: %clang -target thumbv7-linux-gnueabihf >> >> --sysroot=%S/Inputs/multilib_armhf_linux_tree -### -c %s -o /dev/null >> >> 2>&1 | FileCheck -check-prefix CHECK-ARMHF %s >> >> +// RUN: %clang --target=armv7-linux-gnueabihf >> >> --sysroot=%S/Inputs/multilib_arm_linux_tree -### -c %s 2>&1 | FileCheck >> >> --check-prefix=CHECK-ARMHF %s >> >> +// RUN: %clang --target=thumbv7-linux-gnueabihf >> >> --sysroot=%S/Inputs/multilib_arm_linux_tree -### -c %s 2>&1 | FileCheck >> >> --check-prefix=CHECK-ARMHF %s >> >> >> >> -// RUN: %clang -target armv7eb-linux-gnueabi >> >> --sysroot=%S/Inputs/multilib_armeb_linux_tree -### -c %s -o /dev/null >> >> 2>&1 | FileCheck -check-prefix CHECK-ARMEB %s >> >> -// RUN: %clang -target thumbv7eb-linux-gnueabi >> >> --sysroot=%S/Inputs/multilib_armeb_linux_tree -### -c %s -o /dev/null >> >> 2>&1 | FileCheck -check-prefix CHECK-ARMEB %s >> >> +// RUN: %clang --target=armv7eb-linux-gnueabi >> >> --sysroot=%S/Inputs/multilib_arm_linux_tree -### -c %s 2>&1 | FileCheck >> >> --check-prefix=CHECK-ARMEB %s >> >> +// RUN: %clang --target=thumbv7eb-linux-gnueabi >> >> --sysroot=%S/Inputs/multilib_arm_linux_tree -### -c %s 2>&1 | FileCheck >> >> --check-prefix=CHECK-ARMEB %s >> >> >> >> -// RUN: %clang -target armv7eb-linux-gnueabihf >> >> --sysroot=%S/Inputs/multilib_armebhf_linux_tree -### -c %s -o /dev/null >> >> 2>&1 | FileCheck -check-prefix CHECK-ARMEBHF %s >> >> -// RUN: %clang -target thumbv7eb-linux-gnueabihf >> >> --sysroot=%S/Inputs/multilib_armebhf_linux_tree -### -c %s -o /dev/null >> >> 2>&1 | FileCheck -check-prefix CHECK-ARMEBHF %s >> >> +// RUN: %clang --target=armv7eb-linux-gnueabihf >> >> --sysroot=%S/Inputs/multilib_arm_linux_tree -### -c %s 2>&1 | FileCheck >> >> --check-prefix=CHECK-ARMEBHF %s >> >> +// RUN: %clang --target=thumbv7eb-linux-gnueabihf >> >> --sysroot=%S/Inputs/multilib_arm_linux_tree -### -c %s 2>&1 | FileCheck >> >> --check-prefix=CHECK-ARMEBHF %s >> >> >> >> // CHECK-ARM: "-internal-externc-isystem" >> >> "{{.*}}/usr/include/arm-linux-gnueabi" >> >> // CHECK-ARMHF: "-internal-externc-isystem" >> >> "{{.*}}/usr/include/arm-linux-gnueabihf" >> >> >> >> >> >> >> >> _______________________________________________ >> >> 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