friendly ping :) Omar Polo <o...@openbsd.org> wrote: > Hello Jasper, ports@ > > I wanted to update java/jna (to work with jdk-11) but that needs an > updated libffi too. > > The development of libffi seems to have moved to github, at least for > the release tarballs, and some patches were upstreamed. > > Regarding the shlib version: looking at check_sym it seems to warrant > only a minor bump (5 symbols added) but upstream bumped the major 2 > years ago with this commit: > > https://github.com/libffi/libffi/commit/7855656148b96c7070ec362d2a73af840025a2b7 > > the change to FFI_TRAMPOLINE_SIZE probably requires a major bump; I went > with it to stay on the safe side. > > The list of consumer is daunting and I can't test everything nor run a > bulk. So far I tested on amd64: > > - java/jna: (post update, see other thread) builds fine + all tests passing > - lang/gforth: builds fine + all tests passing > - lang/guile2: builds fine + and ffi tests are passing > - lang/python/3.9: builds fine and the failing tests don't seem to be > related to libffi > - lang/ruby/3.1: like python-3.9
gnezdo@ tested also lang/ghc and devel/cabal-install on amd64 (thanks!) > plus some testing with guile3 (not in ports yet.) I have the build and > tests log for these I can share if needed. > > Comments and further testing (especially on !amd64) is appreciated :) > > > The changelog is: > > Add static trampoline support for Linux on x86_64 and ARM64. > Add support for Alibaba's CSKY architecture. > Add support for Kalray's KVX architecture. > Add support for Intel Control-flow Enforcement Technology (CET). > Add support for ARM Pointer Authentication (PA). > Fix 32-bit PPC regression. > Fix MIPS soft-float problem. > Enable tmpdir override with the $LIBFFI_TMPDIR environment variable. > Enable compatibility with MSVC runtime stack checking. > Reject float and small integer argument in ffi_prep_cif_var(). > Callers must promote these types themselves. Index: Makefile =================================================================== RCS file: /home/cvs/ports/devel/libffi/Makefile,v retrieving revision 1.45 diff -u -p -r1.45 Makefile --- Makefile 11 Mar 2022 18:50:31 -0000 1.45 +++ Makefile 14 May 2022 09:09:29 -0000 @@ -1,8 +1,8 @@ COMMENT= Foreign Function Interface -DISTNAME= libffi-3.3 -REVISION= 1 -SHARED_LIBS += ffi 1.2 # .6.4 +V= 3.4.2 +DISTNAME= libffi-$V +SHARED_LIBS += ffi 2.0 # 9.0 CATEGORIES= devel MAINTAINER= Jasper Lievisse Adriaanse <jas...@openbsd.org> @@ -17,8 +17,7 @@ PERMIT_PACKAGE= Yes WANTLIB += c++abi .endif -MASTER_SITES= https://sourceware.org/pub/libffi/ \ - ftp://sourceware.org/pub/libffi/ +MASTER_SITES= https://github.com/libffi/libffi/releases/download/v$V/ DEBUG_PACKAGES = ${BUILD_PACKAGES} Index: distinfo =================================================================== RCS file: /home/cvs/ports/devel/libffi/distinfo,v retrieving revision 1.6 diff -u -p -r1.6 distinfo --- distinfo 10 Feb 2020 18:06:34 -0000 1.6 +++ distinfo 14 May 2022 10:01:48 -0000 @@ -1,2 +1,2 @@ -SHA256 (libffi-3.3.tar.gz) = cvunkicD3fp6Ao1ROsFahcjVTI1n9V+lpIAohdxlIFY= -SIZE (libffi-3.3.tar.gz) = 1305466 +SHA256 (libffi-3.4.2.tar.gz) = VA+3IWGaaro73u99lA2Ong5tLBk1lbwkMkG3f/npNiA= +SIZE (libffi-3.4.2.tar.gz) = 1351355 Index: patches/patch-configure =================================================================== RCS file: /home/cvs/ports/devel/libffi/patches/patch-configure,v retrieving revision 1.12 diff -u -p -r1.12 patch-configure --- patches/patch-configure 11 Mar 2022 18:50:31 -0000 1.12 +++ patches/patch-configure 14 May 2022 09:06:48 -0000 @@ -3,7 +3,7 @@ Index: configure --- configure.orig +++ configure -@@ -18475,6 +18475,12 @@ $as_echo "#define SYMBOL_UNDERSCORE 1" >>confdefs.h +@@ -18650,6 +18650,12 @@ $as_echo "#define SYMBOL_UNDERSCORE 1" >>confdefs.h fi Index: patches/patch-configure_host =================================================================== RCS file: /home/cvs/ports/devel/libffi/patches/patch-configure_host,v retrieving revision 1.2 diff -u -p -r1.2 patch-configure_host --- patches/patch-configure_host 11 Mar 2022 18:50:31 -0000 1.2 +++ patches/patch-configure_host 14 May 2022 09:06:48 -0000 @@ -1,12 +1,12 @@ Index: configure.host --- configure.host.orig +++ configure.host -@@ -203,7 +203,7 @@ case "${host}" in +@@ -216,7 +216,7 @@ case "${host}" in TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc - HAVE_LONG_DOUBLE_VARIANT=1 + CFLAGS="$CFLAGS -D__NO_FPRS__" ;; -- powerpc64-*-freebsd*) -+ powerpc64-*-freebsd* | powerpc64-*-openbsd*) +- powerpc64-*-freebsd* | powerpc64le-*-freebsd*) ++ powerpc64-*-freebsd* | powerpc64le-*-freebsd* | powerpc64-*-openbsd*) TARGET=POWERPC; TARGETDIR=powerpc ;; powerpc*-*-rtems*) Index: patches/patch-src_arm_ffi_c =================================================================== RCS file: /home/cvs/ports/devel/libffi/patches/patch-src_arm_ffi_c,v retrieving revision 1.10 diff -u -p -r1.10 patch-src_arm_ffi_c --- patches/patch-src_arm_ffi_c 11 Mar 2022 18:50:31 -0000 1.10 +++ patches/patch-src_arm_ffi_c 14 May 2022 09:06:48 -0000 @@ -3,8 +3,8 @@ https://svnweb.freebsd.org/ports/head/de Index: src/arm/ffi.c --- src/arm/ffi.c.orig +++ src/arm/ffi.c -@@ -55,6 +55,11 @@ extern unsigned int ffi_arm_trampoline[3] FFI_HIDDEN; - #endif +@@ -64,6 +64,11 @@ extern unsigned char ffi_arm_trampoline[12] FFI_HIDDEN + #include <machine/sysarch.h> #endif +#ifdef __arm__ @@ -15,7 +15,7 @@ Index: src/arm/ffi.c /* Forward declares. */ static int vfp_type_p (const ffi_type *); static void layout_vfp_args (ffi_cif *); -@@ -591,6 +596,16 @@ ffi_prep_closure_loc (ffi_closure * closure, +@@ -621,6 +626,16 @@ ffi_prep_closure_loc (ffi_closure * closure, config[0] = closure; config[1] = closure_func; #else @@ -30,5 +30,5 @@ Index: src/arm/ffi.c + } while (0); +#endif - #ifndef _M_ARM - memcpy(closure->tramp, ffi_arm_trampoline, 8); + #if defined(FFI_EXEC_STATIC_TRAMP) + if (ffi_tramp_is_present(closure)) Index: patches/patch-src_closures_c =================================================================== RCS file: /home/cvs/ports/devel/libffi/patches/patch-src_closures_c,v retrieving revision 1.3 diff -u -p -r1.3 patch-src_closures_c --- patches/patch-src_closures_c 11 Mar 2022 18:50:31 -0000 1.3 +++ patches/patch-src_closures_c 14 May 2022 09:06:48 -0000 @@ -1,15 +1,15 @@ Index: src/closures.c --- src/closures.c.orig +++ src/closures.c -@@ -837,6 +837,7 @@ dlmmap (void *start, size_t length, int prot, - && flags == (MAP_PRIVATE | MAP_ANONYMOUS) - && fd == -1 && offset == 0); +@@ -878,6 +878,7 @@ dlmmap (void *start, size_t length, int prot, + return ptr; + } +#if 0 if (execfd == -1 && is_emutramp_enabled ()) { ptr = mmap (start, length, prot & ~PROT_EXEC, flags, fd, offset); -@@ -855,6 +856,7 @@ dlmmap (void *start, size_t length, int prot, +@@ -896,6 +897,7 @@ dlmmap (void *start, size_t length, int prot, with ((prot & ~PROT_WRITE) | PROT_EXEC) and mremap with MREMAP_DUP and prot at this point. */ } Index: patches/patch-src_mips_n32_S =================================================================== RCS file: patches/patch-src_mips_n32_S diff -N patches/patch-src_mips_n32_S --- patches/patch-src_mips_n32_S 11 Mar 2022 18:50:31 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,19 +0,0 @@ -Use EH_FRAME_FLAGS to get section flags that clang's integrated assembler -expects. This fixes the following build error on mips64: - -../src/mips/n32.S:585:9: error: changed section flags for .eh_frame, expected: 0x2 - .section .eh_frame,"aw",@progbits - ^ - -Index: src/mips/n32.S ---- src/mips/n32.S.orig -+++ src/mips/n32.S -@@ -582,7 +582,7 @@ cls_epilogue: - .end ffi_closure_N32 - - #ifdef __GNUC__ -- .section .eh_frame,"aw",@progbits -+ .section .eh_frame,EH_FRAME_FLAGS,@progbits - .Lframe1: - .4byte .LECIE1-.LSCIE1 # length - .LSCIE1: Index: patches/patch-src_powerpc_ffi_powerpc_h =================================================================== RCS file: patches/patch-src_powerpc_ffi_powerpc_h diff -N patches/patch-src_powerpc_ffi_powerpc_h --- patches/patch-src_powerpc_ffi_powerpc_h 11 Mar 2022 18:50:31 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,18 +0,0 @@ -Fix for: -../src/powerpc/ffi_powerpc.h:105: error: expected declaration -specifiers or '...' before 'float128' -From: -https://github.com/libffi/libffi/pull/532/commits/2138adb2a5b6a0bc2fe3518e0645eacc89b6f392 - -Index: src/powerpc/ffi_powerpc.h ---- src/powerpc/ffi_powerpc.h.orig -+++ src/powerpc/ffi_powerpc.h -@@ -62,7 +62,7 @@ typedef _Float128 float128; - #elif defined(__FLOAT128__) - typedef __float128 float128; - #else --typedef __int128 float128; -+typedef char float128[16] __attribute__((aligned(16))); - #endif - - void FFI_HIDDEN ffi_closure_SYSV (void); Index: patches/patch-src_powerpc_sysv_S =================================================================== RCS file: patches/patch-src_powerpc_sysv_S diff -N patches/patch-src_powerpc_sysv_S --- patches/patch-src_powerpc_sysv_S 11 Mar 2022 18:50:31 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,46 +0,0 @@ -From 4d6d2866ae43e55325e8ee96561221804602cd7a Mon Sep 17 00:00:00 2001 -From: Samuel Holland <sam...@sholland.org> -Date: Fri, 21 Feb 2020 21:06:15 -0600 -Subject: [PATCH] Update powerpc sysv assembly for ffi_powerpc.h changes (#541) - -Some of the flag bits were moved when adding powerpc64 vector support. - -Fixes #536 - -Index: src/powerpc/sysv.S ---- src/powerpc/sysv.S.orig -+++ src/powerpc/sysv.S -@@ -104,17 +104,16 @@ ENTRY(ffi_call_SYSV) - bctrl - - /* Now, deal with the return value. */ -- mtcrf 0x01,%r31 /* cr7 */ -+ mtcrf 0x03,%r31 /* cr6-cr7 */ - bt- 31,L(small_struct_return_value) - bt- 30,L(done_return_value) - #ifndef __NO_FPRS__ - bt- 29,L(fp_return_value) - #endif - stw %r3,0(%r30) -- bf+ 28,L(done_return_value) -+ bf+ 27,L(done_return_value) - stw %r4,4(%r30) -- mtcrf 0x02,%r31 /* cr6 */ -- bf 27,L(done_return_value) -+ bf 26,L(done_return_value) - stw %r5,8(%r30) - stw %r6,12(%r30) - /* Fall through... */ -@@ -145,10 +144,9 @@ L(done_return_value): - #ifndef __NO_FPRS__ - L(fp_return_value): - .cfi_restore_state -- bf 28,L(float_return_value) -+ bf 27,L(float_return_value) - stfd %f1,0(%r30) -- mtcrf 0x02,%r31 /* cr6 */ -- bf 27,L(done_return_value) -+ bf 26,L(done_return_value) - stfd %f2,8(%r30) - b L(done_return_value) - L(float_return_value): Index: patches/patch-testsuite_lib_libffi_exp =================================================================== RCS file: /home/cvs/ports/devel/libffi/patches/patch-testsuite_lib_libffi_exp,v retrieving revision 1.3 diff -u -p -r1.3 patch-testsuite_lib_libffi_exp --- patches/patch-testsuite_lib_libffi_exp 11 Mar 2022 18:50:31 -0000 1.3 +++ patches/patch-testsuite_lib_libffi_exp 14 May 2022 09:06:48 -0000 @@ -3,7 +3,7 @@ cc1: error: unrecognized command line op Index: testsuite/lib/libffi.exp --- testsuite/lib/libffi.exp.orig +++ testsuite/lib/libffi.exp -@@ -488,7 +488,7 @@ proc run-many-tests { testcases extra_flags } { +@@ -491,7 +491,7 @@ proc run-many-tests { testcases extra_flags } { } } "gnu" {