summaryrefslogtreecommitdiffstats
path: root/external/meta-clang/recipes-devtools/clang/clang/0007-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch
diff options
context:
space:
mode:
Diffstat (limited to 'external/meta-clang/recipes-devtools/clang/clang/0007-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch')
-rw-r--r--external/meta-clang/recipes-devtools/clang/clang/0007-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch44
1 files changed, 44 insertions, 0 deletions
diff --git a/external/meta-clang/recipes-devtools/clang/clang/0007-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch b/external/meta-clang/recipes-devtools/clang/clang/0007-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch
new file mode 100644
index 00000000..b456a59d
--- /dev/null
+++ b/external/meta-clang/recipes-devtools/clang/clang/0007-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch
@@ -0,0 +1,44 @@
+From 5840f5a6756f8f67dbba1b47015e75c8c3264b2b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 16 Aug 2017 15:16:15 -0700
+Subject: [PATCH 7/8] clang: Fix ldso for musl on x86 and x32 architectures
+
+x32 linker is called ld-musl-x32.so.1 and x86 linker
+is called ld-musl-i386.so.1, Currently, linker for
+x86 is returned as ld-musl-i586.so.1, when default
+arch is i586, which is not the right thing
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/Driver/ToolChains/Linux.cpp | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/lib/Driver/ToolChains/Linux.cpp b/lib/Driver/ToolChains/Linux.cpp
+index 5bca972cc2..2ca285679c 100644
+--- a/lib/Driver/ToolChains/Linux.cpp
++++ b/lib/Driver/ToolChains/Linux.cpp
+@@ -492,6 +492,7 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
+ if (Triple.isMusl()) {
+ std::string ArchName;
+ bool IsArm = false;
++ bool isX32 = false;
+
+ switch (Arch) {
+ case llvm::Triple::arm:
+@@ -504,6 +505,13 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
+ ArchName = "armeb";
+ IsArm = true;
+ break;
++ case llvm::Triple::x86:
++ ArchName = "i386";
++ break;
++ case llvm::Triple::x86_64:
++ isX32 = Triple.getEnvironment() == llvm::Triple::GNUX32;
++ ArchName = isX32 ? "x32" : Triple.getArchName().str();
++ break;
+ default:
+ ArchName = Triple.getArchName().str();
+ }
+--
+2.18.0
+