diff options
author | Daniel McGregor <daniel.mcgregor@vecima.com> | 2019-01-07 18:31:56 -0600 |
---|---|---|
committer | Khem Raj <raj.khem@gmail.com> | 2020-01-20 08:56:16 -0800 |
commit | 1ce5b0090e18f1cf717e90b403ee875b7e16060e (patch) | |
tree | a70a188cb4bdeaacf0a2352359d2352409519dc7 /recipes-devtools/clang | |
parent | b4c7c28993fbf5b10d6ad99fd0ed117d144534cf (diff) | |
download | meta-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')
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 @@ | |||
1 | From dad564a1081f62fe1957175e2b060ca1778ff72b Mon Sep 17 00:00:00 2001 | ||
2 | From: Dan McGregor <dan.mcgregor@usask.ca> | ||
3 | Date: Wed, 26 Apr 2017 20:29:41 -0600 | ||
4 | Subject: [PATCH] clang: driver: Check sysroot for ldso path | ||
5 | |||
6 | OE does not necessarily follow the default path for the dynamic linker, | ||
7 | therefore adjust it for OE. Check for the default path, and if it isn't | ||
8 | there, check /lib. | ||
9 | |||
10 | Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca> | ||
11 | --- | ||
12 | clang/lib/Driver/ToolChains/Linux.cpp | 16 ++++++++++++++++ | ||
13 | 1 file changed, 16 insertions(+) | ||
14 | |||
15 | diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp | ||
16 | index 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 @@ | |||
1 | From c4954f2b9126edccbffa76d860aebf858c80bc4d Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Sat, 21 May 2016 21:52:36 -0700 | ||
4 | Subject: [PATCH] clang: driver: Use /lib for ldso on OE | ||
5 | |||
6 | OE does not follow the default base_libdir | ||
7 | that clang has, therefore adjust it for OE | ||
8 | it wont be able to support multilib since | ||
9 | in multilib case OE switches the base libdir | ||
10 | for 64bit to /lib64 instead of /lib | ||
11 | |||
12 | Make sure that the change only happens for cross | ||
13 | compilation on x86_64 architecture | ||
14 | |||
15 | Signed-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 | |||
20 | diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp | ||
21 | index 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 \ |