summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Jansa <martin.jansa@gmail.com>2023-09-05 23:14:06 +0200
committerKhem Raj <raj.khem@gmail.com>2023-09-07 10:38:23 -0700
commitf9795290af3deaa12e5559d308ffac736f51e607 (patch)
treeced3d6059c21b14bb2931b1b1e4ed5781f932088
parent0128318a86833f9e30f3ca81886a7ca4bfb0baa6 (diff)
downloadmeta-clang-f9795290af3deaa12e5559d308ffac736f51e607.tar.gz
clang: try /usr/lib32/ld-linux.so.3 loader in sysroot first
* when building libclc the qemuwrapper correctly sets LD_LIBRARY_PATH to /usr/lib32 but the interpreter used by prepare_builtins has /usr/lib/ld-linux.so.3 interpreter: lib32-libclc/16.0.6 $ file build/prepare_builtins build/prepare_builtins: ELF 32-bit LSB pie executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /usr/lib/ld-linux.so.3, for GNU/Linux 5.4.0, with debug_info, not stripped causing qemu to fail with: cd lib32-libclc/16.0.6/build && lib32-libclc/16.0.6/qemuwrapper lib32-libclc/16.0.6/build/prepare_builtins -o clspv--.bc builtins.opt.clspv--.bc qemu-arm: Could not open '/usr/lib/ld-linux.so.3': No such file or directory Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
-rw-r--r--recipes-devtools/clang/clang/0006-clang-driver-Check-sysroot-for-ldso-path.patch27
-rw-r--r--recipes-devtools/clang/clang/0017-clang-driver-Add-dyld-prefix-when-checking-sysroot-f.patch27
2 files changed, 39 insertions, 15 deletions
diff --git a/recipes-devtools/clang/clang/0006-clang-driver-Check-sysroot-for-ldso-path.patch b/recipes-devtools/clang/clang/0006-clang-driver-Check-sysroot-for-ldso-path.patch
index f280da2..6f61a3c 100644
--- a/recipes-devtools/clang/clang/0006-clang-driver-Check-sysroot-for-ldso-path.patch
+++ b/recipes-devtools/clang/clang/0006-clang-driver-Check-sysroot-for-ldso-path.patch
@@ -1,4 +1,4 @@
1From 710a936d66011859cb3995f42a5b9e962db01f0e Mon Sep 17 00:00:00 2001 1From 4e8e066b60a00eb10c70ef9523c55cfc7ab536f8 Mon Sep 17 00:00:00 2001
2From: Dan McGregor <dan.mcgregor@usask.ca> 2From: Dan McGregor <dan.mcgregor@usask.ca>
3Date: Wed, 26 Apr 2017 20:29:41 -0600 3Date: Wed, 26 Apr 2017 20:29:41 -0600
4Subject: [PATCH] clang: driver: Check sysroot for ldso path 4Subject: [PATCH] clang: driver: Check sysroot for ldso path
@@ -11,14 +11,27 @@ Upstream-Status: Pending
11Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca> 11Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca>
12Signed-off-by: Khem Raj <raj.khem@gmail.com> 12Signed-off-by: Khem Raj <raj.khem@gmail.com>
13--- 13---
14 clang/lib/Driver/ToolChains/Linux.cpp | 16 ++++++++++++++++ 14 clang/lib/Driver/ToolChains/Linux.cpp | 22 +++++++++++++++++++++-
15 1 file changed, 16 insertions(+) 15 1 file changed, 21 insertions(+), 1 deletion(-)
16 16
17diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp 17diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
18index c6fb290ffdb4..2a58f876a68d 100644 18index c6fb290ffdb4..897a2da73d54 100644
19--- a/clang/lib/Driver/ToolChains/Linux.cpp 19--- a/clang/lib/Driver/ToolChains/Linux.cpp
20+++ b/clang/lib/Driver/ToolChains/Linux.cpp 20+++ b/clang/lib/Driver/ToolChains/Linux.cpp
21@@ -518,11 +518,19 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const { 21@@ -463,7 +463,11 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
22 Triple.getEnvironment() == llvm::Triple::GNUEABIHF ||
23 tools::arm::getARMFloatABI(*this, Args) == tools::arm::FloatABI::Hard;
24
25- LibDir = "lib";
26+ LibDir = "lib32";
27+ if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
28+ getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
29+ LibDir = "lib";
30+ }
31 Loader = HF ? "ld-linux-armhf.so.3" : "ld-linux.so.3";
32 break;
33 }
34@@ -518,11 +522,19 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
22 LibDir = "lib64"; 35 LibDir = "lib64";
23 Loader = 36 Loader =
24 (tools::ppc::hasPPCAbiArg(Args, "elfv2")) ? "ld64.so.2" : "ld64.so.1"; 37 (tools::ppc::hasPPCAbiArg(Args, "elfv2")) ? "ld64.so.2" : "ld64.so.1";
@@ -38,7 +51,7 @@ index c6fb290ffdb4..2a58f876a68d 100644
38 break; 51 break;
39 case llvm::Triple::riscv32: { 52 case llvm::Triple::riscv32: {
40 StringRef ABIName = tools::riscv::getRISCVABI(Args, Triple); 53 StringRef ABIName = tools::riscv::getRISCVABI(Args, Triple);
41@@ -544,6 +552,10 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const { 54@@ -544,6 +556,10 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
42 case llvm::Triple::sparcv9: 55 case llvm::Triple::sparcv9:
43 LibDir = "lib64"; 56 LibDir = "lib64";
44 Loader = "ld-linux.so.2"; 57 Loader = "ld-linux.so.2";
@@ -49,7 +62,7 @@ index c6fb290ffdb4..2a58f876a68d 100644
49 break; 62 break;
50 case llvm::Triple::systemz: 63 case llvm::Triple::systemz:
51 LibDir = "lib"; 64 LibDir = "lib";
52@@ -558,6 +570,10 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const { 65@@ -558,6 +574,10 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
53 66
54 LibDir = X32 ? "libx32" : "lib64"; 67 LibDir = X32 ? "libx32" : "lib64";
55 Loader = X32 ? "ld-linux-x32.so.2" : "ld-linux-x86-64.so.2"; 68 Loader = X32 ? "ld-linux-x32.so.2" : "ld-linux-x86-64.so.2";
diff --git a/recipes-devtools/clang/clang/0017-clang-driver-Add-dyld-prefix-when-checking-sysroot-f.patch b/recipes-devtools/clang/clang/0017-clang-driver-Add-dyld-prefix-when-checking-sysroot-f.patch
index 01182b7..ac311a0 100644
--- a/recipes-devtools/clang/clang/0017-clang-driver-Add-dyld-prefix-when-checking-sysroot-f.patch
+++ b/recipes-devtools/clang/clang/0017-clang-driver-Add-dyld-prefix-when-checking-sysroot-f.patch
@@ -1,4 +1,4 @@
1From a1fdade00611749a75b958e1010db68d4cefff95 Mon Sep 17 00:00:00 2001 1From a85573b9e7e939b0ab1738dd3b3cc999b7de1547 Mon Sep 17 00:00:00 2001
2From: Oleksandr Ocheretnyi <oocheret@cisco.com> 2From: Oleksandr Ocheretnyi <oocheret@cisco.com>
3Date: Wed, 15 Apr 2020 00:08:39 +0300 3Date: Wed, 15 Apr 2020 00:08:39 +0300
4Subject: [PATCH] clang: driver: Add dyld-prefix when checking sysroot for ldso 4Subject: [PATCH] clang: driver: Add dyld-prefix when checking sysroot for ldso
@@ -15,14 +15,25 @@ Upstream-Status: Pending
15Signed-off-by: Oleksandr Ocheretnyi <oocheret@cisco.com> 15Signed-off-by: Oleksandr Ocheretnyi <oocheret@cisco.com>
16Signed-off-by: Khem Raj <raj.khem@gmail.com> 16Signed-off-by: Khem Raj <raj.khem@gmail.com>
17--- 17---
18 clang/lib/Driver/ToolChains/Linux.cpp | 16 ++++++++-------- 18 clang/lib/Driver/ToolChains/Linux.cpp | 20 ++++++++++----------
19 1 file changed, 8 insertions(+), 8 deletions(-) 19 1 file changed, 10 insertions(+), 10 deletions(-)
20 20
21diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp 21diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
22index c68a842b45e0..ca9f5f2e4f74 100644 22index de0d5950d2ee..c6acfc8924c9 100644
23--- a/clang/lib/Driver/ToolChains/Linux.cpp 23--- a/clang/lib/Driver/ToolChains/Linux.cpp
24+++ b/clang/lib/Driver/ToolChains/Linux.cpp 24+++ b/clang/lib/Driver/ToolChains/Linux.cpp
25@@ -518,8 +518,8 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const { 25@@ -464,8 +464,8 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
26 tools::arm::getARMFloatABI(*this, Args) == tools::arm::FloatABI::Hard;
27
28 LibDir = "lib32";
29- if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
30- getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
31+ if (!getVFS().exists(getDriver().SysRoot + getDriver().DyldPrefix + "/" + LibDir + "/" + Loader) &&
32+ getVFS().exists(getDriver().SysRoot + getDriver().DyldPrefix + "/lib/" + Loader)) {
33 LibDir = "lib";
34 }
35 Loader = HF ? "ld-linux-armhf.so.3" : "ld-linux.so.3";
36@@ -522,8 +522,8 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
26 LibDir = "lib64"; 37 LibDir = "lib64";
27 Loader = 38 Loader =
28 (tools::ppc::hasPPCAbiArg(Args, "elfv2")) ? "ld64.so.2" : "ld64.so.1"; 39 (tools::ppc::hasPPCAbiArg(Args, "elfv2")) ? "ld64.so.2" : "ld64.so.1";
@@ -33,7 +44,7 @@ index c68a842b45e0..ca9f5f2e4f74 100644
33 LibDir = "lib"; 44 LibDir = "lib";
34 } 45 }
35 break; 46 break;
36@@ -527,8 +527,8 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const { 47@@ -531,8 +531,8 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
37 LibDir = "lib64"; 48 LibDir = "lib64";
38 Loader = 49 Loader =
39 (tools::ppc::hasPPCAbiArg(Args, "elfv1")) ? "ld64.so.1" : "ld64.so.2"; 50 (tools::ppc::hasPPCAbiArg(Args, "elfv1")) ? "ld64.so.1" : "ld64.so.2";
@@ -44,7 +55,7 @@ index c68a842b45e0..ca9f5f2e4f74 100644
44 LibDir = "lib"; 55 LibDir = "lib";
45 } 56 }
46 break; 57 break;
47@@ -552,8 +552,8 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const { 58@@ -556,8 +556,8 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
48 case llvm::Triple::sparcv9: 59 case llvm::Triple::sparcv9:
49 LibDir = "lib64"; 60 LibDir = "lib64";
50 Loader = "ld-linux.so.2"; 61 Loader = "ld-linux.so.2";
@@ -55,7 +66,7 @@ index c68a842b45e0..ca9f5f2e4f74 100644
55 LibDir = "lib"; 66 LibDir = "lib";
56 } 67 }
57 break; 68 break;
58@@ -570,8 +570,8 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const { 69@@ -574,8 +574,8 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
59 70
60 LibDir = X32 ? "libx32" : "lib64"; 71 LibDir = X32 ? "libx32" : "lib64";
61 Loader = X32 ? "ld-linux-x32.so.2" : "ld-linux-x86-64.so.2"; 72 Loader = X32 ? "ld-linux-x32.so.2" : "ld-linux-x86-64.so.2";