aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Driver/ToolChains.cpp11
-rw-r--r--test/Driver/Inputs/basic_linux_tree/lib/.keep0
-rw-r--r--test/Driver/Inputs/basic_linux_tree/usr/lib/.keep0
-rw-r--r--test/Driver/linux-ld.c17
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"