gnu: libffi: fix handling of uint32_t arguments on MIPS N32.
* gnu/packages/patches/libffi-mips-n32-fix.patch: New file. * gnu/packages/libffi.scm (libffi): Add patch. * gnu-system.am (dist_patch_DATA): Add patch.
This commit is contained in:
parent
bf2cc1e5d1
commit
1602fcea18
@ -237,6 +237,7 @@ dist_patch_DATA = \
|
|||||||
gnu/packages/patches/guile-relocatable.patch \
|
gnu/packages/patches/guile-relocatable.patch \
|
||||||
gnu/packages/patches/hop-bigloo-4.0b.patch \
|
gnu/packages/patches/hop-bigloo-4.0b.patch \
|
||||||
gnu/packages/patches/libevent-dns-tests.patch \
|
gnu/packages/patches/libevent-dns-tests.patch \
|
||||||
|
gnu/packages/patches/libffi-mips-n32-fix.patch \
|
||||||
gnu/packages/patches/libtool-skip-tests.patch \
|
gnu/packages/patches/libtool-skip-tests.patch \
|
||||||
gnu/packages/patches/libtool-skip-tests-for-mips.patch \
|
gnu/packages/patches/libtool-skip-tests-for-mips.patch \
|
||||||
gnu/packages/patches/m4-gets-undeclared.patch \
|
gnu/packages/patches/m4-gets-undeclared.patch \
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
(define-module (gnu packages libffi)
|
(define-module (gnu packages libffi)
|
||||||
|
#:use-module (gnu packages)
|
||||||
#:use-module (guix licenses)
|
#:use-module (guix licenses)
|
||||||
#:use-module (guix packages)
|
#:use-module (guix packages)
|
||||||
#:use-module (guix download)
|
#:use-module (guix download)
|
||||||
@ -46,7 +47,8 @@
|
|||||||
name "-" version ".tar.gz"))
|
name "-" version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"077ibkf84bvcd6rw1m6jb107br63i2pp301rkmsbgg6300adxp8x"))))
|
"077ibkf84bvcd6rw1m6jb107br63i2pp301rkmsbgg6300adxp8x"))
|
||||||
|
(patches (list (search-patch "libffi-mips-n32-fix.patch")))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(arguments `(#:modules ((guix build utils) (guix build gnu-build-system)
|
(arguments `(#:modules ((guix build utils) (guix build gnu-build-system)
|
||||||
(ice-9 ftw) (srfi srfi-26))
|
(ice-9 ftw) (srfi srfi-26))
|
||||||
|
21
gnu/packages/patches/libffi-mips-n32-fix.patch
Normal file
21
gnu/packages/patches/libffi-mips-n32-fix.patch
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
Fix handling of uint32_t arguments on the MIPS N32 ABI.
|
||||||
|
|
||||||
|
Patch by Mark H Weaver <mhw@netris.org>.
|
||||||
|
|
||||||
|
--- libffi/src/mips/ffi.c.orig 2013-03-16 07:19:39.000000000 -0400
|
||||||
|
+++ libffi/src/mips/ffi.c 2013-10-22 01:11:03.111985247 -0400
|
||||||
|
@@ -170,7 +170,14 @@
|
||||||
|
break;
|
||||||
|
|
||||||
|
case FFI_TYPE_UINT32:
|
||||||
|
+#ifdef FFI_MIPS_N32
|
||||||
|
+ /* The N32 ABI requires that 32-bit integers
|
||||||
|
+ be sign-extended to 64-bits, regardless of
|
||||||
|
+ whether they are signed or unsigned. */
|
||||||
|
+ *(ffi_arg *)argp = *(SINT32 *)(* p_argv);
|
||||||
|
+#else
|
||||||
|
*(ffi_arg *)argp = *(UINT32 *)(* p_argv);
|
||||||
|
+#endif
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* This can only happen with 64bit slots. */
|
Loading…
Reference in New Issue
Block a user