[fpc-pascal] FFI or RTTI invoke for Apple arm64

Sven Barth pascaldragon at googlemail.com
Wed Sep 2 14:40:10 CEST 2020


Carlo Kok via fpc-pascal <fpc-pascal at lists.freepascal.org> schrieb am Mi.,
2. Sep. 2020, 11:09:

> Seems I had to use ffi.manager.pas too. However when building then it
> fails with;
>
> Undefined symbols for architecture arm64:
>
>   "_ffi_call", referenced from:
>       _FFI.MANAGER_$$_FFIINVOKE$crc7AE31AA0 in ffi.manager.o
>   "_ffi_closure_alloc", referenced from:
>       _FFI.MANAGER$_$TFFIFUNCTIONCALLBACK_$__$$_CREATE$crc5C7D27E4 in ffi.manager.o
>   "_ffi_closure_free", referenced from:
>       _FFI.MANAGER$_$TFFIFUNCTIONCALLBACK_$__$$_DESTROY in ffi.manager.o
>   "_ffi_prep_cif", referenced from:
>       _FFI.MANAGER_$$_CREATECIF$crcD3E75E66 in ffi.manager.o
>   "_ffi_prep_closure_loc", referenced from:
>       _FFI.MANAGER$_$TFFIFUNCTIONCALLBACK_$__$$_CREATE$crc5C7D27E4 in ffi.manager.o
>   "_ffi_type_double", referenced from:
>       _FFI.MANAGER_$$_TYPEINFOTOFFITYPE$PTYPEINFO$TPARAMFLAGS$$PFFI_TYPE in ffi.manager.o
>   "_ffi_type_float", referenced from:
>       _FFI.MANAGER_$$_TYPEINFOTOFFITYPE$PTYPEINFO$TPARAMFLAGS$$PFFI_TYPE in ffi.manager.o
>   "_ffi_type_pointer", referenced from:
>       _FFI.MANAGER_$$_TYPEINFOTOFFITYPE$PTYPEINFO$TPARAMFLAGS$$PFFI_TYPE in ffi.manager.o
>   "_ffi_type_sint16", referenced from:
>       _FFI.MANAGER_$$_TYPEINFOTOFFITYPE$PTYPEINFO$TPARAMFLAGS$$PFFI_TYPE in ffi.manager.o
>   "_ffi_type_sint32", referenced from:
>       _FFI.MANAGER_$$_TYPEINFOTOFFITYPE$PTYPEINFO$TPARAMFLAGS$$PFFI_TYPE in ffi.manager.o
>   "_ffi_type_sint64", referenced from:
>       _FFI.MANAGER_$$_TYPEINFOTOFFITYPE$PTYPEINFO$TPARAMFLAGS$$PFFI_TYPE in ffi.manager.o
>   "_ffi_type_sint8", referenced from:
>       _FFI.MANAGER_$$_TYPEINFOTOFFITYPE$PTYPEINFO$TPARAMFLAGS$$PFFI_TYPE in ffi.manager.o
>   "_ffi_type_uint16", referenced from:
>       _FFI.MANAGER_$$_RECORDOROBJECTTOFFITYPE$PTYPEINFO$$PFFI_TYPE in ffi.manager.o
>       _FFI.MANAGER_$$_SETTOFFITYPE$INT64$$PFFI_TYPE in ffi.manager.o
>       _FFI.MANAGER_$$_TYPEINFOTOFFITYPE$PTYPEINFO$TPARAMFLAGS$$PFFI_TYPE in ffi.manager.o
>   "_ffi_type_uint32", referenced from:
>       _FFI.MANAGER_$$_RECORDOROBJECTTOFFITYPE$PTYPEINFO$$PFFI_TYPE in ffi.manager.o
>       _FFI.MANAGER_$$_SETTOFFITYPE$INT64$$PFFI_TYPE in ffi.manager.o
>       _FFI.MANAGER_$$_TYPEINFOTOFFITYPE$PTYPEINFO$TPARAMFLAGS$$PFFI_TYPE in ffi.manager.o
>   "_ffi_type_uint64", referenced from:
>       _FFI.MANAGER_$$_RECORDOROBJECTTOFFITYPE$PTYPEINFO$$PFFI_TYPE in ffi.manager.o
>       _FFI.MANAGER_$$_SETTOFFITYPE$INT64$$PFFI_TYPE in ffi.manager.o
>       _FFI.MANAGER_$$_TYPEINFOTOFFITYPE$PTYPEINFO$TPARAMFLAGS$$PFFI_TYPE in ffi.manager.o
>   "_ffi_type_uint8", referenced from:
>       _FFI.MANAGER_$$_RECORDOROBJECTTOFFITYPE$PTYPEINFO$$PFFI_TYPE in ffi.manager.o
>       _FFI.MANAGER_$$_SETTOFFITYPE$INT64$$PFFI_TYPE in ffi.manager.o
>       _FFI.MANAGER_$$_TYPEINFOTOFFITYPE$PTYPEINFO$TPARAMFLAGS$$PFFI_TYPE in ffi.manager.o
>   "_ffi_type_void", referenced from:
>       _FFI.MANAGER_$$_TYPEINFOTOFFITYPE$PTYPEINFO$TPARAMFLAGS$$PFFI_TYPE in ffi.manager.o
>       _FFI.MANAGER_$$_CREATECIF$crcD3E75E66 in ffi.manager.o
> ld: symbol(s) not found for architecture arm64
>
>
> Is there something else I need to do to allow FFI to work on arm64? (Does
> this depend on a dylib? or a static library?, and do I need to explicitly
> reference that?)
>

You need the libffi library compiled for macOS on ARM (
https://github.com/libffi/libffi ) and then you might need to add a
"{$linklibrary ffi}" or so, cause the ffi unit was not set tested on macOS.

Regards,
Sven

>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20200902/589cd784/attachment.htm>


More information about the fpc-pascal mailing list