diff options
author | Oleksandr Ocheretnyi <oocheret@cisco.com> | 2020-04-15 00:12:14 +0300 |
---|---|---|
committer | Khem Raj <raj.khem@gmail.com> | 2020-07-02 08:59:26 -0700 |
commit | 3054a52c8aeed7730324bae8e594b1430c0e605e (patch) | |
tree | ee2c5202b4486e907fe37eb88c12cc5a2e3ff625 /recipes-devtools/clang | |
parent | 14a52c3633e8f32fdf8bb5a259a41f5cfb8cc535 (diff) | |
download | meta-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>
Diffstat (limited to 'recipes-devtools/clang')
-rw-r--r-- | recipes-devtools/clang/clang/0025-clang-driver-Add-dyld-prefix-when-checking-sysroot-f.patch | 69 | ||||
-rw-r--r-- | recipes-devtools/clang/common.inc | 1 |
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 @@ | |||
1 | From fcafd24f9062eeecc9c87ac2fe9bce9accbe7534 Mon Sep 17 00:00:00 2001 | ||
2 | From: Oleksandr Ocheretnyi <oocheret@cisco.com> | ||
3 | Date: Wed, 15 Apr 2020 00:08:39 +0300 | ||
4 | Subject: [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 | |||
14 | Signed-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 | |||
19 | diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp | ||
20 | index 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 | -- | ||
68 | 2.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 |