diff options
author | Sergei Trofimovich <slyfox@gentoo.org> | 2017-10-14 20:51:14 +0100 |
---|---|---|
committer | Sergei Trofimovich <slyfox@gentoo.org> | 2017-10-14 20:56:54 +0100 |
commit | 75b2c980d16c2b137f21e9f6a0a3f1de6ddd7769 (patch) | |
tree | fa390bf38506e9cef434e933357a62e94046f967 /dev-libs/libffi | |
parent | dev-perl/Audio-CD-disc-cover: Fix non-blank after header (diff) | |
download | gentoo-75b2c980d16c2b137f21e9f6a0a3f1de6ddd7769.tar.gz gentoo-75b2c980d16c2b137f21e9f6a0a3f1de6ddd7769.tar.bz2 gentoo-75b2c980d16c2b137f21e9f6a0a3f1de6ddd7769.zip |
dev-libs/libffi: ia64: fix small struct handling, bug #634190
After FFI_TYPE_COMPLEX was added to libffi ia64 dispatch table
was off-by-one in IA-64 specific handling of return values.
Bug: https://bugs.gentoo.org/634190
Package-Manager: Portage-2.3.10, Repoman-2.3.3
Diffstat (limited to 'dev-libs/libffi')
-rw-r--r-- | dev-libs/libffi/files/libffi-3.2.1-complex-ia64.patch | 41 | ||||
-rw-r--r-- | dev-libs/libffi/libffi-3.2.1.ebuild | 1 |
2 files changed, 42 insertions, 0 deletions
diff --git a/dev-libs/libffi/files/libffi-3.2.1-complex-ia64.patch b/dev-libs/libffi/files/libffi-3.2.1-complex-ia64.patch new file mode 100644 index 000000000000..fd5c1ea4b282 --- /dev/null +++ b/dev-libs/libffi/files/libffi-3.2.1-complex-ia64.patch @@ -0,0 +1,41 @@ +ia64: fix small struct handling (missing complex type entry) + +commit 6e8a4460833594d5af1b4539178025da0077df19 +added FFI_TYPE_COMPLEX value type (comes after FFI_TYPE_POINTER) + +ia64 ffi_closure_unix reiles on the ordering of +types as ia64 has ia64-specific FFI types: +small struct and others. + +As a result all tests handling small structs broke. + +The change fixes dispatch table by ignoring FFI_TYPE_COMPLEX. +This has positive effect of unbreaking most tests: + + === libffi Summary === + +-# of expected passes 1595 +-# of unexpected failures 295 ++# of expected passes 1930 ++# of unexpected failures 10 + # of unsupported tests 30 + +Bug: https://bugs.gentoo.org/634190 +--- a/src/ia64/unix.S ++++ b/src/ia64/unix.S +@@ -529,6 +529,7 @@ ffi_closure_unix: + data8 @pcrel(.Lst_int64) // FFI_TYPE_SINT64 + data8 @pcrel(.Lst_void) // FFI_TYPE_STRUCT + data8 @pcrel(.Lst_int64) // FFI_TYPE_POINTER ++ data8 @pcrel(.Lst_void) // FFI_TYPE_COMPLEX (not implemented) + data8 @pcrel(.Lst_small_struct) // FFI_IA64_TYPE_SMALL_STRUCT + data8 @pcrel(.Lst_hfa_float) // FFI_IA64_TYPE_HFA_FLOAT + data8 @pcrel(.Lst_hfa_double) // FFI_IA64_TYPE_HFA_DOUBLE +@@ -550,6 +551,7 @@ ffi_closure_unix: + data8 @pcrel(.Lld_int) // FFI_TYPE_SINT64 + data8 @pcrel(.Lld_void) // FFI_TYPE_STRUCT + data8 @pcrel(.Lld_int) // FFI_TYPE_POINTER ++ data8 @pcrel(.Lld_void) // FFI_TYPE_COMPLEX (not implemented) + data8 @pcrel(.Lld_small_struct) // FFI_IA64_TYPE_SMALL_STRUCT + data8 @pcrel(.Lld_hfa_float) // FFI_IA64_TYPE_HFA_FLOAT + data8 @pcrel(.Lld_hfa_double) // FFI_IA64_TYPE_HFA_DOUBLE diff --git a/dev-libs/libffi/libffi-3.2.1.ebuild b/dev-libs/libffi/libffi-3.2.1.ebuild index 1160d49a6b8b..848a9fedbf13 100644 --- a/dev-libs/libffi/libffi-3.2.1.ebuild +++ b/dev-libs/libffi/libffi-3.2.1.ebuild @@ -40,6 +40,7 @@ src_prepare() { epatch "${FILESDIR}"/${PN}-3.2.1-o-tmpfile-eacces.patch #529044 epatch "${FILESDIR}"/${PN}-3.2.1-complex_alpha.patch epatch "${FILESDIR}"/${PN}-3.1-darwin-x32.patch + epatch "${FILESDIR}"/${PN}-3.2.1-complex-ia64.patch epatch_user elibtoolize } |