Commit 8e7652ef6acab5db7a29f786686a54f05cdbdc7d

Landon Fuller 2010-09-19T19:49:39

Add a libffi-ios-specific github README.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
diff --git a/README.markdown b/README.markdown
new file mode 100644
index 0000000..55ef6db
--- /dev/null
+++ b/README.markdown
@@ -0,0 +1,14 @@
+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
+trampoline's without requiring the use of executable data.
+
+The implementation works by allocating a single 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.