<div dir="ltr">Yes.<div><br></div><div>1. Download <a href="https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain/500976182686961e34974ea7bdc0a21fca32be06/debian_sid_amd64_sysroot.tar.xz">https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain/500976182686961e34974ea7bdc0a21fca32be06/debian_sid_amd64_sysroot.tar.xz</a></div><div>2. Unpack somewhere</div><div>3. Delete the lib/ folder in it</div><div>4. Try to use that sysroot like so:</div><div><br></div><div>thakis@thakis:~/src/llvm-project$ cat test.cc<br>#include <features.h><br>int main(int argc, char* argv[]) {<br>}<br>thakis@thakis:~/src/llvm-project$ out/gn/bin/clang --sysroot ~/src/chrome/src/build/linux/debian_sid_amd64-sysroot -c test.cc <br>In file included from test.cc:1:<br>/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<br># include <sys/cdefs.h><br> ^~~~~~~~~~~~~<br>1 error generated.<br></div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Mar 23, 2021 at 11:01 PM Fangrui Song <<a href="mailto:i@maskray.me">i@maskray.me</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Tue, Mar 23, 2021 at 7:09 PM Nico Weber <<a href="mailto:thakis@chromium.org" target="_blank">thakis@chromium.org</a>> wrote:<br>
><br>
> Was this reviewed anywhere?<br>
<br>
No. This is a nice code cleanup. Do you find a case it does not handle<br>
correctly?<br>
<br>
> On Mon, Mar 22, 2021 at 1:40 AM Fangrui Song via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>> wrote:<br>
>><br>
>><br>
>> Author: Fangrui Song<br>
>> Date: 2021-03-21T22:40:38-07:00<br>
>> New Revision: 874bdc8e61662b5f39a9626b9132e0979fae556f<br>
>><br>
>> URL: <a href="https://github.com/llvm/llvm-project/commit/874bdc8e61662b5f39a9626b9132e0979fae556f" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/874bdc8e61662b5f39a9626b9132e0979fae556f</a><br>
>> DIFF: <a href="https://github.com/llvm/llvm-project/commit/874bdc8e61662b5f39a9626b9132e0979fae556f.diff" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/874bdc8e61662b5f39a9626b9132e0979fae556f.diff</a><br>
>><br>
>> LOG: [Driver] Clean up Debian multiarch /usr/include/<triplet> madness<br>
>><br>
>> Debian multiarch additionally adds /usr/include/<triplet> and somehow<br>
>> Android borrowed the idea. (Note /usr/<triplet>/include is already an<br>
>> include dir...). On Debian, we should just assume a GCC installation is<br>
>> available and use its triple.<br>
>><br>
>> Added:<br>
>> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabi/crt1.o<br>
>> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabi/crti.o<br>
>> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabi/crtn.o<br>
>> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabihf/crt1.o<br>
>> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabihf/crti.o<br>
>> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabihf/crtn.o<br>
>> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabi/crt1.o<br>
>> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabi/crti.o<br>
>> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabi/crtn.o<br>
>> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabihf/crt1.o<br>
>> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabihf/crti.o<br>
>> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/armeb-linux-gnueabihf/crtn.o<br>
>> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/gcc/arm-linux-gnueabi/10/crtbegin.o<br>
>> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/gcc/arm-linux-gnueabihf/10/crtbegin.o<br>
>> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/gcc/armeb-linux-gnueabi/10/crtbegin.o<br>
>> clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/gcc/armeb-linux-gnueabihf/10/crtbegin.o<br>
>> clang/test/Driver/Inputs/multilib_arm_linux_tree/usr/include/arm-linux-gnueabihf/.keep<br>
>> clang/test/Driver/Inputs/multilib_arm_linux_tree/usr/include/armeb-linux-gnueabi/.keep<br>
>> clang/test/Driver/Inputs/multilib_arm_linux_tree/usr/include/armeb-linux-gnueabihf/.keep<br>
>><br>
>> Modified:<br>
>> clang/lib/Driver/ToolChains/Gnu.cpp<br>
>> clang/lib/Driver/ToolChains/Linux.cpp<br>
>> clang/test/Driver/arm-multilibs.c<br>
>><br>
>> Removed:<br>
>> clang/test/Driver/Inputs/multilib_armeb_linux_tree/usr/include/armeb-linux-gnueabi/.keep<br>
>> clang/test/Driver/Inputs/multilib_armebhf_linux_tree/usr/include/armeb-linux-gnueabihf/.keep<br>
>> clang/test/Driver/Inputs/multilib_armhf_linux_tree/usr/include/arm-linux-gnueabihf/.keep<br>
>><br>
>><br>
>> ################################################################################<br>
>> diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp<br>
>> index c554047beac3..972044fb615e 100644<br>
>> --- a/clang/lib/Driver/ToolChains/Gnu.cpp<br>
>> +++ b/clang/lib/Driver/ToolChains/Gnu.cpp<br>
>> @@ -2999,8 +2999,6 @@ Generic_GCC::addGCCLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,<br>
>> const Multilib &Multilib = GCCInstallation.getMultilib();<br>
>> const std::string Triple = getMultiarchTriple(<br>
>> getDriver(), GCCInstallation.getTriple(), getDriver().SysRoot);<br>
>> - const std::string TargetMultiarchTriple =<br>
>> - getMultiarchTriple(getDriver(), getTriple(), getDriver().SysRoot);<br>
>> const GCCVersion &Version = GCCInstallation.getVersion();<br>
>><br>
>> // Try /../$triple/include/c++/$version then /../include/c++/$version.<br>
>><br>
>> diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp<br>
>> index cbfa5152bc8e..e889791d19b2 100644<br>
>> --- a/clang/lib/Driver/ToolChains/Linux.cpp<br>
>> +++ b/clang/lib/Driver/ToolChains/Linux.cpp<br>
>> @@ -604,172 +604,16 @@ void Linux::AddClangSystemIncludeArgs(const ArgList &DriverArgs,<br>
>> return;<br>
>> }<br>
>><br>
>> - // Implement generic Debian multiarch support.<br>
>> - const StringRef X86_64MultiarchIncludeDirs[] = {<br>
>> - "/usr/include/x86_64-linux-gnu",<br>
>> -<br>
>> - // FIXME: These are older forms of multiarch. It's not clear that they're<br>
>> - // in use in any released version of Debian, so we should consider<br>
>> - // removing them.<br>
>> - "/usr/include/i686-linux-gnu/64", "/usr/include/i486-linux-gnu/64"};<br>
>> - const StringRef X86MultiarchIncludeDirs[] = {<br>
>> - "/usr/include/i386-linux-gnu",<br>
>> -<br>
>> - // FIXME: These are older forms of multiarch. It's not clear that they're<br>
>> - // in use in any released version of Debian, so we should consider<br>
>> - // removing them.<br>
>> - "/usr/include/x86_64-linux-gnu/32", "/usr/include/i686-linux-gnu",<br>
>> - "/usr/include/i486-linux-gnu"};<br>
>> - const StringRef AArch64MultiarchIncludeDirs[] = {<br>
>> - "/usr/include/aarch64-linux-gnu"};<br>
>> - const StringRef ARMMultiarchIncludeDirs[] = {<br>
>> - "/usr/include/arm-linux-gnueabi"};<br>
>> - const StringRef ARMHFMultiarchIncludeDirs[] = {<br>
>> - "/usr/include/arm-linux-gnueabihf"};<br>
>> - const StringRef ARMEBMultiarchIncludeDirs[] = {<br>
>> - "/usr/include/armeb-linux-gnueabi"};<br>
>> - const StringRef ARMEBHFMultiarchIncludeDirs[] = {<br>
>> - "/usr/include/armeb-linux-gnueabihf"};<br>
>> - const StringRef M68kMultiarchIncludeDirs[] = {"/usr/include/m68k-linux-gnu"};<br>
>> - const StringRef MIPSMultiarchIncludeDirs[] = {"/usr/include/mips-linux-gnu"};<br>
>> - const StringRef MIPSELMultiarchIncludeDirs[] = {<br>
>> - "/usr/include/mipsel-linux-gnu"};<br>
>> - const StringRef MIPS64MultiarchIncludeDirs[] = {<br>
>> - "/usr/include/mips64-linux-gnuabi64"};<br>
>> - const StringRef MIPS64ELMultiarchIncludeDirs[] = {<br>
>> - "/usr/include/mips64el-linux-gnuabi64"};<br>
>> - const StringRef MIPSN32MultiarchIncludeDirs[] = {<br>
>> - "/usr/include/mips64-linux-gnuabin32"};<br>
>> - const StringRef MIPSN32ELMultiarchIncludeDirs[] = {<br>
>> - "/usr/include/mips64el-linux-gnuabin32"};<br>
>> - const StringRef MIPSR6MultiarchIncludeDirs[] = {<br>
>> - "/usr/include/mipsisa32-linux-gnu"};<br>
>> - const StringRef MIPSR6ELMultiarchIncludeDirs[] = {<br>
>> - "/usr/include/mipsisa32r6el-linux-gnu"};<br>
>> - const StringRef MIPS64R6MultiarchIncludeDirs[] = {<br>
>> - "/usr/include/mipsisa64r6-linux-gnuabi64"};<br>
>> - const StringRef MIPS64R6ELMultiarchIncludeDirs[] = {<br>
>> - "/usr/include/mipsisa64r6el-linux-gnuabi64"};<br>
>> - const StringRef MIPSN32R6MultiarchIncludeDirs[] = {<br>
>> - "/usr/include/mipsisa64r6-linux-gnuabin32"};<br>
>> - const StringRef MIPSN32R6ELMultiarchIncludeDirs[] = {<br>
>> - "/usr/include/mipsisa64r6el-linux-gnuabin32"};<br>
>> - const StringRef PPCMultiarchIncludeDirs[] = {<br>
>> - "/usr/include/powerpc-linux-gnu",<br>
>> - "/usr/include/powerpc-linux-gnuspe"};<br>
>> - const StringRef PPCLEMultiarchIncludeDirs[] = {<br>
>> - "/usr/include/powerpcle-linux-gnu"};<br>
>> - const StringRef PPC64MultiarchIncludeDirs[] = {<br>
>> - "/usr/include/powerpc64-linux-gnu"};<br>
>> - const StringRef PPC64LEMultiarchIncludeDirs[] = {<br>
>> - "/usr/include/powerpc64le-linux-gnu"};<br>
>> - const StringRef SparcMultiarchIncludeDirs[] = {<br>
>> - "/usr/include/sparc-linux-gnu"};<br>
>> - const StringRef Sparc64MultiarchIncludeDirs[] = {<br>
>> - "/usr/include/sparc64-linux-gnu"};<br>
>> - const StringRef SYSTEMZMultiarchIncludeDirs[] = {<br>
>> - "/usr/include/s390x-linux-gnu"};<br>
>> - ArrayRef<StringRef> MultiarchIncludeDirs;<br>
>> - switch (getTriple().getArch()) {<br>
>> - case llvm::Triple::x86_64:<br>
>> - MultiarchIncludeDirs = X86_64MultiarchIncludeDirs;<br>
>> - break;<br>
>> - case llvm::Triple::x86:<br>
>> - MultiarchIncludeDirs = X86MultiarchIncludeDirs;<br>
>> - break;<br>
>> - case llvm::Triple::aarch64:<br>
>> - case llvm::Triple::aarch64_be:<br>
>> - MultiarchIncludeDirs = AArch64MultiarchIncludeDirs;<br>
>> - break;<br>
>> - case llvm::Triple::arm:<br>
>> - case llvm::Triple::thumb:<br>
>> - if (getTriple().getEnvironment() == llvm::Triple::GNUEABIHF)<br>
>> - MultiarchIncludeDirs = ARMHFMultiarchIncludeDirs;<br>
>> - else<br>
>> - MultiarchIncludeDirs = ARMMultiarchIncludeDirs;<br>
>> - break;<br>
>> - case llvm::Triple::armeb:<br>
>> - case llvm::Triple::thumbeb:<br>
>> - if (getTriple().getEnvironment() == llvm::Triple::GNUEABIHF)<br>
>> - MultiarchIncludeDirs = ARMEBHFMultiarchIncludeDirs;<br>
>> - else<br>
>> - MultiarchIncludeDirs = ARMEBMultiarchIncludeDirs;<br>
>> - break;<br>
>> - case llvm::Triple::m68k:<br>
>> - MultiarchIncludeDirs = M68kMultiarchIncludeDirs;<br>
>> - break;<br>
>> - case llvm::Triple::mips:<br>
>> - if (getTriple().getSubArch() == llvm::Triple::MipsSubArch_r6)<br>
>> - MultiarchIncludeDirs = MIPSR6MultiarchIncludeDirs;<br>
>> - else<br>
>> - MultiarchIncludeDirs = MIPSMultiarchIncludeDirs;<br>
>> - break;<br>
>> - case llvm::Triple::mipsel:<br>
>> - if (getTriple().getSubArch() == llvm::Triple::MipsSubArch_r6)<br>
>> - MultiarchIncludeDirs = MIPSR6ELMultiarchIncludeDirs;<br>
>> - else<br>
>> - MultiarchIncludeDirs = MIPSELMultiarchIncludeDirs;<br>
>> - break;<br>
>> - case llvm::Triple::mips64:<br>
>> - if (getTriple().getSubArch() == llvm::Triple::MipsSubArch_r6)<br>
>> - if (getTriple().getEnvironment() == llvm::Triple::GNUABIN32)<br>
>> - MultiarchIncludeDirs = MIPSN32R6MultiarchIncludeDirs;<br>
>> - else<br>
>> - MultiarchIncludeDirs = MIPS64R6MultiarchIncludeDirs;<br>
>> - else if (getTriple().getEnvironment() == llvm::Triple::GNUABIN32)<br>
>> - MultiarchIncludeDirs = MIPSN32MultiarchIncludeDirs;<br>
>> - else<br>
>> - MultiarchIncludeDirs = MIPS64MultiarchIncludeDirs;<br>
>> - break;<br>
>> - case llvm::Triple::mips64el:<br>
>> - if (getTriple().getSubArch() == llvm::Triple::MipsSubArch_r6)<br>
>> - if (getTriple().getEnvironment() == llvm::Triple::GNUABIN32)<br>
>> - MultiarchIncludeDirs = MIPSN32R6ELMultiarchIncludeDirs;<br>
>> - else<br>
>> - MultiarchIncludeDirs = MIPS64R6ELMultiarchIncludeDirs;<br>
>> - else if (getTriple().getEnvironment() == llvm::Triple::GNUABIN32)<br>
>> - MultiarchIncludeDirs = MIPSN32ELMultiarchIncludeDirs;<br>
>> - else<br>
>> - MultiarchIncludeDirs = MIPS64ELMultiarchIncludeDirs;<br>
>> - break;<br>
>> - case llvm::Triple::ppc:<br>
>> - MultiarchIncludeDirs = PPCMultiarchIncludeDirs;<br>
>> - break;<br>
>> - case llvm::Triple::ppcle:<br>
>> - MultiarchIncludeDirs = PPCLEMultiarchIncludeDirs;<br>
>> - break;<br>
>> - case llvm::Triple::ppc64:<br>
>> - MultiarchIncludeDirs = PPC64MultiarchIncludeDirs;<br>
>> - break;<br>
>> - case llvm::Triple::ppc64le:<br>
>> - MultiarchIncludeDirs = PPC64LEMultiarchIncludeDirs;<br>
>> - break;<br>
>> - case llvm::Triple::sparc:<br>
>> - MultiarchIncludeDirs = SparcMultiarchIncludeDirs;<br>
>> - break;<br>
>> - case llvm::Triple::sparcv9:<br>
>> - MultiarchIncludeDirs = Sparc64MultiarchIncludeDirs;<br>
>> - break;<br>
>> - case llvm::Triple::systemz:<br>
>> - MultiarchIncludeDirs = SYSTEMZMultiarchIncludeDirs;<br>
>> - break;<br>
>> - default:<br>
>> - break;<br>
>> - }<br>
>> -<br>
>> - const std::string AndroidMultiarchIncludeDir =<br>
>> - std::string("/usr/include/") +<br>
>> - getMultiarchTriple(D, getTriple(), SysRoot);<br>
>> - const StringRef AndroidMultiarchIncludeDirs[] = {AndroidMultiarchIncludeDir};<br>
>> + // On Android and Debian, add /usr/include/$triple if exists. On Debian, we<br>
>> + // can assume a GCC installation is available.<br>
>> + std::string MultiarchIncludeDir;<br>
>> if (getTriple().isAndroid())<br>
>> - MultiarchIncludeDirs = AndroidMultiarchIncludeDirs;<br>
>> -<br>
>> - for (StringRef Dir : MultiarchIncludeDirs) {<br>
>> - if (D.getVFS().exists(SysRoot + Dir)) {<br>
>> - addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + Dir);<br>
>> - break;<br>
>> - }<br>
>> - }<br>
>> + MultiarchIncludeDir = getMultiarchTriple(D, getTriple(), SysRoot);<br>
>> + else if (GCCInstallation.isValid())<br>
>> + MultiarchIncludeDir = GCCInstallation.getTriple().str();<br>
>> + if (!MultiarchIncludeDir.empty() &&<br>
>> + D.getVFS().exists(SysRoot + "/usr/include/" + MultiarchIncludeDir))<br>
>> + addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + "/usr/include/" + MultiarchIncludeDir);<br>
>><br>
>> if (getTriple().getOS() == llvm::Triple::RTEMS)<br>
>> return;<br>
>><br>
>> 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<br>
>> similarity index 100%<br>
>> rename from clang/test/Driver/Inputs/multilib_armeb_linux_tree/usr/include/armeb-linux-gnueabi/.keep<br>
>> rename to clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabi/crt1.o<br>
>><br>
>> 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<br>
>> similarity index 100%<br>
>> rename from clang/test/Driver/Inputs/multilib_armebhf_linux_tree/usr/include/armeb-linux-gnueabihf/.keep<br>
>> rename to clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabi/crti.o<br>
>><br>
>> 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<br>
>> similarity index 100%<br>
>> rename from clang/test/Driver/Inputs/multilib_armhf_linux_tree/usr/include/arm-linux-gnueabihf/.keep<br>
>> rename to clang/test/Driver/Inputs/multilib_arm_linux_tree/lib/arm-linux-gnueabi/crtn.o<br>
>><br>
>> 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<br>
>> new file mode 100644<br>
>> index 000000000000..e69de29bb2d1<br>
>><br>
>> 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<br>
>> new file mode 100644<br>
>> index 000000000000..e69de29bb2d1<br>
>><br>
>> 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<br>
>> new file mode 100644<br>
>> index 000000000000..e69de29bb2d1<br>
>><br>
>> 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<br>
>> new file mode 100644<br>
>> index 000000000000..e69de29bb2d1<br>
>><br>
>> 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<br>
>> new file mode 100644<br>
>> index 000000000000..e69de29bb2d1<br>
>><br>
>> 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<br>
>> new file mode 100644<br>
>> index 000000000000..e69de29bb2d1<br>
>><br>
>> 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<br>
>> new file mode 100644<br>
>> index 000000000000..e69de29bb2d1<br>
>><br>
>> 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<br>
>> new file mode 100644<br>
>> index 000000000000..e69de29bb2d1<br>
>><br>
>> 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<br>
>> new file mode 100644<br>
>> index 000000000000..e69de29bb2d1<br>
>><br>
>> 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<br>
>> new file mode 100644<br>
>> index 000000000000..e69de29bb2d1<br>
>><br>
>> 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<br>
>> new file mode 100644<br>
>> index 000000000000..e69de29bb2d1<br>
>><br>
>> 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<br>
>> new file mode 100644<br>
>> index 000000000000..e69de29bb2d1<br>
>><br>
>> 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<br>
>> new file mode 100644<br>
>> index 000000000000..e69de29bb2d1<br>
>><br>
>> 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<br>
>> new file mode 100644<br>
>> index 000000000000..e69de29bb2d1<br>
>><br>
>> 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<br>
>> new file mode 100644<br>
>> index 000000000000..e69de29bb2d1<br>
>><br>
>> 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<br>
>> new file mode 100644<br>
>> index 000000000000..e69de29bb2d1<br>
>><br>
>> diff --git a/clang/test/Driver/arm-multilibs.c b/clang/test/Driver/arm-multilibs.c<br>
>> index bd9c80e8b16a..3ec9ea0b97c5 100644<br>
>> --- a/clang/test/Driver/arm-multilibs.c<br>
>> +++ b/clang/test/Driver/arm-multilibs.c<br>
>> @@ -1,14 +1,14 @@<br>
>> -// 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<br>
>> -// 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<br>
>> +// RUN: %clang --target=armv7-linux-gnueabi --sysroot=%S/Inputs/multilib_arm_linux_tree -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-ARM %s<br>
>> +// RUN: %clang --target=thumbv7-linux-gnueabi --sysroot=%S/Inputs/multilib_arm_linux_tree -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-ARM %s<br>
>><br>
>> -// 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<br>
>> -// 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<br>
>> +// RUN: %clang --target=armv7-linux-gnueabihf --sysroot=%S/Inputs/multilib_arm_linux_tree -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-ARMHF %s<br>
>> +// RUN: %clang --target=thumbv7-linux-gnueabihf --sysroot=%S/Inputs/multilib_arm_linux_tree -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-ARMHF %s<br>
>><br>
>> -// 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<br>
>> -// 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<br>
>> +// RUN: %clang --target=armv7eb-linux-gnueabi --sysroot=%S/Inputs/multilib_arm_linux_tree -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-ARMEB %s<br>
>> +// RUN: %clang --target=thumbv7eb-linux-gnueabi --sysroot=%S/Inputs/multilib_arm_linux_tree -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-ARMEB %s<br>
>><br>
>> -// 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<br>
>> -// 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<br>
>> +// RUN: %clang --target=armv7eb-linux-gnueabihf --sysroot=%S/Inputs/multilib_arm_linux_tree -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-ARMEBHF %s<br>
>> +// RUN: %clang --target=thumbv7eb-linux-gnueabihf --sysroot=%S/Inputs/multilib_arm_linux_tree -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-ARMEBHF %s<br>
>><br>
>> // CHECK-ARM: "-internal-externc-isystem" "{{.*}}/usr/include/arm-linux-gnueabi"<br>
>> // CHECK-ARMHF: "-internal-externc-isystem" "{{.*}}/usr/include/arm-linux-gnueabihf"<br>
>><br>
>><br>
>><br>
>> _______________________________________________<br>
>> cfe-commits mailing list<br>
>> <a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a><br>
>> <a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
</blockquote></div>