Skip to content

Latest commit

 

History

History
14 lines (10 loc) · 1.06 KB

README.markdown

File metadata and controls

14 lines (10 loc) · 1.06 KB

libffi-ios provides an experimental port of libffi to Apple's iOS.

The libffi closure mechanism has previously required the use of executable data pages, however, iOS sandbox restrictions prevent their use. The OS does, however, permit remapping of executable pages, allowing one to remap a single page to multiple locations. libffi-ios modifies ffi_closure_alloc/ffi_closure_free APIs to make use of this functionality to implement dynamically allocated and configured closure trampolines without requiring the use of executable data.

The implementation works by allocating a writable config page, and then remapping a page of pre-compiled trampolines directly after the config page. The trampolines use PC-relative addressing to load their context from the config page, and so it is possible to allocate as many of these trampolines tables as you have memory space.

Note that this implementation is experimental and has seen very limited testing.

A build-ios.sh script is provided to configure and build an iOS library; you may need to edit the SDK settings in the script.