summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorkwantam2018-04-02 18:33:39 -0700
committerkwantam2018-04-02 19:54:34 -0700
commitd90728868cf204596e2b57f1b747ac7732fc442d (patch)
tree1f9cc84d921980099b5ebe75bb5e008c08f72f90
parent9b28e2663d277557df482bd2346bee500001f79a (diff)
downloadaur-d90728868cf204596e2b57f1b747ac7732fc442d.tar.gz
unrestrict ocaml version; fix sanitizer build against recent glibc
-rw-r--r--D35246-Fix-sanitizer-build-against-latest-glibc.patch63
-rw-r--r--PKGBUILD10
2 files changed, 69 insertions, 4 deletions
diff --git a/D35246-Fix-sanitizer-build-against-latest-glibc.patch b/D35246-Fix-sanitizer-build-against-latest-glibc.patch
new file mode 100644
index 00000000000..00a490f71c6
--- /dev/null
+++ b/D35246-Fix-sanitizer-build-against-latest-glibc.patch
@@ -0,0 +1,63 @@
+Index: lib/sanitizer_common/sanitizer_linux.h
+===================================================================
+--- lib/sanitizer_common/sanitizer_linux.h
++++ lib/sanitizer_common/sanitizer_linux.h
+@@ -21,17 +21,15 @@
+ #include "sanitizer_platform_limits_posix.h"
+
+ struct link_map; // Opaque type returned by dlopen().
+-struct sigaltstack;
+
+ namespace __sanitizer {
+ // Dirent structure for getdents(). Note that this structure is different from
+ // the one in <dirent.h>, which is used by readdir().
+ struct linux_dirent;
+
+ // Syscall wrappers.
+ uptr internal_getdents(fd_t fd, struct linux_dirent *dirp, unsigned int count);
+-uptr internal_sigaltstack(const struct sigaltstack* ss,
+- struct sigaltstack* oss);
++uptr internal_sigaltstack(const void* ss, void* oss);
+ uptr internal_sigprocmask(int how, __sanitizer_sigset_t *set,
+ __sanitizer_sigset_t *oldset);
+
+Index: lib/sanitizer_common/sanitizer_linux.cc
+===================================================================
+--- lib/sanitizer_common/sanitizer_linux.cc
++++ lib/sanitizer_common/sanitizer_linux.cc
+@@ -631,8 +631,7 @@
+ }
+ #endif
+
+-uptr internal_sigaltstack(const struct sigaltstack *ss,
+- struct sigaltstack *oss) {
++uptr internal_sigaltstack(const void *ss, void *oss) {
+ return internal_syscall(SYSCALL(sigaltstack), (uptr)ss, (uptr)oss);
+ }
+
+Index: lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
+===================================================================
+--- lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
++++ lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
+@@ -287,7 +287,7 @@
+
+ // Alternate stack for signal handling.
+ InternalScopedBuffer<char> handler_stack_memory(kHandlerStackSize);
+- struct sigaltstack handler_stack;
++ stack_t handler_stack;
+ internal_memset(&handler_stack, 0, sizeof(handler_stack));
+ handler_stack.ss_sp = handler_stack_memory.data();
+ handler_stack.ss_size = kHandlerStackSize;
+Index: lib/tsan/rtl/tsan_platform_linux.cc
+===================================================================
+--- lib/tsan/rtl/tsan_platform_linux.cc
++++ lib/tsan/rtl/tsan_platform_linux.cc
+@@ -288,7 +288,7 @@
+ int ExtractResolvFDs(void *state, int *fds, int nfd) {
+ #if SANITIZER_LINUX && !SANITIZER_ANDROID
+ int cnt = 0;
+- __res_state *statp = (__res_state*)state;
++ struct __res_state *statp = (struct __res_state*)state;
+ for (int i = 0; i < MAXNS && cnt < nfd; i++) {
+ if (statp->_u._ext.nsaddrs[i] && statp->_u._ext.nssocks[i] != -1)
+ fds[cnt++] = statp->_u._ext.nssocks[i];
diff --git a/PKGBUILD b/PKGBUILD
index f23d94a3cde..9f16a37f2ca 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -13,12 +13,11 @@
pkgname=('llvm38' 'llvm-libs38' 'llvm-ocaml38' 'lldb38' 'clang38' 'clang-tools-extra38')
pkgver=3.8.1
pkgrel=4
-#_ocaml_ver=4.02.3
-_ocaml_ver=4.05.0-1
+#_ocaml_ver=4.06.0-2
arch=('i686' 'x86_64')
url="http://llvm.org/"
license=('custom:University of Illinois/NCSA Open Source License')
-makedepends=('cmake' 'libffi' 'python2' "ocaml=$_ocaml_ver" 'python-sphinx'
+makedepends=('cmake' 'libffi' 'python2' "ocaml" 'python-sphinx'
'ocaml-ctypes' 'ocaml-findlib' 'libedit' 'swig')
# Use gcc-multilib to build 32-bit compiler-rt libraries on x86_64 (FS#41911)
makedepends_x86_64=('gcc-multilib')
@@ -30,6 +29,7 @@ source=(http://releases.llvm.org/$pkgver/llvm-$pkgver.src.tar.xz{,.sig}
http://releases.llvm.org/$pkgver/lldb-$pkgver.src.tar.xz{,.sig}
D17567-PR23529-Sema-part-of-attrbute-abi_tag-support.patch
D18035-PR23529-Mangler-part-of-attrbute-abi_tag-support.patch
+ D35246-Fix-sanitizer-build-against-latest-glibc.patch
llvm-Config-llvm-config.h)
sha256sums=('6e82ce4adb54ff3afc18053d6981b6aed1406751b8742582ed50f04b5ab475f9'
'SKIP'
@@ -43,6 +43,7 @@ sha256sums=('6e82ce4adb54ff3afc18053d6981b6aed1406751b8742582ed50f04b5ab475f9'
'SKIP'
'406754764e83d58bc3b859ab4b7893abd48c760278c4619cf4341ef9b9b75c85'
'd71f8677882c86accddb8a5b720f298a4d7a2ad3bce6091951a46396b8f14da1'
+ '0515d1adab68f62de5528ae0c4e4e25811c472d6b4f9bd102a9811cae7ef977e'
'597dc5968c695bbdbb0eac9e8eb5117fcd2773bc91edf5ec103ecffffab8bc48')
validpgpkeys=('B6C8F98282B944E3B0D5C2530FC3042E345AD05D'
'11E521D646982372EB577A1F8F0871F202119294')
@@ -63,6 +64,7 @@ prepare() {
# https://llvm.org/bugs/show_bug.cgi?id=23529
patch -d tools/clang -Np2 <../D17567-PR23529-Sema-part-of-attrbute-abi_tag-support.patch
patch -d tools/clang -Np0 <../D18035-PR23529-Mangler-part-of-attrbute-abi_tag-support.patch
+ patch -d projects/compiler-rt -Np0 <../D35246-Fix-sanitizer-build-against-latest-glibc.patch
# fix some compile errors
sed -i 's/#include <cassert>/#include <cassert>\n#include <functional>/' tools/lldb/include/lldb/Utility/TaskPool.h
@@ -166,7 +168,7 @@ package_llvm-libs38() {
package_llvm-ocaml38() {
_pkgname=llvm-ocaml
pkgdesc="OCaml bindings for LLVM"
- depends=("llvm38=$pkgver-$pkgrel" "ocaml=$_ocaml_ver" 'ocaml-ctypes')
+ depends=("llvm38=$pkgver-$pkgrel" "ocaml" 'ocaml-ctypes')
provides=("llvm-ocaml=$pkgver-$pkgrel")
conflicts=('llvm-ocaml')
replaces=('llvm-ocaml')