diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2015-05-22 13:43:22 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2015-05-22 13:43:22 +0000 |
commit | 70622e24effd147a1d3e6206607f73ccdba33e8f (patch) | |
tree | 9f6ad37ec2977a564c47819340add467227c9dc0 /main/llvm | |
parent | 95623fb7c14e2129b8e4f39e947d99dc85d3e158 (diff) | |
download | aports-70622e24effd147a1d3e6206607f73ccdba33e8f.tar.bz2 aports-70622e24effd147a1d3e6206607f73ccdba33e8f.tar.xz |
Revert "main/llvm: update patchset, switch to cmake, perform two-stage build with a minimal bootstrap compile of clang, add clang extras, update package list to split out clang documentation"
This reverts commit 81d1b43c5af39e14cb91232c4afcb7839b96f5a1.
Diffstat (limited to 'main/llvm')
22 files changed, 440 insertions, 618 deletions
diff --git a/main/llvm/APKBUILD b/main/llvm/APKBUILD index c5fdc8e283..5f2cccae94 100644 --- a/main/llvm/APKBUILD +++ b/main/llvm/APKBUILD @@ -2,292 +2,165 @@ # Maintainer: William Pitcock <nenolod@dereferenced.org> pkgname=llvm pkgver=3.6.0 -pkgrel=2 +pkgrel=1 pkgdesc="low level virtual machine compiler system" -arch="x86 x86_64 armhf" +arch="x86_64 armhf" url="http://llvm.org/" license="UOI-NCSA" depends="" depends_dev="perl" -makedepends="$depends_dev cmake make flex bison groff musl-dev binutils-gold binutils-dev libffi-dev libxml2-dev libxml2-utils zlib-dev ncurses-dev python python-dev py-sphinx chrpath" +makedepends="$depends_dev make flex bison groff libffi-dev zlib-dev ncurses-dev libedit-dev python chrpath" install= -subpackages="clang clang-doc:clang_doc $pkgname-dev $pkgname-doc $pkgname-libs" +subpackages="clang-libs:clang_libs clang + $pkgname-static $pkgname-dev $pkgname-doc $pkgname-libs" source="http://llvm.org/releases/$pkgver/llvm-$pkgver.src.tar.xz http://llvm.org/releases/$pkgver/cfe-$pkgver.src.tar.xz - http://llvm.org/releases/$pkgver/clang-tools-extra-$pkgver.src.tar.xz http://llvm.org/releases/$pkgver/compiler-rt-$pkgver.src.tar.xz - llvm-0001-fix-shared-build.patch - llvm-0002-musl-triple.patch - llvm-0003-musl-hacks.patch - compiler-rt-0001-musl-no-dlvsym.patch - compiler-rt-0002-musl-no-sanitizers.patch - clang-0001-fix-stdint.h.patch - clang-0002-fix-unwind-header.patch - clang-0003-add-alpine-linux-distro.patch - clang-0004-alpine-use-z-relro.patch - clang-0005-alpine-hash-style-gnu.patch - clang-0006-musl-alpine-triple.patch - clang-0007-musl-dynamic-linker-paths.patch - clang-0008-alpine-PIE-by-default.patch - clang-0009-pass-host-triple-to-compiler-rt.patch + llvm-3.5-gcc-4.9.patch + llvm-3.6-musl-triple.patch + llvm-3.6-musl.patch + compiler-rt-3.6-musl-disable-sanitizers.patch + compiler-rt-3.6-musl-no-dlvsym.patch + clang-3.5-fix-stdint.patch + clang-3.6-fix-unwind-chain-inclusion.patch + clang-3.6-remove-lgcc-when-using-compiler-rt.patch + clang-3.6-add-alpine-distro.patch + clang-3.6-alpine-use-z-relro.patch + clang-3.6-alpine-hash-style-gnu.patch + clang-3.6-default-runtime-compiler-rt.patch + clang-3.6-musl-alpine-triple.patch + clang-3.6-musl-fix-dynamic-linker-paths.patch + clang-3.6-musl-use-init-array.patch + clang-3.6-musl-no-use-cxa-atexit.patch " _builddir="$srcdir"/build -_bootstrap_prefix="$srcdir"/bootstrap _srcdir="$srcdir"/"$pkgname-$pkgver.src" _srcdir_clang="$_srcdir"/tools/clang -_srcdir_clang_extra="$_srcdir_clang"/tools/extra -# _srcdir_polly="$_srcdir"/tools/polly _srcdir_compiler_rt="$_srcdir"/projects/compiler-rt -# _srcdir_libcxx="$_srcdir"/projects/libcxx - - -# get_libstdcxx_header_directories() { -# echo | \ -# g++ -Wp,-v -x c++ - -fsyntax-only 2>&1 | \ -# grep '^ /' | \ -# head -2 | \ -# sed 's|^ *||g' | \ -# tr '\n' ';' -# } - -# dynamically link to libstdc++ rather than statically link to libsupc++ even -# though that's all we need. If a program also needs to link against libstdc++, -# it will provide its own copy of libsupc++ and this can lead to subtle problems. -# NOTE: the define has changed name in the 3.7 tree to always be -# LIBCXX_ABI_INCLUDE_PATHS, even when using libsupc++. -# _cmake_libcxx_abi_flags="\ -# -DLIBCXX_CXX_ABI=libstdc++ \ -# -DLIBCXX_LIBSUPCXX_INCLUDE_PATHS=$(get_libstdcxx_header_directories) \ -# " - -# _cmake_libcxx_flags="\ -# ${_cmake_libcxx_abi_flags} \ -# -DLIBCXX_HOST_TRIPLE=$CHOST \ -# -DLIBCXX_TARGET_TRIPLE=$CBUILD \ -# -DLIBCXX_ENABLE_ASSERTIONS=NO \ -# " - -_cmake_flags="\ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_VERBOSE_MAKEFILE=NO \ -" - -# the binutils include directory setting appears to be necessary in order to -# build the LLVMGold plugin, even if the headers are in /usr/include and easily -# detected. -# auto-detection of both go and ocaml are explicitly disabled here, as they -# currently do not compile. -_cmake_common_flags="\ - ${_cmake_flags} \ - -DCOMPILER_RT_TEST_TARGET_TRIPLE=$CBUILD \ - -DLLVM_DEFAULT_TARGET_TRIPLE=$CBUILD \ - -DLLVM_HOST_TRIPLE=$CHOST \ - -DFFI_INCLUDE_DIR=$(pkg-config --cflags-only-I libffi | sed 's|^-I||g') \ - -DLIBXML2_INCLUDE_DIR=$(pkg-config --cflags-only-I libxml-2.0 | sed 's|^-I||g') \ - -DLLVM_BINUTILS_INCDIR=/usr/include \ - -DLLVM_ENABLE_ASSERTIONS=NO \ - -DLLVM_ENABLE_FFI=YES \ - -DLLVM_ENABLE_LIBCXX=NO \ - -DLLVM_ENABLE_PIC=YES \ - -DLLVM_ENABLE_ZLIB=YES \ - -DLLVM_ENABLE_RTTI=YES \ - -DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND \ - -DOCAMLFIND=OCAMLFIND-NOTFOUND \ - -DCLANG_BUILD_EXAMPLES=NO \ - -DLLVM_BUILD_EXAMPLES=NO \ - -DLLVM_INCLUDE_EXAMPLES=NO \ -" - -# attempt to build the bootstrap compiler as quickly as is sane. unfortunately, -# there is no way to turn off ObjC support. we can, however, disable building -# ARCMT (automatic reference counting migration tool), the static analyzer, and -# documentation. also, since we're using the cmake build and not autotools, the -# tests aren't automatically built (targets for testing are emitted, just not -# built as part of the default target). -_cmake_bootstrap_flags="\ - ${_cmake_common_flags} \ - -DCMAKE_INSTALL_PREFIX=${_bootstrap_prefix} \ - -DLLVM_TARGETS_TO_BUILD=host \ - -DBUILD_SHARED_LIBS=NO \ - -DCLANG_ENABLE_ARCMT=NO \ - -DCLANG_ENABLE_STATIC_ANALYZER=NO \ - -DCLANG_INCLUDE_DOCS=NO \ - -DLLVM_ENABLE_CXX1Y=NO \ - -DLLVM_ENABLE_SPHINX=NO \ - -DLLVM_ENABLE_TERMINFO=NO \ - -DLLVM_INCLUDE_DOCS=NO \ - -DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_BUILD=NO \ -" - -# setting compiler-rt to compile as if it were an external build allows it to -# use the freshly built clang to compile, rather than the bootstrap compiler. -# NOTE: there appears to be an issue building compiler-rt as an external project -# and using ninja as the build tool, so stick to good old fashioned makefiles. -_cmake_final_flags="\ - ${_cmake_common_flags} \ - -DCMAKE_INSTALL_PREFIX=/usr \ - -DLLVM_TARGETS_TO_BUILD=all \ - -DLLVM_BUILD_EXTERNAL_COMPILER_RT=YES \ - -DBUILD_SHARED_LIBS=YES \ - -DLLVM_BUILD_DOCS=YES \ - -DLLVM_ENABLE_CXX1Y=YES \ - -DLLVM_ENABLE_SPHINX=YES \ - -DLLVM_ENABLE_TERMINFO=YES \ - -DLIBCLANG_BUILD_STATIC=YES \ -" +# _srcdir_clang_extra="$_srcdir_clang"/tools/extra +# _srcdir_lld="$_srcdir"/tools/lld prepare() { - msg "Preparing LLVM project sources..." + msg "Preparing LLVM/CLANG sources..." mv "$srcdir"/cfe-$pkgver.src \ "$_srcdir_clang" || return 1 - mv "$srcdir"/clang-tools-extra-$pkgver.src \ - "$_srcdir_clang_extra" || return 1 - # TODO: polly requires isl 0.14.x - # mv "$srcdir"/polly-$pkgver.src \ - # "$_srcdir_polly" || return 1 mv "$srcdir"/compiler-rt-$pkgver.src \ "$_srcdir_compiler_rt" || return 1 - # mv "$srcdir"/libcxx-$pkgver.src \ - # "$_srcdir_libcxx" || return 1 + # mv "$srcdir"/clang-tools-extra-$pkgver.src \ + # "$_srcdir_clang_extra" || return 1 + # mv "$srcdir"/lld-$pkgver.src \ + # "$_srcdir_lld" || return 1 msg "Patching LLVM core..." cd "$_srcdir" || return 1 update_config_sub || return 1 - sed -i -e '/case "\${UNAME_MACHINE}:\${UNAME_SYSTEM}:\${UNAME_RELEASE}:\${UNAME_VERSION}" in/i \' \ - -e 'if [ x != "x$CBUILD" ]; then echo "$CBUILD"; exit; fi' \ - ./autoconf/config.guess || return 1 for i in $source; do case $i in - llvm-*.patch) + llvm*.patch) msg "Applying $i..." patch -s -p1 -N -i "$srcdir"/$i || return 1 ;; esac done - msg "Patching clang..." - cd "$_srcdir_clang" || return 1 - # FIXME: I have never seen these tests pass on any system, be it vanilla clang - # or patched, musl or glibc, autoconf or cmake. It fails on alpine, gentoo, - # and ubuntu. - rm ./test/Driver/lto.c + msg "Patching compiler-rt..." + cd "$_srcdir_compiler_rt" || return 1 for i in $source; do case $i in - clang-*.patch) - msg "Applying $i..." + compiler-rt*.patch) + msg "Applying $i..." patch -s -p1 -N -i "$srcdir"/$i || return 1 ;; esac done - msg "Patching compiler-rt..." - cd "$_srcdir_compiler_rt" || return 1 + msg "Patching clang..." + cd "$_srcdir_clang" || return 1 for i in $source; do case $i in - compiler-rt-*.patch) - msg "Applying $i..." + clang-*.patch) + msg "Applying $i..." patch -s -p1 -N -i "$srcdir"/$i || return 1 ;; esac done - - # msg "Patching libc++..." - # cd "$_srcdir_libcxx" || return 1 - # for i in $source; do - # case $i in - # libcxx-*.patch) - # msg "Applying $i..." - # patch -s -p1 -N -i "$srcdir"/$i || return 1 - # ;; - # esac - # done } build() { - # These flag settings are added to the existing cmake build flags rather - # than replacing them, so we clear them out here to remove any abuild set - # flags. For a Release build, the default flags will be "-O3 -NDEBUG". - # -fno-devirtualize is added here because, to quote the fedora spec file, - # "gcc has scary template-related bugs". the flag is removed post-bootstrap. - CFLAGS="" - CXXFLAGS="-fno-devirtualize" - LDFLAGS="" - : ${CC:=$(which gcc)} - : ${CXX:=$(which g++)} - - # The cmake logic appears to use the result of config.guess in a few places - # even though we override the various triple settings manually. export CBUILD - # to the tweaked config.guess just to be safe. - export CBUILD - - mkdir -p "$_builddir" + mkdir "$_builddir" cd "$_builddir" - msg "Compiling bootstrap compiler" - cmake -G "Unix Makefiles" -Wno-dev ${_cmake_bootstrap_flags} \ - -DCMAKE_C_COMPILER="${CC}" \ - -DCMAKE_CXX_COMPILER="${CXX}" \ - -DCMAKE_C_FLAGS="${CFLAGS}" \ - -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \ - -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" \ - -DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}" \ - "${_srcdir}" || return 1 - - make || return 1 - make install || return 1 - - CFLAGS="" - CXXFLAGS="" - CC="${_bootstrap_prefix}/bin/clang" - CXX="${_bootstrap_prefix}/bin/clang++" - - cd .. - rm -rf "$_builddir" - mkdir -p "$_builddir" - cd "$_builddir" - - msg "Compiling final compiler" - cmake -G "Unix Makefiles" -Wno-dev ${_cmake_final_flags} \ - -DCMAKE_C_COMPILER="${CC}" \ - -DCMAKE_CXX_COMPILER="${CXX}" \ - -DCMAKE_C_FLAGS="${CFLAGS}" \ - -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \ - -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" \ - -DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}" \ - "${_srcdir}" || return 1 + export CBUILD + sed -i -e '/case "\${UNAME_MACHINE}:\${UNAME_SYSTEM}:\${UNAME_RELEASE}:\${UNAME_VERSION}" in/i \' \ + -e 'if [ x != "x$CBUILD" ]; then echo "$CBUILD"; exit; fi' \ + ../$pkgname-$pkgver.src/autoconf/config.guess \ + || return 1 + + export CPPFLAGS="${CPPFLAGS} $(pkg-config --cflags-only-I libffi) $(pkg-config --cflags-only-I libedit)" + + $_srcdir/configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --enable-shared \ + --enable-optimized \ + --enable-keep-symbols \ + --enable-libedit \ + --enable-terminfo \ + --enable-libffi \ + --enable-clang-plugin-support \ + --enable-clang-static-analyzer \ + --enable-docs \ + --enable-threads \ + --enable-zlib \ + --enable-pic \ + --enable-targets=x86,x86_64,arm,arm64,cpp,r600 \ + --enable-bindings=none \ + --disable-timestamps \ + --disable-assertions \ + --disable-expensive-checks \ + --disable-libcpp \ + --disable-werror \ + || return 1 make || return 1 - make check-llvm || return 1 - make check-clang || return 1 - # 27 failures, all related to clang-tidy - # make check-clang-tools || return 1 - make check-compiler-rt || return 1 - # 172 test failures, so it's not included - # make check-libcxx || return 1 } package() { cd "$_builddir" make DESTDIR="$pkgdir" install - rm "$pkgdir"/usr/lib/LLVMHello.so + #relocate docs + mkdir -p "$pkgdir"/usr/share/doc + mv "$pkgdir"/usr/docs/llvm "$pkgdir"/usr/share/doc/ || return 1 + rmdir "$pkgdir"/usr/docs || return 1 + chrpath -d "$pkgdir"/usr/bin/* "$pkgdir"/usr/lib/*.so || return 1 - file "$pkgdir"/usr/lib/*.so | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d - file "$pkgdir"/usr/bin/* | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d + # remove erroneously installed example + rm "$pkgdir"/usr/lib/*LLVMHello.* || return 1 + + # remove executable bit from static libc + chmod -x "$pkgdir"/usr/lib/*.a +} + +clang_libs() { + pkgdesc="Runtime library for clang" + mkdir -p "$subpkgdir"/usr/lib + mv "$pkgdir"/usr/lib/libclang.so "$subpkgdir"/usr/lib/ } clang() { pkgdesc="A C language family front-end for LLVM" - mkdir -p "$subpkgdir"/usr/bin \ "$subpkgdir"/usr/lib "$subpkgdir"/usr/share/clang "$subpkgdir"/usr/include - mv "$pkgdir"/usr/bin/*clang* \ + mv "$pkgdir"/usr/bin/clang* "$pkgdir"/usr/bin/c-index-test \ "$subpkgdir"/usr/bin/ || return 1 mv "$pkgdir"/usr/lib/clang \ - "$pkgdir"/usr/lib/libclang* \ - "$pkgdir"/usr/lib/libmodernize* \ "$subpkgdir"/usr/lib/ || return 1 mv "$pkgdir"/usr/include/clang "$pkgdir"/usr/include/clang-c \ "$subpkgdir"/usr/include/ || return 1 @@ -299,10 +172,11 @@ clang() { ln -s /usr/share/clang/scan-view/scan-view "$subpkgdir"/usr/bin/scan-view } -clang_doc() { - pkgdesc="clang documentation" - mkdir -p "$subpkgdir"/usr/share/doc/ || return 1 - mv "$pkgdir"/usr/share/doc/clang "$subpkgdir"/usr/share/doc/ || return 1 +static() { + pkgdesc="LLVM static libraries" + depends= + mkdir -p "$subpkgdir"/usr/lib + mv "$pkgdir"/usr/lib/*.a "$subpkgdir"/usr/lib/ } libs() { @@ -313,55 +187,58 @@ libs() { md5sums="f1e14e949f8df3047c59816c55278cec llvm-3.6.0.src.tar.xz e3012065543dc6ab8a9842b09616b78d cfe-3.6.0.src.tar.xz -85a170713a0b15a728b0cfd7b63c546c clang-tools-extra-3.6.0.src.tar.xz cc36dbcafe43406083e98bc9e74f8054 compiler-rt-3.6.0.src.tar.xz -dd8e9953b54b2f783cdf111e31adf9ce llvm-0001-fix-shared-build.patch -1a9472a91fa50f3a844ad21d33242aa2 llvm-0002-musl-triple.patch -3254a34a4c87ed5e6d4730972f7807ed llvm-0003-musl-hacks.patch -5c0fbb582bbd9c6e6999830c720ea5be compiler-rt-0001-musl-no-dlvsym.patch -3ae77dfa18a7ac0a787e34f599d5c71d compiler-rt-0002-musl-no-sanitizers.patch -4f964e4a6ed8de0a9ee55f94fb8d1a64 clang-0001-fix-stdint.h.patch -ee28027eff24641b13ae19a04746fd6a clang-0002-fix-unwind-header.patch -e61b007324f9ab08b13ae0a249400ee1 clang-0003-add-alpine-linux-distro.patch -fe5108b7c78d4493200f84d9f39f70ac clang-0004-alpine-use-z-relro.patch -2b39912685835682633c4d11aa39f400 clang-0005-alpine-hash-style-gnu.patch -eafaf62d4938aa34d1902c46288f5f35 clang-0006-musl-alpine-triple.patch -0f206f7c8a29263d19bda41b48ec4ae8 clang-0007-musl-dynamic-linker-paths.patch -f3537e99223c975bbc4abef21f7ced7f clang-0008-alpine-PIE-by-default.patch -0ae0c5939c27750c52b39158fbc7a7a9 clang-0009-pass-host-triple-to-compiler-rt.patch" +178eecb7554f893198716e35245fc3c9 llvm-3.5-gcc-4.9.patch +74f92f6719995be866f461a29a7c8112 llvm-3.6-musl-triple.patch +3068c2bc0dd0f694d002d992743401ac llvm-3.6-musl.patch +b1732677fb7641c13300a98bdd47d467 compiler-rt-3.6-musl-disable-sanitizers.patch +a56d3a3da587b5936e338d85947bd16f compiler-rt-3.6-musl-no-dlvsym.patch +be9b343bacbd220a154b0a773bcd3bd3 clang-3.5-fix-stdint.patch +02df7f41728ceb3b401dd3972531d4ec clang-3.6-fix-unwind-chain-inclusion.patch +9790d1131f498f5957e0107727489704 clang-3.6-remove-lgcc-when-using-compiler-rt.patch +74612f41b5bda8f05be5cf2e59eebd26 clang-3.6-add-alpine-distro.patch +dbf4e6686137d097768e971c0efd4a0b clang-3.6-alpine-use-z-relro.patch +7495743d3c85ad48fd7ab9ca1f674884 clang-3.6-alpine-hash-style-gnu.patch +a26e050907fae3f8ac51375826f9767c clang-3.6-default-runtime-compiler-rt.patch +bf66b2ce06519085484776e40290118a clang-3.6-musl-alpine-triple.patch +28266841c807bd3835186ad32942ac11 clang-3.6-musl-fix-dynamic-linker-paths.patch +b7e213b69c848ad1bcb98a798a2f9d1d clang-3.6-musl-use-init-array.patch +01eb6923bfa059e36ab39f44b2b6f03f clang-3.6-musl-no-use-cxa-atexit.patch" sha256sums="b39a69e501b49e8f73ff75c9ad72313681ee58d6f430bfad4d81846fe92eb9ce llvm-3.6.0.src.tar.xz be0e69378119fe26f0f2f74cffe82b7c26da840c9733fe522ed3c1b66b11082d cfe-3.6.0.src.tar.xz -3aa949ba82913490a75697287d9ee8598c619fae0aa6bb8fddf0095ff51bc812 clang-tools-extra-3.6.0.src.tar.xz 7f49fb79e5adcdce7dddaf973f1db130228dfb19e37a99a7f5365a6948b26b11 compiler-rt-3.6.0.src.tar.xz -d6d425bfc40908158fdee6160dd43f3804c320efec8637207196deccae7bae63 llvm-0001-fix-shared-build.patch -67fed034e986b60e71d1fb546ca36529972c03e0b370f8e01b34f183ce6920e5 llvm-0002-musl-triple.patch -0b49b6914999140ee6f8084b7506d1933860d73332ea8e3d4e4096f4bb6f1510 llvm-0003-musl-hacks.patch -82c38857bcbfd96e857299d0db7070b5f09d2edb3a32fb9d2e26a51a27e5f86a compiler-rt-0001-musl-no-dlvsym.patch -124d9f48a0127747073c2ed36aadfd0cc747f580978f9c0ce329632190afc200 compiler-rt-0002-musl-no-sanitizers.patch -4212f7a2de9544545aa88b0061f32e01962813e8271650e6f452de7eee5a4895 clang-0001-fix-stdint.h.patch -443305f3ac60502a210339d1bf28e1f2b79cb4dd1274ba4458da354b7a2f529a clang-0002-fix-unwind-header.patch -a958600c5fc8a67fb59266e0f7759b7ec959042358470f802f9b3385fb0cac9b clang-0003-add-alpine-linux-distro.patch -d08fb6de8aae75439b38a945773ddfe77e0f0d0f01ef03c3d087a8dbdfa01a7f clang-0004-alpine-use-z-relro.patch -624a99a4f8354e9179b8d7705c0f0db9368f074023ccf3a2186235c49050b6be clang-0005-alpine-hash-style-gnu.patch -88f60113909a57c3ae428e219d8e81d0355aa102c34d853db3b19627d8724608 clang-0006-musl-alpine-triple.patch -069e5974573d1f6efc784cf4e3027f2197c50319a5787cffff825f3253c525dd clang-0007-musl-dynamic-linker-paths.patch -2512ede893e2af8d7b3df4f490427b77af726b06336e84a74169d427f69ff438 clang-0008-alpine-PIE-by-default.patch -ec0c2014d455040499f599dc3d690fb92e54baf6058605be5f25c2c845629cfe clang-0009-pass-host-triple-to-compiler-rt.patch" +96851b9d89647276f4611ea7db59f84240a727b199925ee6c9599f959fc7bd05 llvm-3.5-gcc-4.9.patch +fbe1bab0aa5eb8c54ac1ed0f7d27212efd597c8eaa889599549d0defe82bc7c9 llvm-3.6-musl-triple.patch +f1ca24437533c5022d591b8b9a5ea7f0494e984a5c24ef1e5dcf71dbee0df240 llvm-3.6-musl.patch +d5aa68e35fe3fe0cb2393d3abecd80987c4876f332ca03b55f03bcd82b2b720d compiler-rt-3.6-musl-disable-sanitizers.patch +90a582ef8561ed4953feae7f19f3a30856da845174ae93e7acdb4bc088be5b78 compiler-rt-3.6-musl-no-dlvsym.patch +a41aa73b9edcf0588d61e17e9d53738e9e16209eac9c5488eaef7770ab1517d1 clang-3.5-fix-stdint.patch +2c73e2c6f3e90e2535e0662714645fc4d1189b4b1beb5a0ebb6ba1af62580d23 clang-3.6-fix-unwind-chain-inclusion.patch +dea41fd9eb16d2c3b9b73ad1ee3af2923b26f806185494835c899700ec6830f4 clang-3.6-remove-lgcc-when-using-compiler-rt.patch +4f68d475947eb35515231fdf23dc5a92f656038ca21b0d3d0ea110129b07d313 clang-3.6-add-alpine-distro.patch +ba0dd990424699b92b79c8511143cbf33766e8d2009a979928e9b8229fa3cfba clang-3.6-alpine-use-z-relro.patch +46f4c3c08bee21cc9051181108776f37acc7e9589c85f62dbd6a842b842f5a43 clang-3.6-alpine-hash-style-gnu.patch +8c8295e10453e89d8ae70d709a91f186ea5e279494ab538e28339d9d2efa3ae8 clang-3.6-default-runtime-compiler-rt.patch +da420dda54b0058140a4ade99de49e617c2533857ccb327d95bf51027bb0bcf8 clang-3.6-musl-alpine-triple.patch +03c392733933198adbb3e6cb2eb9ed95e8d01f7d013e3fe2d12a8f1001b73893 clang-3.6-musl-fix-dynamic-linker-paths.patch +03709cff62464ef2afdaa2bfaccf4dffd5d3e20eee561fb94e486a2912d8a6e6 clang-3.6-musl-use-init-array.patch +3d5c097ab1a4e4cfadeeb11aef66a90daaff11095dd3349f25832bedc317cac8 clang-3.6-musl-no-use-cxa-atexit.patch" sha512sums="ca492b7d86333f05930dc849c7a8beff981da51ca174cd844650b516d0a592a2c3837d5a8a9b62713c0f29292b845f27ef0ec361809e325c6b60cbbcd3f20357 llvm-3.6.0.src.tar.xz dc137bdf9c2c5adb25498c995f0b944016699267156a595cc1fe6127f6961d45162275023d194db42691d80fa8fc74f56abad9c145ef1ff492881f547ca76cfe cfe-3.6.0.src.tar.xz -52e0cd3cce3047bb98d52e5c03ac4a8c549fcdc628f57492727f3e7659b2d4bd29ad98ab4ebab387233911fbb098861ec020b28c051e6b2c17d73dd490beebf3 clang-tools-extra-3.6.0.src.tar.xz 2758bc2b78dcfb9b6509b83ebc4ebc86907ca3dc2a5f151f580771c674b934432cae055e342ed73096a08331b2f7b129ff65629b27932458b1877aeb554b6328 compiler-rt-3.6.0.src.tar.xz -4878becb5e28fa1f29f0e46b643a8df688f53a48b0c6988d3f581fabca3a5812af12d197e0a9b38e324b83c53026304070fa09fb9dc7c1b5532ab8488fcc7356 llvm-0001-fix-shared-build.patch -e543093f1385e8fcd94780a2f7887a51a13b6eaf0ef8c07be827851cac918376f45936f9bed341e30bd83a3557e67165f31977b3d7350932e8c94b7fc6356bf6 llvm-0002-musl-triple.patch -d73b6fc0525e4800e9629411d727b7457f1298cd798022aa1b1c7699f21c7c461cd5473f19ef0c2ab8dba15d81b2950e890bce10bcb9c2dcdb7bae4e8d9db4ca llvm-0003-musl-hacks.patch -0e99e707794d260b193cd601914a47f1d138c21e1de6fdb67a6ebfa7035fda190fc41041e03ccca564bbecc739b8efaf1ae6000e8b35b0de528b28820b28bf2c compiler-rt-0001-musl-no-dlvsym.patch -b3475eb64891eddd5a135c89d5d9eb479497e2dd04d114ffe7518a4a4117d5f011985a13c77d83b07bd6c6e5fe625d21d791bb671d112014f2ef1b77fedd74ce compiler-rt-0002-musl-no-sanitizers.patch -266e1af8c495201e60e909de37a3c705670ad6b9d07dc29926c34e65fba19b0b60b39a0189c4fdb0222e7c061a4378f56dfc7286dcd5d6f9a67a823c13f1d840 clang-0001-fix-stdint.h.patch -d550193133ac8baf435c73865a90a6bf5b3c5e0e0dd308d4f413043d2ca3f63b4edb2cda9f282f4632e1e6e8974aba83febfffdf923fedd5d760c5ada26e9c73 clang-0002-fix-unwind-header.patch -3f31200835b4e9e7067191c9610a732b036318c17c38db6da380cbf7d7df8184507e819844fe92f01afc676d7dcf266bf28a6bbe26aa5fe208ef99885b42753c clang-0003-add-alpine-linux-distro.patch -46cb2d09fe25c98ab38db31a46b62570bbf0647847a30e8f568081121a727b70acf1a94b2d6b977d2ca6a68893370d7ffe59b80c7f492a8aba74592795437bbb clang-0004-alpine-use-z-relro.patch -c9dea90fefdaccb01190ea0e170918252cb4c355b5ffc8ebe55c1154fa97247ab9d9e26157bbf4fbe02ebd5b06bb5257adeae1e7efdaf1327d8e672c85799dce clang-0005-alpine-hash-style-gnu.patch -77b12b357b316206df7a3187a72c50b625990df7fb56de7ab811dc500ed982086e1d02491b8661df92fd0da9849a50057d36ad34fa40f6addfd674e66d0edb8e clang-0006-musl-alpine-triple.patch -73699c0dd5a1960caf00d997aa95a88a178d9aa9dc86d05e404d6ad9ac8c54d450d58870aa54e0cd75f6e29ec3ee034118a1db735a9583665d34c62cdb2c0ae3 clang-0007-musl-dynamic-linker-paths.patch -2e3c6b519bb07915bf02ee2b12d4a5e28197c22d89f4ffe92f4cc485c2ba00d94faf91473a6219cb2af89e986ea7bf05a6dfa94f20f6c5919818b053bf40df38 clang-0008-alpine-PIE-by-default.patch -7628c1b12febb27d0a9ecb846205edec61044fbb963ba5e588863652bccbb05d1436febf8840ff4b47dfb326689bb142464be59a18b17bd5d30aa03bb7e76a9f clang-0009-pass-host-triple-to-compiler-rt.patch" +a16f175c75893ac58350e0573012a66c1e8908e94a03197ca50b147eb492402e706e4816b80428ccdf92a112673ec8552a0d5dc699dc95250e756c161328d9f2 llvm-3.5-gcc-4.9.patch +a084b995b2ea65c19da5e000459c993d5a3396f0eb4f6d6ec29299d98f3df8ee6f23723f8d19e93ef906861bb83dbba5c05b8cf7801f92c8748b8687247e25d2 llvm-3.6-musl-triple.patch +e3f4203679c978cbf359200de0cd60c0adcc58c92611ec70b4b991c6612e0b41b67c19c9994769302284edb953e258d3717ec32d90abbd9bdeff3739aa5ffb18 llvm-3.6-musl.patch +e9cf172aac82b5e4680d4c6fb25f11e04d1db75ad4e99f7117c08631ca8a7955677fc046f58b6eef05f9e98ef0374eb9248b5674aa26b08d9f7efd30525740be compiler-rt-3.6-musl-disable-sanitizers.patch +8cde42c93a1eda14d31f8e51ffd00d031f10071e9a4ee91fa9b08ef5b8e7bf9ec32ccd102b652e35e6f75d1339d934daa68185529ca6dba74e61f979a27498f3 compiler-rt-3.6-musl-no-dlvsym.patch +764382fc79598ca85c9c500d16e02a2710025416dc9bd8a7407aad38e663dee9539e47a1ae763b45c36cd86c4ff5853c4799835cd7363a3a208191ae7a703321 clang-3.5-fix-stdint.patch +4cbabce34b7352bf5a043db3abe8931f58adce4fda80846c39b63399a025cbbac572052d3f0f598466bc9dca23b8ff88e655b10bf54b3870bc4e6f4225b6f558 clang-3.6-fix-unwind-chain-inclusion.patch +d50aa3271e9247896bd3df5a55c987da81a01892af8afbd0483cff4c0467b2dc438fa9166d1aaeaf5165555c30d4a2af68c3bdbfa8fba798c2ca124172cf2642 clang-3.6-remove-lgcc-when-using-compiler-rt.patch +f5fa5aa1b2a559215792a98806b18b32ce6b82e57afb09aa3886b22f71420c8377b784f55610b4948185e115b39aeeaf1f27625d0d91dbd3b146e4986eb29c54 clang-3.6-add-alpine-distro.patch +61d0113e2287b82d27b4d08ed98e8f2dad864a36a295f9d8a28d54b6b8516ecda2986d402ba04146976e25e35198e12d567df80979c88081369ac386fa213a0f clang-3.6-alpine-use-z-relro.patch +1982e8b84415fa314b040cbecac38640d754105b5af2c26d5aa7ca74d7ef14cc074bf7a5537dc492a7051d8f94035a1d69de2e913eabee7fcd1b50d6f6f126f7 clang-3.6-alpine-hash-style-gnu.patch +b906ff5a59c83e553d67b2574bcd3c22e7975b487ad928f9e0db0a07ffb54c5e412d4527401db63f1de94884410709b4fe637e12d36fa0c0661f69fd88f09c25 clang-3.6-default-runtime-compiler-rt.patch +d2192b615307a762d324a1643dae33bc8a97e22e6a9dd712f9a243c6d3f728c9f9f036ce34d4137c8537651d78332ad8b98fd7f325648ac68e1bda54f5f58348 clang-3.6-musl-alpine-triple.patch +d3f6c97bdfccdab056aef149413108eb1fdf68d10782cdb1a50695a8e2e53432555a73c640ae635c697d41330c7869acc864b9f0fedbb1a4cba6d13785168564 clang-3.6-musl-fix-dynamic-linker-paths.patch +4ae8409f3d03e8b30cbe33be507a43194ff6f3e6ce6467d3341ff08f08b12a22517a4c4b012f1b1029d956f8c486412353d937f316a7648a5be14549555aecae clang-3.6-musl-use-init-array.patch +20cddcf4289bb50bedac2636d32824860252617545d85c5cdc13f630a6f8be2be2a7e018401de4cec0a78bafc1f940ed8d565c2cda518b73290cf3ced4d0807e clang-3.6-musl-no-use-cxa-atexit.patch" diff --git a/main/llvm/clang-0003-add-alpine-linux-distro.patch b/main/llvm/clang-0003-add-alpine-linux-distro.patch deleted file mode 100644 index b3c24dd382..0000000000 --- a/main/llvm/clang-0003-add-alpine-linux-distro.patch +++ /dev/null @@ -1,34 +0,0 @@ -From ab87f035bb1c8bd37bf1fd99e6dcee4408c50929 Mon Sep 17 00:00:00 2001 -From: Travis Tilley <ttilley@gmail.com> -Date: Tue, 28 Apr 2015 20:25:17 -0400 -Subject: [PATCH 3/8] add alpine linux distro - ---- - lib/Driver/ToolChains.cpp | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp -index 8bd8298..620a44a 100644 ---- a/lib/Driver/ToolChains.cpp -+++ b/lib/Driver/ToolChains.cpp -@@ -2672,6 +2672,7 @@ Tool *Solaris::buildLinker() const { - /// Distribution (very bare-bones at the moment). - - enum Distro { -+ AlpineLinux, - ArchLinux, - DebianLenny, - DebianSqueeze, -@@ -2783,6 +2784,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; - } - --- -2.1.4 - diff --git a/main/llvm/clang-0004-alpine-use-z-relro.patch b/main/llvm/clang-0004-alpine-use-z-relro.patch deleted file mode 100644 index c7fe94bed1..0000000000 --- a/main/llvm/clang-0004-alpine-use-z-relro.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 383827121a633f2cf93535487e991efd6e4ff577 Mon Sep 17 00:00:00 2001 -From: Travis Tilley <ttilley@gmail.com> -Date: Tue, 28 Apr 2015 20:25:51 -0400 -Subject: [PATCH 4/8] alpine-use-z-relro.patch - ---- - lib/Driver/ToolChains.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp -index 620a44a..006915c 100644 ---- a/lib/Driver/ToolChains.cpp -+++ b/lib/Driver/ToolChains.cpp -@@ -2939,7 +2939,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) - - Distro Distro = DetectDistro(Arch); - -- if (IsOpenSUSE(Distro) || IsUbuntu(Distro)) { -+ if (IsOpenSUSE(Distro) || IsUbuntu(Distro) || Distro == AlpineLinux) { - ExtraOpts.push_back("-z"); - ExtraOpts.push_back("relro"); - } --- -2.1.4 - diff --git a/main/llvm/clang-0008-alpine-PIE-by-default.patch b/main/llvm/clang-0008-alpine-PIE-by-default.patch deleted file mode 100644 index 04c745c09e..0000000000 --- a/main/llvm/clang-0008-alpine-PIE-by-default.patch +++ /dev/null @@ -1,67 +0,0 @@ -From fec8bdd3fc2d45dc1da8e6b94c1b264a6431685e Mon Sep 17 00:00:00 2001 -From: Travis Tilley <ttilley@gmail.com> -Date: Sat, 9 May 2015 23:02:45 -0400 -Subject: [PATCH 8/8] enable PIE by default behavior on alpine linux add -nopie - flag for disabling this behavior - ---- - lib/Driver/ToolChains.cpp | 3 +++ - lib/Driver/Tools.cpp | 4 +++- - test/Driver/pic.c | 12 ++++++++++++ - 3 files changed, 18 insertions(+), 1 deletion(-) - -diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp -index 44e929f..3f25a36 100644 ---- a/lib/Driver/ToolChains.cpp -+++ b/lib/Driver/ToolChains.cpp -@@ -3397,6 +3397,9 @@ void Linux::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs, - } - - bool Linux::isPIEDefault() const { -+ StringRef VendorName = Linux::getTriple().getVendorName(); -+ if (VendorName.compare("alpine") == 0) -+ return true; - return getSanitizerArgs().requiresPIE(); - } - -diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp -index 3e71522..9a0fc84 100644 ---- a/lib/Driver/Tools.cpp -+++ b/lib/Driver/Tools.cpp -@@ -7462,7 +7462,9 @@ void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA, - if (!D.SysRoot.empty()) - CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot)); - -- if (IsPIE) -+ if (Args.hasArg(options::OPT_nopie)) -+ CmdArgs.push_back("-nopie"); -+ else if (IsPIE) - CmdArgs.push_back("-pie"); - - if (Args.hasArg(options::OPT_rdynamic)) -diff --git a/test/Driver/pic.c b/test/Driver/pic.c -index a3d989c..b1a55ae 100644 ---- a/test/Driver/pic.c -+++ b/test/Driver/pic.c -@@ -225,6 +225,18 @@ - // RUN: %clang %s -target i386-pc-openbsd -nopie -### 2>&1 \ - // RUN: | FileCheck %s --check-prefix=CHECK-NOPIE-LD - // -+// On Alpine Linux, we want similar PIE-by-default behavior -+// RUN: %clang -c %s -target x86_64-alpine-linux-musl -### 2>&1 \ -+// RUN: | FileCheck %s --check-prefix=CHECK-PIE2 -+// RUN: %clang -c %s -target i686-alpine-linux-musl -### 2>&1 \ -+// RUN: | FileCheck %s --check-prefix=CHECK-PIE2 -+// RUN: %clang -c %s -target armv6-alpine-linux-musleabihf -### 2>&1 \ -+// RUN: | FileCheck %s --check-prefix=CHECK-PIE2 -+// RUN: %clang -c %s -target armv7-alpine-linux-musleabihf -### 2>&1 \ -+// RUN: | FileCheck %s --check-prefix=CHECK-PIE2 -+// RUN: %clang %s -target x86_64-alpine-linux-musl -nopie -### 2>&1 \ -+// RUN: | FileCheck %s --check-prefix=CHECK-NOPIE-LD -+// - // On Android PIC is enabled by default - // RUN: %clang -c %s -target i686-linux-android -### 2>&1 \ - // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 --- -2.1.4 - diff --git a/main/llvm/clang-0009-pass-host-triple-to-compiler-rt.patch b/main/llvm/clang-0009-pass-host-triple-to-compiler-rt.patch deleted file mode 100644 index 89174112b6..0000000000 --- a/main/llvm/clang-0009-pass-host-triple-to-compiler-rt.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git i/runtime/CMakeLists.txt w/runtime/CMakeLists.txt -index 9f1cd78..5b3da2e 100644 ---- i/runtime/CMakeLists.txt -+++ w/runtime/CMakeLists.txt -@@ -46,6 +46,7 @@ if(LLVM_BUILD_EXTERNAL_COMPILER_RT AND EXISTS ${COMPILER_RT_SRC_ROOT}/) - -DCOMPILER_RT_INSTALL_PATH=lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION} - -DCOMPILER_RT_INCLUDE_TESTS=${LLVM_INCLUDE_TESTS} - -DCOMPILER_RT_ENABLE_WERROR=ON -+ -DLLVM_HOST_TRIPLE=${LLVM_HOST_TRIPLE} - INSTALL_COMMAND "" - STEP_TARGETS configure build - ) diff --git a/main/llvm/clang-0001-fix-stdint.h.patch b/main/llvm/clang-3.5-fix-stdint.patch index 1288aab5ad..4db83d5b19 100644 --- a/main/llvm/clang-0001-fix-stdint.h.patch +++ b/main/llvm/clang-3.5-fix-stdint.patch @@ -1,12 +1,3 @@ -From df7be8fa2f40672a872a0aea2266fcbf96a10374 Mon Sep 17 00:00:00 2001 -From: Travis Tilley <ttilley@gmail.com> -Date: Mon, 27 Apr 2015 08:30:55 -0400 -Subject: [PATCH 1/8] fix stdint.h - ---- - lib/Headers/stdint.h | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - diff --git a/lib/Headers/stdint.h b/lib/Headers/stdint.h index 0303db9..8ca28df 100644 --- a/lib/Headers/stdint.h @@ -36,6 +27,3 @@ index 0303db9..8ca28df 100644 -#endif /* __STDC_HOSTED__ */ #endif /* __CLANG_STDINT_H */ +#endif /* __STDC_HOSTED__ */ --- -2.1.4 - diff --git a/main/llvm/clang-3.6-add-alpine-distro.patch b/main/llvm/clang-3.6-add-alpine-distro.patch new file mode 100644 index 0000000000..9b959d335d --- /dev/null +++ b/main/llvm/clang-3.6-add-alpine-distro.patch @@ -0,0 +1,34 @@ +diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp +index f789fd5..6d75b4b 100644 +--- a/lib/Driver/ToolChains.cpp ++++ b/lib/Driver/ToolChains.cpp +@@ -2667,12 +2673,13 @@ Tool *Solaris::buildLinker() const { + return new tools::solaris::Link(*this); + } + + /// Distribution (very bare-bones at the moment). + + enum Distro { ++ AlpineLinux, + ArchLinux, + DebianLenny, + DebianSqueeze, + DebianWheezy, + DebianJessie, + Exherbo, +@@ -2778,12 +2785,15 @@ static Distro DetectDistro(llvm::Triple::ArchType Arch) { + if (llvm::sys::fs::exists("/etc/exherbo-release")) + return Exherbo; + + if (llvm::sys::fs::exists("/etc/arch-release")) + return ArchLinux; + ++ if (llvm::sys::fs::exists("/etc/alpine-release")) ++ return AlpineLinux; ++ + return UnknownDistro; + } + + /// \brief Get our best guess at the multiarch triple for a target. + /// + /// Debian-based systems are starting to use a multiarch setup where they use diff --git a/main/llvm/clang-0005-alpine-hash-style-gnu.patch b/main/llvm/clang-3.6-alpine-hash-style-gnu.patch index 36e8506a05..ee1f7c0f31 100644 --- a/main/llvm/clang-0005-alpine-hash-style-gnu.patch +++ b/main/llvm/clang-3.6-alpine-hash-style-gnu.patch @@ -1,17 +1,8 @@ -From 60d9da20f29f8121ee6b383c49249d04141efc4b Mon Sep 17 00:00:00 2001 -From: Travis Tilley <ttilley@gmail.com> -Date: Tue, 28 Apr 2015 20:26:27 -0400 -Subject: [PATCH 5/8] alpine-hash-style-gnu.patch - ---- - lib/Driver/ToolChains.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp -index 006915c..6007a98 100644 +index efa9541..1c6a6d5 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp -@@ -2959,7 +2959,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) +@@ -2963,7 +2963,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) // ABI requires a mapping between the GOT and the symbol table. // Android loader does not support .gnu.hash. if (!IsMips && !IsAndroid) { @@ -19,7 +10,3 @@ index 006915c..6007a98 100644 + if (IsRedhat(Distro) || IsOpenSUSE(Distro) || Distro == AlpineLinux || (IsUbuntu(Distro) && Distro >= UbuntuMaverick)) ExtraOpts.push_back("--hash-style=gnu"); - --- -2.1.4 - diff --git a/main/llvm/clang-3.6-alpine-use-z-relro.patch b/main/llvm/clang-3.6-alpine-use-z-relro.patch new file mode 100644 index 0000000000..bd7cea08c8 --- /dev/null +++ b/main/llvm/clang-3.6-alpine-use-z-relro.patch @@ -0,0 +1,19 @@ +diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp +index f789fd5..6d75b4b 100644 +--- a/lib/Driver/ToolChains.cpp ++++ b/lib/Driver/ToolChains.cpp +@@ -2930,13 +2940,13 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) + GCCInstallation.getTriple().str() + "/bin").str()); + + Linker = GetLinkerPath(); + + Distro Distro = DetectDistro(Arch); + +- if (IsOpenSUSE(Distro) || IsUbuntu(Distro)) { ++ if (IsOpenSUSE(Distro) || IsUbuntu(Distro) || Distro == AlpineLinux) { + ExtraOpts.push_back("-z"); + ExtraOpts.push_back("relro"); + } + + if (Arch == llvm::Triple::arm || Arch == llvm::Triple::thumb) + ExtraOpts.push_back("-X"); diff --git a/main/llvm/clang-3.6-default-runtime-compiler-rt.patch b/main/llvm/clang-3.6-default-runtime-compiler-rt.patch new file mode 100644 index 0000000000..f4bf20cf9b --- /dev/null +++ b/main/llvm/clang-3.6-default-runtime-compiler-rt.patch @@ -0,0 +1,27 @@ +diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp +index 1c6a6d5..7377f72 100644 +--- a/lib/Driver/ToolChains.cpp ++++ b/lib/Driver/ToolChains.cpp +@@ -3395,6 +3395,10 @ void Linux::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs, + } + } + ++ToolChain::RuntimeLibType Linux::GetDefaultRuntimeLibType() const { ++ return ToolChain::RLT_CompilerRT; ++} ++ + bool Linux::isPIEDefault() const { + return getSanitizerArgs().requiresPIE(); + } +diff --git a/lib/Driver/ToolChains.h b/lib/Driver/ToolChains.h +index 47fb10d..88aee51 100644 +--- a/lib/Driver/ToolChains.h ++++ b/lib/Driver/ToolChains.h +@@ -640,6 +640,7 @@ public: + void + AddClangCXXStdlibIncludeArgs(const llvm::opt::ArgList &DriverArgs, + llvm::opt::ArgStringList &CC1Args) const override; ++ RuntimeLibType GetDefaultRuntimeLibType() const override; + bool isPIEDefault() const override; + + std::string Linker; diff --git a/main/llvm/clang-0002-fix-unwind-header.patch b/main/llvm/clang-3.6-fix-unwind-chain-inclusion.patch index 1b86de2c47..2ead52f0a6 100644 --- a/main/llvm/clang-0002-fix-unwind-header.patch +++ b/main/llvm/clang-3.6-fix-unwind-chain-inclusion.patch @@ -1,12 +1,3 @@ -From 757d99457c9dffe5e7d9a300f14728ecaa8db868 Mon Sep 17 00:00:00 2001 -From: Travis Tilley <ttilley@gmail.com> -Date: Mon, 27 Apr 2015 08:38:38 -0400 -Subject: [PATCH 2/8] fix unwind header inclusion - ---- - lib/Headers/unwind.h | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - diff --git a/lib/Headers/unwind.h b/lib/Headers/unwind.h index 90aca16..ef96969 100644 --- a/lib/Headers/unwind.h @@ -40,6 +31,3 @@ index 90aca16..ef96969 100644 #endif -#endif /* __CLANG_UNWIND_H */ --- -2.1.4 - diff --git a/main/llvm/clang-0006-musl-alpine-triple.patch b/main/llvm/clang-3.6-musl-alpine-triple.patch index d9b6982c9a..86cf2a4788 100644 --- a/main/llvm/clang-0006-musl-alpine-triple.patch +++ b/main/llvm/clang-3.6-musl-alpine-triple.patch @@ -1,17 +1,11 @@ -From 1001e7fa6c2e5ec9d82b78c31e4be56765b5722b Mon Sep 17 00:00:00 2001 -From: Travis Tilley <ttilley@gmail.com> -Date: Tue, 28 Apr 2015 20:26:50 -0400 -Subject: [PATCH 6/8] musl-alpine-triple.patch - ---- - lib/Driver/ToolChains.cpp | 11 ++++++++--- - 1 file changed, 8 insertions(+), 3 deletions(-) - diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp -index 6007a98..44e929f 100644 +index f789fd5..6d75b4b 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp -@@ -1296,7 +1296,9 @@ bool Generic_GCC::GCCInstallationDetector::getBiarchSibling(Multilib &M) const { +@@ -1293,33 +1293,38 @@ bool Generic_GCC::GCCInstallationDetector::getBiarchSibling(Multilib &M) const { + "aarch64_be-linux-gnu" }; + + static const char *const ARMLibDirs[] = { "/lib" }; static const char *const ARMTriples[] = { "arm-linux-gnueabi", "arm-linux-androideabi" }; static const char *const ARMHFTriples[] = { "arm-linux-gnueabihf", @@ -22,7 +16,11 @@ index 6007a98..44e929f 100644 static const char *const ARMebLibDirs[] = { "/lib" }; static const char *const ARMebTriples[] = { "armeb-linux-gnueabi", "armeb-linux-androideabi" }; -@@ -1308,7 +1310,8 @@ bool Generic_GCC::GCCInstallationDetector::getBiarchSibling(Multilib &M) const { + static const char *const ARMebHFTriples[] = { "armeb-linux-gnueabihf", + "armebv7hl-redhat-linux-gnueabi" }; + + 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", @@ -32,7 +30,7 @@ index 6007a98..44e929f 100644 }; static const char *const X32LibDirs[] = { "/libx32" }; static const char *const X86LibDirs[] = { "/lib32", "/lib" }; -@@ -1316,7 +1319,9 @@ bool Generic_GCC::GCCInstallationDetector::getBiarchSibling(Multilib &M) const { + 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", @@ -41,8 +39,8 @@ index 6007a98..44e929f 100644 + "i486-alpine-linux-musl", "i486-pc-linux-musl", + "i686-alpine-linux-musl", "i686-pc-linux-musl" }; - - static const char *const MIPSLibDirs[] = { "/lib" }; --- -2.1.4 + static const char *const MIPSLibDirs[] = { "/lib" }; + static const char *const MIPSTriples[] = { "mips-linux-gnu", + "mips-mti-linux-gnu", + "mips-img-linux-gnu" }; diff --git a/main/llvm/clang-0007-musl-dynamic-linker-paths.patch b/main/llvm/clang-3.6-musl-fix-dynamic-linker-paths.patch index 2c9fc83f48..27c17728ce 100644 --- a/main/llvm/clang-0007-musl-dynamic-linker-paths.patch +++ b/main/llvm/clang-3.6-musl-fix-dynamic-linker-paths.patch @@ -1,12 +1,3 @@ -From c914c8a347cc57261fa7b185f020ae2a60d8c527 Mon Sep 17 00:00:00 2001 -From: Travis Tilley <ttilley@gmail.com> -Date: Tue, 28 Apr 2015 20:27:13 -0400 -Subject: [PATCH 7/8] fix dynamic linker paths for musl - ---- - lib/Driver/Tools.cpp | 31 +++++++++++++++++++++++++------ - 1 file changed, 25 insertions(+), 6 deletions(-) - diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 75eef9e..3e71522 100644 --- a/lib/Driver/Tools.cpp @@ -65,6 +56,3 @@ index 75eef9e..3e71522 100644 } static void AddRunTimeLibs(const ToolChain &TC, const Driver &D, --- -2.1.4 - diff --git a/main/llvm/clang-3.6-musl-no-use-cxa-atexit.patch b/main/llvm/clang-3.6-musl-no-use-cxa-atexit.patch new file mode 100644 index 0000000000..d1c23b0992 --- /dev/null +++ b/main/llvm/clang-3.6-musl-no-use-cxa-atexit.patch @@ -0,0 +1,14 @@ +diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp +index 08e4439..4e5a594 100644 +--- a/lib/Driver/Tools.cpp ++++ b/lib/Driver/Tools.cpp +@@ -3978,7 +3978,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, + options::OPT_fno_use_cxa_atexit, + !IsWindowsCygnus && !IsWindowsGNU && + getToolChain().getArch() != llvm::Triple::hexagon && +- getToolChain().getArch() != llvm::Triple::xcore) || ++ getToolChain().getArch() != llvm::Triple::xcore && ++ getToolChain().getTriple().getEnvironment() != llvm::Triple::Musl) || + KernelOrKext) + CmdArgs.push_back("-fno-use-cxa-atexit"); + diff --git a/main/llvm/clang-3.6-musl-use-init-array.patch b/main/llvm/clang-3.6-musl-use-init-array.patch new file mode 100644 index 0000000000..ae632aabf9 --- /dev/null +++ b/main/llvm/clang-3.6-musl-use-init-array.patch @@ -0,0 +1,20 @@ +diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp +index f789fd5..6d75b4b 100644 +--- a/lib/Driver/ToolChains.cpp ++++ b/lib/Driver/ToolChains.cpp +@@ -2080,13 +2085,14 @@ void Generic_ELF::addClangTargetOptions(const ArgList &DriverArgs, + const Generic_GCC::GCCVersion &V = GCCInstallation.getVersion(); + bool UseInitArrayDefault = + getTriple().getArch() == llvm::Triple::aarch64 || + getTriple().getArch() == llvm::Triple::aarch64_be || + (getTriple().getOS() == llvm::Triple::Linux && + (!V.isOlderThan(4, 7, 0) || +- getTriple().getEnvironment() == llvm::Triple::Android)); ++ getTriple().getEnvironment() == llvm::Triple::Android || ++ getTriple().getEnvironment() == llvm::Triple::Musl)); + + if (DriverArgs.hasFlag(options::OPT_fuse_init_array, + options::OPT_fno_use_init_array, + UseInitArrayDefault)) + CC1Args.push_back("-fuse-init-array"); + } diff --git a/main/llvm/clang-3.6-remove-lgcc-when-using-compiler-rt.patch b/main/llvm/clang-3.6-remove-lgcc-when-using-compiler-rt.patch new file mode 100644 index 0000000000..15cfe2f8ae --- /dev/null +++ b/main/llvm/clang-3.6-remove-lgcc-when-using-compiler-rt.patch @@ -0,0 +1,29 @@ +diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp +index 75eef9e..08e4439 100644 +--- a/lib/Driver/Tools.cpp ++++ b/lib/Driver/Tools.cpp +@@ -2154,18 +2154,18 @@ static SmallString<128> getCompilerRT(const ToolChain &TC, StringRef Component, + // FIXME: Make sure we can also emit shared objects if they're requested + // and available, check for possible errors, etc. + static void addClangRT(const ToolChain &TC, const ArgList &Args, + ArgStringList &CmdArgs) { + CmdArgs.push_back(Args.MakeArgString(getCompilerRT(TC, "builtins"))); + +- if (!TC.getTriple().isOSWindows()) { +- // FIXME: why do we link against gcc when we are using compiler-rt? +- CmdArgs.push_back("-lgcc_s"); +- if (TC.getDriver().CCCIsCXX()) +- CmdArgs.push_back("-lgcc_eh"); +- } ++ // if (!TC.getTriple().isOSWindows()) { ++ // // FIXME: why do we link against gcc when we are using compiler-rt? ++ // CmdArgs.push_back("-lgcc_s"); ++ // if (TC.getDriver().CCCIsCXX()) ++ // CmdArgs.push_back("-lgcc_eh"); ++ // } + } + + static void addProfileRT(const ToolChain &TC, const ArgList &Args, + ArgStringList &CmdArgs) { + if (!(Args.hasFlag(options::OPT_fprofile_arcs, options::OPT_fno_profile_arcs, + false) || diff --git a/main/llvm/compiler-rt-0002-musl-no-sanitizers.patch b/main/llvm/compiler-rt-0002-musl-no-sanitizers.patch deleted file mode 100644 index 433895a3b8..0000000000 --- a/main/llvm/compiler-rt-0002-musl-no-sanitizers.patch +++ /dev/null @@ -1,61 +0,0 @@ -From c6a6b4cd6b6516aa01595292086d53f9e47ca599 Mon Sep 17 00:00:00 2001 -From: Travis Tilley <ttilley@gmail.com> -Date: Sat, 9 May 2015 04:17:45 -0400 -Subject: [PATCH 2/2] dont build sanitizers on musl. they currently require too - many extensions to compile. - ---- - cmake/config-ix.cmake | 4 +++- - lib/Makefile.mk | 15 ++++++++------- - 2 files changed, 11 insertions(+), 8 deletions(-) - -diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake -index f6d48b3..26b6d8e 100644 ---- a/cmake/config-ix.cmake -+++ b/cmake/config-ix.cmake -@@ -186,13 +186,15 @@ filter_available_targets(PROFILE_SUPPORTED_ARCH x86_64 i386 i686 arm mips mips64 - filter_available_targets(TSAN_SUPPORTED_ARCH x86_64) - filter_available_targets(UBSAN_SUPPORTED_ARCH x86_64 i386 i686 arm aarch64 mips mipsel mips64 mips64el) - -+string(REGEX MATCH "musl[^-]*$" LLVM_ENV_MUSL ${LLVM_HOST_TRIPLE}) -+ - if(ANDROID) - set(OS_NAME "Android") - else() - set(OS_NAME "${CMAKE_SYSTEM_NAME}") - endif() - --if (SANITIZER_COMMON_SUPPORTED_ARCH AND NOT LLVM_USE_SANITIZER AND -+if (SANITIZER_COMMON_SUPPORTED_ARCH AND NOT LLVM_USE_SANITIZER AND NOT LLVM_ENV_MUSL AND - (OS_NAME MATCHES "Android|Darwin|Linux|FreeBSD" OR - (OS_NAME MATCHES "Windows" AND MSVC AND CMAKE_SIZEOF_VOID_P EQUAL 4))) - set(COMPILER_RT_HAS_SANITIZER_COMMON TRUE) -diff --git a/lib/Makefile.mk b/lib/Makefile.mk -index ed9690d..28e17d9 100644 ---- a/lib/Makefile.mk -+++ b/lib/Makefile.mk -@@ -10,13 +10,14 @@ - SubDirs := - - # Add submodules. --SubDirs += asan -+#SubDirs += asan - SubDirs += builtins --SubDirs += dfsan -+#SubDirs += dfsan - SubDirs += interception --SubDirs += lsan --SubDirs += msan -+#SubDirs += lsan -+#SubDirs += msan - SubDirs += profile --SubDirs += sanitizer_common --SubDirs += tsan --SubDirs += ubsan -+#SubDirs += sanitizer_common -+#SubDirs += tsan -+#SubDirs += ubsan -+ --- -2.1.4 - diff --git a/main/llvm/compiler-rt-3.6-musl-disable-sanitizers.patch b/main/llvm/compiler-rt-3.6-musl-disable-sanitizers.patch new file mode 100644 index 0000000000..c37490ca3f --- /dev/null +++ b/main/llvm/compiler-rt-3.6-musl-disable-sanitizers.patch @@ -0,0 +1,34 @@ +Unfortunately, the sanitizer functionality depends on a variety of GNU +extensions and headers that simply don't exist on a musl based system. Fixing +this would be a fairly complicated task, though some inspiration could be taken +from dpkg's static 'libcompat' approach of supplying equivalent functionality +that might be missing. A task for another day perhaps. + +diff --git a/lib/Makefile.mk b/lib/Makefile.mk +index ed9690d..aacb2b1 100644 +--- a/lib/Makefile.mk ++++ b/lib/Makefile.mk +@@ -7,16 +7,16 @@ + # + #===------------------------------------------------------------------------===# + + SubDirs := + + # Add submodules. +-SubDirs += asan ++# SubDirs += asan + SubDirs += builtins +-SubDirs += dfsan ++# SubDirs += dfsan + SubDirs += interception +-SubDirs += lsan +-SubDirs += msan ++# SubDirs += lsan ++# SubDirs += msan + SubDirs += profile +-SubDirs += sanitizer_common +-SubDirs += tsan +-SubDirs += ubsan ++# SubDirs += sanitizer_common ++# SubDirs += tsan ++# SubDirs += ubsan diff --git a/main/llvm/compiler-rt-0001-musl-no-dlvsym.patch b/main/llvm/compiler-rt-3.6-musl-no-dlvsym.patch index f5761f5ee6..444f4e073b 100644 --- a/main/llvm/compiler-rt-0001-musl-no-dlvsym.patch +++ b/main/llvm/compiler-rt-3.6-musl-no-dlvsym.patch @@ -1,25 +1,19 @@ -From dba6719feee1aab8d4bf881faa7a19b0920af261 Mon Sep 17 00:00:00 2001 -From: Travis Tilley <ttilley@gmail.com> -Date: Tue, 28 Apr 2015 20:24:19 -0400 -Subject: [PATCH 1/2] musl-no-dlvsym.patch - ---- - lib/interception/interception_linux.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - diff --git a/lib/interception/interception_linux.cc b/lib/interception/interception_linux.cc index 6e908ac..7fcf2a6 100644 --- a/lib/interception/interception_linux.cc +++ b/lib/interception/interception_linux.cc -@@ -24,7 +24,7 @@ bool GetRealFunctionAddress(const char *func_name, uptr *func_addr, +@@ -21,13 +21,13 @@ namespace __interception { + bool GetRealFunctionAddress(const char *func_name, uptr *func_addr, + uptr real, uptr wrapper) { + *func_addr = (uptr)dlsym(RTLD_NEXT, func_name); return real == wrapper; } - + -#if !defined(__ANDROID__) // android does not have dlvsym +#if 0 // !defined(__ANDROID__) // android does not have dlvsym void *GetFuncAddrVer(const char *func_name, const char *ver) { return dlvsym(RTLD_NEXT, func_name, ver); } --- -2.1.4 + #endif // !defined(__ANDROID__) + } // namespace __interception diff --git a/main/llvm/llvm-0001-fix-shared-build.patch b/main/llvm/llvm-3.5-gcc-4.9.patch index ceeda806d7..f60c4df723 100644 --- a/main/llvm/llvm-0001-fix-shared-build.patch +++ b/main/llvm/llvm-3.5-gcc-4.9.patch @@ -1,22 +1,19 @@ -From 0d03d2ea17b66d8cb0f6ca5f2181237228535845 Mon Sep 17 00:00:00 2001 -From: Sanjoy Das <sanjoy at azulsystems.com> +commit 080fb498017d17af2e4d7563608c7d8a848f20da +Author: Sanjoy Das <sanjoy at azulsystems.com> Date: Thu Jun 19 15:38:02 2014 -0700 -Subject: [PATCH 1/3] Fix the --enable-shared build. -Currently a build configured with ./configure --enable-shared breaks -with an undefined "llvm::cl::parser<llvm::PassInfo -const*>::getOption(unsigned int) const" symbol when linking opt. This -body for this symbol gets emitted into Pass.o (along with the destructor -for PassNameParser), but gets linked into libLLVM-3.5svn.so with local -visibility, causing the link error. + Fix the --enable-shared build. -This fix uses the existing EXTERN_TEMPLATE machinery to force a globally -visible definition for the functions in parser<const PassInfo *> into -Pass.o. ---- - include/llvm/IR/LegacyPassNameParser.h | 2 ++ - lib/IR/Pass.cpp | 2 ++ - 2 files changed, 4 insertions(+) + Currently a build configured with ./configure --enable-shared breaks + with an undefined "llvm::cl::parser<llvm::PassInfo + const*>::getOption(unsigned int) const" symbol when linking opt. This + body for this symbol gets emitted into Pass.o (along with the destructor + for PassNameParser), but gets linked into libLLVM-3.5svn.so with local + visibility, causing the link error. + + This fix uses the existing EXTERN_TEMPLATE machinery to force a globally + visible definition for the functions in parser<const PassInfo *> into + Pass.o. diff --git a/include/llvm/IR/LegacyPassNameParser.h b/include/llvm/IR/LegacyPassNameParser.h index e2e4912..a07e3fd 100644 @@ -25,7 +22,7 @@ index e2e4912..a07e3fd 100644 @@ -95,6 +95,8 @@ private: } }; - + +EXTERN_TEMPLATE_INSTANTIATION(class cl::parser<const PassInfo *>); + ///===----------------------------------------------------------------------===// @@ -38,12 +35,9 @@ index 91d86ae..00ce223 100644 @@ -234,6 +234,8 @@ PassNameParser::~PassNameParser() { // attempting to remove the registration listener is an error. } - + +TEMPLATE_INSTANTIATION(class cl::parser<const PassInfo *>); + //===----------------------------------------------------------------------===// // AnalysisUsage Class Implementation // --- -2.1.4 - diff --git a/main/llvm/llvm-0002-musl-triple.patch b/main/llvm/llvm-3.6-musl-triple.patch index 1be21a72c7..08919c680e 100644 --- a/main/llvm/llvm-0002-musl-triple.patch +++ b/main/llvm/llvm-3.6-musl-triple.patch @@ -1,23 +1,14 @@ -From b8a0587b17b6c58973bf5463096538a37cc516a5 Mon Sep 17 00:00:00 2001 -From: Travis Tilley <ttilley@gmail.com> -Date: Tue, 28 Apr 2015 20:22:40 -0400 -Subject: [PATCH 2/3] musl triple - ---- - include/llvm/ADT/Triple.h | 4 ++++ - lib/Support/Triple.cpp | 6 ++++++ - lib/Target/ARM/ARMSubtarget.h | 3 +++ - lib/Target/ARM/ARMTargetMachine.cpp | 2 ++ - 4 files changed, 15 insertions(+) - diff --git a/include/llvm/ADT/Triple.h b/include/llvm/ADT/Triple.h index 8a68599..072623c 100644 --- a/include/llvm/ADT/Triple.h +++ b/include/llvm/ADT/Triple.h -@@ -154,6 +154,10 @@ public: +@@ -151,12 +151,16 @@ public: + GNUX32, + CODE16, + EABI, EABIHF, Android, - + + Musl, + MuslEABI, + MuslEABIHF, @@ -25,11 +16,17 @@ index 8a68599..072623c 100644 MSVC, Itanium, Cygnus, + }; + enum ObjectFormatType { + UnknownObjectFormat, diff --git a/lib/Support/Triple.cpp b/lib/Support/Triple.cpp index 0838e90..4be78e5 100644 --- a/lib/Support/Triple.cpp +++ b/lib/Support/Triple.cpp -@@ -175,6 +175,9 @@ const char *Triple::getEnvironmentTypeName(EnvironmentType Kind) { +@@ -172,12 +172,15 @@ const char *Triple::getEnvironmentTypeName(EnvironmentType Kind) { + case GNUEABIHF: return "gnueabihf"; + case GNUEABI: return "gnueabi"; + case GNUX32: return "gnux32"; case CODE16: return "code16"; case EABI: return "eabi"; case EABIHF: return "eabihf"; @@ -39,7 +36,13 @@ index 0838e90..4be78e5 100644 case Android: return "android"; case MSVC: return "msvc"; case Itanium: return "itanium"; -@@ -375,6 +378,9 @@ static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) { + case Cygnus: return "cygnus"; + } + +@@ -372,12 +375,15 @@ static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) { + .StartsWith("gnueabihf", Triple::GNUEABIHF) + .StartsWith("gnueabi", Triple::GNUEABI) + .StartsWith("gnux32", Triple::GNUX32) .StartsWith("code16", Triple::CODE16) .StartsWith("gnu", Triple::GNU) .StartsWith("android", Triple::Android) @@ -49,11 +52,18 @@ index 0838e90..4be78e5 100644 .StartsWith("msvc", Triple::MSVC) .StartsWith("itanium", Triple::Itanium) .StartsWith("cygnus", Triple::Cygnus) + .Default(Triple::UnknownEnvironment); + } + + diff --git a/lib/Target/ARM/ARMSubtarget.h b/lib/Target/ARM/ARMSubtarget.h -index dbacd4d..b330be5 100644 +index dbacd4d..c81e620 100644 --- a/lib/Target/ARM/ARMSubtarget.h +++ b/lib/Target/ARM/ARMSubtarget.h -@@ -369,8 +369,10 @@ public: +@@ -366,22 +366,25 @@ public: + + // ARM Targets that support EHABI exception handling standard + // Darwin uses SjLj. Other targets might need more checks. bool isTargetEHABICompatible() const { return (TargetTriple.getEnvironment() == Triple::EABI || TargetTriple.getEnvironment() == Triple::GNUEABI || @@ -64,7 +74,8 @@ index dbacd4d..b330be5 100644 TargetTriple.getEnvironment() == Triple::Android) && !isTargetDarwin() && !isTargetWindows(); } -@@ -379,6 +381,7 @@ public: + + bool isTargetHardFloat() const { // FIXME: this is invalid for WindowsCE return TargetTriple.getEnvironment() == Triple::GNUEABIHF || TargetTriple.getEnvironment() == Triple::EABIHF || @@ -72,11 +83,17 @@ index dbacd4d..b330be5 100644 isTargetWindows(); } bool isTargetAndroid() const { + return TargetTriple.getEnvironment() == Triple::Android; + } + diff --git a/lib/Target/ARM/ARMTargetMachine.cpp b/lib/Target/ARM/ARMTargetMachine.cpp index 7a8181b..ce5ceb9 100644 --- a/lib/Target/ARM/ARMTargetMachine.cpp +++ b/lib/Target/ARM/ARMTargetMachine.cpp -@@ -87,6 +87,8 @@ computeTargetABI(const Triple &TT, StringRef CPU, +@@ -84,12 +84,14 @@ computeTargetABI(const Triple &TT, StringRef CPU, + switch (TT.getEnvironment()) { + case llvm::Triple::Android: + case llvm::Triple::GNUEABI: case llvm::Triple::GNUEABIHF: case llvm::Triple::EABIHF: case llvm::Triple::EABI: @@ -85,6 +102,6 @@ index 7a8181b..ce5ceb9 100644 TargetABI = ARMBaseTargetMachine::ARM_ABI_AAPCS; break; case llvm::Triple::GNU: --- -2.1.4 - + TargetABI = ARMBaseTargetMachine::ARM_ABI_APCS; + break; + default: diff --git a/main/llvm/llvm-0003-musl-hacks.patch b/main/llvm/llvm-3.6-musl.patch index 7d11534c8d..ba3c49f785 100644 --- a/main/llvm/llvm-0003-musl-hacks.patch +++ b/main/llvm/llvm-3.6-musl.patch @@ -1,25 +1,14 @@ -From cbfa6c322a8082ad40e765a73df9ea9bf695cd6f Mon Sep 17 00:00:00 2001 -From: Travis Tilley <ttilley@gmail.com> -Date: Sat, 9 May 2015 03:43:33 -0400 -Subject: [PATCH 3/3] weirder musl fixes/hacks that would require refactoring - before being acceptable upstream - ---- - include/llvm/Target/TargetLibraryInfo.h | 9 +++++++++ - lib/Support/DynamicLibrary.cpp | 2 +- - lib/Support/Unix/Signals.inc | 2 +- - lib/Target/TargetLibraryInfo.cpp | 5 +++-- - utils/unittest/googletest/src/gtest.cc | 1 + - 5 files changed, 15 insertions(+), 4 deletions(-) - diff --git a/include/llvm/Target/TargetLibraryInfo.h b/include/llvm/Target/TargetLibraryInfo.h index 46f87b9..41ac5fd 100644 --- a/include/llvm/Target/TargetLibraryInfo.h +++ b/include/llvm/Target/TargetLibraryInfo.h -@@ -13,6 +13,15 @@ +@@ -10,12 +10,21 @@ + #ifndef LLVM_TARGET_TARGETLIBRARYINFO_H + #define LLVM_TARGET_TARGETLIBRARYINFO_H + #include "llvm/ADT/DenseMap.h" #include "llvm/Pass.h" - + +#undef fopen64 +#undef fseeko64 +#undef fstat64 @@ -31,25 +20,37 @@ index 46f87b9..41ac5fd 100644 + namespace llvm { class Triple; - + + namespace LibFunc { + enum Func { + /// int _IO_getc(_IO_FILE * __fp); diff --git a/lib/Support/DynamicLibrary.cpp b/lib/Support/DynamicLibrary.cpp index d2b551e..4634a13 100644 --- a/lib/Support/DynamicLibrary.cpp +++ b/lib/Support/DynamicLibrary.cpp -@@ -138,7 +138,7 @@ void* DynamicLibrary::SearchForAddressOfSymbol(const char *symbolName) { - +@@ -135,13 +135,13 @@ void* DynamicLibrary::SearchForAddressOfSymbol(const char *symbolName) { + + if (void *Result = llvm::SearchForAddressOfSpecialSymbol(symbolName)) + return Result; + // This macro returns the address of a well-known, explicit symbol #define EXPLICIT_SYMBOL(SYM) \ - if (!strcmp(symbolName, #SYM)) return &SYM + if (!strcmp(symbolName, #SYM)) return (void *) &SYM - + // On linux we have a weird situation. The stderr/out/in symbols are both // macros and global variables because of standards requirements. So, we + // boldly use the EXPLICIT_SYMBOL macro without checking for a #define first. + #if defined(__linux__) and !defined(__ANDROID__) + { diff --git a/lib/Support/Unix/Signals.inc b/lib/Support/Unix/Signals.inc index e8f4643..8a320ef 100644 --- a/lib/Support/Unix/Signals.inc +++ b/lib/Support/Unix/Signals.inc -@@ -416,7 +416,7 @@ static bool printSymbolizedStackTrace(void **StackTrace, int Depth, FILE *FD) { +@@ -413,13 +413,13 @@ static bool printSymbolizedStackTrace(void **StackTrace, int Depth, FILE *FD) { + // PrintStackTrace - In the case of a program crash or fault, print out a stack + // trace so that the user has an indication of why and where we died. + // // On glibc systems we have the 'backtrace' function, which works nicely, but // doesn't demangle symbols. void llvm::sys::PrintStackTrace(FILE *FD) { @@ -58,13 +59,19 @@ index e8f4643..8a320ef 100644 static void* StackTrace[256]; // Use backtrace() to output a backtrace on Linux systems with glibc. int depth = backtrace(StackTrace, + static_cast<int>(array_lengthof(StackTrace))); + if (printSymbolizedStackTrace(StackTrace, depth, FD)) + return; diff --git a/lib/Target/TargetLibraryInfo.cpp b/lib/Target/TargetLibraryInfo.cpp index c0abdbd..ed908f8 100644 --- a/lib/Target/TargetLibraryInfo.cpp +++ b/lib/Target/TargetLibraryInfo.cpp -@@ -664,14 +664,15 @@ static void initialize(TargetLibraryInfo &TLI, const Triple &T, +@@ -661,20 +661,21 @@ static void initialize(TargetLibraryInfo &TLI, const Triple &T, + break; + default: + TLI.setUnavailable(LibFunc::ffsll); } - + // The following functions are available on at least Linux: - if (!T.isOSLinux()) { + if (!T.isOSLinux()) @@ -80,18 +87,24 @@ index c0abdbd..ed908f8 100644 TLI.setUnavailable(LibFunc::fopen64); TLI.setUnavailable(LibFunc::fseeko64); TLI.setUnavailable(LibFunc::fstat64); + TLI.setUnavailable(LibFunc::fstatvfs64); + TLI.setUnavailable(LibFunc::ftello64); + TLI.setUnavailable(LibFunc::lstat64); diff --git a/utils/unittest/googletest/src/gtest.cc b/utils/unittest/googletest/src/gtest.cc index bf850c6..9e9088c 100644 --- a/utils/unittest/googletest/src/gtest.cc +++ b/utils/unittest/googletest/src/gtest.cc -@@ -120,6 +120,7 @@ - +@@ -117,12 +117,13 @@ + #if GTEST_HAS_EXCEPTIONS + # include <stdexcept> + #endif + #if GTEST_CAN_STREAM_RESULTS_ # include <arpa/inet.h> // NOLINT +# include <sys/socket.h> // NOLINT # include <netdb.h> // NOLINT #endif - --- -2.1.4 + // Indicates that this translation unit is part of Google Test's + // implementation. It must come before gtest-internal-inl.h is + // included, or there will be a compiler error. This trick is to |