diff options
author | Timo Teräs <timo.teras@iki.fi> | 2013-10-03 13:08:16 +0000 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2013-10-03 13:08:16 +0000 |
commit | 3a7bc13723c7a873b758314bec4490f0abbfcc2e (patch) | |
tree | 0e2b35f4ba3cbe855ab58141609e3d18594aad8b /main/llvm/llvm-3.3-alpine-linux.patch | |
parent | 10e7746913f2a6607751fe2746779cd2c9e78641 (diff) | |
download | aports-3a7bc13723c7a873b758314bec4490f0abbfcc2e.tar.bz2 aports-3a7bc13723c7a873b758314bec4490f0abbfcc2e.tar.xz |
main/llvm: support musl
Diffstat (limited to 'main/llvm/llvm-3.3-alpine-linux.patch')
-rw-r--r-- | main/llvm/llvm-3.3-alpine-linux.patch | 128 |
1 files changed, 91 insertions, 37 deletions
diff --git a/main/llvm/llvm-3.3-alpine-linux.patch b/main/llvm/llvm-3.3-alpine-linux.patch index 4964973271..bfb9de0328 100644 --- a/main/llvm/llvm-3.3-alpine-linux.patch +++ b/main/llvm/llvm-3.3-alpine-linux.patch @@ -1,62 +1,78 @@ -diff --git a/include/llvm/ADT/Triple.h b/include/llvm/ADT/Triple.h -index 3a72e87..ac4c3ea 100644 ---- a/include/llvm/ADT/Triple.h -+++ b/include/llvm/ADT/Triple.h -@@ -117,7 +117,8 @@ public: +--- llvm-3.3.src.orig/include/llvm/ADT/Triple.h ++++ llvm-3.3.src/include/llvm/ADT/Triple.h +@@ -117,7 +117,11 @@ EABI, MachO, Android, - ELF + ELF, -+ UClibc ++ UClibc, ++ Musl, ++ MuslEABI, ++ MuslEABIHF }; private: -diff --git a/lib/Support/Triple.cpp b/lib/Support/Triple.cpp -index 412e34c..64dfce8 100644 ---- a/lib/Support/Triple.cpp -+++ b/lib/Support/Triple.cpp -@@ -151,6 +151,7 @@ const char *Triple::getEnvironmentTypeName(EnvironmentType Kind) { +--- llvm-3.3.src.orig/lib/Support/Triple.cpp ++++ llvm-3.3.src/lib/Support/Triple.cpp +@@ -151,6 +151,10 @@ case MachO: return "macho"; case Android: return "android"; case ELF: return "elf"; + case UClibc: return "uclibc"; ++ case Musl: return "musl"; ++ case MuslEABI: return "muslgnueabi"; ++ case MuslEABIHF: return "muslgnueabihf"; } llvm_unreachable("Invalid EnvironmentType!"); -@@ -300,6 +301,7 @@ static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) { +@@ -300,6 +304,10 @@ .StartsWith("macho", Triple::MachO) .StartsWith("android", Triple::Android) .StartsWith("elf", Triple::ELF) + .StartsWith("uclibc", Triple::UClibc) ++ .StartsWith("muslgnueabihf", Triple::MuslEABIHF) ++ .StartsWith("muslgnueabi", Triple::MuslEABI) ++ .StartsWith("musl", Triple::Musl) .Default(Triple::UnknownEnvironment); } -diff --git a/tools/clang/lib/Driver/ToolChains.cpp b/tools/clang/lib/Driver/ToolChains.cpp -index fffba0e..797d0c1 100644 ---- a/tools/clang/lib/Driver/ToolChains.cpp -+++ b/tools/clang/lib/Driver/ToolChains.cpp -@@ -1099,7 +1099,8 @@ Generic_GCC::GCCInstallationDetector::GCCInstallationDetector( +--- llvm-3.3.src.orig/tools/clang/lib/Driver/ToolChains.cpp ++++ llvm-3.3.src/tools/clang/lib/Driver/ToolChains.cpp +@@ -1086,7 +1086,9 @@ + }; + static const char *const ARMHFTriples[] = { + "arm-linux-gnueabihf", +- "armv7hl-redhat-linux-gnueabi" ++ "armv7hl-redhat-linux-gnueabi", ++ "armv6-alpine-linux-muslgnueabihf", ++ "armv7-alpine-linux-muslgnueabihf" + }; + + static const char *const X86_64LibDirs[] = { "/lib64", "/lib" }; +@@ -1099,7 +1101,9 @@ "x86_64-suse-linux", "x86_64-manbo-linux-gnu", "x86_64-linux-gnu", - "x86_64-slackware-linux" + "x86_64-slackware-linux", -+ "x86_64-alpine-linux-uclibc" ++ "x86_64-alpine-linux-uclibc", ++ "x86_64-alpine-linux-musl" }; static const char *const X86LibDirs[] = { "/lib32", "/lib" }; static const char *const X86Triples[] = { -@@ -1113,7 +1114,8 @@ Generic_GCC::GCCInstallationDetector::GCCInstallationDetector( +@@ -1113,7 +1117,9 @@ "i386-redhat-linux", "i586-suse-linux", "i486-slackware-linux", - "i686-montavista-linux" + "i686-montavista-linux", -+ "i486-alpine-linux-uclibc" ++ "i486-alpine-linux-uclibc", ++ "i486-alpine-linux-musl" }; static const char *const MIPSLibDirs[] = { "/lib" }; -@@ -1980,6 +1982,7 @@ Tool *Solaris::buildLinker() const { +@@ -1980,6 +1986,7 @@ /// Distribution (very bare-bones at the moment). enum Distro { @@ -64,21 +80,19 @@ index fffba0e..797d0c1 100644 ArchLinux, DebianLenny, DebianSqueeze, -@@ -2109,6 +2112,9 @@ static Distro DetectDistro(llvm::Triple::ArchType Arch) { +@@ -2108,6 +2115,9 @@ + if (!llvm::sys::fs::exists("/etc/arch-release", Exists) && Exists) return ArchLinux; - ++ + if (!llvm::sys::fs::exists("/etc/alpine-release", Exists) && Exists) + return AlpineLinux; -+ + return UnknownDistro; } - -diff --git a/tools/clang/lib/Driver/Tools.cpp b/tools/clang/lib/Driver/Tools.cpp -index aba1fe4..cc8e9c9 100644 ---- a/tools/clang/lib/Driver/Tools.cpp -+++ b/tools/clang/lib/Driver/Tools.cpp -@@ -5983,9 +5983,12 @@ void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA, +--- llvm-3.3.src.orig/tools/clang/lib/Driver/Tools.cpp ++++ llvm-3.3.src/tools/clang/lib/Driver/Tools.cpp +@@ -5983,16 +5983,37 @@ CmdArgs.push_back("-dynamic-linker"); if (isAndroid) CmdArgs.push_back("/system/bin/linker"); @@ -86,20 +100,60 @@ index aba1fe4..cc8e9c9 100644 - CmdArgs.push_back("/lib/ld-linux.so.2"); - else if (ToolChain.getArch() == llvm::Triple::aarch64) + else if (ToolChain.getArch() == llvm::Triple::x86) { -+ if (ToolChain.getTriple().getEnvironment() == llvm::Triple::UClibc) ++ switch (ToolChain.getTriple().getEnvironment()) { ++ case llvm::Triple::UClibc: + CmdArgs.push_back("/lib/ld-uClibc.so.0.9.32"); -+ else ++ break; ++ case llvm::Triple::Musl: ++ CmdArgs.push_back("/lib/ld-musl-i386.so.1"); ++ break; ++ default: + CmdArgs.push_back("/lib/ld-linux.so.2"); ++ break; ++ } + } else if (ToolChain.getArch() == llvm::Triple::aarch64) CmdArgs.push_back("/lib/ld-linux-aarch64.so.1"); else if (ToolChain.getArch() == llvm::Triple::arm || ToolChain.getArch() == llvm::Triple::thumb) { -@@ -6009,6 +6012,8 @@ void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA, +- if (ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUEABIHF) ++ switch (ToolChain.getTriple().getEnvironment()) { ++ case llvm::Triple::Musl: ++ case llvm::Triple::MuslEABI: ++ CmdArgs.push_back("/lib/ld-musl-arm.so.3"); ++ break; ++ case llvm::Triple::MuslEABIHF: ++ CmdArgs.push_back("/lib/ld-musl-armhf.so.3"); ++ break; ++ case llvm::Triple::GNUEABIHF: + CmdArgs.push_back("/lib/ld-linux-armhf.so.3"); +- else ++ break; ++ default: + CmdArgs.push_back("/lib/ld-linux.so.3"); ++ break; ++ } + } + else if (ToolChain.getArch() == llvm::Triple::mips || + ToolChain.getArch() == llvm::Triple::mipsel) +@@ -6009,8 +6030,19 @@ else if (ToolChain.getArch() == llvm::Triple::ppc64 || ToolChain.getArch() == llvm::Triple::systemz) CmdArgs.push_back("/lib64/ld64.so.1"); -+ else if (ToolChain.getTriple().getEnvironment() == llvm::Triple::UClibc) -+ CmdArgs.push_back("/lib/ld64-uClibc.so.0.9.32"); - else - CmdArgs.push_back("/lib64/ld-linux-x86-64.so.2"); +- else +- CmdArgs.push_back("/lib64/ld-linux-x86-64.so.2"); ++ else { ++ switch (ToolChain.getTriple().getEnvironment()) { ++ case llvm::Triple::Musl: ++ CmdArgs.push_back("/lib/ld-musl-x86_64.so.1"); ++ break; ++ case llvm::Triple::UClibc: ++ CmdArgs.push_back("/lib/ld64-uClibc.so.0.9.32"); ++ break; ++ default: ++ CmdArgs.push_back("/lib64/ld-linux-x86-64.so.2"); ++ break; ++ } ++ } } + + CmdArgs.push_back("-o"); |