[clang] 874bdc8 - [Driver] Clean up Debian multiarch /usr/include/<triplet> madness

Fangrui Song via cfe-commits cfe-commits at lists.llvm.org
Tue Mar 23 22:32:03 PDT 2021


On Tue, Mar 23, 2021 at 9:22 PM Nico Weber <thakis at 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 at thakis:~/src/llvm-project$ cat test.cc
> #include <features.h>
> int main(int argc, char* argv[]) {
> }
> thakis at 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 at maskray.me> wrote:
>>
>> On Tue, Mar 23, 2021 at 7:09 PM Nico Weber <thakis at 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 at 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 at lists.llvm.org
>> >> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


More information about the cfe-commits mailing list