main/llvm: upgrade to 3.4.1

This commit is contained in:
Eivind Uggedal 2014-05-14 07:27:29 +00:00
parent 5e0cd59758
commit 0a5c48b1b4
4 changed files with 158 additions and 191 deletions

View File

@ -1,8 +1,8 @@
# Contributor: William Pitcock <nenolod@dereferenced.org>
# Maintainer: William Pitcock <nenolod@dereferenced.org>
pkgname=llvm
pkgver=3.3
pkgrel=1
pkgver=3.4.1
pkgrel=0
pkgdesc="low level virtual machine compiler system"
arch="x86 x86_64"
url="http://llvm.org/"
@ -14,7 +14,7 @@ install=
subpackages="clang $pkgname-dev $pkgname-doc $pkgname-libs"
source="http://llvm.org/releases/$pkgver/llvm-$pkgver.src.tar.gz
http://llvm.org/releases/$pkgver/cfe-$pkgver.src.tar.gz
llvm-3.3-alpine-linux.patch
llvm-alpine-linux.patch
llvm-musl.patch
"
# clang hardcodes linker paths; and don't know of a fix like the --with-dynamic-linker
@ -108,15 +108,15 @@ libs() {
mv "$pkgdir"/usr/lib/*.so "$subpkgdir"/usr/lib/
}
md5sums="40564e1dc390f9844f1711c08b08e391 llvm-3.3.src.tar.gz
8284891e3e311829b8e44ac813d0c9ef cfe-3.3.src.tar.gz
18f9165003a5b86101547d40ec5d3036 llvm-3.3-alpine-linux.patch
517019fb4907cf5944c84315c681f905 llvm-musl.patch"
sha256sums="68766b1e70d05a25e2f502e997a3cb3937187a3296595cf6e0977d5cd6727578 llvm-3.3.src.tar.gz
b1b55de4ab3a57d3e0331a83e0284610191c77d924e3446498d9113d08dfb996 cfe-3.3.src.tar.gz
5a6e40c7ffe280534ce964eaca5bc8ec325cb747f8de1390f534be2944c72361 llvm-3.3-alpine-linux.patch
3b653520e79933058e9b4ab0943a364a87babe8e5e6b520ac15660c146302c74 llvm-musl.patch"
sha512sums="1b7f7c5e907a68f642dcbe48fdff9585cb1504022bc9d386f310ebe5d25103d0d5f7cf0abf19e0e3fd666970160a98c90033754e2b79b2fac0cf866c984f8038 llvm-3.3.src.tar.gz
06773f43f7d3529f06edb029f7de398f06a700a0f2476e00c4727e70c291028221bfac23625dfd2c220d6ac91a21670848187a934b99a21801c695127371afcc cfe-3.3.src.tar.gz
d240f0fbef611b9863cbe1a79c10b4383dabf8be2ee49fd0f853d23fb0b4c935a41f3d50456a05815102834f2a4b1ac3c9334b444ed3868b7f3fb24e14ff14eb llvm-3.3-alpine-linux.patch
52f9791a11c103ff8d1a35e0fd94a9d8e1379fd6f8046e346f52686bb256ca969ead77059271931ac1fff5581146dd7e3862a3a14d85b96555b8823e807f2d70 llvm-musl.patch"
md5sums="b90697f4de35563ad6c35924defa8dd1 llvm-3.4.1.src.tar.gz
c64fdc567383211c9ac212d6f7b69263 cfe-3.4.1.src.tar.gz
524a204746c423bae0b041e4b409a687 llvm-alpine-linux.patch
69892689105e1698988b5be3a763b511 llvm-musl.patch"
sha256sums="7d28bb6eca243a2bb6d65a05743ab915b57958a7770277364e93534b63eef93a llvm-3.4.1.src.tar.gz
ab83f30951b34d75729026e0e73c180a728a140f2a02cbb8915805051a9d6bb7 cfe-3.4.1.src.tar.gz
c741573b6495d307085cf06bfc7d315bd3d6ef92fbb01e4c09cd5f1d84840a6a llvm-alpine-linux.patch
69bf4a102d50e31853371883da1062560bdf7894bdb289c0a9522a214e0473c8 llvm-musl.patch"
sha512sums="a8d19f8560604cd1a62b9868aca8848c0675895c5354dfcbc81ef940d4a38f56f8239a49aec853dd7d432134fa0b5feb9b070579226400874b761dcf124f7a7b llvm-3.4.1.src.tar.gz
3886d2e362aab52f29520150a81271ee24433118e0519dd5d1c58cfacc3b1c7da4cbab49c7e82d6b4a90c278b5028f5aa1f5d79478b13d0b11a15c491a6c00d5 cfe-3.4.1.src.tar.gz
fc566961272054e7415d0215712fd6d986341850d9281ccbcfc861c320bac6d9f3bac90571f2b72e940be4f843ad6e9133446d9fce0770514ccf39ad923bc0c8 llvm-alpine-linux.patch
3049ad58c65791549cc696edc5920a1a2fabf87808c92a4c3fc5b70ee88745df63e2f0fd38be50e9df2055d05d922d2ccb3fe2542e9f31b4133c47c2f2b0fa93 llvm-musl.patch"

View File

@ -1,159 +0,0 @@
--- 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,
+ Musl,
+ MuslEABI,
+ MuslEABIHF
};
private:
--- 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 +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);
}
--- 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-musl"
};
static const char *const X86LibDirs[] = { "/lib32", "/lib" };
static const char *const X86Triples[] = {
@@ -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-musl"
};
static const char *const MIPSLibDirs[] = { "/lib" };
@@ -1980,6 +1986,7 @@
/// Distribution (very bare-bones at the moment).
enum Distro {
+ AlpineLinux,
ArchLinux,
DebianLenny,
DebianSqueeze,
@@ -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;
}
--- 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");
- else if (ToolChain.getArch() == llvm::Triple::x86)
- CmdArgs.push_back("/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::UClibc:
+ CmdArgs.push_back("/lib/ld-uClibc.so.0.9.32");
+ 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) {
- 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
- 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");

View File

@ -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,

View File

@ -9,8 +9,8 @@
// On linux we have a weird situation. The stderr/out/in symbols are both
// macros and global variables because of standards requirements. So, we
--- a/utils/unittest/googletest/gtest.cc (revision 170294)
+++ b/utils/unittest/googletest/gtest.cc (working copy)
--- a/utils/unittest/googletest/src/gtest.cc
+++ b/utils/unittest/googletest/src/gtest.cc
@@ -120,6 +120,7 @@
#if GTEST_CAN_STREAM_RESULTS_
@ -58,17 +58,6 @@
toascii,
/// double trunc(double x);
--- a/lib/ExecutionEngine/JIT/JIT.cpp
+++ b/lib/ExecutionEngine/JIT/JIT.cpp
@@ -68,7 +68,7 @@ extern "C" void LLVMLinkInJIT() {
}
// Determine whether we can register EH tables.
-#if (defined(__GNUC__) && !defined(__ARM_EABI__) && \
+#if (defined(__GLIBC__) && !defined(__ARM_EABI__) && \
!defined(__USING_SJLJ_EXCEPTIONS__))
#define HAVE_EHTABLE_SUPPORT 1
#else
--- a/lib/Support/Unix/Signals.inc
+++ b/lib/Support/Unix/Signals.inc
@@ -268,7 +268,7 @@ void llvm::sys::AddSignalHandler(void (*FnPtr)(void *), void *Cookie) {
@ -133,9 +122,9 @@
--- a/lib/Transforms/IPO/FunctionAttrs.cpp
+++ b/lib/Transforms/IPO/FunctionAttrs.cpp
@@ -1271,30 +1271,6 @@ bool FunctionAttrs::inferPrototypeAttributes(Function &F) {
setDoesNotCapture(F, 1);
setDoesNotCapture(F, 2);
@@ -1599,32 +1599,6 @@ bool FunctionAttrs::inferPrototypeAttributes(Function &F) {
setOnlyReadsMemory(F, 1);
setOnlyReadsMemory(F, 2);
break;
- case LibFunc::fopen64:
- if (FTy->getNumParams() != 2 ||
@ -147,6 +136,8 @@
- setDoesNotAlias(F, 0);
- setDoesNotCapture(F, 1);
- setDoesNotCapture(F, 2);
- setOnlyReadsMemory(F, 1);
- setOnlyReadsMemory(F, 2);
- break;
- case LibFunc::fseeko64:
- case LibFunc::ftello64:
@ -164,4 +155,3 @@
case LibFunc::fstat64:
case LibFunc::fstatvfs64:
if (FTy->getNumParams() != 2 || !FTy->getParamType(1)->isPointerTy())