This is the mail archive of the
libffi-discuss@sourceware.org
mailing list for the libffi project.
Re: libffi-3.1 on iOS
- From: Anthony Green <green at moxielogic dot com>
- To: Ed VanVliet <ed at vvi dot com>
- Cc: libffi-discuss at sourceware dot org
- Date: Thu, 12 Jun 2014 06:56:09 -0400
- Subject: Re: libffi-3.1 on iOS
- Authentication-results: sourceware.org; auth=none
- References: <78ECC115-FDDC-493D-8E2B-00745978E522 at vvi dot com>
Ed VanVliet <ed@vvi.com> writes:
> Running libffi on iOS (iPhone) simulator works for both 32 and 64 bit simulators using libffi-3.0.14-rc0
>
> But, with libffi-3.1 it works for 64 bit simulator, but fails to link for 32 bit simulator; giving the following:
>
> (null): "_ffi_call_win32", referenced from:
> (null): "_ffi_closure_FASTCALL", referenced from:
> (null): "_ffi_closure_STDCALL", referenced from:
> (null): "_ffi_closure_THISCALL", referenced from:
> (null): Linker command failed with exit code 1 (use -v to see
> invocation)
Could you please try adding win32.S to src_files for
simulator64_platform in generate-darwin-source-and-headers.py and
rebuilding?
> Also, on both the 32 and 64 bit segments the linker gives this warning:
>
> (null): Could not create compact unwind for .LFB3: non-standard register 5 being saved in prolog
>
> which it gave for both 3.0.14-rc0 and 3.1. However, the warning does
> not seem to cause a problem.
Not sure about this yet.
> On the ARM target the linker gives the following warnings:
>
> ld: warning: arm64 function not 4-byte aligned: ltmp0 from /libffi.a(sysv_arm64.o)
> ld: warning: arm64 function not 4-byte aligned: _ffi_call_SYSV from /libffi.a(sysv_arm64.o)
> ld: warning: arm64 function not 4-byte aligned: _ffi_closure_SYSV from /libffi.a(sysv_arm64.o)
>
> which also do not seem to cause a problem.
>
> It would be nice to fix the build and code so it didn't produce the
> error and warnings.
So this is weird. ffi_call_SYSV and ffi_closure_SYSV both have...
#ifdef __APPLE__
.align 2
#endif
...which I believe should make things 4-byte aligned. Is __APPLE__ not defined?
AG