From ef37744ff649b939c2262c12218abb24485977d1 Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Thu, 20 Jun 2013 23:37:54 +0000 Subject: [PATCH] Update a comment to clarify that searching the target triple bin directory for programs used by the driver is actually the standard behavior we want to be compatible with GCC cross compilers -- it isn't specific to SUSE or any other distro. Also start fleshing out testing of the different cross compilation patterns, both with a new very bare-bones tree of cross compilers and by extending the multilib trees. Currently, we don't correctly model doing a cross compile using the non-triple target of a bi-arch GCC install, but I'll add support for that (and tests) next. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184499 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Driver/ToolChains.cpp | 10 ++++- .../usr/bin/i386-unknown-linux-gnu-as | 1 + .../usr/bin/i386-unknown-linux-gnu-ld | 1 + .../usr/bin/i386-unknown-linux-gnu-ld.bfd | 1 + .../usr/bin/i386-unknown-linux-gnu-ld.gold | 1 + .../usr/bin/x86_64-unknown-linux-gnu-as | 1 + .../usr/bin/x86_64-unknown-linux-gnu-ld | 1 + .../usr/bin/x86_64-unknown-linux-gnu-ld.bfd | 1 + .../usr/bin/x86_64-unknown-linux-gnu-ld.gold | 1 + .../usr/i386-unknown-linux-gnu/bin/as | 1 + .../usr/i386-unknown-linux-gnu/bin/ld | 1 + .../usr/i386-unknown-linux-gnu/bin/ld.bfd | 1 + .../usr/i386-unknown-linux-gnu/bin/ld.gold | 1 + .../usr/i386-unknown-linux-gnu/lib/.keep | 0 .../i386-unknown-linux-gnu/4.6.0/crtbegin.o | 0 .../x86_64-unknown-linux-gnu/4.6.0/crtbegin.o | 0 .../4.6.0/crtbeginT.o | 0 .../4.6.0/crtfastmath.o | 0 .../usr/x86_64-unknown-linux-gnu/bin/as | 1 + .../usr/x86_64-unknown-linux-gnu/bin/ld | 1 + .../usr/x86_64-unknown-linux-gnu/bin/ld.bfd | 1 + .../usr/x86_64-unknown-linux-gnu/bin/ld.gold | 1 + .../usr/x86_64-unknown-linux-gnu/lib/.keep | 0 .../multilib_32bit_linux_tree/usr/bin/as | 1 + .../usr/bin/i386-unknown-linux-gnu-as | 1 + .../usr/bin/i386-unknown-linux-gnu-ld | 1 + .../multilib_32bit_linux_tree/usr/bin/ld | 1 + .../usr/i386-unknown-linux/bin/as | 1 + .../usr/i386-unknown-linux/bin/ld | 1 + .../multilib_64bit_linux_tree/usr/bin/as | 1 + .../multilib_64bit_linux_tree/usr/bin/ld | 1 + .../usr/bin/x86_64-unknown-linux-gnu-as | 1 + .../usr/bin/x86_64-unknown-linux-gnu-ld | 1 + .../usr/x86_64-unknown-linux/bin/as | 1 + .../usr/x86_64-unknown-linux/bin/ld | 1 + test/Driver/cross-linux-tools.c | 41 +++++++++++++++++++ 36 files changed, 77 insertions(+), 2 deletions(-) create mode 100755 test/Driver/Inputs/basic_cross_linux_tree/usr/bin/i386-unknown-linux-gnu-as create mode 120000 test/Driver/Inputs/basic_cross_linux_tree/usr/bin/i386-unknown-linux-gnu-ld create mode 100755 test/Driver/Inputs/basic_cross_linux_tree/usr/bin/i386-unknown-linux-gnu-ld.bfd create mode 100755 test/Driver/Inputs/basic_cross_linux_tree/usr/bin/i386-unknown-linux-gnu-ld.gold create mode 100755 test/Driver/Inputs/basic_cross_linux_tree/usr/bin/x86_64-unknown-linux-gnu-as create mode 120000 test/Driver/Inputs/basic_cross_linux_tree/usr/bin/x86_64-unknown-linux-gnu-ld create mode 100755 test/Driver/Inputs/basic_cross_linux_tree/usr/bin/x86_64-unknown-linux-gnu-ld.bfd create mode 100755 test/Driver/Inputs/basic_cross_linux_tree/usr/bin/x86_64-unknown-linux-gnu-ld.gold create mode 100755 test/Driver/Inputs/basic_cross_linux_tree/usr/i386-unknown-linux-gnu/bin/as create mode 120000 test/Driver/Inputs/basic_cross_linux_tree/usr/i386-unknown-linux-gnu/bin/ld create mode 100755 test/Driver/Inputs/basic_cross_linux_tree/usr/i386-unknown-linux-gnu/bin/ld.bfd create mode 100755 test/Driver/Inputs/basic_cross_linux_tree/usr/i386-unknown-linux-gnu/bin/ld.gold create mode 100644 test/Driver/Inputs/basic_cross_linux_tree/usr/i386-unknown-linux-gnu/lib/.keep create mode 100644 test/Driver/Inputs/basic_cross_linux_tree/usr/lib/gcc/i386-unknown-linux-gnu/4.6.0/crtbegin.o create mode 100644 test/Driver/Inputs/basic_cross_linux_tree/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/crtbegin.o create mode 100644 test/Driver/Inputs/basic_cross_linux_tree/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/crtbeginT.o create mode 100644 test/Driver/Inputs/basic_cross_linux_tree/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/crtfastmath.o create mode 100755 test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/as create mode 120000 test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/ld create mode 100755 test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/ld.bfd create mode 100755 test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/ld.gold create mode 100644 test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/lib/.keep create mode 120000 test/Driver/Inputs/multilib_32bit_linux_tree/usr/bin/as create mode 100755 test/Driver/Inputs/multilib_32bit_linux_tree/usr/bin/i386-unknown-linux-gnu-as create mode 100755 test/Driver/Inputs/multilib_32bit_linux_tree/usr/bin/i386-unknown-linux-gnu-ld create mode 120000 test/Driver/Inputs/multilib_32bit_linux_tree/usr/bin/ld create mode 120000 test/Driver/Inputs/multilib_32bit_linux_tree/usr/i386-unknown-linux/bin/as create mode 120000 test/Driver/Inputs/multilib_32bit_linux_tree/usr/i386-unknown-linux/bin/ld create mode 120000 test/Driver/Inputs/multilib_64bit_linux_tree/usr/bin/as create mode 120000 test/Driver/Inputs/multilib_64bit_linux_tree/usr/bin/ld create mode 100755 test/Driver/Inputs/multilib_64bit_linux_tree/usr/bin/x86_64-unknown-linux-gnu-as create mode 100755 test/Driver/Inputs/multilib_64bit_linux_tree/usr/bin/x86_64-unknown-linux-gnu-ld create mode 120000 test/Driver/Inputs/multilib_64bit_linux_tree/usr/x86_64-unknown-linux/bin/as create mode 120000 test/Driver/Inputs/multilib_64bit_linux_tree/usr/x86_64-unknown-linux/bin/ld create mode 100644 test/Driver/cross-linux-tools.c diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index 5c0ab55a04..1c208eea44 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp @@ -2219,8 +2219,14 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) llvm::Triple::ArchType Arch = Triple.getArch(); std::string SysRoot = computeSysRoot(Args); - // OpenSuse stores the linker with the compiler, add that to the search - // path. + // Cross-compiling binutils and GCC installations (vanilla and OpenSuse at + // least) put various tools in a triple-prefixed directory off of the parent + // of the GCC installation. We use the GCC triple here to ensure that we end + // up with tools that support the same amount of cross compiling as the + // detected GCC installation. For example, if we find a GCC installation + // targeting x86_64, but it is a bi-arch GCC installation, it can also be + // used to target i386. + // FIXME: This seems unlikely to be Linux-specific. ToolChain::path_list &PPaths = getProgramPaths(); PPaths.push_back(Twine(GCCInstallation.getParentLibPath() + "/../" + GCCInstallation.getTriple().str() + "/bin").str()); diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/i386-unknown-linux-gnu-as b/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/i386-unknown-linux-gnu-as new file mode 100755 index 0000000000..b23e55619b --- /dev/null +++ b/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/i386-unknown-linux-gnu-as @@ -0,0 +1 @@ +#!/bin/true diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/i386-unknown-linux-gnu-ld b/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/i386-unknown-linux-gnu-ld new file mode 120000 index 0000000000..7e0a9cfe2d --- /dev/null +++ b/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/i386-unknown-linux-gnu-ld @@ -0,0 +1 @@ +i386-unknown-linux-gnu-ld.gold \ No newline at end of file diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/i386-unknown-linux-gnu-ld.bfd b/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/i386-unknown-linux-gnu-ld.bfd new file mode 100755 index 0000000000..b23e55619b --- /dev/null +++ b/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/i386-unknown-linux-gnu-ld.bfd @@ -0,0 +1 @@ +#!/bin/true diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/i386-unknown-linux-gnu-ld.gold b/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/i386-unknown-linux-gnu-ld.gold new file mode 100755 index 0000000000..b23e55619b --- /dev/null +++ b/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/i386-unknown-linux-gnu-ld.gold @@ -0,0 +1 @@ +#!/bin/true diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/x86_64-unknown-linux-gnu-as b/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/x86_64-unknown-linux-gnu-as new file mode 100755 index 0000000000..b23e55619b --- /dev/null +++ b/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/x86_64-unknown-linux-gnu-as @@ -0,0 +1 @@ +#!/bin/true diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/x86_64-unknown-linux-gnu-ld b/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/x86_64-unknown-linux-gnu-ld new file mode 120000 index 0000000000..ce36ac093b --- /dev/null +++ b/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/x86_64-unknown-linux-gnu-ld @@ -0,0 +1 @@ +x86_64-unknown-linux-gnu-ld.gold \ No newline at end of file diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/x86_64-unknown-linux-gnu-ld.bfd b/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/x86_64-unknown-linux-gnu-ld.bfd new file mode 100755 index 0000000000..b23e55619b --- /dev/null +++ b/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/x86_64-unknown-linux-gnu-ld.bfd @@ -0,0 +1 @@ +#!/bin/true diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/x86_64-unknown-linux-gnu-ld.gold b/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/x86_64-unknown-linux-gnu-ld.gold new file mode 100755 index 0000000000..b23e55619b --- /dev/null +++ b/test/Driver/Inputs/basic_cross_linux_tree/usr/bin/x86_64-unknown-linux-gnu-ld.gold @@ -0,0 +1 @@ +#!/bin/true diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/i386-unknown-linux-gnu/bin/as b/test/Driver/Inputs/basic_cross_linux_tree/usr/i386-unknown-linux-gnu/bin/as new file mode 100755 index 0000000000..b23e55619b --- /dev/null +++ b/test/Driver/Inputs/basic_cross_linux_tree/usr/i386-unknown-linux-gnu/bin/as @@ -0,0 +1 @@ +#!/bin/true diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/i386-unknown-linux-gnu/bin/ld b/test/Driver/Inputs/basic_cross_linux_tree/usr/i386-unknown-linux-gnu/bin/ld new file mode 120000 index 0000000000..6cd03701cd --- /dev/null +++ b/test/Driver/Inputs/basic_cross_linux_tree/usr/i386-unknown-linux-gnu/bin/ld @@ -0,0 +1 @@ +ld.gold \ No newline at end of file diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/i386-unknown-linux-gnu/bin/ld.bfd b/test/Driver/Inputs/basic_cross_linux_tree/usr/i386-unknown-linux-gnu/bin/ld.bfd new file mode 100755 index 0000000000..b23e55619b --- /dev/null +++ b/test/Driver/Inputs/basic_cross_linux_tree/usr/i386-unknown-linux-gnu/bin/ld.bfd @@ -0,0 +1 @@ +#!/bin/true diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/i386-unknown-linux-gnu/bin/ld.gold b/test/Driver/Inputs/basic_cross_linux_tree/usr/i386-unknown-linux-gnu/bin/ld.gold new file mode 100755 index 0000000000..b23e55619b --- /dev/null +++ b/test/Driver/Inputs/basic_cross_linux_tree/usr/i386-unknown-linux-gnu/bin/ld.gold @@ -0,0 +1 @@ +#!/bin/true diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/i386-unknown-linux-gnu/lib/.keep b/test/Driver/Inputs/basic_cross_linux_tree/usr/i386-unknown-linux-gnu/lib/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/lib/gcc/i386-unknown-linux-gnu/4.6.0/crtbegin.o b/test/Driver/Inputs/basic_cross_linux_tree/usr/lib/gcc/i386-unknown-linux-gnu/4.6.0/crtbegin.o new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/crtbegin.o b/test/Driver/Inputs/basic_cross_linux_tree/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/crtbegin.o new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/crtbeginT.o b/test/Driver/Inputs/basic_cross_linux_tree/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/crtbeginT.o new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/crtfastmath.o b/test/Driver/Inputs/basic_cross_linux_tree/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/crtfastmath.o new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/as b/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/as new file mode 100755 index 0000000000..b23e55619b --- /dev/null +++ b/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/as @@ -0,0 +1 @@ +#!/bin/true diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/ld b/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/ld new file mode 120000 index 0000000000..6cd03701cd --- /dev/null +++ b/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/ld @@ -0,0 +1 @@ +ld.gold \ No newline at end of file diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/ld.bfd b/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/ld.bfd new file mode 100755 index 0000000000..b23e55619b --- /dev/null +++ b/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/ld.bfd @@ -0,0 +1 @@ +#!/bin/true diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/ld.gold b/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/ld.gold new file mode 100755 index 0000000000..b23e55619b --- /dev/null +++ b/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/bin/ld.gold @@ -0,0 +1 @@ +#!/bin/true diff --git a/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/lib/.keep b/test/Driver/Inputs/basic_cross_linux_tree/usr/x86_64-unknown-linux-gnu/lib/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/Driver/Inputs/multilib_32bit_linux_tree/usr/bin/as b/test/Driver/Inputs/multilib_32bit_linux_tree/usr/bin/as new file mode 120000 index 0000000000..0065315cfd --- /dev/null +++ b/test/Driver/Inputs/multilib_32bit_linux_tree/usr/bin/as @@ -0,0 +1 @@ +i386-unknown-linux-gnu-as \ No newline at end of file diff --git a/test/Driver/Inputs/multilib_32bit_linux_tree/usr/bin/i386-unknown-linux-gnu-as b/test/Driver/Inputs/multilib_32bit_linux_tree/usr/bin/i386-unknown-linux-gnu-as new file mode 100755 index 0000000000..b23e55619b --- /dev/null +++ b/test/Driver/Inputs/multilib_32bit_linux_tree/usr/bin/i386-unknown-linux-gnu-as @@ -0,0 +1 @@ +#!/bin/true diff --git a/test/Driver/Inputs/multilib_32bit_linux_tree/usr/bin/i386-unknown-linux-gnu-ld b/test/Driver/Inputs/multilib_32bit_linux_tree/usr/bin/i386-unknown-linux-gnu-ld new file mode 100755 index 0000000000..b23e55619b --- /dev/null +++ b/test/Driver/Inputs/multilib_32bit_linux_tree/usr/bin/i386-unknown-linux-gnu-ld @@ -0,0 +1 @@ +#!/bin/true diff --git a/test/Driver/Inputs/multilib_32bit_linux_tree/usr/bin/ld b/test/Driver/Inputs/multilib_32bit_linux_tree/usr/bin/ld new file mode 120000 index 0000000000..9e5574285c --- /dev/null +++ b/test/Driver/Inputs/multilib_32bit_linux_tree/usr/bin/ld @@ -0,0 +1 @@ +i386-unknown-linux-gnu-ld \ No newline at end of file diff --git a/test/Driver/Inputs/multilib_32bit_linux_tree/usr/i386-unknown-linux/bin/as b/test/Driver/Inputs/multilib_32bit_linux_tree/usr/i386-unknown-linux/bin/as new file mode 120000 index 0000000000..2aa12fdef9 --- /dev/null +++ b/test/Driver/Inputs/multilib_32bit_linux_tree/usr/i386-unknown-linux/bin/as @@ -0,0 +1 @@ +../../bin/i386-unknown-linux-gnu-as \ No newline at end of file diff --git a/test/Driver/Inputs/multilib_32bit_linux_tree/usr/i386-unknown-linux/bin/ld b/test/Driver/Inputs/multilib_32bit_linux_tree/usr/i386-unknown-linux/bin/ld new file mode 120000 index 0000000000..5aeaff6196 --- /dev/null +++ b/test/Driver/Inputs/multilib_32bit_linux_tree/usr/i386-unknown-linux/bin/ld @@ -0,0 +1 @@ +../../bin/i386-unknown-linux-gnu-ld \ No newline at end of file diff --git a/test/Driver/Inputs/multilib_64bit_linux_tree/usr/bin/as b/test/Driver/Inputs/multilib_64bit_linux_tree/usr/bin/as new file mode 120000 index 0000000000..477cbc9635 --- /dev/null +++ b/test/Driver/Inputs/multilib_64bit_linux_tree/usr/bin/as @@ -0,0 +1 @@ +x86_64-unknown-linux-gnu-as \ No newline at end of file diff --git a/test/Driver/Inputs/multilib_64bit_linux_tree/usr/bin/ld b/test/Driver/Inputs/multilib_64bit_linux_tree/usr/bin/ld new file mode 120000 index 0000000000..5343caf34d --- /dev/null +++ b/test/Driver/Inputs/multilib_64bit_linux_tree/usr/bin/ld @@ -0,0 +1 @@ +x86_64-unknown-linux-gnu-ld \ No newline at end of file diff --git a/test/Driver/Inputs/multilib_64bit_linux_tree/usr/bin/x86_64-unknown-linux-gnu-as b/test/Driver/Inputs/multilib_64bit_linux_tree/usr/bin/x86_64-unknown-linux-gnu-as new file mode 100755 index 0000000000..b23e55619b --- /dev/null +++ b/test/Driver/Inputs/multilib_64bit_linux_tree/usr/bin/x86_64-unknown-linux-gnu-as @@ -0,0 +1 @@ +#!/bin/true diff --git a/test/Driver/Inputs/multilib_64bit_linux_tree/usr/bin/x86_64-unknown-linux-gnu-ld b/test/Driver/Inputs/multilib_64bit_linux_tree/usr/bin/x86_64-unknown-linux-gnu-ld new file mode 100755 index 0000000000..b23e55619b --- /dev/null +++ b/test/Driver/Inputs/multilib_64bit_linux_tree/usr/bin/x86_64-unknown-linux-gnu-ld @@ -0,0 +1 @@ +#!/bin/true diff --git a/test/Driver/Inputs/multilib_64bit_linux_tree/usr/x86_64-unknown-linux/bin/as b/test/Driver/Inputs/multilib_64bit_linux_tree/usr/x86_64-unknown-linux/bin/as new file mode 120000 index 0000000000..84a9113f26 --- /dev/null +++ b/test/Driver/Inputs/multilib_64bit_linux_tree/usr/x86_64-unknown-linux/bin/as @@ -0,0 +1 @@ +../../bin/x86_64-unknown-linux-gnu-as \ No newline at end of file diff --git a/test/Driver/Inputs/multilib_64bit_linux_tree/usr/x86_64-unknown-linux/bin/ld b/test/Driver/Inputs/multilib_64bit_linux_tree/usr/x86_64-unknown-linux/bin/ld new file mode 120000 index 0000000000..c417e3afaa --- /dev/null +++ b/test/Driver/Inputs/multilib_64bit_linux_tree/usr/x86_64-unknown-linux/bin/ld @@ -0,0 +1 @@ +../../bin/x86_64-unknown-linux-gnu-ld \ No newline at end of file diff --git a/test/Driver/cross-linux-tools.c b/test/Driver/cross-linux-tools.c new file mode 100644 index 0000000000..1c7aa3d744 --- /dev/null +++ b/test/Driver/cross-linux-tools.c @@ -0,0 +1,41 @@ +// RUN: %clang -### -o %t %s 2>&1 -no-integrated-as \ +// RUN: --gcc-toolchain=%S/Inputs/basic_cross_linux_tree/usr \ +// RUN: --target=i386-unknown-linux-gnu \ +// RUN: | FileCheck --check-prefix=CHECK-I386 %s +// CHECK-I386: "-cc1" "-triple" "i386-unknown-linux-gnu" +// CHECK-I386: "{{.*}}/Inputs/basic_cross_linux_tree/usr/lib/gcc/i386-unknown-linux-gnu/4.6.0/../../../../i386-unknown-linux-gnu/bin/as" +// CHECK-I386: "{{.*}}/Inputs/basic_cross_linux_tree/usr/lib/gcc/i386-unknown-linux-gnu/4.6.0/../../../../i386-unknown-linux-gnu/bin/ld" +// +// RUN: %clang -### -o %t %s 2>&1 -no-integrated-as \ +// RUN: --gcc-toolchain=%S/Inputs/basic_cross_linux_tree/usr \ +// RUN: --target=x86_64-unknown-linux-gnu \ +// RUN: | FileCheck --check-prefix=CHECK-X86-64 %s +// CHECK-X86-64: "-cc1" "-triple" "x86_64-unknown-linux-gnu" +// CHECK-X86-64: "{{.*}}/Inputs/basic_cross_linux_tree/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/../../../../x86_64-unknown-linux-gnu/bin/as" +// CHECK-X86-64: "{{.*}}/Inputs/basic_cross_linux_tree/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/../../../../x86_64-unknown-linux-gnu/bin/ld" +// +// RUN: %clang -### -o %t %s 2>&1 -no-integrated-as \ +// RUN: --gcc-toolchain=%S/Inputs/basic_cross_linux_tree/usr \ +// RUN: --target=x86_64-unknown-linux-gnu -m32 \ +// RUN: | FileCheck --check-prefix=CHECK-I386 %s +// +// RUN: %clang -### -o %t %s 2>&1 -no-integrated-as \ +// RUN: --gcc-toolchain=%S/Inputs/basic_cross_linux_tree/usr \ +// RUN: --target=i386-unknown-linux-gnu -m64 \ +// RUN: | FileCheck --check-prefix=CHECK-X86-64 %s +// +// RUN: %clang -### -o %t %s 2>&1 -no-integrated-as \ +// RUN: --gcc-toolchain=%S/Inputs/multilib_32bit_linux_tree/usr \ +// RUN: --target=i386-unknown-linux \ +// RUN: | FileCheck --check-prefix=CHECK-MULTI32-I386 %s +// CHECK-MULTI32-I386: "-cc1" "-triple" "i386-unknown-linux" +// CHECK-MULTI32-I386: "{{.*}}/Inputs/multilib_32bit_linux_tree/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/bin/as" +// CHECK-MULTI32-I386: "{{.*}}/Inputs/multilib_32bit_linux_tree/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/bin/ld" +// +// RUN: %clang -### -o %t %s 2>&1 -no-integrated-as \ +// RUN: --gcc-toolchain=%S/Inputs/multilib_64bit_linux_tree/usr \ +// RUN: --target=x86_64-unknown-linux \ +// RUN: | FileCheck --check-prefix=CHECK-MULTI64-X86-64 %s +// CHECK-MULTI64-X86-64: "-cc1" "-triple" "x86_64-unknown-linux" +// CHECK-MULTI64-X86-64: "{{.*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/bin/as" +// CHECK-MULTI64-X86-64: "{{.*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/bin/ld" -- 2.40.0