diff options
-rw-r--r-- | lib/Driver/ToolChains.cpp | 11 | ||||
-rw-r--r-- | test/Driver/Inputs/basic_linux_tree/lib/.keep | 0 | ||||
-rw-r--r-- | test/Driver/Inputs/basic_linux_tree/usr/lib/.keep | 0 | ||||
-rw-r--r-- | test/Driver/linux-ld.c | 17 |
4 files changed, 18 insertions, 10 deletions
diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index 1b2ff2ecb7..dd35172402 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp @@ -1560,6 +1560,7 @@ Linux::Linux(const HostInfo &Host, const llvm::Triple &Triple) : Generic_ELF(Host, Triple) { llvm::Triple::ArchType Arch = llvm::Triple(getDriver().DefaultHostTriple).getArch(); + const std::string &SysRoot = getDriver().SysRoot; bool Exists; std::string GccTriple = ""; @@ -1703,8 +1704,8 @@ Linux::Linux(const HostInfo &Host, const llvm::Triple &Triple) Multilib, Paths); addPathIfExists(Base + "/../../../../" + Multilib, Paths); } - addPathIfExists("/lib/../" + Multilib, Paths); - addPathIfExists("/usr/lib/../" + Multilib, Paths); + addPathIfExists(SysRoot + "/lib/../" + Multilib, Paths); + addPathIfExists(SysRoot + "/usr/lib/../" + Multilib, Paths); } // Add the non-multiplib suffixed paths (if potentially different). @@ -1714,11 +1715,11 @@ Linux::Linux(const HostInfo &Host, const llvm::Triple &Triple) addPathIfExists(Base + "/../../../../" + GccTriple + "/lib", Paths); addPathIfExists(Base + "/../../..", Paths); } - addPathIfExists("/lib", Paths); - addPathIfExists("/usr/lib", Paths); + addPathIfExists(SysRoot + "/lib", Paths); + addPathIfExists(SysRoot + "/usr/lib", Paths); if (Arch == getArch() && IsUbuntu(Distro)) - Paths.push_back("/usr/lib/" + GccTriple); + Paths.push_back(SysRoot + "/usr/lib/" + GccTriple); } bool Linux::HasNativeLLVMSupport() const { diff --git a/test/Driver/Inputs/basic_linux_tree/lib/.keep b/test/Driver/Inputs/basic_linux_tree/lib/.keep new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/test/Driver/Inputs/basic_linux_tree/lib/.keep diff --git a/test/Driver/Inputs/basic_linux_tree/usr/lib/.keep b/test/Driver/Inputs/basic_linux_tree/usr/lib/.keep new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/test/Driver/Inputs/basic_linux_tree/usr/lib/.keep diff --git a/test/Driver/linux-ld.c b/test/Driver/linux-ld.c index 745b03c7a6..8896afc5e8 100644 --- a/test/Driver/linux-ld.c +++ b/test/Driver/linux-ld.c @@ -1,9 +1,16 @@ -// General tests that ld invocations on Linux targets sane. +// General tests that ld invocations on Linux targets sane. Note that we use +// sysroot to make these tests independent of the host system. // -// RUN: %clang -no-canonical-prefixes -ccc-host-triple i386-unknown-linux %s -### -o %t.o 2>&1 \ +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: -ccc-host-triple i386-unkown-linux \ +// RUN: --sysroot=%S/Inputs/basic_linux_tree \ // RUN: | FileCheck --check-prefix=CHECK-LD-32 %s -// CHECK-LD-32: "{{.*}}ld{{(.exe)?}}" {{.*}} "-L/lib" "-L/usr/lib" +// CHECK-LD-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" +// CHECK-LD-32: {{.*}} "-L[[SYSROOT]]/lib" "-L[[SYSROOT]]/usr/lib" // -// RUN: %clang -no-canonical-prefixes -ccc-host-triple x86_64-unknown-linux %s -### -o %t.o 2>&1 \ +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: -ccc-host-triple x86_64-unknown-linux \ +// RUN: --sysroot=%S/Inputs/basic_linux_tree \ // RUN: | FileCheck --check-prefix=CHECK-LD-64 %s -// CHECK-LD-64: "{{.*}}ld{{(.exe)?}}" {{.*}} "-L/lib" "-L/usr/lib" +// CHECK-LD-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" +// CHECK-LD-64: {{.*}} "-L[[SYSROOT]]/lib" "-L[[SYSROOT]]/usr/lib" |