From 5285ec1feedf2fdc47571a56a345c64ec7e9a425 Mon Sep 17 00:00:00 2001 From: Flatcar Buildbot Date: Mon, 16 Jun 2025 07:08:07 +0000 Subject: [PATCH] dev-libs/libffi: Sync with Gentoo It's from Gentoo commit 8ac8a253745bf7a024857d743a29ad7d6d942e9c. --- .../portage-stable/dev-libs/libffi/Manifest | 4 +- ...ffi-3.4.4-hppa-closure-function-ptrs.patch | 170 ----------- .../files/libffi-3.4.4-hppa-jump-table.patch | 289 ------------------ .../libffi-3.4.4-hppa-large-struct.patch | 36 --- .../libffi/files/libffi-3.4.4-lld-17.patch | 34 --- .../files/libffi-3.4.4-sparc-float-typo.patch | 28 -- .../files/libffi-3.4.4-trampoline-c99.patch | 39 --- .../libffi/files/libffi-3.4.6-tests.patch | 104 ------- .../libffi/files/libffi-3.4.6-x86-sse.patch | 124 -------- ...fi64-calls-with-6-gp-and-some-sse-re.patch | 38 --- .../dev-libs/libffi/libffi-3.4.4-r4.ebuild | 83 ----- .../dev-libs/libffi/libffi-3.4.6-r3.ebuild | 10 +- .../dev-libs/libffi/libffi-3.4.6.ebuild | 73 ----- .../dev-libs/libffi/libffi-3.4.8-r1.ebuild | 17 +- ...fi-3.4.7.ebuild => libffi-3.4.8-r2.ebuild} | 18 +- ...ibffi-3.4.8.ebuild => libffi-3.5.0.ebuild} | 20 +- ...fi-3.4.6-r2.ebuild => libffi-3.5.1.ebuild} | 39 +-- .../dev-libs/libffi/libffi-9999.ebuild | 20 +- 18 files changed, 93 insertions(+), 1053 deletions(-) delete mode 100644 sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-hppa-closure-function-ptrs.patch delete mode 100644 sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-hppa-jump-table.patch delete mode 100644 sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-hppa-large-struct.patch delete mode 100644 sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-lld-17.patch delete mode 100644 sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-sparc-float-typo.patch delete mode 100644 sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-trampoline-c99.patch delete mode 100644 sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.6-tests.patch delete mode 100644 sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.6-x86-sse.patch delete mode 100644 sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.7-Revert-Fix-x86-ffi64-calls-with-6-gp-and-some-sse-re.patch delete mode 100644 sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.4-r4.ebuild delete mode 100644 sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.6.ebuild rename sdk_container/src/third_party/portage-stable/dev-libs/libffi/{libffi-3.4.7.ebuild => libffi-3.4.8-r2.ebuild} (87%) rename sdk_container/src/third_party/portage-stable/dev-libs/libffi/{libffi-3.4.8.ebuild => libffi-3.5.0.ebuild} (81%) rename sdk_container/src/third_party/portage-stable/dev-libs/libffi/{libffi-3.4.6-r2.ebuild => libffi-3.5.1.ebuild} (73%) diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/Manifest b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/Manifest index 703f69f686..0a15e51d0a 100644 --- a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/Manifest +++ b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/Manifest @@ -1,4 +1,4 @@ -DIST libffi-3.4.4.tar.gz 1362394 BLAKE2B 189fe1ffe9507f204581b0ab09995dc7e7b761bb4eac7e338e9f5ff81431aebcef6c182c1839c9f9acb2706697a260c67e6d1351cf7e2aed7c4eb5d694f6f8fd SHA512 88680aeb0fa0dc0319e5cd2ba45b4b5a340bc9b4bcf20b1e0613b39cd898f177a3863aa94034d8e23a7f6f44d858a53dcd36d1bb8dee13b751ef814224061889 DIST libffi-3.4.6.tar.gz 1391684 BLAKE2B af8402a09bdbd59b4e9400d2d71bd5ce98f6f1d981d35d1ab40d77a831b13b32c5bd34ca54ff75999e39f0d8a9c066381fae7a8d6c5216d955e064f929f08b88 SHA512 033d2600e879b83c6bce0eb80f69c5f32aa775bf2e962c9d39fbd21226fa19d1e79173d8eaa0d0157014d54509ea73315ad86842356fc3a303c0831c94c6ab39 -DIST libffi-3.4.7.tar.gz 1393979 BLAKE2B 0dd17b4fd358beb9842889168437443137445a5dba1f0a7e8669ae420d8efb927815c08602c1b1b141acfdfdbaa12b417863402a5c8df5f36519fd3e772d3f37 SHA512 d19f59a5b5d61bd7d9e8a7a74b8bf2e697201a19c247c410c789e93ca8678a4eb9f13c9bee19f129be80ade8514f6b1acb38d66f44d86edd32644ed7bbe31dd6 DIST libffi-3.4.8.tar.gz 1397992 BLAKE2B 10b3d970dc598fb8689bca49751cda499ddc5216baf89d38625385b0d42d57f10d15cce3c4c044c9c73a4fce384c26f2a8e1b99269e9db1174c2631201c6bfd4 SHA512 05344c6c1a1a5b44704f6cf99277098d1ea3ac1dc11c2a691c501786a214f76184ec0637135588630db609ce79e49df3dbd00282dd61e7f21137afba70e24ffe +DIST libffi-3.5.0.tar.gz 1420475 BLAKE2B 19e278ef86d23c6955b53e2e1c0e1297fd603975d47763c5febd1eca28a475a6ba4dc3c3b1eef630f744c7d3e95cc1d0c6876ae242c21b666e2c2571a4c1132e SHA512 1d47980185abc91d81ba6dfa775b673e83d42bad31a5ca1407068b319113a1f7e79da241204e41f096e1d3072ada1364d64bb9641cfb0b82fbe3821da2feb6ac +DIST libffi-3.5.1.tar.gz 1419757 BLAKE2B eaeb04beeb4ab6e0ef5652175d5c9d29a18b6f1edbf05db819a3a6ac9c8ed47de32c54fca4c3a9a476283c0771650d5a577e7868f16c671ee46e25db27369066 SHA512 3da9e21fdb920e7962ceb01ee671ef36196df4d5dad62e0cdd8e87cc60e350f241c204350560ae26ea04cc898161b5585c8a5a5125bdbcc84508efbb7ea61eb8 diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-hppa-closure-function-ptrs.patch b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-hppa-closure-function-ptrs.patch deleted file mode 100644 index 065f35e7c4..0000000000 --- a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-hppa-closure-function-ptrs.patch +++ /dev/null @@ -1,170 +0,0 @@ -https://github.com/libffi/libffi/commit/e58e22b22386ed0e0a95e97eb8eed016e3f01b02 - -From e58e22b22386ed0e0a95e97eb8eed016e3f01b02 Mon Sep 17 00:00:00 2001 -From: Anthony Green -Date: Thu, 2 Feb 2023 07:02:53 -0500 -Subject: [PATCH] From Dave Anglin: - -A couple of years ago the 32-bit hppa targets were converted from using a trampoline executed on the stack to the function descriptor technique used by ia64. This is more efficient and avoids having to have an executable stack. However, function pointers on 32-bit need the PLABEL bit set in the pointer. It distinguishes between pointers that point directly to the executable code and pointer that point to a function descriptor. We need the later for libffi. But as a result, it is not possible to convert using casts data pointers to function pointers. - -The solution at the time was to set the PLABEL bit in hppa closure pointers using FFI_CLOSURE_PTR. However, I realized recently that this was a bad choice. Packages like python-cffi allocate their own closure pointers, so this isn't going to work well there. - -A better solution is to leave closure pointers unchanged and only set the PLABEL bit in pointers used to point to executable code. - -The attached patch drops the FFI_CLOSURE_PTR and FFI_RESTORE_PTR defines. This allows some cleanup in the hppa closure routines. The FFI_FN define is now used to set the PLABEL bit on hppa. ffi_closure_alloc is modified to set the PLABEL bit in the value set in *code. - -I also added a FFI_CL define to convert a function pointer to a closure pointer. It is only used in one test case. ---- a/include/ffi.h.in -+++ b/include/ffi.h.in -@@ -361,14 +361,6 @@ typedef struct { - FFI_API void *ffi_closure_alloc (size_t size, void **code); - FFI_API void ffi_closure_free (void *); - --#if defined(PA_LINUX) || defined(PA_HPUX) --#define FFI_CLOSURE_PTR(X) ((void *)((unsigned int)(X) | 2)) --#define FFI_RESTORE_PTR(X) ((void *)((unsigned int)(X) & ~3)) --#else --#define FFI_CLOSURE_PTR(X) (X) --#define FFI_RESTORE_PTR(X) (X) --#endif -- - FFI_API ffi_status - ffi_prep_closure (ffi_closure*, - ffi_cif *, -@@ -515,8 +507,14 @@ FFI_API - ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, - size_t *offsets); - --/* Useful for eliminating compiler warnings. */ -+/* Convert between closure and function pointers. */ -+#if defined(PA_LINUX) || defined(PA_HPUX) -+#define FFI_FN(f) ((void (*)(void))((unsigned int)(f) | 2)) -+#define FFI_CL(f) ((void *)((unsigned int)(f) & ~3)) -+#else - #define FFI_FN(f) ((void (*)(void))f) -+#define FFI_CL(f) ((void *)(f)) -+#endif - - /* ---- Definitions shared with assembly code ---------------------------- */ - ---- a/src/closures.c -+++ b/src/closures.c -@@ -993,23 +993,23 @@ ffi_closure_alloc (size_t size, void **code) - if (!code) - return NULL; - -- ptr = FFI_CLOSURE_PTR (dlmalloc (size)); -+ ptr = dlmalloc (size); - - if (ptr) - { - msegmentptr seg = segment_holding (gm, ptr); - -- *code = add_segment_exec_offset (ptr, seg); -+ *code = FFI_FN (add_segment_exec_offset (ptr, seg)); - if (!ffi_tramp_is_supported ()) - return ptr; - - ftramp = ffi_tramp_alloc (0); - if (ftramp == NULL) - { -- dlfree (FFI_RESTORE_PTR (ptr)); -+ dlfree (ptr); - return NULL; - } -- *code = ffi_tramp_get_addr (ftramp); -+ *code = FFI_FN (ffi_tramp_get_addr (ftramp)); - ((ffi_closure *) ptr)->ftramp = ftramp; - } - -@@ -1050,7 +1050,7 @@ ffi_closure_free (void *ptr) - if (ffi_tramp_is_supported ()) - ffi_tramp_free (((ffi_closure *) ptr)->ftramp); - -- dlfree (FFI_RESTORE_PTR (ptr)); -+ dlfree (ptr); - } - - int -@@ -1070,16 +1070,20 @@ ffi_tramp_is_present (void *ptr) - void * - ffi_closure_alloc (size_t size, void **code) - { -+ void *c; -+ - if (!code) - return NULL; - -- return *code = FFI_CLOSURE_PTR (malloc (size)); -+ c = malloc (size); -+ *code = FFI_FN (c); -+ return c; - } - - void - ffi_closure_free (void *ptr) - { -- free (FFI_RESTORE_PTR (ptr)); -+ free (ptr); - } - - void * ---- a/src/pa/ffi.c -+++ b/src/pa/ffi.c -@@ -445,7 +445,6 @@ ffi_status ffi_closure_inner_pa32(ffi_closure *closure, UINT32 *stack) - int i, avn; - unsigned int slot = FIRST_ARG_SLOT; - register UINT32 r28 asm("r28"); -- ffi_closure *c = (ffi_closure *)FFI_RESTORE_PTR (closure); - - cif = closure->cif; - -@@ -548,7 +547,7 @@ ffi_status ffi_closure_inner_pa32(ffi_closure *closure, UINT32 *stack) - } - - /* Invoke the closure. */ -- (c->fun) (cif, rvalue, avalue, c->user_data); -+ (closure->fun) (cif, rvalue, avalue, closure->user_data); - - debug(3, "after calling function, ret[0] = %08x, ret[1] = %08x\n", u.ret[0], - u.ret[1]); -@@ -649,8 +648,6 @@ ffi_prep_closure_loc (ffi_closure* closure, - void *user_data, - void *codeloc) - { -- ffi_closure *c = (ffi_closure *)FFI_RESTORE_PTR (closure); -- - /* The layout of a function descriptor. A function pointer with the PLABEL - bit set points to a function descriptor. */ - struct pa32_fd -@@ -676,14 +673,14 @@ ffi_prep_closure_loc (ffi_closure* closure, - fd = (struct pa32_fd *)((UINT32)ffi_closure_pa32 & ~3); - - /* Setup trampoline. */ -- tramp = (struct ffi_pa32_trampoline_struct *)c->tramp; -+ tramp = (struct ffi_pa32_trampoline_struct *)closure->tramp; - tramp->code_pointer = fd->code_pointer; - tramp->fake_gp = (UINT32)codeloc & ~3; - tramp->real_gp = fd->gp; - -- c->cif = cif; -- c->user_data = user_data; -- c->fun = fun; -+ closure->cif = cif; -+ closure->user_data = user_data; -+ closure->fun = fun; - - return FFI_OK; - } ---- a/testsuite/libffi.closures/closure_loc_fn0.c -+++ b/testsuite/libffi.closures/closure_loc_fn0.c -@@ -85,7 +85,7 @@ int main (void) - - #ifndef FFI_EXEC_STATIC_TRAMP - /* With static trampolines, the codeloc does not point to closure */ -- CHECK(memcmp(pcl, codeloc, sizeof(*pcl)) == 0); -+ CHECK(memcmp(pcl, FFI_CL(codeloc), sizeof(*pcl)) == 0); - #endif - - res = (*((closure_loc_test_type0)codeloc)) - diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-hppa-jump-table.patch b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-hppa-jump-table.patch deleted file mode 100644 index 822a7eb893..0000000000 --- a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-hppa-jump-table.patch +++ /dev/null @@ -1,289 +0,0 @@ -https://github.com/libffi/libffi/commit/222abd0c65babe2174b21753217145f5031a8b91 - -From 222abd0c65babe2174b21753217145f5031a8b91 Mon Sep 17 00:00:00 2001 -From: Anthony Green -Date: Thu, 2 Feb 2023 07:04:55 -0500 -Subject: [PATCH] From Dave Anglin: - -This patch is derived from the work done in implementing libffi for 64-bit hppa64-hpux target. Currently, the 32-bit hppa targets do a linear search for the return type of an ffi_call. This is slow and inefficient. A jump table can used to jump directly to the code used to process the return value. In most common cases, the return value can be processed in the jump table itself. - -The patch also fixes return handling for FFI_TYPE_UINT8, FFI_TYPE_SINT8, FFI_TYPE_UINT16 and FFI_TYPE_SINT16. ---- a/src/pa/ffi.c -+++ b/src/pa/ffi.c -@@ -56,27 +56,12 @@ static inline int ffi_struct_type(ffi_type *t) - size_t sz = t->size; - - /* Small structure results are passed in registers, -- larger ones are passed by pointer. Note that -- small structures of size 2, 4 and 8 differ from -- the corresponding integer types in that they have -- different alignment requirements. */ -- -- if (sz <= 1) -- return FFI_TYPE_UINT8; -- else if (sz == 2) -- return FFI_TYPE_SMALL_STRUCT2; -- else if (sz == 3) -- return FFI_TYPE_SMALL_STRUCT3; -- else if (sz == 4) -- return FFI_TYPE_SMALL_STRUCT4; -- else if (sz == 5) -- return FFI_TYPE_SMALL_STRUCT5; -- else if (sz == 6) -- return FFI_TYPE_SMALL_STRUCT6; -- else if (sz == 7) -- return FFI_TYPE_SMALL_STRUCT7; -- else if (sz <= 8) -- return FFI_TYPE_SMALL_STRUCT8; -+ larger ones are passed by pointer. Note that small -+ structures differ from the corresponding integer -+ types in that they have different alignment requirements. */ -+ -+ if (sz <= 8) -+ return -sz; - else - return FFI_TYPE_STRUCT; /* else, we pass it by pointer. */ - } -@@ -556,16 +541,16 @@ ffi_status ffi_closure_inner_pa32(ffi_closure *closure, UINT32 *stack) - switch (cif->flags) - { - case FFI_TYPE_UINT8: -- *(stack - FIRST_ARG_SLOT) = (UINT8)(u.ret[0] >> 24); -+ *(stack - FIRST_ARG_SLOT) = (UINT8)u.ret[0]; - break; - case FFI_TYPE_SINT8: -- *(stack - FIRST_ARG_SLOT) = (SINT8)(u.ret[0] >> 24); -+ *(stack - FIRST_ARG_SLOT) = (SINT8)u.ret[0]; - break; - case FFI_TYPE_UINT16: -- *(stack - FIRST_ARG_SLOT) = (UINT16)(u.ret[0] >> 16); -+ *(stack - FIRST_ARG_SLOT) = (UINT16)u.ret[0]; - break; - case FFI_TYPE_SINT16: -- *(stack - FIRST_ARG_SLOT) = (SINT16)(u.ret[0] >> 16); -+ *(stack - FIRST_ARG_SLOT) = (SINT16)u.ret[0]; - break; - case FFI_TYPE_INT: - case FFI_TYPE_SINT32: -@@ -590,6 +575,7 @@ ffi_status ffi_closure_inner_pa32(ffi_closure *closure, UINT32 *stack) - /* Don't need a return value, done by caller. */ - break; - -+ case FFI_TYPE_SMALL_STRUCT1: - case FFI_TYPE_SMALL_STRUCT2: - case FFI_TYPE_SMALL_STRUCT3: - case FFI_TYPE_SMALL_STRUCT4: ---- a/src/pa/ffitarget.h -+++ b/src/pa/ffitarget.h -@@ -73,11 +73,22 @@ typedef enum ffi_abi { - #define FFI_TRAMPOLINE_SIZE 12 - #endif - --#define FFI_TYPE_SMALL_STRUCT2 -1 --#define FFI_TYPE_SMALL_STRUCT3 -2 --#define FFI_TYPE_SMALL_STRUCT4 -3 --#define FFI_TYPE_SMALL_STRUCT5 -4 --#define FFI_TYPE_SMALL_STRUCT6 -5 --#define FFI_TYPE_SMALL_STRUCT7 -6 --#define FFI_TYPE_SMALL_STRUCT8 -7 -+#define FFI_TYPE_SMALL_STRUCT1 -1 -+#define FFI_TYPE_SMALL_STRUCT2 -2 -+#define FFI_TYPE_SMALL_STRUCT3 -3 -+#define FFI_TYPE_SMALL_STRUCT4 -4 -+#define FFI_TYPE_SMALL_STRUCT5 -5 -+#define FFI_TYPE_SMALL_STRUCT6 -6 -+#define FFI_TYPE_SMALL_STRUCT7 -7 -+#define FFI_TYPE_SMALL_STRUCT8 -8 -+ -+/* linux.S and hpux32.S expect FFI_TYPE_COMPLEX is the last generic type. */ -+#define FFI_PA_TYPE_LAST FFI_TYPE_COMPLEX -+ -+/* If new generic types are added, the jump tables in linux.S and hpux32.S -+ likely need updating. */ -+#if FFI_TYPE_LAST != FFI_PA_TYPE_LAST -+# error "You likely have broken jump tables" -+#endif -+ - #endif - ---- a/src/pa/linux.S -+++ b/src/pa/linux.S -@@ -103,51 +103,103 @@ ffi_call_pa32: - - /* Prepare to store the result; we need to recover flags and rvalue. */ - ldw -48(%r3), %r21 /* r21 <- flags */ -- ldw -52(%r3), %r20 /* r20 <- rvalue */ - -- /* Store the result according to the return type. */ -+ /* Adjust flags range from [-8, 15] to [0, 23]. */ -+ addi 8, %r21, %r21 - --.Lcheckint: -- comib,<>,n FFI_TYPE_INT, %r21, .Lcheckint8 -- b .Ldone -- stw %ret0, 0(%r20) -+ blr %r21, %r0 -+ ldw -52(%r3), %r20 /* r20 <- rvalue */ - --.Lcheckint8: -- comib,<>,n FFI_TYPE_UINT8, %r21, .Lcheckint16 -+ /* Giant jump table */ -+ /* 8-byte small struct */ -+ b,n .Lsmst8 -+ nop -+ /* 7-byte small struct */ -+ b,n .Lsmst7 -+ nop -+ /* 6-byte small struct */ -+ b,n .Lsmst6 -+ nop -+ /* 5-byte small struct */ -+ b,n .Lsmst5 -+ nop -+ /* 4-byte small struct */ -+ b,n .Lsmst4 -+ nop -+ /* 3-byte small struct */ -+ b,n .Lsmst3 -+ nop -+ /* 2-byte small struct */ -+ b,n .Lsmst2 -+ nop -+ /* 1-byte small struct */ - b .Ldone - stb %ret0, 0(%r20) -- --.Lcheckint16: -- comib,<>,n FFI_TYPE_UINT16, %r21, .Lcheckdbl -+ /* void */ -+ b,n .Ldone -+ nop -+ /* int */ - b .Ldone -- sth %ret0, 0(%r20) -- --.Lcheckdbl: -- comib,<>,n FFI_TYPE_DOUBLE, %r21, .Lcheckfloat -+ stw %ret0, 0(%r20) -+ /* float */ -+ b .Ldone -+ fstw %fr4L,0(%r20) -+ /* double */ - b .Ldone - fstd %fr4,0(%r20) -- --.Lcheckfloat: -- comib,<>,n FFI_TYPE_FLOAT, %r21, .Lcheckll -+ /* long double */ - b .Ldone -- fstw %fr4L,0(%r20) -+ fstd %fr4,0(%r20) -+ /* unsigned int8 */ -+ b .Ldone -+ stw %ret0, 0(%r20) -+ /* sint8 */ -+ b .Ldone -+ stw %ret0, 0(%r20) -+ /* unsigned int16 */ -+ b .Ldone -+ stw %ret0, 0(%r20) -+ /* sint16 */ -+ b .Ldone -+ stw %ret0, 0(%r20) -+ /* unsigned int32 */ -+ b .Ldone -+ stw %ret0, 0(%r20) -+ /* sint32 */ -+ b .Ldone -+ stw %ret0, 0(%r20) -+ /* unsigned int64 */ -+ b,n .Luint64 -+ nop -+ /* signed int64 */ -+ b,n .Lsint64 -+ nop -+ /* large struct */ -+ b,n .Ldone -+ nop -+ /* pointer */ -+ b .Ldone -+ stw %ret0, 0(%r20) -+ /* complex */ -+ b,n .Ldone -+ nop -+ -+ /* Store the result according to the return type. */ - --.Lcheckll: -- comib,<>,n FFI_TYPE_UINT64, %r21, .Lchecksmst2 -+.Luint64: -+.Lsint64: - stw %ret0, 0(%r20) - b .Ldone - stw %ret1, 4(%r20) - --.Lchecksmst2: -- comib,<>,n FFI_TYPE_SMALL_STRUCT2, %r21, .Lchecksmst3 -+.Lsmst2: - /* 2-byte structs are returned in ret0 as ????xxyy. */ - extru %ret0, 23, 8, %r22 - stbs,ma %r22, 1(%r20) - b .Ldone - stb %ret0, 0(%r20) - --.Lchecksmst3: -- comib,<>,n FFI_TYPE_SMALL_STRUCT3, %r21, .Lchecksmst4 -+.Lsmst3: - /* 3-byte structs are returned in ret0 as ??xxyyzz. */ - extru %ret0, 15, 8, %r22 - stbs,ma %r22, 1(%r20) -@@ -156,8 +208,7 @@ ffi_call_pa32: - b .Ldone - stb %ret0, 0(%r20) - --.Lchecksmst4: -- comib,<>,n FFI_TYPE_SMALL_STRUCT4, %r21, .Lchecksmst5 -+.Lsmst4: - /* 4-byte structs are returned in ret0 as wwxxyyzz. */ - extru %ret0, 7, 8, %r22 - stbs,ma %r22, 1(%r20) -@@ -168,8 +219,7 @@ ffi_call_pa32: - b .Ldone - stb %ret0, 0(%r20) - --.Lchecksmst5: -- comib,<>,n FFI_TYPE_SMALL_STRUCT5, %r21, .Lchecksmst6 -+.Lsmst5: - /* 5 byte values are returned right justified: - ret0 ret1 - 5: ??????aa bbccddee */ -@@ -183,8 +233,7 @@ ffi_call_pa32: - b .Ldone - stb %ret1, 0(%r20) - --.Lchecksmst6: -- comib,<>,n FFI_TYPE_SMALL_STRUCT6, %r21, .Lchecksmst7 -+.Lsmst6: - /* 6 byte values are returned right justified: - ret0 ret1 - 6: ????aabb ccddeeff */ -@@ -200,8 +249,7 @@ ffi_call_pa32: - b .Ldone - stb %ret1, 0(%r20) - --.Lchecksmst7: -- comib,<>,n FFI_TYPE_SMALL_STRUCT7, %r21, .Lchecksmst8 -+.Lsmst7: - /* 7 byte values are returned right justified: - ret0 ret1 - 7: ??aabbcc ddeeffgg */ -@@ -219,8 +267,7 @@ ffi_call_pa32: - b .Ldone - stb %ret1, 0(%r20) - --.Lchecksmst8: -- comib,<>,n FFI_TYPE_SMALL_STRUCT8, %r21, .Ldone -+.Lsmst8: - /* 8 byte values are returned right justified: - ret0 ret1 - 8: aabbccdd eeffgghh */ diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-hppa-large-struct.patch b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-hppa-large-struct.patch deleted file mode 100644 index aaf4af3684..0000000000 --- a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-hppa-large-struct.patch +++ /dev/null @@ -1,36 +0,0 @@ -https://github.com/libffi/libffi/commit/c50c16d0bcb58952840184aa83e62c6d912bf779 - -From c50c16d0bcb58952840184aa83e62c6d912bf779 Mon Sep 17 00:00:00 2001 -From: Anthony Green -Date: Sun, 20 Nov 2022 12:20:40 -0500 -Subject: [PATCH] Fix large struct passing on PA-RISC - ---- a/src/pa/ffi.c -+++ b/src/pa/ffi.c -@@ -376,10 +376,26 @@ extern void ffi_call_pa32(void (*)(UINT32 *, extended_cif *, unsigned), - void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) - { - extended_cif ecif; -+ size_t i, nargs = cif->nargs; -+ ffi_type **arg_types = cif->arg_types; - - ecif.cif = cif; - ecif.avalue = avalue; - -+ /* If we have any large structure arguments, make a copy so we are passing -+ by value. */ -+ for (i = 0; i < nargs; i++) -+ { -+ ffi_type *at = arg_types[i]; -+ int size = at->size; -+ if (at->type == FFI_TYPE_STRUCT && size > 8) -+ { -+ char *argcopy = alloca (size); -+ memcpy (argcopy, avalue[i], size); -+ avalue[i] = argcopy; -+ } -+ } -+ - /* If the return value is a struct and we don't have a return - value address then we need to make one. */ - diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-lld-17.patch b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-lld-17.patch deleted file mode 100644 index 8e87814b23..0000000000 --- a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-lld-17.patch +++ /dev/null @@ -1,34 +0,0 @@ -https://bugs.gentoo.org/915086 -https://github.com/libffi/libffi/pull/800 - -From 65f6869fd74630a9252ef89971b725b921f17061 Mon Sep 17 00:00:00 2001 -From: Alfred Wingate -Date: Tue, 10 Oct 2023 06:32:02 +0300 -Subject: [PATCH] Put optional symbols behind ifdefs - -Signed-off-by: Alfred Wingate ---- a/libffi.map.in -+++ b/libffi.map.in -@@ -33,7 +33,10 @@ LIBFFI_BASE_8.0 { - ffi_raw_to_ptrarray; - ffi_raw_size; - -+#if !FFI_NATIVE_RAW_API - ffi_java_raw_call; -+#endif -+ - ffi_java_ptrarray_to_raw; - ffi_java_raw_to_ptrarray; - ffi_java_raw_size; -@@ -62,8 +65,10 @@ LIBFFI_CLOSURE_8.0 { - ffi_prep_closure_loc; - ffi_prep_raw_closure; - ffi_prep_raw_closure_loc; -+#if !FFI_NATIVE_RAW_API - ffi_prep_java_raw_closure; - ffi_prep_java_raw_closure_loc; -+#endif - } LIBFFI_BASE_8.0; - #endif - - diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-sparc-float-typo.patch b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-sparc-float-typo.patch deleted file mode 100644 index 3768df62df..0000000000 --- a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-sparc-float-typo.patch +++ /dev/null @@ -1,28 +0,0 @@ -https://github.com/libffi/libffi/issues/778 -https://bugs.gentoo.org/882071 - -Fix incorrect type for passing floats. Thanks to Petr Sumbera and Richard Henderson -for figuring it out on the upstream bug. ---- a/src/sparc/ffi64.c -+++ b/src/sparc/ffi64.c -@@ -382,13 +382,19 @@ ffi_prep_args_v9(ffi_cif *cif, unsigned long *argp, void *rvalue, void **avalue) - *argp++ = *(SINT32 *)a; - break; - case FFI_TYPE_UINT32: -- case FFI_TYPE_FLOAT: - *argp++ = *(UINT32 *)a; - break; - case FFI_TYPE_SINT64: - case FFI_TYPE_UINT64: - case FFI_TYPE_POINTER: -+ *argp++ = *(UINT64 *)a; -+ break; -+ case FFI_TYPE_FLOAT: -+ flags |= SPARC_FLAG_FP_ARGS; -+ *argp++ = *(UINT32 *)a; -+ break; - case FFI_TYPE_DOUBLE: -+ flags |= SPARC_FLAG_FP_ARGS; - *argp++ = *(UINT64 *)a; - break; - diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-trampoline-c99.patch b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-trampoline-c99.patch deleted file mode 100644 index a772833113..0000000000 --- a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.4-trampoline-c99.patch +++ /dev/null @@ -1,39 +0,0 @@ -https://github.com/libffi/libffi/issues/760 -https://github.com/libffi/libffi/commit/ce077e5565366171aa1b4438749b0922fce887a4 - -From ce077e5565366171aa1b4438749b0922fce887a4 Mon Sep 17 00:00:00 2001 -From: serge-sans-paille -Date: Thu, 2 Feb 2023 14:46:29 +0000 -Subject: [PATCH] Forward declare open_temp_exec_file (#764) - -It's defined in closures.c and used in tramp.c. -Also declare it as an hidden symbol, as it should be. - -Co-authored-by: serge-sans-paille ---- a/include/ffi_common.h -+++ b/include/ffi_common.h -@@ -128,6 +128,10 @@ void *ffi_data_to_code_pointer (void *data) FFI_HIDDEN; - static trampoline. */ - int ffi_tramp_is_present (void *closure) FFI_HIDDEN; - -+/* Return a file descriptor of a temporary zero-sized file in a -+ writable and executable filesystem. */ -+int open_temp_exec_file(void) FFI_HIDDEN; -+ - /* Extended cif, used in callback from assembly routine */ - typedef struct - { ---- a/src/tramp.c -+++ b/src/tramp.c -@@ -39,6 +39,10 @@ - #ifdef __linux__ - #define _GNU_SOURCE 1 - #endif -+ -+#include -+#include -+ - #include - #include - #include - diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.6-tests.patch b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.6-tests.patch deleted file mode 100644 index e24d01f4c0..0000000000 --- a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.6-tests.patch +++ /dev/null @@ -1,104 +0,0 @@ -https://github.com/libffi/libffi/commit/efb98a72d8b9bdb71b4f972efced073bee3b30fc -https://github.com/libffi/libffi/commit/92d384df196a099fde384f9178864dbfe8c6b0fc - -From efb98a72d8b9bdb71b4f972efced073bee3b30fc Mon Sep 17 00:00:00 2001 -From: Anthony Green -Date: Sun, 15 Sep 2024 07:31:33 -0400 -Subject: [PATCH] Robustify floating point comparison in test - ---- - testsuite/libffi.call/struct_int_float.c | 24 ++++++++++++------------ - 1 file changed, 12 insertions(+), 12 deletions(-) - -diff --git a/testsuite/libffi.call/struct_int_float.c b/testsuite/libffi.call/struct_int_float.c -index dab1d1fed..82685814c 100644 ---- a/testsuite/libffi.call/struct_int_float.c -+++ b/testsuite/libffi.call/struct_int_float.c -@@ -54,35 +54,35 @@ int main (void) - values[4] = &ts_arg[4]; - args[5] = &ts_type; - values[5] = &ts_arg[5]; -- -+ - /* Initialize the cif */ - CHECK(ffi_prep_cif(&cif, ABI_NUM, 6, &ffi_type_float, args) == FFI_OK); -- -+ - ts_arg[0].i = 1; -- ts_arg[0].f = 1.11f; -+ ts_arg[0].f = 11.11f; - ts_arg[1].i = 2; -- ts_arg[1].f = 2.22f; -+ ts_arg[1].f = 22.22f; - ts_arg[2].i = 3; -- ts_arg[2].f = 3.33f; -+ ts_arg[2].f = 33.33f; - ts_arg[3].i = 4; -- ts_arg[3].f = 4.44f; -+ ts_arg[3].f = 44.44f; - ts_arg[4].i = 5; -- ts_arg[4].f = 5.55f; -+ ts_arg[4].f = 55.55f; - ts_arg[5].i = 6; -- ts_arg[5].f = 6.66f; -- -+ ts_arg[5].f = 66.66f; -+ - printf ("%g\n", ts_arg[0].f); - printf ("%g\n", ts_arg[1].f); - printf ("%g\n", ts_arg[2].f); - printf ("%g\n", ts_arg[3].f); - printf ("%g\n", ts_arg[4].f); - printf ("%g\n", ts_arg[5].f); -- -+ - ffi_call(&cif, FFI_FN(struct_int_float), &rfloat, values); - - printf ("%g\n", rfloat); -- -- CHECK(rfloat == 1.11f); -+ -+ CHECK(fabs(rfloat - 11.11) < FLT_EPSILON); - - exit(0); - } - -From 92d384df196a099fde384f9178864dbfe8c6b0fc Mon Sep 17 00:00:00 2001 -From: Anthony Green -Date: Sun, 15 Sep 2024 12:32:29 -0400 -Subject: [PATCH] Fix floating point compare - ---- - testsuite/libffi.call/struct_int_float.c | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/testsuite/libffi.call/struct_int_float.c b/testsuite/libffi.call/struct_int_float.c -index 82685814..66ef6c45 100644 ---- a/testsuite/libffi.call/struct_int_float.c -+++ b/testsuite/libffi.call/struct_int_float.c -@@ -14,11 +14,11 @@ typedef struct - } test_structure_int_float; - - static float ABI_ATTR struct_int_float(test_structure_int_float ts1, -- test_structure_int_float ts2, -- test_structure_int_float ts3, -- test_structure_int_float ts4, -- test_structure_int_float ts5, -- test_structure_int_float ts6) -+ test_structure_int_float ts2 __UNUSED__, -+ test_structure_int_float ts3 __UNUSED__, -+ test_structure_int_float ts4 __UNUSED__, -+ test_structure_int_float ts5 __UNUSED__, -+ test_structure_int_float ts6 __UNUSED__) - { - return ts1.f; - } -@@ -82,7 +82,7 @@ int main (void) - - printf ("%g\n", rfloat); - -- CHECK(fabs(rfloat - 11.11) < FLT_EPSILON); -+ CHECK(fabs(rfloat - 11.11) < 3 * FLT_EPSILON); - - exit(0); - } diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.6-x86-sse.patch b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.6-x86-sse.patch deleted file mode 100644 index 75c0e892ef..0000000000 --- a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.6-x86-sse.patch +++ /dev/null @@ -1,124 +0,0 @@ -https://github.com/libffi/libffi/commit/d21881f55ed4a44d464c9091871e69b0bb47611a - -From d21881f55ed4a44d464c9091871e69b0bb47611a Mon Sep 17 00:00:00 2001 -From: kellda <59569234+kellda@users.noreply.github.com> -Date: Sun, 15 Sep 2024 13:29:42 +0200 -Subject: [PATCH] Fix x86/ffi64 calls with 6 gp and some sse registers (#848) - -* Fix x86/ffi64 calls with 6 gp and some sse registers - -* Add test demonstating issue when mixing gp and sse registers ---- - src/x86/ffi64.c | 2 +- - testsuite/libffi.call/struct_int_float.c | 88 ++++++++++++++++++++++++ - 2 files changed, 89 insertions(+), 1 deletion(-) - create mode 100644 testsuite/libffi.call/struct_int_float.c - -diff --git a/src/x86/ffi64.c b/src/x86/ffi64.c -index 6a8e37fc5..39f0bfd33 100644 ---- a/src/x86/ffi64.c -+++ b/src/x86/ffi64.c -@@ -651,7 +651,7 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, - break; - default: - reg_args->gpr[gprcount] = 0; -- memcpy (®_args->gpr[gprcount], a, size); -+ memcpy (®_args->gpr[gprcount], a, sizeof(UINT64)); - } - gprcount++; - break; -diff --git a/testsuite/libffi.call/struct_int_float.c b/testsuite/libffi.call/struct_int_float.c -new file mode 100644 -index 000000000..dab1d1fed ---- /dev/null -+++ b/testsuite/libffi.call/struct_int_float.c -@@ -0,0 +1,88 @@ -+/* Area: ffi_call -+ Purpose: Demonstrate structures with integers corrupting earlier floats -+ Limitations: none. -+ PR: #848 -+ Originator: kellda */ -+ -+/* { dg-do run } */ -+#include "ffitest.h" -+ -+typedef struct -+{ -+ unsigned long i; -+ float f; -+} test_structure_int_float; -+ -+static float ABI_ATTR struct_int_float(test_structure_int_float ts1, -+ test_structure_int_float ts2, -+ test_structure_int_float ts3, -+ test_structure_int_float ts4, -+ test_structure_int_float ts5, -+ test_structure_int_float ts6) -+{ -+ return ts1.f; -+} -+ -+int main (void) -+{ -+ ffi_cif cif; -+ ffi_type *args[MAX_ARGS]; -+ void *values[MAX_ARGS]; -+ ffi_type ts_type; -+ ffi_type *ts_type_elements[3]; -+ float rfloat; -+ -+ test_structure_int_float ts_arg[6]; -+ -+ ts_type.size = 0; -+ ts_type.alignment = 0; -+ ts_type.type = FFI_TYPE_STRUCT; -+ ts_type.elements = ts_type_elements; -+ ts_type_elements[0] = &ffi_type_ulong; -+ ts_type_elements[1] = &ffi_type_float; -+ ts_type_elements[2] = NULL; -+ -+ args[0] = &ts_type; -+ values[0] = &ts_arg[0]; -+ args[1] = &ts_type; -+ values[1] = &ts_arg[1]; -+ args[2] = &ts_type; -+ values[2] = &ts_arg[2]; -+ args[3] = &ts_type; -+ values[3] = &ts_arg[3]; -+ args[4] = &ts_type; -+ values[4] = &ts_arg[4]; -+ args[5] = &ts_type; -+ values[5] = &ts_arg[5]; -+ -+ /* Initialize the cif */ -+ CHECK(ffi_prep_cif(&cif, ABI_NUM, 6, &ffi_type_float, args) == FFI_OK); -+ -+ ts_arg[0].i = 1; -+ ts_arg[0].f = 1.11f; -+ ts_arg[1].i = 2; -+ ts_arg[1].f = 2.22f; -+ ts_arg[2].i = 3; -+ ts_arg[2].f = 3.33f; -+ ts_arg[3].i = 4; -+ ts_arg[3].f = 4.44f; -+ ts_arg[4].i = 5; -+ ts_arg[4].f = 5.55f; -+ ts_arg[5].i = 6; -+ ts_arg[5].f = 6.66f; -+ -+ printf ("%g\n", ts_arg[0].f); -+ printf ("%g\n", ts_arg[1].f); -+ printf ("%g\n", ts_arg[2].f); -+ printf ("%g\n", ts_arg[3].f); -+ printf ("%g\n", ts_arg[4].f); -+ printf ("%g\n", ts_arg[5].f); -+ -+ ffi_call(&cif, FFI_FN(struct_int_float), &rfloat, values); -+ -+ printf ("%g\n", rfloat); -+ -+ CHECK(rfloat == 1.11f); -+ -+ exit(0); -+} - diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.7-Revert-Fix-x86-ffi64-calls-with-6-gp-and-some-sse-re.patch b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.7-Revert-Fix-x86-ffi64-calls-with-6-gp-and-some-sse-re.patch deleted file mode 100644 index a8958b2fef..0000000000 --- a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/files/libffi-3.4.7-Revert-Fix-x86-ffi64-calls-with-6-gp-and-some-sse-re.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 4354fe1434a37b781ff19f5a6be51ec4e982ad5a Mon Sep 17 00:00:00 2001 -Message-ID: <4354fe1434a37b781ff19f5a6be51ec4e982ad5a.1739062746.git.sam@gentoo.org> -From: Sam James -Date: Sun, 9 Feb 2025 00:54:28 +0000 -Subject: [PATCH] Revert "Fix x86/ffi64 calls with 6 gp and some sse registers - (#848)" - -This reverts commit d21881f55ed4a44d464c9091871e69b0bb47611a. - -Bug: https://github.com/libffi/libffi/issues/879 -Bug: https://bugs.gentoo.org/949051 -Signed-off-by: Sam James ---- a/src/x86/ffi64.c -+++ b/src/x86/ffi64.c -@@ -654,7 +654,7 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, - break; - default: - reg_args->gpr[gprcount] = 0; -- memcpy (®_args->gpr[gprcount], a, sizeof(UINT64)); -+ memcpy (®_args->gpr[gprcount], a, size); - } - gprcount++; - break; ---- a/testsuite/libffi.call/struct_int_float.c -+++ b/testsuite/libffi.call/struct_int_float.c -@@ -5,6 +5,7 @@ - Originator: kellda */ - - /* { dg-do run } */ -+/* { dg-skip-if "libffi bug #879" { *-*-* } { "*" } } */ - #include "ffitest.h" - - typedef struct - -base-commit: 1716f81e9a115d340429504563bc8e7fb2eeef2b --- -2.48.1 - diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.4-r4.ebuild b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.4-r4.ebuild deleted file mode 100644 index 197f9975b8..0000000000 --- a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.4-r4.ebuild +++ /dev/null @@ -1,83 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit multilib-minimal preserve-libs - -MY_PV=${PV/_rc/-rc} -MY_P=${PN}-${MY_PV} - -DESCRIPTION="Portable, high level programming interface to various calling conventions" -HOMEPAGE="https://sourceware.org/libffi/" -SRC_URI="https://github.com/libffi/libffi/releases/download/v${MY_PV}/${MY_P}.tar.gz" -S="${WORKDIR}"/${MY_P} - -LICENSE="MIT" -# This is a core package which is depended on by e.g. Python -# Please use preserve-libs.eclass in pkg_{pre,post}inst to cover users -# with FEATURES="-preserved-libs" or another package manager if SONAME -# changes. -SLOT="0/8" # SONAME=libffi.so.8 -KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" -IUSE="debug exec-static-trampoline pax-kernel static-libs test" - -RESTRICT="!test? ( test )" -BDEPEND="test? ( dev-util/dejagnu )" - -PATCHES=( - "${FILESDIR}"/${P}-hppa-large-struct.patch - "${FILESDIR}"/${P}-hppa-closure-function-ptrs.patch - "${FILESDIR}"/${P}-hppa-jump-table.patch - "${FILESDIR}"/${P}-sparc-float-typo.patch - "${FILESDIR}"/${P}-lld-17.patch - "${FILESDIR}"/${P}-trampoline-c99.patch -) - -src_prepare() { - default - - if [[ ${CHOST} == arm64-*-darwin* ]] ; then - # ensure we use aarch64 asm, not x86 on arm64 - sed -i -e 's/aarch64\*-\*-\*/arm64*-*-*|&/' \ - configure configure.host || die - fi -} - -multilib_src_configure() { - # --includedir= path maintains a few properties: - # 1. have stable name across libffi versions: some packages like - # dev-lang/ghc or kde-frameworks/networkmanager-qt embed - # ${includedir} at build-time. Don't require those to be - # rebuilt unless SONAME changes. bug #695788 - # - # We use /usr/.../${PN} (instead of former /usr/.../${P}). - # - # 2. have ${ABI}-specific location as ffi.h is target-dependent. - # - # We use /usr/$(get_libdir)/... to have ABI identifier. - ECONF_SOURCE="${S}" econf \ - --includedir="${EPREFIX}"/usr/$(get_libdir)/${PN}/include \ - --disable-multi-os-directory \ - $(use_enable static-libs static) \ - $(use_enable exec-static-trampoline exec-static-tramp) \ - $(use_enable pax-kernel pax_emutramp) \ - $(use_enable debug) -} - -multilib_src_test() { - emake -Onone check -} - -multilib_src_install_all() { - einstalldocs - find "${ED}" -name "*.la" -delete || die -} - -pkg_preinst() { - preserve_old_lib /usr/$(get_libdir)/libffi.so.7 -} - -pkg_postinst() { - preserve_old_lib_notify /usr/$(get_libdir)/libffi.so.7 -} diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.6-r3.ebuild b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.6-r3.ebuild index e71339d70d..7773456321 100644 --- a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.6-r3.ebuild +++ b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.6-r3.ebuild @@ -3,7 +3,7 @@ EAPI=8 -inherit multilib-minimal preserve-libs +inherit dot-a multilib-minimal preserve-libs MY_PV=${PV/_rc/-rc} MY_P=${PN}-${MY_PV} @@ -17,7 +17,7 @@ if [[ ${PV} == 9999 ]] ; then else SRC_URI="https://github.com/libffi/libffi/releases/download/v${MY_PV}/${MY_P}.tar.gz" - KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" + KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" fi S="${WORKDIR}"/${MY_P} @@ -55,6 +55,11 @@ src_prepare() { fi } +src_configure() { + use static-libs && lto-guarantee-fat + multilib-minimal_src_configure +} + multilib_src_configure() { # --includedir= path maintains a few properties: # 1. have stable name across libffi versions: some packages like @@ -83,6 +88,7 @@ multilib_src_test() { multilib_src_install_all() { einstalldocs find "${ED}" -name "*.la" -delete || die + strip-lto-bytecode } pkg_preinst() { diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.6.ebuild b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.6.ebuild deleted file mode 100644 index 1877e31519..0000000000 --- a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.6.ebuild +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit multilib-minimal preserve-libs - -MY_PV=${PV/_rc/-rc} -MY_P=${PN}-${MY_PV} - -DESCRIPTION="Portable, high level programming interface to various calling conventions" -HOMEPAGE="https://sourceware.org/libffi/" -SRC_URI="https://github.com/libffi/libffi/releases/download/v${MY_PV}/${MY_P}.tar.gz" -S="${WORKDIR}"/${MY_P} - -LICENSE="MIT" -# This is a core package which is depended on by e.g. Python. -# Please use preserve-libs.eclass in pkg_{pre,post}inst to cover users -# with FEATURES="-preserved-libs" or another package manager if SONAME changes. -SLOT="0/8" # SONAME=libffi.so.8 -KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" -IUSE="debug exec-static-trampoline pax-kernel static-libs test" - -RESTRICT="!test? ( test )" -BDEPEND="test? ( dev-util/dejagnu )" - -src_prepare() { - default - - if [[ ${CHOST} == arm64-*-darwin* ]] ; then - # ensure we use aarch64 asm, not x86 on arm64 - sed -i -e 's/aarch64\*-\*-\*/arm64*-*-*|&/' \ - configure configure.host || die - fi -} - -multilib_src_configure() { - # --includedir= path maintains a few properties: - # 1. have stable name across libffi versions: some packages like - # dev-lang/ghc or kde-frameworks/networkmanager-qt embed - # ${includedir} at build-time. Don't require those to be - # rebuilt unless SONAME changes. bug #695788 - # - # We use /usr/.../${PN} (instead of former /usr/.../${P}). - # - # 2. have ${ABI}-specific location as ffi.h is target-dependent. - # - # We use /usr/$(get_libdir)/... to have ABI identifier. - ECONF_SOURCE="${S}" econf \ - --includedir="${EPREFIX}"/usr/$(get_libdir)/${PN}/include \ - --disable-multi-os-directory \ - $(use_enable static-libs static) \ - $(use_enable exec-static-trampoline exec-static-tramp) \ - $(use_enable pax-kernel pax_emutramp) \ - $(use_enable debug) -} - -multilib_src_test() { - emake -Onone check -} - -multilib_src_install_all() { - einstalldocs - find "${ED}" -name "*.la" -delete || die -} - -pkg_preinst() { - preserve_old_lib /usr/$(get_libdir)/libffi.so.7 -} - -pkg_postinst() { - preserve_old_lib_notify /usr/$(get_libdir)/libffi.so.7 -} diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.8-r1.ebuild b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.8-r1.ebuild index b53a7ca31e..bf89160b2c 100644 --- a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.8-r1.ebuild +++ b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.8-r1.ebuild @@ -3,7 +3,7 @@ EAPI=8 -inherit multilib-minimal preserve-libs +inherit dot-a multilib-minimal preserve-libs MY_PV=${PV/_rc/-rc} MY_P=${PN}-${MY_PV} @@ -15,9 +15,10 @@ if [[ ${PV} == 9999 ]] ; then EGIT_REPO_URI="https://github.com/libffi/libffi" inherit autotools git-r3 else + inherit libtool SRC_URI="https://github.com/libffi/libffi/releases/download/v${MY_PV}/${MY_P}.tar.gz" - KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" + KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" fi S="${WORKDIR}"/${MY_P} @@ -39,7 +40,11 @@ PATCHES=( src_prepare() { default - [[ ${PV} == 9999 ]] && eautoreconf + if [[ ${PV} == 9999 ]] ; then + eautoreconf + else + elibtoolize + fi if [[ ${CHOST} == arm64-*-darwin* ]] ; then # ensure we use aarch64 asm, not x86 on arm64 @@ -48,6 +53,11 @@ src_prepare() { fi } +src_configure() { + use static-libs && lto-guarantee-fat + multilib-minimal_src_configure +} + multilib_src_configure() { # --includedir= path maintains a few properties: # 1. have stable name across libffi versions: some packages like @@ -76,6 +86,7 @@ multilib_src_test() { multilib_src_install_all() { einstalldocs find "${ED}" -name "*.la" -delete || die + strip-lto-bytecode } pkg_preinst() { diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.7.ebuild b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.8-r2.ebuild similarity index 87% rename from sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.7.ebuild rename to sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.8-r2.ebuild index 072cb92af7..6386a4b761 100644 --- a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.7.ebuild +++ b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.8-r2.ebuild @@ -3,7 +3,7 @@ EAPI=8 -inherit multilib-minimal preserve-libs +inherit dot-a multilib-minimal preserve-libs MY_PV=${PV/_rc/-rc} MY_P=${PN}-${MY_PV} @@ -15,6 +15,7 @@ if [[ ${PV} == 9999 ]] ; then EGIT_REPO_URI="https://github.com/libffi/libffi" inherit autotools git-r3 else + inherit libtool SRC_URI="https://github.com/libffi/libffi/releases/download/v${MY_PV}/${MY_P}.tar.gz" KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" @@ -33,13 +34,17 @@ RESTRICT="!test? ( test )" BDEPEND="test? ( dev-util/dejagnu )" PATCHES=( - "${FILESDIR}"/${PN}-3.4.7-Revert-Fix-x86-ffi64-calls-with-6-gp-and-some-sse-re.patch + "${FILESDIR}"/${PN}-3.4.8-pa-add-.note.GNU-stack-marker-to-linux.S.patch ) src_prepare() { default - [[ ${PV} == 9999 ]] && eautoreconf + if [[ ${PV} == 9999 ]] ; then + eautoreconf + else + elibtoolize + fi if [[ ${CHOST} == arm64-*-darwin* ]] ; then # ensure we use aarch64 asm, not x86 on arm64 @@ -48,6 +53,11 @@ src_prepare() { fi } +src_configure() { + use static-libs && lto-guarantee-fat + multilib-minimal_src_configure +} + multilib_src_configure() { # --includedir= path maintains a few properties: # 1. have stable name across libffi versions: some packages like @@ -63,6 +73,7 @@ multilib_src_configure() { ECONF_SOURCE="${S}" econf \ --includedir="${EPREFIX}"/usr/$(get_libdir)/${PN}/include \ --disable-multi-os-directory \ + --with-pic \ $(use_enable static-libs static) \ $(use_enable exec-static-trampoline exec-static-tramp) \ $(use_enable pax-kernel pax_emutramp) \ @@ -76,6 +87,7 @@ multilib_src_test() { multilib_src_install_all() { einstalldocs find "${ED}" -name "*.la" -delete || die + strip-lto-bytecode } pkg_preinst() { diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.8.ebuild b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.5.0.ebuild similarity index 81% rename from sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.8.ebuild rename to sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.5.0.ebuild index e000b77b4e..441ddca3e0 100644 --- a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.8.ebuild +++ b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.5.0.ebuild @@ -3,7 +3,7 @@ EAPI=8 -inherit multilib-minimal preserve-libs +inherit dot-a multilib-minimal preserve-libs MY_PV=${PV/_rc/-rc} MY_P=${PN}-${MY_PV} @@ -15,9 +15,12 @@ if [[ ${PV} == 9999 ]] ; then EGIT_REPO_URI="https://github.com/libffi/libffi" inherit autotools git-r3 else + inherit libtool SRC_URI="https://github.com/libffi/libffi/releases/download/v${MY_PV}/${MY_P}.tar.gz" - KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" + if [[ ${PV} != *@(alpha|beta|pre|rc)* ]] ; then + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" + fi fi S="${WORKDIR}"/${MY_P} @@ -35,7 +38,11 @@ BDEPEND="test? ( dev-util/dejagnu )" src_prepare() { default - [[ ${PV} == 9999 ]] && eautoreconf + if [[ ${PV} == 9999 ]] ; then + eautoreconf + else + elibtoolize + fi if [[ ${CHOST} == arm64-*-darwin* ]] ; then # ensure we use aarch64 asm, not x86 on arm64 @@ -44,6 +51,11 @@ src_prepare() { fi } +src_configure() { + use static-libs && lto-guarantee-fat + multilib-minimal_src_configure +} + multilib_src_configure() { # --includedir= path maintains a few properties: # 1. have stable name across libffi versions: some packages like @@ -59,6 +71,7 @@ multilib_src_configure() { ECONF_SOURCE="${S}" econf \ --includedir="${EPREFIX}"/usr/$(get_libdir)/${PN}/include \ --disable-multi-os-directory \ + --with-pic \ $(use_enable static-libs static) \ $(use_enable exec-static-trampoline exec-static-tramp) \ $(use_enable pax-kernel pax_emutramp) \ @@ -72,6 +85,7 @@ multilib_src_test() { multilib_src_install_all() { einstalldocs find "${ED}" -name "*.la" -delete || die + strip-lto-bytecode } pkg_preinst() { diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.6-r2.ebuild b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.5.1.ebuild similarity index 73% rename from sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.6-r2.ebuild rename to sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.5.1.ebuild index 1513432cf6..441ddca3e0 100644 --- a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.4.6-r2.ebuild +++ b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-3.5.1.ebuild @@ -3,7 +3,7 @@ EAPI=8 -inherit multilib-minimal preserve-libs +inherit dot-a multilib-minimal preserve-libs MY_PV=${PV/_rc/-rc} MY_P=${PN}-${MY_PV} @@ -13,11 +13,14 @@ HOMEPAGE="https://sourceware.org/libffi/" if [[ ${PV} == 9999 ]] ; then EGIT_REPO_URI="https://github.com/libffi/libffi" - inherit git-r3 + inherit autotools git-r3 else + inherit libtool SRC_URI="https://github.com/libffi/libffi/releases/download/v${MY_PV}/${MY_P}.tar.gz" - KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" + if [[ ${PV} != *@(alpha|beta|pre|rc)* ]] ; then + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" + fi fi S="${WORKDIR}"/${MY_P} @@ -27,29 +30,20 @@ LICENSE="MIT" # Please use preserve-libs.eclass in pkg_{pre,post}inst to cover users # with FEATURES="-preserved-libs" or another package manager if SONAME changes. SLOT="0/8" # SONAME=libffi.so.8 -IUSE="debug exec-static-trampoline pax-kernel static-libs test" +IUSE="debug +exec-static-trampoline pax-kernel static-libs test" RESTRICT="!test? ( test )" BDEPEND="test? ( dev-util/dejagnu )" -PATCHES=( - "${FILESDIR}"/${P}-arm64-bti.patch - "${FILESDIR}"/${P}-arm64-bti-spelling.patch - "${FILESDIR}"/${P}-arm64-support-pac.patch - "${FILESDIR}"/${P}-arm64-fix-build.patch - "${FILESDIR}"/${P}-sparc-struct-targs.patch - "${FILESDIR}"/${P}-test-typo.patch - "${FILESDIR}"/${P}-x86-sse.patch - "${FILESDIR}"/${P}-arm64-cfi.patch - "${FILESDIR}"/${P}-asan.patch - "${FILESDIR}"/${P}-tests.patch - "${FILESDIR}"/${P}-regenerate-autotools.patch - "${FILESDIR}"/${P}-c23-tests.patch -) - src_prepare() { default + if [[ ${PV} == 9999 ]] ; then + eautoreconf + else + elibtoolize + fi + if [[ ${CHOST} == arm64-*-darwin* ]] ; then # ensure we use aarch64 asm, not x86 on arm64 sed -i -e 's/aarch64\*-\*-\*/arm64*-*-*|&/' \ @@ -57,6 +51,11 @@ src_prepare() { fi } +src_configure() { + use static-libs && lto-guarantee-fat + multilib-minimal_src_configure +} + multilib_src_configure() { # --includedir= path maintains a few properties: # 1. have stable name across libffi versions: some packages like @@ -72,6 +71,7 @@ multilib_src_configure() { ECONF_SOURCE="${S}" econf \ --includedir="${EPREFIX}"/usr/$(get_libdir)/${PN}/include \ --disable-multi-os-directory \ + --with-pic \ $(use_enable static-libs static) \ $(use_enable exec-static-trampoline exec-static-tramp) \ $(use_enable pax-kernel pax_emutramp) \ @@ -85,6 +85,7 @@ multilib_src_test() { multilib_src_install_all() { einstalldocs find "${ED}" -name "*.la" -delete || die + strip-lto-bytecode } pkg_preinst() { diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-9999.ebuild b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-9999.ebuild index e000b77b4e..441ddca3e0 100644 --- a/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-9999.ebuild +++ b/sdk_container/src/third_party/portage-stable/dev-libs/libffi/libffi-9999.ebuild @@ -3,7 +3,7 @@ EAPI=8 -inherit multilib-minimal preserve-libs +inherit dot-a multilib-minimal preserve-libs MY_PV=${PV/_rc/-rc} MY_P=${PN}-${MY_PV} @@ -15,9 +15,12 @@ if [[ ${PV} == 9999 ]] ; then EGIT_REPO_URI="https://github.com/libffi/libffi" inherit autotools git-r3 else + inherit libtool SRC_URI="https://github.com/libffi/libffi/releases/download/v${MY_PV}/${MY_P}.tar.gz" - KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" + if [[ ${PV} != *@(alpha|beta|pre|rc)* ]] ; then + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" + fi fi S="${WORKDIR}"/${MY_P} @@ -35,7 +38,11 @@ BDEPEND="test? ( dev-util/dejagnu )" src_prepare() { default - [[ ${PV} == 9999 ]] && eautoreconf + if [[ ${PV} == 9999 ]] ; then + eautoreconf + else + elibtoolize + fi if [[ ${CHOST} == arm64-*-darwin* ]] ; then # ensure we use aarch64 asm, not x86 on arm64 @@ -44,6 +51,11 @@ src_prepare() { fi } +src_configure() { + use static-libs && lto-guarantee-fat + multilib-minimal_src_configure +} + multilib_src_configure() { # --includedir= path maintains a few properties: # 1. have stable name across libffi versions: some packages like @@ -59,6 +71,7 @@ multilib_src_configure() { ECONF_SOURCE="${S}" econf \ --includedir="${EPREFIX}"/usr/$(get_libdir)/${PN}/include \ --disable-multi-os-directory \ + --with-pic \ $(use_enable static-libs static) \ $(use_enable exec-static-trampoline exec-static-tramp) \ $(use_enable pax-kernel pax_emutramp) \ @@ -72,6 +85,7 @@ multilib_src_test() { multilib_src_install_all() { einstalldocs find "${ED}" -name "*.la" -delete || die + strip-lto-bytecode } pkg_preinst() {