commit: 0e7c8d9dbd11f8e6f2626944f781eba7fdd11fcf Author: Sam James <sam <AT> gentoo <DOT> org> AuthorDate: Sat Jul 12 02:07:15 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Sat Jul 12 02:07:15 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0e7c8d9d
dev-libs/libffi: drop 3.4.6-r3, 3.4.8-r1, 3.4.8-r2 Signed-off-by: Sam James <sam <AT> gentoo.org> dev-libs/libffi/Manifest | 1 - .../files/libffi-3.4.6-arm64-bti-spelling.patch | 26 -- dev-libs/libffi/files/libffi-3.4.6-arm64-bti.patch | 82 ----- dev-libs/libffi/files/libffi-3.4.6-arm64-cfi.patch | 44 --- .../files/libffi-3.4.6-arm64-fix-build.patch | 36 --- .../files/libffi-3.4.6-arm64-support-pac.patch | 332 --------------------- dev-libs/libffi/files/libffi-3.4.6-asan.patch | 88 ------ dev-libs/libffi/files/libffi-3.4.6-c23-tests.patch | 38 --- .../files/libffi-3.4.6-regenerate-autotools.patch | 48 --- .../files/libffi-3.4.6-sparc-struct-targs.patch | 47 --- dev-libs/libffi/files/libffi-3.4.6-test-typo.patch | 19 -- dev-libs/libffi/libffi-3.4.6-r3.ebuild | 100 ------- dev-libs/libffi/libffi-3.4.8-r1.ebuild | 98 ------ dev-libs/libffi/libffi-3.4.8-r2.ebuild | 99 ------ 14 files changed, 1058 deletions(-) diff --git a/dev-libs/libffi/Manifest b/dev-libs/libffi/Manifest index 4b9522b8d86b..43e6da974455 100644 --- a/dev-libs/libffi/Manifest +++ b/dev-libs/libffi/Manifest @@ -1,3 +1,2 @@ -DIST libffi-3.4.6.tar.gz 1391684 BLAKE2B af8402a09bdbd59b4e9400d2d71bd5ce98f6f1d981d35d1ab40d77a831b13b32c5bd34ca54ff75999e39f0d8a9c066381fae7a8d6c5216d955e064f929f08b88 SHA512 033d2600e879b83c6bce0eb80f69c5f32aa775bf2e962c9d39fbd21226fa19d1e79173d8eaa0d0157014d54509ea73315ad86842356fc3a303c0831c94c6ab39 DIST libffi-3.4.8.tar.gz 1397992 BLAKE2B 10b3d970dc598fb8689bca49751cda499ddc5216baf89d38625385b0d42d57f10d15cce3c4c044c9c73a4fce384c26f2a8e1b99269e9db1174c2631201c6bfd4 SHA512 05344c6c1a1a5b44704f6cf99277098d1ea3ac1dc11c2a691c501786a214f76184ec0637135588630db609ce79e49df3dbd00282dd61e7f21137afba70e24ffe DIST libffi-3.5.1.tar.gz 1419757 BLAKE2B eaeb04beeb4ab6e0ef5652175d5c9d29a18b6f1edbf05db819a3a6ac9c8ed47de32c54fca4c3a9a476283c0771650d5a577e7868f16c671ee46e25db27369066 SHA512 3da9e21fdb920e7962ceb01ee671ef36196df4d5dad62e0cdd8e87cc60e350f241c204350560ae26ea04cc898161b5585c8a5a5125bdbcc84508efbb7ea61eb8 diff --git a/dev-libs/libffi/files/libffi-3.4.6-arm64-bti-spelling.patch b/dev-libs/libffi/files/libffi-3.4.6-arm64-bti-spelling.patch deleted file mode 100644 index 2a06292546d0..000000000000 --- a/dev-libs/libffi/files/libffi-3.4.6-arm64-bti-spelling.patch +++ /dev/null @@ -1,26 +0,0 @@ -https://github.com/libffi/libffi/commit/38732240c125b6af9db66d940c0725a69292cc49 - -From 38732240c125b6af9db66d940c0725a69292cc49 Mon Sep 17 00:00:00 2001 -From: Bill Roberts <[email protected]> -Date: Sat, 1 Jun 2024 12:33:28 -0500 -Subject: [PATCH] ffi: fix spelling mistake (#833) - -Signed-off-by: Bill Roberts <[email protected]> ---- - src/aarch64/ffi.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/aarch64/ffi.c b/src/aarch64/ffi.c -index 8661a352..b13738e3 100644 ---- a/src/aarch64/ffi.c -+++ b/src/aarch64/ffi.c -@@ -682,7 +682,7 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *orig_rvalue, - else if (flags & AARCH64_RET_NEED_COPY) - rsize = 16; - -- /* Allocate consectutive stack for everything we'll need. -+ /* Allocate consecutive stack for everything we'll need. - The frame uses 40 bytes for: lr, fp, rvalue, flags, sp */ - context = alloca (sizeof(struct call_context) + stack_bytes + 40 + rsize); - stack = context + 1; - diff --git a/dev-libs/libffi/files/libffi-3.4.6-arm64-bti.patch b/dev-libs/libffi/files/libffi-3.4.6-arm64-bti.patch deleted file mode 100644 index ad8a95ae506d..000000000000 --- a/dev-libs/libffi/files/libffi-3.4.6-arm64-bti.patch +++ /dev/null @@ -1,82 +0,0 @@ -https://github.com/libffi/libffi/issues/855 -https://github.com/libffi/libffi/commit/f64141ee3f9e455a060bd09e9ab72b6c94653d7c - -From f64141ee3f9e455a060bd09e9ab72b6c94653d7c Mon Sep 17 00:00:00 2001 -From: Bill Roberts <[email protected]> -Date: Tue, 19 Mar 2024 11:44:55 -0500 -Subject: [PATCH] Fix bti support (#830) - -* bti: add identifier to ffi_closure_SYSV_V_alt - -This was missing BTI_C identifier. - -Old Code: -ffi_closure_SYSV_V_alt: -0000fffff7f70500: ldr x17, [sp, #8] - -Signed-off-by: Bill Roberts <[email protected]> - -* testsuite: fix whitespace in Makefile.am - -Signed-off-by: Bill Roberts <[email protected]> - -* aarch64: correct comment describing BTI - -The comment is incorrect, BTI is enabled per mapping via mprotect with -PROT_BTI flag set, not per-process. When the loader loads the library, -if the GNU Notes section is missing this, PROT_BTI will not be enabled -for that mapping, but is independent of other mappings. - -Signed-off-by: Bill Roberts <[email protected]> - ---------- - -Signed-off-by: Bill Roberts <[email protected]> ---- - src/aarch64/sysv.S | 4 +++- - testsuite/Makefile.am | 2 +- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/src/aarch64/sysv.S b/src/aarch64/sysv.S -index fdd0e8b7..60cfa505 100644 ---- a/src/aarch64/sysv.S -+++ b/src/aarch64/sysv.S -@@ -68,7 +68,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - #define BTI_J hint #36 - /* - * The ELF Notes section needs to indicate if BTI is supported, as the first ELF loaded that doesn't -- * declare this support disables it for the whole process. -+ * declare this support disables it for memory region containing the loaded library. - */ - # define GNU_PROPERTY_AARCH64_BTI (1 << 0) /* Has Branch Target Identification */ - .text -@@ -527,6 +527,7 @@ L(do_closure): - #if defined(FFI_EXEC_STATIC_TRAMP) - .align 4 - CNAME(ffi_closure_SYSV_V_alt): -+ BTI_C - /* See the comments above trampoline_code_table. */ - ldr x17, [sp, #8] /* Load closure in x17 */ - add sp, sp, #16 /* Restore the stack */ -@@ -541,6 +542,7 @@ CNAME(ffi_closure_SYSV_V_alt): - - .align 4 - CNAME(ffi_closure_SYSV_alt): -+ BTI_C - /* See the comments above trampoline_code_table. */ - ldr x17, [sp, #8] /* Load closure in x17 */ - add sp, sp, #16 /* Restore the stack */ -diff --git a/testsuite/Makefile.am b/testsuite/Makefile.am -index d286cf7f..6ba98e12 100644 ---- a/testsuite/Makefile.am -+++ b/testsuite/Makefile.am -@@ -8,7 +8,7 @@ CLEANFILES = *.exe core* *.log *.sum - - EXTRA_DIST = config/default.exp emscripten/build.sh emscripten/conftest.py \ - emscripten/node-tests.sh emscripten/test.html emscripten/test_libffi.py \ -- emscripten/build-tests.sh lib/libffi.exp lib/target-libpath.exp \ -+ emscripten/build-tests.sh lib/libffi.exp lib/target-libpath.exp \ - lib/wrapper.exp libffi.bhaible/Makefile libffi.bhaible/README \ - libffi.bhaible/alignof.h libffi.bhaible/bhaible.exp libffi.bhaible/test-call.c \ - libffi.bhaible/test-callback.c libffi.bhaible/testcases.c libffi.call/align_mixed.c \ - diff --git a/dev-libs/libffi/files/libffi-3.4.6-arm64-cfi.patch b/dev-libs/libffi/files/libffi-3.4.6-arm64-cfi.patch deleted file mode 100644 index 0eb4cf807f3b..000000000000 --- a/dev-libs/libffi/files/libffi-3.4.6-arm64-cfi.patch +++ /dev/null @@ -1,44 +0,0 @@ -https://github.com/libffi/libffi/pull/857 -https://github.com/libffi/libffi/commit/8308bed5b2423878aa20d7884a99cf2e30b8daf7 - -From 3065c530d3aa50c2b5ee9c01f88a9c0b61732805 Mon Sep 17 00:00:00 2001 -From: Ivan Tadeu Ferreira Antunes Filho <[email protected]> -Date: Mon, 16 Sep 2024 16:10:39 -0400 -Subject: [PATCH] Move cfi_startproc after CNAME(label) - -This is a fix for https://github.com/libffi/libffi/issues/852: error: invalid CFI advance_loc expression on apple targets. - -The CFI for darwin arm64 was broken because the CNAME macro was being used after the -cfi_startproc macro. ---- a/src/aarch64/sysv.S -+++ b/src/aarch64/sysv.S -@@ -89,8 +89,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - x5 closure - */ - -- cfi_startproc - CNAME(ffi_call_SYSV): -+ cfi_startproc - BTI_C - PAC_CFI_WINDOW_SAVE - /* Sign the lr with x1 since that is the CFA which is the modifer used in auth instructions */ -@@ -348,8 +348,8 @@ CNAME(ffi_closure_SYSV_V): - #endif - - .align 4 -- cfi_startproc - CNAME(ffi_closure_SYSV): -+ cfi_startproc - BTI_C - SIGN_LR - PAC_CFI_WINDOW_SAVE -@@ -647,8 +647,8 @@ CNAME(ffi_go_closure_SYSV_V): - #endif - - .align 4 -- cfi_startproc - CNAME(ffi_go_closure_SYSV): -+ cfi_startproc - BTI_C - SIGN_LR_LINUX_ONLY - PAC_CFI_WINDOW_SAVE diff --git a/dev-libs/libffi/files/libffi-3.4.6-arm64-fix-build.patch b/dev-libs/libffi/files/libffi-3.4.6-arm64-fix-build.patch deleted file mode 100644 index 20eaf6a2d8cd..000000000000 --- a/dev-libs/libffi/files/libffi-3.4.6-arm64-fix-build.patch +++ /dev/null @@ -1,36 +0,0 @@ -https://github.com/libffi/libffi/commit/9c9e8368e49804c4f7c35ac9f0d7c1d0d533308b - -From 9c9e8368e49804c4f7c35ac9f0d7c1d0d533308b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <[email protected]> -Date: Tue, 4 Jun 2024 14:13:08 +0300 -Subject: [PATCH] aarch64: Add a missing no-op define of SIGN_LR_LINUX_ONLY - (#838) - -This is needed at least if building for Linux, with a toolchain -that doesn't default to having PAC enabled, fixing build errors -since 45d284f2d066cc3a080c5be88e51b4d934349797. ---- - src/aarch64/internal.h | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/aarch64/internal.h b/src/aarch64/internal.h -index c39f9cb2..50fa5c13 100644 ---- a/src/aarch64/internal.h -+++ b/src/aarch64/internal.h -@@ -88,6 +88,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - #define AUTH_LR_AND_RET retab - #define AUTH_LR_WITH_REG(x) autib lr, x - #define BRANCH_AND_LINK_TO_REG blraaz -+ #define SIGN_LR_LINUX_ONLY - #define BRANCH_TO_REG braaz - #define PAC_CFI_WINDOW_SAVE - /* Linux PAC Support */ -@@ -136,6 +137,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - #define AUTH_LR_AND_RET ret - #define AUTH_LR_WITH_REG(x) - #define BRANCH_AND_LINK_TO_REG blr -+ #define SIGN_LR_LINUX_ONLY - #define BRANCH_TO_REG br - #define PAC_CFI_WINDOW_SAVE - #endif /* HAVE_ARM64E_PTRAUTH */ - diff --git a/dev-libs/libffi/files/libffi-3.4.6-arm64-support-pac.patch b/dev-libs/libffi/files/libffi-3.4.6-arm64-support-pac.patch deleted file mode 100644 index 288533367499..000000000000 --- a/dev-libs/libffi/files/libffi-3.4.6-arm64-support-pac.patch +++ /dev/null @@ -1,332 +0,0 @@ -https://github.com/libffi/libffi/commit/45d284f2d066cc3a080c5be88e51b4d934349797 - -From 45d284f2d066cc3a080c5be88e51b4d934349797 Mon Sep 17 00:00:00 2001 -From: Bill Roberts <[email protected]> -Date: Sat, 1 Jun 2024 12:34:53 -0500 -Subject: [PATCH] aarch64: support pointer authentication (#834) - -* aarch64: fix callstack in ffi_call_SYSV - -The debug stack gets corrupted between the frame and stack pivots, update -the CFI directives so the call stack stays correct in the debugger. - -str x9, [x1, #32] // stack is ffi_call_SYSV() -> ffi_call_int() -> ffi_call_int() -> main() (good) -mov x29, x1 // stack is ffi_call_SYSV() -> ffi_call_int() -> ffi_call_int() -> ffi_call() -> main() (bad) -mov sp, x0 // stack is ffi_call_SYSV() -> ffi_call_int() -> ffi_call_int() -> main() (good) - -The CFA data needs to be updated around the pivots, after this patch the -callstack stays correct. - -Signed-off-by: Bill Roberts <[email protected]> - -* aarch64: remove uneeded CFI directive - -This directive doesn't actually set the CFA to anything valid, and -during unwinding this isn't even used. Note that the PAC/Darwin usage -is quite suspect as well, as the CFA is either x1 or x29 after the frame -pivot, and the CFA address is what's used as the modifier when verifying -the PAC. At least this is the behavior on Linux with PAC, I need to -verify ARME ABI unwinding. So for now leave Darwin as is. - -Signed-off-by: Bill Roberts <[email protected]> - -* ptrauth: rename define for clarity - -Rename the HAVE_PTRAUTH define for clarity that its associated with the -ARM64E ABI and not the ARM64 ABI that can be supported on Linux and -enabled with -mbranch-protection=standard. - -Signed-off-by: Bill Roberts <[email protected]> - -* aarch64: add PAC support to ffi_call_SYSV - -Support AARCH64 Pointer Authentication Codes (PAC) within ffi_call_SYSV -and support exception unwinding. - -The Linux ABI for PAC is to use paciasp/autiasp instructions which also -have hint space equivelent instructions. They sign the LR (x30) with the -A key and the current stack pointer as the salt. Note that this can also be -configured to use the B key and will use pacibsp/autibsp hint instructions. - -The Linux ABI for exception frame data when PAC is enabled assumes that the -Connonical Frame Address, or CFA is equal to the stack pointer. I.E sp is -equal to x29 (fp). When the unwinder is invoked the cfa will point to -the frame which will include the *signed* return address from the LR. -This will then be passed to __builtin_aarch64_autia1716 where the CFA -will be used as the salt and stored to register x16 and register x17 -will contain the signed address to demangle. This can be noted in: - - https://github.com/gcc-mirror/gcc/blob/d6d7afcdbc04adb0ec42a44b2d7e05600945af42/libgcc/config/aarch64/aarch64-unwind.h#L56 - -The other required portion of this is to indicate to the unwinder that -this is a signed address that needs to go the special demangle route in -the unwinder. This is accomplished by using CFI directive "cfi_window_save" -which marks that frame as being signed. - -Putting all of this together is a bit tricky, as the internals of -ffi_call_SYSV the callee allocates its stack and frame and passes it in -arg1 (x0) and arg2 (x1) to the called function, where that function -pivots its stack, so care must be taken to get the sp == fp before -paciasp is called and also restore that state before autiasp is called. - -Signed-off-by: Bill Roberts <[email protected]> - ---------- - -Signed-off-by: Bill Roberts <[email protected]> ---- - configure.ac | 6 ++-- - include/ffi_cfi.h | 2 ++ - src/aarch64/ffi.c | 4 +-- - src/aarch64/internal.h | 76 ++++++++++++++++++++++++++++++++---------- - src/aarch64/sysv.S | 20 ++++++----- - src/closures.c | 6 ++-- - 6 files changed, 81 insertions(+), 33 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 816bfd666..b35a999fb 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -189,17 +189,17 @@ AC_CACHE_CHECK([whether compiler supports pointer authentication], - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ - #ifdef __clang__ - # if __has_feature(ptrauth_calls) --# define HAVE_PTRAUTH 1 -+# define HAVE_ARM64E_PTRAUTH 1 - # endif - #endif - --#ifndef HAVE_PTRAUTH -+#ifndef HAVE_ARM64E_PTRAUTH - # error Pointer authentication not supported - #endif - ]])],[libffi_cv_as_ptrauth=yes],[libffi_cv_as_ptrauth=no]) - ]) - if test "x$libffi_cv_as_ptrauth" = xyes; then -- AC_DEFINE(HAVE_PTRAUTH, 1, -+ AC_DEFINE(HAVE_ARM64E_PTRAUTH, 1, - [Define if your compiler supports pointer authentication.]) - fi - -diff --git a/include/ffi_cfi.h b/include/ffi_cfi.h -index f4c292d00..856566324 100644 ---- a/include/ffi_cfi.h -+++ b/include/ffi_cfi.h -@@ -49,6 +49,7 @@ - # define cfi_personality(enc, exp) .cfi_personality enc, exp - # define cfi_lsda(enc, exp) .cfi_lsda enc, exp - # define cfi_escape(...) .cfi_escape __VA_ARGS__ -+# define cfi_window_save .cfi_window_save - - #else - -@@ -71,6 +72,7 @@ - # define cfi_personality(enc, exp) - # define cfi_lsda(enc, exp) - # define cfi_escape(...) -+# define cfi_window_save - - #endif /* HAVE_AS_CFI_PSEUDO_OP */ - #endif /* FFI_CFI_H */ -diff --git a/src/aarch64/ffi.c b/src/aarch64/ffi.c -index b13738e38..964934dfb 100644 ---- a/src/aarch64/ffi.c -+++ b/src/aarch64/ffi.c -@@ -63,7 +63,7 @@ struct call_context - #if FFI_EXEC_TRAMPOLINE_TABLE - - #ifdef __MACH__ --#ifdef HAVE_PTRAUTH -+#ifdef HAVE_ARM64E_PTRAUTH - #include <ptrauth.h> - #endif - #include <mach/vm_param.h> -@@ -877,7 +877,7 @@ ffi_prep_closure_loc (ffi_closure *closure, - - #if FFI_EXEC_TRAMPOLINE_TABLE - # ifdef __MACH__ --# ifdef HAVE_PTRAUTH -+# ifdef HAVE_ARM64E_PTRAUTH - codeloc = ptrauth_auth_data(codeloc, ptrauth_key_function_pointer, 0); - # endif - void **config = (void **)((uint8_t *)codeloc - PAGE_MAX_SIZE); -diff --git a/src/aarch64/internal.h b/src/aarch64/internal.h -index b5d102b4a..c39f9cb22 100644 ---- a/src/aarch64/internal.h -+++ b/src/aarch64/internal.h -@@ -81,20 +81,62 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - /* Helpers for writing assembly compatible with arm ptr auth */ - #ifdef LIBFFI_ASM - --#ifdef HAVE_PTRAUTH --#define SIGN_LR pacibsp --#define SIGN_LR_WITH_REG(x) pacib lr, x --#define AUTH_LR_AND_RET retab --#define AUTH_LR_WITH_REG(x) autib lr, x --#define BRANCH_AND_LINK_TO_REG blraaz --#define BRANCH_TO_REG braaz --#else --#define SIGN_LR --#define SIGN_LR_WITH_REG(x) --#define AUTH_LR_AND_RET ret --#define AUTH_LR_WITH_REG(x) --#define BRANCH_AND_LINK_TO_REG blr --#define BRANCH_TO_REG br --#endif -- --#endif -+ #if defined(HAVE_ARM64E_PTRAUTH) -+ /* ARM64E ABI For Darwin */ -+ #define SIGN_LR pacibsp -+ #define SIGN_LR_WITH_REG(x) pacib lr, x -+ #define AUTH_LR_AND_RET retab -+ #define AUTH_LR_WITH_REG(x) autib lr, x -+ #define BRANCH_AND_LINK_TO_REG blraaz -+ #define BRANCH_TO_REG braaz -+ #define PAC_CFI_WINDOW_SAVE -+ /* Linux PAC Support */ -+ #elif defined(__ARM_FEATURE_PAC_DEFAULT) -+ #define GNU_PROPERTY_AARCH64_POINTER_AUTH (1 << 1) -+ #define PAC_CFI_WINDOW_SAVE cfi_window_save -+ #define TMP_REG x9 -+ #define BRANCH_TO_REG br -+ #define BRANCH_AND_LINK_TO_REG blr -+ #define SIGN_LR_LINUX_ONLY SIGN_LR -+ /* Which key to sign with? */ -+ #if (__ARM_FEATURE_PAC_DEFAULT & 1) == 1 -+ /* Signed with A-key */ -+ #define SIGN_LR hint #25 /* paciasp */ -+ #define AUTH_LR hint #29 /* autiasp */ -+ #else -+ /* Signed with B-key */ -+ #define SIGN_LR hint #27 /* pacibsp */ -+ #define AUTH_LR hint #31 /* autibsp */ -+ #endif /* __ARM_FEATURE_PAC_DEFAULT */ -+ #define AUTH_LR_WITH_REG(x) _auth_lr_with_reg x -+.macro _auth_lr_with_reg modifier -+ mov TMP_REG, sp -+ mov sp, \modifier -+ AUTH_LR -+ mov sp, TMP_REG -+.endm -+ #define SIGN_LR_WITH_REG(x) _sign_lr_with_reg x -+.macro _sign_lr_with_reg modifier -+ mov TMP_REG, sp -+ mov sp, \modifier -+ SIGN_LR -+ mov sp, TMP_REG -+.endm -+ #define AUTH_LR_AND_RET _auth_lr_and_ret modifier -+.macro _auth_lr_and_ret modifier -+ AUTH_LR -+ ret -+.endm -+ #undef TMP_REG -+ -+ /* No Pointer Auth */ -+ #else -+ #define SIGN_LR -+ #define SIGN_LR_WITH_REG(x) -+ #define AUTH_LR_AND_RET ret -+ #define AUTH_LR_WITH_REG(x) -+ #define BRANCH_AND_LINK_TO_REG blr -+ #define BRANCH_TO_REG br -+ #define PAC_CFI_WINDOW_SAVE -+ #endif /* HAVE_ARM64E_PTRAUTH */ -+#endif /* LIBFFI_ASM */ -diff --git a/src/aarch64/sysv.S b/src/aarch64/sysv.S -index 60cfa505b..6a9a5611f 100644 ---- a/src/aarch64/sysv.S -+++ b/src/aarch64/sysv.S -@@ -92,27 +92,27 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - cfi_startproc - CNAME(ffi_call_SYSV): - BTI_C -- /* Sign the lr with x1 since that is where it will be stored */ -+ PAC_CFI_WINDOW_SAVE -+ /* Sign the lr with x1 since that is the CFA which is the modifer used in auth instructions */ - SIGN_LR_WITH_REG(x1) - -- /* Use a stack frame allocated by our caller. */ --#if defined(HAVE_PTRAUTH) && defined(__APPLE__) -+#if defined(HAVE_ARM64E_PTRAUTH) && defined(__APPLE__) - /* darwin's libunwind assumes that the cfa is the sp and that's the data - * used to sign the lr. In order to allow unwinding through this - * function it is necessary to point the cfa at the signing register. - */ - cfi_def_cfa(x1, 0); --#else -- cfi_def_cfa(x1, 40); - #endif -+ /* Use a stack frame allocated by our caller. */ - stp x29, x30, [x1] -+ cfi_def_cfa_register(x1) -+ cfi_rel_offset (x29, 0) -+ cfi_rel_offset (x30, 8) - mov x9, sp - str x9, [x1, #32] - mov x29, x1 -- mov sp, x0 - cfi_def_cfa_register(x29) -- cfi_rel_offset (x29, 0) -- cfi_rel_offset (x30, 8) -+ mov sp, x0 - - mov x9, x2 /* save fn */ - mov x8, x3 /* install structure return */ -@@ -326,6 +326,7 @@ CNAME(ffi_closure_SYSV_V): - cfi_startproc - BTI_C - SIGN_LR -+ PAC_CFI_WINDOW_SAVE - stp x29, x30, [sp, #-ffi_closure_SYSV_FS]! - cfi_adjust_cfa_offset (ffi_closure_SYSV_FS) - cfi_rel_offset (x29, 0) -@@ -351,6 +352,7 @@ CNAME(ffi_closure_SYSV_V): - CNAME(ffi_closure_SYSV): - BTI_C - SIGN_LR -+ PAC_CFI_WINDOW_SAVE - stp x29, x30, [sp, #-ffi_closure_SYSV_FS]! - cfi_adjust_cfa_offset (ffi_closure_SYSV_FS) - cfi_rel_offset (x29, 0) -@@ -648,6 +650,8 @@ CNAME(ffi_go_closure_SYSV_V): - cfi_startproc - CNAME(ffi_go_closure_SYSV): - BTI_C -+ SIGN_LR_LINUX_ONLY -+ PAC_CFI_WINDOW_SAVE - stp x29, x30, [sp, #-ffi_closure_SYSV_FS]! - cfi_adjust_cfa_offset (ffi_closure_SYSV_FS) - cfi_rel_offset (x29, 0) -diff --git a/src/closures.c b/src/closures.c -index 67a94a822..02cf78fa2 100644 ---- a/src/closures.c -+++ b/src/closures.c -@@ -164,7 +164,7 @@ ffi_tramp_is_present (__attribute__((unused)) void *ptr) - - #include <mach/mach.h> - #include <pthread.h> --#ifdef HAVE_PTRAUTH -+#ifdef HAVE_ARM64E_PTRAUTH - #include <ptrauth.h> - #endif - #include <stdio.h> -@@ -223,7 +223,7 @@ ffi_trampoline_table_alloc (void) - /* Remap the trampoline table on top of the placeholder page */ - trampoline_page = config_page + PAGE_MAX_SIZE; - --#ifdef HAVE_PTRAUTH -+#ifdef HAVE_ARM64E_PTRAUTH - trampoline_page_template = (vm_address_t)(uintptr_t)ptrauth_auth_data((void *)&ffi_closure_trampoline_table_page, ptrauth_key_function_pointer, 0); - #else - trampoline_page_template = (vm_address_t)&ffi_closure_trampoline_table_page; -@@ -268,7 +268,7 @@ ffi_trampoline_table_alloc (void) - ffi_trampoline_table_entry *entry = &table->free_list_pool[i]; - entry->trampoline = - (void *) (trampoline_page + (i * FFI_TRAMPOLINE_SIZE)); --#ifdef HAVE_PTRAUTH -+#ifdef HAVE_ARM64E_PTRAUTH - entry->trampoline = ptrauth_sign_unauthenticated(entry->trampoline, ptrauth_key_function_pointer, 0); - #endif - - diff --git a/dev-libs/libffi/files/libffi-3.4.6-asan.patch b/dev-libs/libffi/files/libffi-3.4.6-asan.patch deleted file mode 100644 index 4c62f970a3c9..000000000000 --- a/dev-libs/libffi/files/libffi-3.4.6-asan.patch +++ /dev/null @@ -1,88 +0,0 @@ -https://github.com/libffi/libffi/commit/01db744b4af8665f9b7494d00cc2a1cc45ee9636 - -From 01db744b4af8665f9b7494d00cc2a1cc45ee9636 Mon Sep 17 00:00:00 2001 -From: KJ Tsanaktsidis <[email protected]> -Date: Fri, 20 Sep 2024 20:00:49 +1000 -Subject: [PATCH] Disable ASAN in ffi_call_int functions (#858) - -The pattern for several of the architectures is for ffi_call_int to -stack-allocate some arguments + the registers, and then -ffi_call_$ARCH will pop the top of that structure into registers, and -then adjust the stack pointer such that the alloca'd buffer _becomes_ -the stack-passed arguments for the function being called. - -If libffi is compiled with ASAN, then there will be a redzone inserted -after the alloca'd buffer which is marked as poisoned. This redzone -appears beyond the end of $sp upon entry to the called function. - -If the called function does anything to use this stack memory, ASAN will -notice that it's poisoned and report an error. - -This commit fixes the situation (on the architectures that I have access -to) disabling instrumentation for ffi_call_int; that means there will be -no alloca redzone left on the shadow-stack. ---- a/include/ffi_common.h -+++ b/include/ffi_common.h -@@ -83,6 +83,23 @@ char *alloca (); - #include <stdio.h> - #endif - -+#ifndef __SANITIZE_ADDRESS__ -+# ifdef __clang__ -+# if __has_feature(address_sanitizer) -+# define FFI_ASAN -+# endif -+# endif -+#endif -+#ifdef __SANITIZE_ADDRESS__ -+#define FFI_ASAN -+#endif -+ -+#ifdef FFI_ASAN -+#define FFI_ASAN_NO_SANITIZE __attribute__((no_sanitize_address)) -+#else -+#define FFI_ASAN_NO_SANITIZE -+#endif -+ - #ifdef FFI_DEBUG - NORETURN void ffi_assert(const char *expr, const char *file, int line); - void ffi_stop_here(void); ---- a/src/aarch64/ffi.c -+++ b/src/aarch64/ffi.c -@@ -645,7 +645,10 @@ extern void ffi_call_SYSV (struct call_context *context, void *frame, - void *closure) FFI_HIDDEN; - - /* Call a function with the provided arguments and capture the return -- value. */ -+ value. -+ n.b. ffi_call_SYSV will steal the alloca'd `stack` variable here for use -+ _as its own stack_ - so we need to compile this function without ASAN */ -+FFI_ASAN_NO_SANITIZE - static void - ffi_call_int (ffi_cif *cif, void (*fn)(void), void *orig_rvalue, - void **avalue, void *closure) ---- a/src/x86/ffi.c -+++ b/src/x86/ffi.c -@@ -270,6 +270,9 @@ extern void FFI_DECLARE_FASTCALL ffi_call_i386(struct call_frame *, char *) FFI_ - #if defined(_MSC_VER) - #pragma runtime_checks("s", off) - #endif -+/* n.b. ffi_call_unix64 will steal the alloca'd `stack` variable here for use -+ _as its own stack_ - so we need to compile this function without ASAN */ -+FFI_ASAN_NO_SANITIZE - static void - ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, - void **avalue, void *closure) ---- a/src/x86/ffi64.c -+++ b/src/x86/ffi64.c -@@ -557,6 +557,9 @@ ffi_prep_cif_machdep (ffi_cif *cif) - return FFI_OK; - } - -+/* n.b. ffi_call_unix64 will steal the alloca'd `stack` variable here for use -+ _as its own stack_ - so we need to compile this function without ASAN */ -+FFI_ASAN_NO_SANITIZE - static void - ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, - void **avalue, void *closure) - diff --git a/dev-libs/libffi/files/libffi-3.4.6-c23-tests.patch b/dev-libs/libffi/files/libffi-3.4.6-c23-tests.patch deleted file mode 100644 index dc53b120cd90..000000000000 --- a/dev-libs/libffi/files/libffi-3.4.6-c23-tests.patch +++ /dev/null @@ -1,38 +0,0 @@ -https://github.com/libffi/libffi/commit/0859f8431242d5adff21420b9cab538d2af527b5 - -From 0859f8431242d5adff21420b9cab538d2af527b5 Mon Sep 17 00:00:00 2001 -From: Joseph Myers <[email protected]> -Date: Thu, 24 Oct 2024 18:26:58 +0000 -Subject: [PATCH] Fix testsuite for C23 `va_start` (#861) - -In the C23 revision of the C standard, `va_start` ignores its second -argument, which is no longer required (previously the last named -function parameter - which the compiler knows anyway, so it's -redundant information). - -This has the consequence for the libffi testsuite, when making GCC -default to `-std=gnu23`, of making two tests fail with warnings about -an unused function argument (only passed to `va_start` and not -otherwise used). Fix those test failures by explicitly casting the -argument to `void`. ---- a/testsuite/libffi.call/va_struct2.c -+++ b/testsuite/libffi.call/va_struct2.c -@@ -33,6 +33,7 @@ test_fn (int n, ...) - struct small_tag s2; - struct large_tag l; - -+ (void) n; - va_start (ap, n); - s1 = va_arg (ap, struct small_tag); - l = va_arg (ap, struct large_tag); ---- a/testsuite/libffi.call/va_struct3.c -+++ b/testsuite/libffi.call/va_struct3.c -@@ -33,6 +33,7 @@ test_fn (int n, ...) - struct small_tag s2; - struct large_tag l; - -+ (void) n; - va_start (ap, n); - s1 = va_arg (ap, struct small_tag); - l = va_arg (ap, struct large_tag); - diff --git a/dev-libs/libffi/files/libffi-3.4.6-regenerate-autotools.patch b/dev-libs/libffi/files/libffi-3.4.6-regenerate-autotools.patch deleted file mode 100644 index 81fe671f509c..000000000000 --- a/dev-libs/libffi/files/libffi-3.4.6-regenerate-autotools.patch +++ /dev/null @@ -1,48 +0,0 @@ -The arm64 patches we backported to 3.4.6 mean we need to autoreconf ourselves, -apply this patch to avoid needing to do it in the ebuild b/c of deps. ---- a/Makefile.in -+++ b/Makefile.in -@@ -330,8 +330,8 @@ am__define_uniq_tagged_files = \ - done | $(am__uniquify_input)` - DIST_SUBDIRS = include testsuite man doc - am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/fficonfig.h.in \ -- $(srcdir)/libffi.pc.in README.md compile config.guess \ -- config.sub depcomp install-sh ltmain.sh missing -+ $(srcdir)/libffi.pc.in ChangeLog README.md compile \ -+ config.guess config.sub depcomp install-sh ltmain.sh missing - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - distdir = $(PACKAGE)-$(VERSION) - top_distdir = $(distdir) ---- a/fficonfig.h.in -+++ b/fficonfig.h.in -@@ -31,6 +31,9 @@ - /* Define to 1 if you have the <alloca.h> header file. */ - #undef HAVE_ALLOCA_H - -+/* Define if your compiler supports pointer authentication. */ -+#undef HAVE_ARM64E_PTRAUTH -+ - /* Define if your assembler supports .cfi_* directives. */ - #undef HAVE_AS_CFI_PSEUDO_OP - -@@ -71,9 +74,6 @@ - /* Define to 1 if you have the `memfd_create' function. */ - #undef HAVE_MEMFD_CREATE - --/* Define if your compiler supports pointer authentication. */ --#undef HAVE_PTRAUTH -- - /* Define if .eh_frame sections should be read-only. */ - #undef HAVE_RO_EH_FRAME - ---- a/testsuite/Makefile.in -+++ b/testsuite/Makefile.in -@@ -292,7 +292,7 @@ EXTRA_DEJAGNU_SITE_CONFIG = ../local.exp - CLEANFILES = *.exe core* *.log *.sum - EXTRA_DIST = config/default.exp emscripten/build.sh emscripten/conftest.py \ - emscripten/node-tests.sh emscripten/test.html emscripten/test_libffi.py \ -- emscripten/build-tests.sh lib/libffi.exp lib/target-libpath.exp \ -+ emscripten/build-tests.sh lib/libffi.exp lib/target-libpath.exp \ - lib/wrapper.exp libffi.bhaible/Makefile libffi.bhaible/README \ - libffi.bhaible/alignof.h libffi.bhaible/bhaible.exp libffi.bhaible/test-call.c \ - libffi.bhaible/test-callback.c libffi.bhaible/testcases.c libffi.call/align_mixed.c \ diff --git a/dev-libs/libffi/files/libffi-3.4.6-sparc-struct-targs.patch b/dev-libs/libffi/files/libffi-3.4.6-sparc-struct-targs.patch deleted file mode 100644 index 592e543f88ee..000000000000 --- a/dev-libs/libffi/files/libffi-3.4.6-sparc-struct-targs.patch +++ /dev/null @@ -1,47 +0,0 @@ -https://github.com/libffi/libffi/issues/841 -https://github.com/libffi/libffi/commit/8e3ef965c2d0015ed129a06d0f11f30c2120a413 - -From 8e3ef965c2d0015ed129a06d0f11f30c2120a413 Mon Sep 17 00:00:00 2001 -From: Anthony Green <[email protected]> -Date: Fri, 28 Jun 2024 04:07:09 -0400 -Subject: [PATCH] Fix struct args (Rainer Orth) - ---- - src/sparc/ffi.c | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - -diff --git a/src/sparc/ffi.c b/src/sparc/ffi.c -index 9e406d0af..cf819ee67 100644 ---- a/src/sparc/ffi.c -+++ b/src/sparc/ffi.c -@@ -286,6 +286,8 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, - void **avalue, void *closure) - { - size_t bytes = cif->bytes; -+ size_t i, nargs = cif->nargs; -+ ffi_type **arg_types = cif->arg_types; - - FFI_ASSERT (cif->abi == FFI_V8); - -@@ -295,6 +297,20 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, - && (cif->flags & SPARC_FLAG_RET_MASK) == SPARC_RET_STRUCT) - bytes += FFI_ALIGN (cif->rtype->size, 8); - -+ /* If we have any 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) -+ { -+ char *argcopy = alloca (size); -+ memcpy (argcopy, avalue[i], size); -+ avalue[i] = argcopy; -+ } -+ } -+ - ffi_call_v8(cif, fn, rvalue, avalue, -bytes, closure); - } - - diff --git a/dev-libs/libffi/files/libffi-3.4.6-test-typo.patch b/dev-libs/libffi/files/libffi-3.4.6-test-typo.patch deleted file mode 100644 index 78beab646470..000000000000 --- a/dev-libs/libffi/files/libffi-3.4.6-test-typo.patch +++ /dev/null @@ -1,19 +0,0 @@ -https://github.com/libffi/libffi/commit/f7e4992789fa563b4cc74521c37ff703555da21c - -From f7e4992789fa563b4cc74521c37ff703555da21c Mon Sep 17 00:00:00 2001 -From: Sam James <[email protected]> -Date: Fri, 20 Sep 2024 10:58:06 +0100 -Subject: [PATCH] testsuite: fix dejagnu directive typo (#859) - ---- a/testsuite/libffi.complex/complex_int.c -+++ b/testsuite/libffi.complex/complex_int.c -@@ -76,7 +76,7 @@ int main (void) - - printf ("%d,%di %d,%di, x %d 1234, y %d 11110\n", - (int)tc_result, (int)(tc_result * -I), 2, 8, tc_int_arg_x, tc_y); -- /* dg-output "-2,8i 2,8i, x 1234 1234, y 11110 11110" */ -+ /* { dg-output "-2,8i 2,8i, x 1234 1234, y 11110 11110" } */ - CHECK (creal (tc_result) == -2); - CHECK (cimag (tc_result) == 8); - CHECK (tc_int_arg_x == 1234); - diff --git a/dev-libs/libffi/libffi-3.4.6-r3.ebuild b/dev-libs/libffi/libffi-3.4.6-r3.ebuild deleted file mode 100644 index 7773456321b4..000000000000 --- a/dev-libs/libffi/libffi-3.4.6-r3.ebuild +++ /dev/null @@ -1,100 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit dot-a 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/" - -if [[ ${PV} == 9999 ]] ; then - EGIT_REPO_URI="https://github.com/libffi/libffi" - inherit git-r3 -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" -fi - -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 -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}-arm64-cfi.patch - "${FILESDIR}"/${P}-asan.patch - "${FILESDIR}"/${P}-regenerate-autotools.patch - "${FILESDIR}"/${P}-c23-tests.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 -} - -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 - # 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 - strip-lto-bytecode -} - -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/dev-libs/libffi/libffi-3.4.8-r1.ebuild b/dev-libs/libffi/libffi-3.4.8-r1.ebuild deleted file mode 100644 index bb729320f265..000000000000 --- a/dev-libs/libffi/libffi-3.4.8-r1.ebuild +++ /dev/null @@ -1,98 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit dot-a 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/" - -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" -fi - -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 -IUSE="debug +exec-static-trampoline pax-kernel static-libs test" - -RESTRICT="!test? ( test )" -BDEPEND="test? ( dev-util/dejagnu )" - -PATCHES=( - "${FILESDIR}"/${PN}-3.4.8-pa-add-.note.GNU-stack-marker-to-linux.S.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*-*-*|&/' \ - configure configure.host || die - 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 - # 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 - strip-lto-bytecode -} - -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/dev-libs/libffi/libffi-3.4.8-r2.ebuild b/dev-libs/libffi/libffi-3.4.8-r2.ebuild deleted file mode 100644 index 6386a4b761eb..000000000000 --- a/dev-libs/libffi/libffi-3.4.8-r2.ebuild +++ /dev/null @@ -1,99 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit dot-a 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/" - -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" -fi - -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 -IUSE="debug +exec-static-trampoline pax-kernel static-libs test" - -RESTRICT="!test? ( test )" -BDEPEND="test? ( dev-util/dejagnu )" - -PATCHES=( - "${FILESDIR}"/${PN}-3.4.8-pa-add-.note.GNU-stack-marker-to-linux.S.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*-*-*|&/' \ - configure configure.host || die - 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 - # 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 \ - --with-pic \ - $(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 - strip-lto-bytecode -} - -pkg_preinst() { - preserve_old_lib /usr/$(get_libdir)/libffi.so.7 -} - -pkg_postinst() { - preserve_old_lib_notify /usr/$(get_libdir)/libffi.so.7 -}
