Files
gentoo/dev-libs/libffi-compat/files/libffi-3.2.1-complex-ia64.patch
Sergei Trofimovich 150f49cdb5 dev-libs/libffi-compat: new package, provides libffi.so.6
There are still a few binary-only packages out there that rely on
'libffi.so.6' presence. This package provides these libraries.
No development headers here. Thus this library can co-exist with
dev-libs/libffi:0/7 package.

Ebuild is based on dev-libs/libffi. We can fast-stabilize it if
in-tree stable packages do rely on libffi.so.6 (they should not).

The patch is almost entirely by Timo Rothenpieler.
I renamed a package and made a few minor tweaks.

Fix-by: Timo Rothenpieler
Reported-by: Timo Rothenpieler
Closes: https://bugs.gentoo.org/695964
Package-Manager: Portage-2.3.76, Repoman-2.3.17
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
2019-10-01 20:29:09 +01:00

42 lines
1.6 KiB
Diff

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