Skip to content

nevo/libffi-ios-hack

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

A portable foreign-function interface library.

Resources

License

Stars

Watchers

Forks

Packages

No packages published