diff --git a/mingw-w64-clang/0061-libunwind-add-support-for-mingw-w64.patch b/mingw-w64-clang/0061-libunwind-add-support-for-mingw-w64.patch index 9a9a73e7eb..ba02c4d890 100644 --- a/mingw-w64-clang/0061-libunwind-add-support-for-mingw-w64.patch +++ b/mingw-w64-clang/0061-libunwind-add-support-for-mingw-w64.patch @@ -14,8 +14,8 @@ index 31fb871..e8c63d7 100644 uintptr_t private_2; // holds sp that phase1 found for phase2 to use -#ifndef __LP64__ +#if !defined(__LP64__) && !defined(_WIN64) - // The gcc implementation of _Unwind_Exception used attribute mode on the - // above fields which had the side effect of causing this whole struct to + // The implementation of _Unwind_Exception uses an attribute mode on the + // above fields which has the side effect of causing this whole struct to // round up to 32 bytes in size. To be more explicit, we add pad fields diff --git a/src/AddressSpace.hpp b/src/AddressSpace.hpp index 567cbda..fd0b233 100644 @@ -97,20 +97,13 @@ diff --git a/src/config.h b/src/config.h index c9ec087..6f14e92 100644 --- a/src/config.h +++ b/src/config.h -@@ -60,6 +60,23 @@ +@@ -39,6 +39,16 @@ + #define _LIBUNWIND_SUPPORT_DWARF_UNWIND 1 #define _LIBUNWIND_SUPPORT_DWARF_INDEX 0 #endif - +#elif defined(_WIN32) -+ // Note! the assembler files must be .S and not .s. -+ #define _LIBUNWIND_BUILD_ZERO_COST_APIS 1 -+ + // #define _LIBUNWIND_BUILD_SJLJ_APIS + // #define _LIBUNWIND_SUPPORT_FRAME_APIS -+ #define _LIBUNWIND_EXPORT -+ #define _LIBUNWIND_HIDDEN -+ #define _LIBUNWIND_LOG(msg, ...) fprintf(stderr, "libuwind: " msg, __VA_ARGS__) -+ #define _LIBUNWIND_ABORT(msg) do { fprintf(stderr, msg); abort(); } while(0) + #define _LIBUNWIND_SUPPORT_COMPACT_UNWIND 1 + #define _LIBUNWIND_SUPPORT_DWARF_UNWIND 1 + // #define _LIBUNWIND_SUPPORT_DWARF_INDEX @@ -119,8 +112,23 @@ index c9ec087..6f14e92 100644 + // Here we would like to get the regular versions, not the _mingw ones. + #undef __USE_MINGW_ANSI_STDIO #else - #include + #if defined(__ARM_DWARF_EH__) || !defined(__arm__) + #define _LIBUNWIND_SUPPORT_COMPACT_UNWIND 0 +@@ -51,9 +51,13 @@ + #endif + #endif +-// FIXME: these macros are not correct for COFF targets ++#if defined(_WIN32) ++#define _LIBUNWIND_EXPORT ++#define _LIBUNWIND_HIDDEN ++#else + #define _LIBUNWIND_EXPORT __attribute__((visibility("default"))) + #define _LIBUNWIND_HIDDEN __attribute__((visibility("hidden"))) ++#endif + + #if (defined(__APPLE__) && defined(__arm__)) || defined(__USING_SJLJ_EXCEPTIONS__) + #define _LIBUNWIND_BUILD_SJLJ_APIS 1 -- 2.4.5 diff --git a/mingw-w64-clang/PKGBUILD b/mingw-w64-clang/PKGBUILD index a0c7432b31..b4ede0aff8 100644 --- a/mingw-w64-clang/PKGBUILD +++ b/mingw-w64-clang/PKGBUILD @@ -15,8 +15,8 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}" "${MINGW_PACKAGE_PREFIX}-llvm" #"${MINGW_PACKAGE_PREFIX}-lldb" ) -pkgver=3.8.0 -pkgrel=3 +pkgver=3.9.0 +pkgrel=1 pkgdesc="C language family frontend for LLVM (mingw-w64)" arch=('any') url="http://llvm.org" @@ -59,25 +59,25 @@ source=(http://llvm.org/releases/${pkgver}/llvm-${pkgver}.src.tar.xz{,.sig} #0041-0049 -> c++ #0051-0059 -> lldb #0061-0069 -> libunwind -sha256sums=('555b028e9ee0f6445ff8f949ea10e9cd8be0d084840e21fbbe1d31d51fc06e46' +sha256sums=('66c73179da42cee1386371641241f79ded250e117a79f571bbd69e56daa48948' 'SKIP' - '04149236de03cf05232d68eb7cb9c50f03062e339b68f4f8a03b650a11536cf9' + '7596a7c7d9376d0c89e60028fe1ceb4d3e535e8ea8b89e0eb094e0dcb3183d28' 'SKIP' - 'c8d3387e55f229543dac1941769120f24dc50183150bf19d1b070d53d29d56b0' + 'e0e5224fcd5740b61e416c549dd3dcda92f10c524216c1edb5e979e42078a59a' 'SKIP' - '194fa90bc902e1f4fe338cc96ca5353ad6b04fa08c449fd8cb1de3256dd26f4a' + 'fdc261b686a75351e691be36a4cbad141096998c03d1487c35b6253d8e5bf408' 'SKIP' - '36804511b940bc8a7cefc7cb391a6b28f5e3f53f6372965642020db91174237b' + 'd0b38d51365c6322f5666a2a8105785f2e114430858de4c25a86b49f227f5b06' 'SKIP' - 'c5ee0871aff6ec741380c4899007a7d97f0b791c81df69d25b744eebc5cee504' + 'b037a92717856882e05df57221e087d7d595a2ae9f170f7bc1a23ec7a92c8019' 'SKIP' - 'afbda810106a6e64444bc164b921be928af46829117c95b996f2678ce4cb1ec4' + '5b7aec46ec8e999ec683c87ad744082e1133781ee4b01905b4bdae5d20785f14' 'SKIP' - '94704dda228c9f75f4403051085001440b458501ec97192eee06e8e67f7f9f0c' + '986e8150ec5f457469a20666628bf634a5ca992a53e157f3b69dbc35056b32d9' 'SKIP' - 'e3f68f44147df0433e7989bf6ed1c58ff28d7c68b9c47553cb9915f744785a35' + '61280e07411e3f2b4cca0067412b39c16b0a9edd19d304d3fc90249899d12384' 'SKIP' - 'af3eaf39ecdc3b9e89863fb62e1aa3c135cfde7e9415424e4e396d7486a9422b' + '66675ddec5ba0d36689757da6008cb2596ee1a9067f4f598d89ce5a3b43f4c2b' 'SKIP' '0804146b32138d55c611336cc81e1783c29a8fab0fe62f248ba1ad7acc711c4d' '76bcdcae0ef3a4d3ae7082b7fcd668e9560e63fb82068c3f889f9e89b9becf4a' @@ -88,10 +88,10 @@ sha256sums=('555b028e9ee0f6445ff8f949ea10e9cd8be0d084840e21fbbe1d31d51fc06e46' '0e45e76ee6d6658de52edb7b508a8bcc9f10ff0b295ff2a4e35577136a40c6a5' 'a0933775b979b4879e220358b1076d8eeb9170403d0d190b1340d179fcd3cd1e' '5b8edbbb638c906216e20229529e8348abc50d5886d20e07af08543e1e574e94' - 'c05162c426e90a01cef4a9d34d09e6314b966f2fea5a121223c98e51f5b6bd93') + '0a5529a5e9871ec5252c3853f1fdda69253c1a7505837e9c45ae14bcb76a8660') validpgpkeys=('B6C8F98282B944E3B0D5C2530FC3042E345AD05D') # Hans Wennborg, Google. noextract=(cfe-${pkgver}.src.tar.xz - #libcxx-${pkgver}.src.tar.xz + libcxx-${pkgver}.src.tar.xz lldb-${pkgver}.src.tar.xz test-suite-${pkgver}.src.tar.xz ) @@ -100,6 +100,15 @@ prepare() { plain "Extracting clang-${pkgver}.src.tar.xz due to symlink(s) without pre-existing target(s)" [[ -d ${srcdir}/cfe-${pkgver} ]] && rm -rf ${srcdir}/cfe-${pkgver} [[ -d ${srcdir}/cfe-${pkgver} ]] || tar -xJvf ${srcdir}/cfe-${pkgver}.src.tar.xz -C ${srcdir} || true + + plain "Extracting libcxx-${pkgver}.src.tar.xz due to symlink(s) without pre-existing target(s)" + [[ -d ${srcdir}/libcxx-${pkgver} ]] && rm -rf ${srcdir}/libcxx-${pkgver} + [[ -d ${srcdir}/libcxx-${pkgver} ]] || tar -xJvf ${srcdir}/libcxx-${pkgver}.src.tar.xz -C ${srcdir} || true + + plain "Extracting lldb-${pkgver}.src.tar.xz due to symlink(s) without pre-existing target(s)" + [[ -d ${srcdir}/lldb-${pkgver} ]] && rm -rf ${srcdir}/lldb-${pkgver} + [[ -d ${srcdir}/lldb-${pkgver} ]] || tar -xJvf ${srcdir}/lldb-${pkgver}.src.tar.xz -C ${srcdir} || true + cd "${srcdir}/llvm-${pkgver}.src" patch -p1 -i "${srcdir}/0001-Fix-GetHostTriple-for-mingw-w64-in-msys.patch" patch -p1 -i "${srcdir}/0002-use-DESTDIR-on-windows.patch" @@ -118,17 +127,9 @@ prepare() { cd "${srcdir}/libcxx-${pkgver}.src" patch -p1 -i "${srcdir}/0041-libcxx-add-support-for-mingw-w64.patch" + cd "${srcdir}/libunwind-${pkgver}.src" patch -p1 -i "${srcdir}/0061-libunwind-add-support-for-mingw-w64.patch" - cd "${srcdir}/llvm-${pkgver}.src" - - # Fix docs installation directory - sed -i 's:$(PROJ_prefix)/docs/llvm:$(PROJ_prefix)/share/doc/llvm:' \ - Makefile.config.in - - # Fix definition of LLVM_CMAKE_DIR in LLVMConfig.cmake - sed -i '/@LLVM_CONFIG_CMAKE_DIR@/s:$(PROJ_cmake):$(PROJ_prefix)/share/llvm/cmake:' \ - cmake/modules/Makefile # At the present, clang must reside inside the LLVM source code tree to build # See http://llvm.org/bugs/show_bug.cgi?id=4840 @@ -138,7 +139,7 @@ prepare() { mv "${srcdir}/cfe-${pkgver}.src" tools/clang | true mv "${srcdir}/clang-tools-extra-${pkgver}.src" tools/clang/tools/extra | true mv "${srcdir}/lld-${pkgver}.src" tools/lld | true - #mv "${srcdir}/lldb-${pkgver}.src" tools/lldb | true + mv "${srcdir}/lldb-${pkgver}.src" tools/lldb | true mv "${srcdir}/compiler-rt-${pkgver}.src" projects/compiler-rt | true mv "${srcdir}/libcxxabi-${pkgver}.src" projects/libcxxabi | true mv "${srcdir}/libcxx-${pkgver}.src" projects/libcxx | true