summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOleksandr Ocheretnyi <oocheret@cisco.com>2020-04-15 00:12:14 +0300
committerKhem Raj <raj.khem@gmail.com>2020-07-02 08:59:26 -0700
commit3054a52c8aeed7730324bae8e594b1430c0e605e (patch)
treeee2c5202b4486e907fe37eb88c12cc5a2e3ff625
parent14a52c3633e8f32fdf8bb5a259a41f5cfb8cc535 (diff)
downloadmeta-clang-3054a52c8aeed7730324bae8e594b1430c0e605e.tar.gz
clang: honor --dyld-prefix when searching for dynamic linker
* Commit 1ce5b0090e18 ("clang: Search for dynamic linker.") does not honor --dyld-prefix option, so it fails to find the linker when --dyld- prefix is used for usrmerge. Add DyldPrefix when searching for dynamic linker. Fixes: 1ce5b0090e18 ("clang: Search for dynamic linker.") Signed-off-by: Oleksandr Ocheretnyi <oocheret@cisco.com>
-rw-r--r--recipes-devtools/clang/clang/0025-clang-driver-Add-dyld-prefix-when-checking-sysroot-f.patch69
-rw-r--r--recipes-devtools/clang/common.inc1
2 files changed, 70 insertions, 0 deletions
diff --git a/recipes-devtools/clang/clang/0025-clang-driver-Add-dyld-prefix-when-checking-sysroot-f.patch b/recipes-devtools/clang/clang/0025-clang-driver-Add-dyld-prefix-when-checking-sysroot-f.patch
new file mode 100644
index 0000000..43161c7
--- /dev/null
+++ b/recipes-devtools/clang/clang/0025-clang-driver-Add-dyld-prefix-when-checking-sysroot-f.patch
@@ -0,0 +1,69 @@
1From fcafd24f9062eeecc9c87ac2fe9bce9accbe7534 Mon Sep 17 00:00:00 2001
2From: Oleksandr Ocheretnyi <oocheret@cisco.com>
3Date: Wed, 15 Apr 2020 00:08:39 +0300
4Subject: [PATCH] clang: driver: Add dyld-prefix when checking sysroot for ldso
5 path
6
7 * the dyld-prefix shall be taken into account when the default
8 path for the dynamic linker has to be checked.
9
10 * this patch shall be used as annex to the next patch:
11 'clang: driver: Check sysroot for ldso path' which includes
12 the usrmerge scenario.
13
14Signed-off-by: Oleksandr Ocheretnyi <oocheret@cisco.com>
15---
16 clang/lib/Driver/ToolChains/Linux.cpp | 16 ++++++++--------
17 1 file changed, 8 insertions(+), 8 deletions(-)
18
19diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
20index fb579e7ad60..4ed5938cc59 100644
21--- a/clang/lib/Driver/ToolChains/Linux.cpp
22+++ b/clang/lib/Driver/ToolChains/Linux.cpp
23@@ -604,8 +604,8 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
24 LibDir = "lib64";
25 Loader =
26 (tools::ppc::hasPPCAbiArg(Args, "elfv2")) ? "ld64.so.2" : "ld64.so.1";
27- if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
28- getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
29+ if (!getVFS().exists(getDriver().SysRoot + getDriver().DyldPrefix + "/" + LibDir + "/" + Loader) &&
30+ getVFS().exists(getDriver().SysRoot + getDriver().DyldPrefix + "/lib/" + Loader)) {
31 LibDir = "lib";
32 }
33 break;
34@@ -613,8 +613,8 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
35 LibDir = "lib64";
36 Loader =
37 (tools::ppc::hasPPCAbiArg(Args, "elfv1")) ? "ld64.so.1" : "ld64.so.2";
38- if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
39- getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
40+ if (!getVFS().exists(getDriver().SysRoot + getDriver().DyldPrefix + "/" + LibDir + "/" + Loader) &&
41+ getVFS().exists(getDriver().SysRoot + getDriver().DyldPrefix + "/lib/" + Loader)) {
42 LibDir = "lib";
43 }
44 break;
45@@ -638,8 +638,8 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
46 case llvm::Triple::sparcv9:
47 LibDir = "lib64";
48 Loader = "ld-linux.so.2";
49- if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
50- getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
51+ if (!getVFS().exists(getDriver().SysRoot + getDriver().DyldPrefix + "/" + LibDir + "/" + Loader) &&
52+ getVFS().exists(getDriver().SysRoot + getDriver().DyldPrefix + "/lib/" + Loader)) {
53 LibDir = "lib";
54 }
55 break;
56@@ -656,8 +656,8 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
57
58 LibDir = X32 ? "libx32" : "lib64";
59 Loader = X32 ? "ld-linux-x32.so.2" : "ld-linux-x86-64.so.2";
60- if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
61- getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
62+ if (!getVFS().exists(getDriver().SysRoot + getDriver().DyldPrefix + "/" + LibDir + "/" + Loader) &&
63+ getVFS().exists(getDriver().SysRoot + getDriver().DyldPrefix + "/lib/" + Loader)) {
64 LibDir = "lib";
65 }
66 break;
67--
682.17.1
69
diff --git a/recipes-devtools/clang/common.inc b/recipes-devtools/clang/common.inc
index 2e82343..6b805a6 100644
--- a/recipes-devtools/clang/common.inc
+++ b/recipes-devtools/clang/common.inc
@@ -32,6 +32,7 @@ SRC_URI = "\
32 file://0022-clang-llvm-cmake-Fix-configure-for-packages-using-fi.patch \ 32 file://0022-clang-llvm-cmake-Fix-configure-for-packages-using-fi.patch \
33 file://0023-clang-Fix-resource-dir-location-for-cross-toolchains.patch \ 33 file://0023-clang-Fix-resource-dir-location-for-cross-toolchains.patch \
34 file://0024-fix-path-to-libffi.patch \ 34 file://0024-fix-path-to-libffi.patch \
35 file://0025-clang-driver-Add-dyld-prefix-when-checking-sysroot-f.patch \
35" 36"
36 37
37# Fallback to no-PIE if not set 38# Fallback to no-PIE if not set