summaryrefslogtreecommitdiff
path: root/devel
diff options
context:
space:
mode:
authorjoerg <joerg>2015-03-19 19:14:26 +0000
committerjoerg <joerg>2015-03-19 19:14:26 +0000
commitcf54f903d70efe1539d1d2656c311700cc42468a (patch)
tree17f64d1ed8b05764d27ec2ede9cec701615f2245 /devel
parent7317c4a8b0aacdf88195c6aa371a1a87a3e91414 (diff)
downloadpkgsrc-cf54f903d70efe1539d1d2656c311700cc42468a.tar.gz
Fix build with Clang on ARM.
Diffstat (limited to 'devel')
-rw-r--r--devel/userspace-rcu/distinfo3
-rw-r--r--devel/userspace-rcu/patches/patch-urcu_uatomic_generic.h100
2 files changed, 102 insertions, 1 deletions
diff --git a/devel/userspace-rcu/distinfo b/devel/userspace-rcu/distinfo
index e5beceebef6..26e3c2136d8 100644
--- a/devel/userspace-rcu/distinfo
+++ b/devel/userspace-rcu/distinfo
@@ -1,5 +1,6 @@
-$NetBSD: distinfo,v 1.8 2014/11/10 20:59:39 pettai Exp $
+$NetBSD: distinfo,v 1.9 2015/03/19 19:14:26 joerg Exp $
SHA1 (userspace-rcu-0.8.6.tar.bz2) = f10e9bf812557cd0c2a35a277e04010ec278d25d
RMD160 (userspace-rcu-0.8.6.tar.bz2) = 4d40678ed27a78768cea1947e54a2b510b52fa33
Size (userspace-rcu-0.8.6.tar.bz2) = 424037 bytes
+SHA1 (patch-urcu_uatomic_generic.h) = 6492e58d704805b29e9dce119c76ebdf615adddc
diff --git a/devel/userspace-rcu/patches/patch-urcu_uatomic_generic.h b/devel/userspace-rcu/patches/patch-urcu_uatomic_generic.h
new file mode 100644
index 00000000000..cb517a3c668
--- /dev/null
+++ b/devel/userspace-rcu/patches/patch-urcu_uatomic_generic.h
@@ -0,0 +1,100 @@
+$NetBSD: patch-urcu_uatomic_generic.h,v 1.1 2015/03/19 19:14:26 joerg Exp $
+
+Clang requires correctly sized pointer arguments for the builtins.
+
+--- urcu/uatomic/generic.h.orig 2015-03-17 21:09:40.000000000 +0000
++++ urcu/uatomic/generic.h
+@@ -65,17 +65,17 @@ unsigned long _uatomic_cmpxchg(void *add
+ switch (len) {
+ #ifdef UATOMIC_HAS_ATOMIC_BYTE
+ case 1:
+- return __sync_val_compare_and_swap_1(addr, old, _new);
++ return __sync_val_compare_and_swap_1((uint8_t *)addr, old, _new);
+ #endif
+ #ifdef UATOMIC_HAS_ATOMIC_SHORT
+ case 2:
+- return __sync_val_compare_and_swap_2(addr, old, _new);
++ return __sync_val_compare_and_swap_2((uint16_t *)addr, old, _new);
+ #endif
+ case 4:
+- return __sync_val_compare_and_swap_4(addr, old, _new);
++ return __sync_val_compare_and_swap_4((uint32_t *)addr, old, _new);
+ #if (CAA_BITS_PER_LONG == 64)
+ case 8:
+- return __sync_val_compare_and_swap_8(addr, old, _new);
++ return __sync_val_compare_and_swap_8((uint64_t *)addr, old, _new);
+ #endif
+ }
+ _uatomic_link_error();
+@@ -100,20 +100,20 @@ void _uatomic_and(void *addr, unsigned l
+ switch (len) {
+ #ifdef UATOMIC_HAS_ATOMIC_BYTE
+ case 1:
+- __sync_and_and_fetch_1(addr, val);
++ __sync_and_and_fetch_1((uint8_t *)addr, val);
+ return;
+ #endif
+ #ifdef UATOMIC_HAS_ATOMIC_SHORT
+ case 2:
+- __sync_and_and_fetch_2(addr, val);
++ __sync_and_and_fetch_2((uint16_t *)addr, val);
+ return;
+ #endif
+ case 4:
+- __sync_and_and_fetch_4(addr, val);
++ __sync_and_and_fetch_4((uint32_t *)addr, val);
+ return;
+ #if (CAA_BITS_PER_LONG == 64)
+ case 8:
+- __sync_and_and_fetch_8(addr, val);
++ __sync_and_and_fetch_8((uint64_t *)addr, val);
+ return;
+ #endif
+ }
+@@ -139,20 +139,20 @@ void _uatomic_or(void *addr, unsigned lo
+ switch (len) {
+ #ifdef UATOMIC_HAS_ATOMIC_BYTE
+ case 1:
+- __sync_or_and_fetch_1(addr, val);
++ __sync_or_and_fetch_1((uint8_t *)addr, val);
+ return;
+ #endif
+ #ifdef UATOMIC_HAS_ATOMIC_SHORT
+ case 2:
+- __sync_or_and_fetch_2(addr, val);
++ __sync_or_and_fetch_2((uint16_t *)addr, val);
+ return;
+ #endif
+ case 4:
+- __sync_or_and_fetch_4(addr, val);
++ __sync_or_and_fetch_4((uint32_t *)addr, val);
+ return;
+ #if (CAA_BITS_PER_LONG == 64)
+ case 8:
+- __sync_or_and_fetch_8(addr, val);
++ __sync_or_and_fetch_8((uint64_t *)addr, val);
+ return;
+ #endif
+ }
+@@ -180,17 +180,17 @@ unsigned long _uatomic_add_return(void *
+ switch (len) {
+ #ifdef UATOMIC_HAS_ATOMIC_BYTE
+ case 1:
+- return __sync_add_and_fetch_1(addr, val);
++ return __sync_add_and_fetch_1((uint8_t *)addr, val);
+ #endif
+ #ifdef UATOMIC_HAS_ATOMIC_SHORT
+ case 2:
+- return __sync_add_and_fetch_2(addr, val);
++ return __sync_add_and_fetch_2((uint16_t *)addr, val);
+ #endif
+ case 4:
+- return __sync_add_and_fetch_4(addr, val);
++ return __sync_add_and_fetch_4((uint32_t *)addr, val);
+ #if (CAA_BITS_PER_LONG == 64)
+ case 8:
+- return __sync_add_and_fetch_8(addr, val);
++ return __sync_add_and_fetch_8((uint64_t *)addr, val);
+ #endif
+ }
+ _uatomic_link_error();