diff options
Diffstat (limited to 'recipes-devtools/clang/clang/0014-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch')
-rw-r--r-- | recipes-devtools/clang/clang/0014-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/recipes-devtools/clang/clang/0014-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch b/recipes-devtools/clang/clang/0014-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch new file mode 100644 index 0000000..0c265f7 --- /dev/null +++ b/recipes-devtools/clang/clang/0014-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch | |||
@@ -0,0 +1,41 @@ | |||
1 | From 416ec373ef2bc7df1e63e8f371cf28dc7794230a Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Wed, 16 Aug 2017 15:16:15 -0700 | ||
4 | Subject: [PATCH] clang: Fix ldso for musl on x86 and x32 architectures | ||
5 | |||
6 | x32 linker is called ld-musl-x32.so.1 and x86 linker | ||
7 | is called ld-musl-i386.so.1, Currently, linker for | ||
8 | x86 is returned as ld-musl-i586.so.1, when default | ||
9 | arch is i586, which is not the right thing | ||
10 | |||
11 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
12 | --- | ||
13 | clang/lib/Driver/ToolChains/Linux.cpp | 8 ++++++++ | ||
14 | 1 file changed, 8 insertions(+) | ||
15 | |||
16 | diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp | ||
17 | index d95da11e351..0a4644dab9f 100644 | ||
18 | --- a/clang/lib/Driver/ToolChains/Linux.cpp | ||
19 | +++ b/clang/lib/Driver/ToolChains/Linux.cpp | ||
20 | @@ -519,6 +519,7 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const { | ||
21 | if (Triple.isMusl()) { | ||
22 | std::string ArchName; | ||
23 | bool IsArm = false; | ||
24 | + bool isX32 = false; | ||
25 | |||
26 | switch (Arch) { | ||
27 | case llvm::Triple::arm: | ||
28 | @@ -531,6 +532,13 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const { | ||
29 | ArchName = "armeb"; | ||
30 | IsArm = true; | ||
31 | break; | ||
32 | + case llvm::Triple::x86: | ||
33 | + ArchName = "i386"; | ||
34 | + break; | ||
35 | + case llvm::Triple::x86_64: | ||
36 | + isX32 = Triple.getEnvironment() == llvm::Triple::GNUX32; | ||
37 | + ArchName = isX32 ? "x32" : Triple.getArchName().str(); | ||
38 | + break; | ||
39 | default: | ||
40 | ArchName = Triple.getArchName().str(); | ||
41 | } | ||