git: 0cff34eb46ae - main - devel/libffi: fix build with lld 17

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Sun, 24 Sep 2023 20:32:22 UTC
The branch main has been updated by dim:

URL: https://cgit.FreeBSD.org/ports/commit/?id=0cff34eb46ae4c1bfc4a041c730524500a628986

commit 0cff34eb46ae4c1bfc4a041c730524500a628986
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2023-09-23 20:05:49 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2023-09-24 20:31:15 +0000

    devel/libffi: fix build with lld 17
    
    As reported in bug 273753#c12, devel/libffi fails to link with lld 17,
    at least on i386:
    
    libtool: link: cc -shared  -fPIC -DPIC  src/.libs/prep_cif.o src/.libs/types.o src/.libs/raw_api.o src/.libs/java_raw_api.o src/.libs/closures.o src/.libs/tramp.o src/x86/.libs/ffi.o src/x86/.libs/sysv.o    -O2 -fstack-protector-strong -Wl,--version-script -Wl,libffi.map -fstack-protector-strong   -Wl,-soname -Wl,libffi.so.8 -o .libs/libffi.so.8.1.2
    ld: error: version script assignment of 'LIBFFI_BASE_8.0' to symbol 'ffi_java_raw_call' failed: symbol not defined
    ld: error: version script assignment of 'LIBFFI_CLOSURE_8.0' to symbol 'ffi_prep_java_raw_closure' failed: symbol not defined
    ld: error: version script assignment of 'LIBFFI_CLOSURE_8.0' to symbol 'ffi_prep_java_raw_closure_loc' failed: symbol not defined
    cc: error: linker command failed with exit code 1 (use -v to see invocation)
    
    This is because the symbols it complains about are not implemented on
    i386, due to the FFI_NATIVE_RAW_API define being nonzero.
    
    Fix it by adding more #if statements to libffi.map.in.
    
    PR:             274056
    Approved by:    kbowling (maintainer)
    MFH:            2023Q3
---
 devel/libffi/files/patch-libffi.map.in | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/devel/libffi/files/patch-libffi.map.in b/devel/libffi/files/patch-libffi.map.in
new file mode 100644
index 000000000000..25c8b32c7ece
--- /dev/null
+++ b/devel/libffi/files/patch-libffi.map.in
@@ -0,0 +1,23 @@
+--- libffi.map.in.orig	2022-10-23 15:23:27 UTC
++++ libffi.map.in
+@@ -33,7 +33,9 @@ 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 +64,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
+