summaryrefslogtreecommitdiffstats
path: root/recipes-devtools/clang/clang/0008-clang-driver-Check-sysroot-for-ldso-path.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-devtools/clang/clang/0008-clang-driver-Check-sysroot-for-ldso-path.patch')
-rw-r--r--recipes-devtools/clang/clang/0008-clang-driver-Check-sysroot-for-ldso-path.patch61
1 files changed, 61 insertions, 0 deletions
diff --git a/recipes-devtools/clang/clang/0008-clang-driver-Check-sysroot-for-ldso-path.patch b/recipes-devtools/clang/clang/0008-clang-driver-Check-sysroot-for-ldso-path.patch
new file mode 100644
index 0000000..b630aa6
--- /dev/null
+++ b/recipes-devtools/clang/clang/0008-clang-driver-Check-sysroot-for-ldso-path.patch
@@ -0,0 +1,61 @@
1From d3ab7b54689301d94d3fa8eacfe56c1395cf2c23 Mon Sep 17 00:00:00 2001
2From: Dan McGregor <dan.mcgregor@usask.ca>
3Date: Wed, 26 Apr 2017 20:29:41 -0600
4Subject: [PATCH] clang: driver: Check sysroot for ldso path
5
6OE does not necessarily follow the default path for the dynamic linker,
7therefore adjust it for OE. Check for the default path, and if it isn't
8there, check /lib.
9
10Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca>
11Signed-off-by: Khem Raj <raj.khem@gmail.com>
12---
13 clang/lib/Driver/ToolChains/Linux.cpp | 16 ++++++++++++++++
14 1 file changed, 16 insertions(+)
15
16diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
17index bff1ab1009b..02e3d676567 100644
18--- a/clang/lib/Driver/ToolChains/Linux.cpp
19+++ b/clang/lib/Driver/ToolChains/Linux.cpp
20@@ -596,11 +596,19 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
21 LibDir = "lib64";
22 Loader =
23 (tools::ppc::hasPPCAbiArg(Args, "elfv2")) ? "ld64.so.2" : "ld64.so.1";
24+ if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
25+ getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
26+ LibDir = "lib";
27+ }
28 break;
29 case llvm::Triple::ppc64le:
30 LibDir = "lib64";
31 Loader =
32 (tools::ppc::hasPPCAbiArg(Args, "elfv1")) ? "ld64.so.1" : "ld64.so.2";
33+ if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
34+ getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
35+ LibDir = "lib";
36+ }
37 break;
38 case llvm::Triple::riscv32: {
39 StringRef ABIName = tools::riscv::getRISCVABI(Args, Triple);
40@@ -622,6 +630,10 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
41 case llvm::Triple::sparcv9:
42 LibDir = "lib64";
43 Loader = "ld-linux.so.2";
44+ if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
45+ getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
46+ LibDir = "lib";
47+ }
48 break;
49 case llvm::Triple::systemz:
50 LibDir = "lib";
51@@ -636,6 +648,10 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
52
53 LibDir = X32 ? "libx32" : "lib64";
54 Loader = X32 ? "ld-linux-x32.so.2" : "ld-linux-x86-64.so.2";
55+ if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
56+ getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
57+ LibDir = "lib";
58+ }
59 break;
60 }
61 }