diff options
author | Eivind Uggedal <eivind@uggedal.com> | 2014-05-14 07:27:29 +0000 |
---|---|---|
committer | Eivind Uggedal <eivind@uggedal.com> | 2014-05-14 07:40:47 +0000 |
commit | 0a5c48b1b4463e09fdabb4482ec45be9eed4ebeb (patch) | |
tree | 3a9f4e92fbde4166d0d8121bc6d82328acbc6b92 /main/llvm/llvm-alpine-linux.patch | |
parent | 5e0cd59758c186de785bf81b95776ae57af16271 (diff) | |
download | aports-0a5c48b1b4463e09fdabb4482ec45be9eed4ebeb.tar.bz2 aports-0a5c48b1b4463e09fdabb4482ec45be9eed4ebeb.tar.xz |
main/llvm: upgrade to 3.4.1
Diffstat (limited to 'main/llvm/llvm-alpine-linux.patch')
-rw-r--r-- | main/llvm/llvm-alpine-linux.patch | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/main/llvm/llvm-alpine-linux.patch b/main/llvm/llvm-alpine-linux.patch new file mode 100644 index 0000000000..8bef4b1777 --- /dev/null +++ b/main/llvm/llvm-alpine-linux.patch @@ -0,0 +1,136 @@ +--- a/include/llvm/ADT/Triple.h ++++ b/include/llvm/ADT/Triple.h +@@ -117,7 +117,10 @@ + EABI, + MachO, + Android, +- ELF ++ ELF, ++ Musl, ++ MuslEABI, ++ MuslEABIHF + }; + + private: +--- a/lib/Support/Triple.cpp.orig ++++ b/lib/Support/Triple.cpp +@@ -153,6 +153,9 @@ const char *Triple::getEnvironmentTypeName(EnvironmentType Kind) { + case MachO: return "macho"; + case Android: return "android"; + case ELF: return "elf"; ++ case Musl: return "musl"; ++ case MuslEABI: return "muslgnueabi"; ++ case MuslEABIHF: return "muslgnueabihf"; + } + + llvm_unreachable("Invalid EnvironmentType!"); +@@ -305,6 +308,9 @@ static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) { + .StartsWith("macho", Triple::MachO) + .StartsWith("android", Triple::Android) + .StartsWith("elf", Triple::ELF) ++ .StartsWith("muslgnueabihf", Triple::MuslEABIHF) ++ .StartsWith("muslgnueabi", Triple::MuslEABI) ++ .StartsWith("musl", Triple::Musl) + .Default(Triple::UnknownEnvironment); + } + +--- a/tools/clang/lib/Driver/ToolChains.cpp ++++ b/tools/clang/lib/Driver/ToolChains.cpp +@@ -1118,20 +1118,23 @@ void Generic_GCC::GCCInstallationDetector::print(raw_ostream &OS) const { + static const char *const ARMTriples[] = { "arm-linux-gnueabi", + "arm-linux-androideabi" }; + 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" }; + static const char *const X86_64Triples[] = { + "x86_64-linux-gnu", "x86_64-unknown-linux-gnu", "x86_64-pc-linux-gnu", + "x86_64-redhat-linux6E", "x86_64-redhat-linux", "x86_64-suse-linux", +- "x86_64-manbo-linux-gnu", "x86_64-linux-gnu", "x86_64-slackware-linux" ++ "x86_64-manbo-linux-gnu", "x86_64-linux-gnu", "x86_64-slackware-linux", ++ "x86_64-alpine-linux-musl" + }; + static const char *const X86LibDirs[] = { "/lib32", "/lib" }; + static const char *const X86Triples[] = { + "i686-linux-gnu", "i686-pc-linux-gnu", "i486-linux-gnu", "i386-linux-gnu", + "i386-redhat-linux6E", "i686-redhat-linux", "i586-redhat-linux", + "i386-redhat-linux", "i586-suse-linux", "i486-slackware-linux", +- "i686-montavista-linux" ++ "i686-montavista-linux", "i486-alpine-linux-musl" + }; + + static const char *const MIPSLibDirs[] = { "/lib" }; +@@ -2166,6 +2169,7 @@ Tool *Solaris::buildLinker() const { + /// Distribution (very bare-bones at the moment). + + enum Distro { ++ AlpineLinux, + ArchLinux, + DebianLenny, + DebianSqueeze, +@@ -2276,6 +2280,9 @@ static Distro DetectDistro(llvm::Triple::ArchType Arch) { + if (llvm::sys::fs::exists("/etc/arch-release")) + return ArchLinux; + ++ if (llvm::sys::fs::exists("/etc/alpine-release")) ++ return AlpineLinux; ++ + return UnknownDistro; + } + +--- a/tools/clang/lib/Driver/Tools.cpp ++++ b/tools/clang/lib/Driver/Tools.cpp +@@ -6355,16 +6355,28 @@ static StringRef getLinuxDynamicLinker(const ArgList &Args, + const toolchains::Linux &ToolChain) { + if (ToolChain.getTriple().getEnvironment() == llvm::Triple::Android) + return "/system/bin/linker"; +- else if (ToolChain.getArch() == llvm::Triple::x86) +- return "/lib/ld-linux.so.2"; +- else if (ToolChain.getArch() == llvm::Triple::aarch64) ++ else if (ToolChain.getArch() == llvm::Triple::x86) { ++ switch (ToolChain.getTriple().getEnvironment()) { ++ case llvm::Triple::Musl: ++ return "/lib/ld-musl-i386.so.1"; ++ default: ++ return "/lib/ld-linux.so.2"; ++ } ++ } else if (ToolChain.getArch() == llvm::Triple::aarch64) + return "/lib/ld-linux-aarch64.so.1"; + else if (ToolChain.getArch() == llvm::Triple::arm || + ToolChain.getArch() == llvm::Triple::thumb) { +- if (ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUEABIHF) ++ switch (ToolChain.getTriple().getEnvironment()) { ++ case llvm::Triple::Musl: ++ case llvm::Triple::MuslEABI: ++ return "/lib/ld-musl-arm.so.3"; ++ case llvm::Triple::MuslEABIHF: ++ return "/lib/ld-musl-armhf.so.3"; ++ case llvm::Triple::GNUEABIHF: + return "/lib/ld-linux-armhf.so.3"; +- else ++ default: + return "/lib/ld-linux.so.3"; ++ } + } else if (ToolChain.getArch() == llvm::Triple::mips || + ToolChain.getArch() == llvm::Triple::mipsel) + return "/lib/ld.so.1"; +@@ -6380,8 +6392,14 @@ static StringRef getLinuxDynamicLinker(const ArgList &Args, + ToolChain.getArch() == llvm::Triple::ppc64le || + ToolChain.getArch() == llvm::Triple::systemz) + return "/lib64/ld64.so.1"; +- else +- return "/lib64/ld-linux-x86-64.so.2"; ++ else { ++ switch (ToolChain.getTriple().getEnvironment()) { ++ case llvm::Triple::Musl: ++ return "/lib/ld-musl-x86_64.so.1"; ++ default: ++ return "/lib64/ld-linux-x86-64.so.2"; ++ } ++ } + } + + void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA, |