diff options
| author | Martin Jansa <martin.jansa@gmail.com> | 2023-09-05 23:14:06 +0200 |
|---|---|---|
| committer | Khem Raj <raj.khem@gmail.com> | 2023-09-07 10:38:23 -0700 |
| commit | f9795290af3deaa12e5559d308ffac736f51e607 (patch) | |
| tree | ced3d6059c21b14bb2931b1b1e4ed5781f932088 /recipes-devtools | |
| parent | 0128318a86833f9e30f3ca81886a7ca4bfb0baa6 (diff) | |
| download | meta-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>
Diffstat (limited to 'recipes-devtools')
| -rw-r--r-- | recipes-devtools/clang/clang/0006-clang-driver-Check-sysroot-for-ldso-path.patch | 27 | ||||
| -rw-r--r-- | recipes-devtools/clang/clang/0017-clang-driver-Add-dyld-prefix-when-checking-sysroot-f.patch | 27 |
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 @@ | |||
| 1 | From 710a936d66011859cb3995f42a5b9e962db01f0e Mon Sep 17 00:00:00 2001 | 1 | From 4e8e066b60a00eb10c70ef9523c55cfc7ab536f8 Mon Sep 17 00:00:00 2001 |
| 2 | From: Dan McGregor <dan.mcgregor@usask.ca> | 2 | From: Dan McGregor <dan.mcgregor@usask.ca> |
| 3 | Date: Wed, 26 Apr 2017 20:29:41 -0600 | 3 | Date: Wed, 26 Apr 2017 20:29:41 -0600 |
| 4 | Subject: [PATCH] clang: driver: Check sysroot for ldso path | 4 | Subject: [PATCH] clang: driver: Check sysroot for ldso path |
| @@ -11,14 +11,27 @@ Upstream-Status: Pending | |||
| 11 | Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca> | 11 | Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca> |
| 12 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | 12 | Signed-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 | ||
| 17 | diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp | 17 | diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp |
| 18 | index c6fb290ffdb4..2a58f876a68d 100644 | 18 | index 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 @@ | |||
| 1 | From a1fdade00611749a75b958e1010db68d4cefff95 Mon Sep 17 00:00:00 2001 | 1 | From a85573b9e7e939b0ab1738dd3b3cc999b7de1547 Mon Sep 17 00:00:00 2001 |
| 2 | From: Oleksandr Ocheretnyi <oocheret@cisco.com> | 2 | From: Oleksandr Ocheretnyi <oocheret@cisco.com> |
| 3 | Date: Wed, 15 Apr 2020 00:08:39 +0300 | 3 | Date: Wed, 15 Apr 2020 00:08:39 +0300 |
| 4 | Subject: [PATCH] clang: driver: Add dyld-prefix when checking sysroot for ldso | 4 | Subject: [PATCH] clang: driver: Add dyld-prefix when checking sysroot for ldso |
| @@ -15,14 +15,25 @@ Upstream-Status: Pending | |||
| 15 | Signed-off-by: Oleksandr Ocheretnyi <oocheret@cisco.com> | 15 | Signed-off-by: Oleksandr Ocheretnyi <oocheret@cisco.com> |
| 16 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | 16 | Signed-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 | ||
| 21 | diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp | 21 | diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp |
| 22 | index c68a842b45e0..ca9f5f2e4f74 100644 | 22 | index 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"; |
