diff options
Diffstat (limited to 'recipes-devtools/clang/clang/0001-clang-driver-Add-musl-ldso-support.patch')
-rw-r--r-- | recipes-devtools/clang/clang/0001-clang-driver-Add-musl-ldso-support.patch | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/recipes-devtools/clang/clang/0001-clang-driver-Add-musl-ldso-support.patch b/recipes-devtools/clang/clang/0001-clang-driver-Add-musl-ldso-support.patch new file mode 100644 index 0000000..6747c24 --- /dev/null +++ b/recipes-devtools/clang/clang/0001-clang-driver-Add-musl-ldso-support.patch | |||
@@ -0,0 +1,83 @@ | |||
1 | From 21cb1801f0da97918ce5a567cd1f60413b4de726 Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Wed, 30 Mar 2016 19:56:10 -0700 | ||
4 | Subject: [PATCH 1/4] clang: driver: Add musl ldso support | ||
5 | |||
6 | Linux/musl libc implementation has different ldso | ||
7 | this needs to take effect when target arch is detected | ||
8 | as a musl based Linux platform | ||
9 | |||
10 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
11 | --- | ||
12 | lib/Driver/Tools.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++------ | ||
13 | 1 file changed, 42 insertions(+), 6 deletions(-) | ||
14 | |||
15 | diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp | ||
16 | index 8a1cb54..0ce548c 100644 | ||
17 | --- a/lib/Driver/Tools.cpp | ||
18 | +++ b/lib/Driver/Tools.cpp | ||
19 | @@ -8994,6 +8994,47 @@ static std::string getLinuxDynamicLinker(const ArgList &Args, | ||
20 | return "/system/bin/linker64"; | ||
21 | else | ||
22 | return "/system/bin/linker"; | ||
23 | + } else if (ToolChain.getTriple().isLinuxMuslEnvironment()) { | ||
24 | + switch (Arch) { | ||
25 | + case llvm::Triple::x86: | ||
26 | + return "/lib/ld-musl-i386.so.1"; | ||
27 | + case llvm::Triple::x86_64: | ||
28 | + if (ToolChain.getTriple().getEnvironment() == llvm::Triple::MUSLX32) | ||
29 | + return "/lib/ld-musl-x32.so.1"; | ||
30 | + else | ||
31 | + return "/lib/ld-musl-x86_64.so.1"; | ||
32 | + case llvm::Triple::aarch64: | ||
33 | + return "/lib/ld-musl-aarch64.so.1"; | ||
34 | + case llvm::Triple::aarch64_be: | ||
35 | + return "/lib/ld-musl-aarch64_be.so.1"; | ||
36 | + case llvm::Triple::ppc: | ||
37 | + return "/lib/ld-musl-powerpc.so.1"; | ||
38 | + case llvm::Triple::ppc64: | ||
39 | + return "/lib/ld-musl-powerpc64.so.1"; | ||
40 | + case llvm::Triple::arm: | ||
41 | + case llvm::Triple::thumb: | ||
42 | + if(arm::getARMFloatABI(ToolChain, Args) == arm::FloatABI::Hard) | ||
43 | + return "/lib/ld-musl-armhf.so.1"; | ||
44 | + else | ||
45 | + return "/lib/ld-musl-arm.so.1"; | ||
46 | + case llvm::Triple::armeb: | ||
47 | + case llvm::Triple::thumbeb: | ||
48 | + if(arm::getARMFloatABI(ToolChain, Args) == arm::FloatABI::Hard) | ||
49 | + return "/lib/ld-musl-armebhf.so.1"; | ||
50 | + else | ||
51 | + return "/lib/ld-musl-armeb.so.1"; | ||
52 | + case llvm::Triple::mips: | ||
53 | + return "/lib/ld-musl-mips.so.1"; | ||
54 | + case llvm::Triple::mipsel: | ||
55 | + return "/lib/ld-musl-mipsel.so.1"; | ||
56 | + case llvm::Triple::mips64: | ||
57 | + return "/lib/ld-musl-mips64.so.1"; | ||
58 | + case llvm::Triple::mips64el: | ||
59 | + return "/lib/ld-musl-mipsel64el.so.1"; | ||
60 | + default: | ||
61 | + llvm_unreachable("unsupported musl architecture"); | ||
62 | + break; | ||
63 | + } | ||
64 | } else if (Arch == llvm::Triple::x86 || Arch == llvm::Triple::sparc || | ||
65 | Arch == llvm::Triple::sparcel) | ||
66 | return "/lib/ld-linux.so.2"; | ||
67 | @@ -9021,12 +9062,7 @@ static std::string getLinuxDynamicLinker(const ArgList &Args, | ||
68 | bool IsNaN2008 = mips::isNaN2008(Args, Triple); | ||
69 | if (mips::isUCLibc(Args)) | ||
70 | LibName = IsNaN2008 ? "ld-uClibc-mipsn8.so.0" : "ld-uClibc.so.0"; | ||
71 | - else if (!Triple.hasEnvironment() && | ||
72 | - Triple.getVendor() == llvm::Triple::VendorType::MipsTechnologies) { | ||
73 | - bool LE = (Triple.getArch() == llvm::Triple::mipsel) || | ||
74 | - (Triple.getArch() == llvm::Triple::mips64el); | ||
75 | - LibName = LE ? "ld-musl-mipsel.so.1" : "ld-musl-mips.so.1"; | ||
76 | - } else | ||
77 | + else | ||
78 | LibName = IsNaN2008 ? "ld-linux-mipsn8.so.1" : "ld.so.1"; | ||
79 | |||
80 | return (LibDir + "/" + LibName).str(); | ||
81 | -- | ||
82 | 2.8.2 | ||
83 | |||