summaryrefslogtreecommitdiff
path: root/devel/libffi
diff options
context:
space:
mode:
authorrin <rin@pkgsrc.org>2020-03-21 16:08:34 +0000
committerrin <rin@pkgsrc.org>2020-03-21 16:08:34 +0000
commit0e13ea151b6aff315608dee53a95f3787b606b0a (patch)
tree0d6a1706b0b8e72f6d21a6c7e01761576edc6756 /devel/libffi
parent7dccc45c8ebd69ce4956b949f1adb2e17c42a942 (diff)
downloadpkgsrc-0e13ea151b6aff315608dee53a95f3787b606b0a.tar.gz
Fix build for ILP32 powerpc, which doesn't have 128-bit-length data types.
Diffstat (limited to 'devel/libffi')
-rw-r--r--devel/libffi/distinfo4
-rw-r--r--devel/libffi/patches/patch-src_powerpc_ffi.c18
-rw-r--r--devel/libffi/patches/patch-src_powerpc_ffi__powerpc.h34
3 files changed, 55 insertions, 1 deletions
diff --git a/devel/libffi/distinfo b/devel/libffi/distinfo
index 6fb37dd69e2..d749ed0d2eb 100644
--- a/devel/libffi/distinfo
+++ b/devel/libffi/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.51 2020/03/16 09:35:47 rin Exp $
+$NetBSD: distinfo,v 1.52 2020/03/21 16:08:34 rin Exp $
SHA1 (libffi-3.3.tar.gz) = 8df6cb570c8d6596a67d1c0773bf00650154f7aa
RMD160 (libffi-3.3.tar.gz) = 2cd43b66d792f1bad76df2e19a8411beacfcb8e0
@@ -12,4 +12,6 @@ SHA1 (patch-src_m68k_ffi.c) = 5179cfd150bc7de15eb1c5ee0a327016c2c32b3e
SHA1 (patch-src_m88k_elfbsd.S) = 6572c7fa39c00096cb4a80bb88993ff1b4aaa8cc
SHA1 (patch-src_mips_ffi.c) = 7353f68f73917af6bff0b90393ac3404ea54fb99
SHA1 (patch-src_mips_ffitarget.h) = 7fe62634803ccb5a168e76d597409c9af809c448
+SHA1 (patch-src_powerpc_ffi.c) = b68a93d0f8552efaa8c50256da3af3bde5de7059
+SHA1 (patch-src_powerpc_ffi__powerpc.h) = 573b6f0f496ed7b8b6bc0df197515020519ae024
SHA1 (patch-testsuite_libffi.call_float2.c) = 2a42a428b0cc55065968c7f0748026da12b70b9d
diff --git a/devel/libffi/patches/patch-src_powerpc_ffi.c b/devel/libffi/patches/patch-src_powerpc_ffi.c
new file mode 100644
index 00000000000..dc0c2965a21
--- /dev/null
+++ b/devel/libffi/patches/patch-src_powerpc_ffi.c
@@ -0,0 +1,18 @@
+$NetBSD: patch-src_powerpc_ffi.c,v 1.1 2020/03/21 16:08:34 rin Exp $
+
+Workaround for ILP32 powerpc, which doesn't have 128-bit-length data types.
+
+--- src/powerpc/ffi.c.orig 2019-11-18 20:35:19.000000000 +0900
++++ src/powerpc/ffi.c 2020-03-22 00:26:32.702408263 +0900
+@@ -87,7 +87,11 @@ ffi_call_int (ffi_cif *cif,
+ For ELFv2 ABI, use a bounce buffer for homogeneous structs too,
+ for similar reasons. This bounce buffer must be aligned to 16
+ bytes for use with homogeneous structs of vectors (float128). */
++#ifdef POWERPC64
+ float128 smst_buffer[8];
++#else
++ __int64_t smst_buffer[16];
++#endif
+ extended_cif ecif;
+
+ ecif.cif = cif;
diff --git a/devel/libffi/patches/patch-src_powerpc_ffi__powerpc.h b/devel/libffi/patches/patch-src_powerpc_ffi__powerpc.h
new file mode 100644
index 00000000000..4bbe4f5565b
--- /dev/null
+++ b/devel/libffi/patches/patch-src_powerpc_ffi__powerpc.h
@@ -0,0 +1,34 @@
+$NetBSD: patch-src_powerpc_ffi__powerpc.h,v 1.1 2020/03/21 16:08:34 rin Exp $
+
+Workaround for ILP32 powerpc, which doesn't have 128-bit-length data types.
+
+--- src/powerpc/ffi_powerpc.h.orig 2019-11-18 20:35:19.000000000 +0900
++++ src/powerpc/ffi_powerpc.h 2020-03-22 00:31:24.149783131 +0900
+@@ -57,6 +57,7 @@ typedef union
+ double d;
+ } ffi_dblfl;
+
++#ifdef POWERPC64
+ #if defined(__FLOAT128_TYPE__)
+ typedef _Float128 float128;
+ #elif defined(__FLOAT128__)
+@@ -64,6 +65,7 @@ typedef __float128 float128;
+ #else
+ typedef __int128 float128;
+ #endif
++#endif /* POWERPC64 */
+
+ void FFI_HIDDEN ffi_closure_SYSV (void);
+ void FFI_HIDDEN ffi_go_closure_sysv (void);
+@@ -97,9 +99,11 @@ ffi_status FFI_HIDDEN ffi_prep_closure_l
+ void (*) (ffi_cif *, void *,
+ void **, void *),
+ void *, void *);
++#ifdef POWERPC64
+ int FFI_HIDDEN ffi_closure_helper_LINUX64 (ffi_cif *,
+ void (*) (ffi_cif *, void *,
+ void **, void *),
+ void *, void *,
+ unsigned long *, ffi_dblfl *,
+ float128 *);
++#endif