summaryrefslogtreecommitdiffstats
path: root/recipes-devtools/clang
diff options
context:
space:
mode:
authorDaniel McGregor <daniel.mcgregor@vecima.com>2019-01-07 18:31:56 -0600
committerKhem Raj <raj.khem@gmail.com>2020-01-20 08:56:16 -0800
commit1ce5b0090e18f1cf717e90b403ee875b7e16060e (patch)
treea70a188cb4bdeaacf0a2352359d2352409519dc7 /recipes-devtools/clang
parentb4c7c28993fbf5b10d6ad99fd0ed117d144534cf (diff)
downloadmeta-clang-1ce5b0090e18f1cf717e90b403ee875b7e16060e.tar.gz
clang: Search for dynamic linker.
Use the sysroot for a hint as to where to find the dynamic linker. This allows multilib distros to use the appropriate runtime linker path. Signed-off-by: Daniel McGregor <daniel.mcgregor@vecima.com>
Diffstat (limited to 'recipes-devtools/clang')
-rw-r--r--recipes-devtools/clang/clang/0010-clang-driver-Check-sysroot-for-ldso-path.patch60
-rw-r--r--recipes-devtools/clang/clang/0010-clang-driver-Use-lib-for-ldso-on-OE.patch60
-rw-r--r--recipes-devtools/clang/common.inc2
3 files changed, 61 insertions, 61 deletions
diff --git a/recipes-devtools/clang/clang/0010-clang-driver-Check-sysroot-for-ldso-path.patch b/recipes-devtools/clang/clang/0010-clang-driver-Check-sysroot-for-ldso-path.patch
new file mode 100644
index 0000000..bbbc020
--- /dev/null
+++ b/recipes-devtools/clang/clang/0010-clang-driver-Check-sysroot-for-ldso-path.patch
@@ -0,0 +1,60 @@
1From dad564a1081f62fe1957175e2b060ca1778ff72b 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>
11---
12 clang/lib/Driver/ToolChains/Linux.cpp | 16 ++++++++++++++++
13 1 file changed, 16 insertions(+)
14
15diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
16index ed907549929..6adf581a882 100644
17--- a/clang/lib/Driver/ToolChains/Linux.cpp
18+++ b/clang/lib/Driver/ToolChains/Linux.cpp
19@@ -596,11 +596,19 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
20 LibDir = "lib64";
21 Loader =
22 (tools::ppc::hasPPCAbiArg(Args, "elfv2")) ? "ld64.so.2" : "ld64.so.1";
23+ if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
24+ getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
25+ LibDir = "lib";
26+ }
27 break;
28 case llvm::Triple::ppc64le:
29 LibDir = "lib64";
30 Loader =
31 (tools::ppc::hasPPCAbiArg(Args, "elfv1")) ? "ld64.so.1" : "ld64.so.2";
32+ if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
33+ getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
34+ LibDir = "lib";
35+ }
36 break;
37 case llvm::Triple::riscv32: {
38 StringRef ABIName = tools::riscv::getRISCVABI(Args, Triple);
39@@ -622,6 +630,10 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
40 case llvm::Triple::sparcv9:
41 LibDir = "lib64";
42 Loader = "ld-linux.so.2";
43+ if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
44+ getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
45+ LibDir = "lib";
46+ }
47 break;
48 case llvm::Triple::systemz:
49 LibDir = "lib";
50@@ -636,6 +648,10 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
51
52 LibDir = X32 ? "libx32" : "lib64";
53 Loader = X32 ? "ld-linux-x32.so.2" : "ld-linux-x86-64.so.2";
54+ if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
55+ getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
56+ LibDir = "lib";
57+ }
58 break;
59 }
60 }
diff --git a/recipes-devtools/clang/clang/0010-clang-driver-Use-lib-for-ldso-on-OE.patch b/recipes-devtools/clang/clang/0010-clang-driver-Use-lib-for-ldso-on-OE.patch
deleted file mode 100644
index 80cf185..0000000
--- a/recipes-devtools/clang/clang/0010-clang-driver-Use-lib-for-ldso-on-OE.patch
+++ /dev/null
@@ -1,60 +0,0 @@
1From c4954f2b9126edccbffa76d860aebf858c80bc4d Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 21 May 2016 21:52:36 -0700
4Subject: [PATCH] clang: driver: Use /lib for ldso on OE
5
6OE does not follow the default base_libdir
7that clang has, therefore adjust it for OE
8it wont be able to support multilib since
9in multilib case OE switches the base libdir
10for 64bit to /lib64 instead of /lib
11
12Make sure that the change only happens for cross
13compilation on x86_64 architecture
14
15Signed-off-by: Khem Raj <raj.khem@gmail.com>
16---
17 clang/lib/Driver/ToolChains/Linux.cpp | 12 +++++++-----
18 1 file changed, 7 insertions(+), 5 deletions(-)
19
20diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
21index ed907549929..8cee2490cc7 100644
22--- a/clang/lib/Driver/ToolChains/Linux.cpp
23+++ b/clang/lib/Driver/ToolChains/Linux.cpp
24@@ -593,12 +593,12 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
25 Loader = "ld.so.1";
26 break;
27 case llvm::Triple::ppc64:
28- LibDir = "lib64";
29+ LibDir = "lib";
30 Loader =
31 (tools::ppc::hasPPCAbiArg(Args, "elfv2")) ? "ld64.so.2" : "ld64.so.1";
32 break;
33 case llvm::Triple::ppc64le:
34- LibDir = "lib64";
35+ LibDir = "lib";
36 Loader =
37 (tools::ppc::hasPPCAbiArg(Args, "elfv1")) ? "ld64.so.1" : "ld64.so.2";
38 break;
39@@ -620,7 +620,7 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
40 Loader = "ld-linux.so.2";
41 break;
42 case llvm::Triple::sparcv9:
43- LibDir = "lib64";
44+ LibDir = "lib";
45 Loader = "ld-linux.so.2";
46 break;
47 case llvm::Triple::systemz:
48@@ -633,8 +633,10 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
49 break;
50 case llvm::Triple::x86_64: {
51 bool X32 = Triple.getEnvironment() == llvm::Triple::GNUX32;
52-
53- LibDir = X32 ? "libx32" : "lib64";
54+ if (Triple.getEnvironment() == llvm::Triple::GNU)
55+ LibDir = X32 ? "libx32" : "lib64";
56+ else
57+ LibDir = "lib";
58 Loader = X32 ? "ld-linux-x32.so.2" : "ld-linux-x86-64.so.2";
59 break;
60 }
diff --git a/recipes-devtools/clang/common.inc b/recipes-devtools/clang/common.inc
index 6a976de..3333b34 100644
--- a/recipes-devtools/clang/common.inc
+++ b/recipes-devtools/clang/common.inc
@@ -17,7 +17,7 @@ SRC_URI = "\
17 file://0007-llvm-allow-env-override-of-exe-path.patch \ 17 file://0007-llvm-allow-env-override-of-exe-path.patch \
18 file://0008-llvm-Enhance-path-prefix-mapping.patch \ 18 file://0008-llvm-Enhance-path-prefix-mapping.patch \
19 file://0009-clang-Enable-SSP-and-PIE-by-default.patch \ 19 file://0009-clang-Enable-SSP-and-PIE-by-default.patch \
20 file://0010-clang-driver-Use-lib-for-ldso-on-OE.patch \ 20 file://0010-clang-driver-Check-sysroot-for-ldso-path.patch \
21 file://0011-clang-Driver-tools.cpp-Add-lssp_nonshared-on-musl.patch \ 21 file://0011-clang-Driver-tools.cpp-Add-lssp_nonshared-on-musl.patch \
22 file://0012-clang-musl-ppc-does-not-support-128-bit-long-double.patch \ 22 file://0012-clang-musl-ppc-does-not-support-128-bit-long-double.patch \
23 file://0013-clang-Prepend-trailing-to-sysroot.patch \ 23 file://0013-clang-Prepend-trailing-to-sysroot.patch \