summaryrefslogtreecommitdiff
path: root/data/libffi/incompetant.diff
diff options
context:
space:
mode:
Diffstat (limited to 'data/libffi/incompetant.diff')
-rw-r--r--data/libffi/incompetant.diff103
1 files changed, 103 insertions, 0 deletions
diff --git a/data/libffi/incompetant.diff b/data/libffi/incompetant.diff
new file mode 100644
index 000000000..3245f3077
--- /dev/null
+++ b/data/libffi/incompetant.diff
@@ -0,0 +1,103 @@
+diff -ru libffi-3.0.10/include/ffi.h.in libffi-3.0.10+iPhone/include/ffi.h.in
+--- libffi-3.0.10/include/ffi.h.in 2011-08-23 14:28:00.000000000 +0000
++++ libffi-3.0.10+iPhone/include/ffi.h.in 2012-03-18 23:19:19.000000000 +0000
+@@ -274,7 +274,16 @@
+ __declspec(align(8))
+ #endif
+ typedef struct {
++union {
++#if @FFI_EXEC_TRAMPOLINE_TABLE@
++ struct {
++ void *trampoline_table;
++ void *trampoline_table_entry;
++ };
++#endif
+ char tramp[FFI_TRAMPOLINE_SIZE];
++};
++
+ ffi_cif *cif;
+ void (*fun)(ffi_cif*,void*,void**,void*);
+ void *user_data;
+@@ -307,7 +316,15 @@
+ # pragma pack 8
+ #endif
+ typedef struct {
++union {
++#if @FFI_EXEC_TRAMPOLINE_TABLE@
++ struct {
++ void *trampoline_table;
++ void *trampoline_table_entry;
++ };
++#endif
+ char tramp[FFI_TRAMPOLINE_SIZE];
++};
+
+ ffi_cif *cif;
+
+@@ -328,7 +345,15 @@
+ } ffi_raw_closure;
+
+ typedef struct {
++union {
++#if @FFI_EXEC_TRAMPOLINE_TABLE@
++ struct {
++ void *trampoline_table;
++ void *trampoline_table_entry;
++ };
++#endif
+ char tramp[FFI_TRAMPOLINE_SIZE];
++};
+
+ ffi_cif *cif;
+
+diff -ru libffi-3.0.10/libtool-version libffi-3.0.10+iPhone/libtool-version
+--- libffi-3.0.10/libtool-version 2011-08-22 18:38:12.000000000 +0000
++++ libffi-3.0.10+iPhone/libtool-version 2012-03-18 23:08:29.000000000 +0000
+@@ -26,4 +26,4 @@
+ # release, then set age to 0.
+ #
+ # CURRENT:REVISION:AGE
+-5:10:0
++4:1:0
+diff -ru libffi-3.0.10/src/arm/ffi.c libffi-3.0.10+iPhone/src/arm/ffi.c
+--- libffi-3.0.10/src/arm/ffi.c 2011-08-23 14:28:04.000000000 +0000
++++ libffi-3.0.10+iPhone/src/arm/ffi.c 2012-03-18 23:15:50.000000000 +0000
+@@ -552,7 +552,7 @@
+ free (closure);
+ }
+
+-#else
++#endif
+
+ #define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX) \
+ ({ unsigned char *__tramp = (unsigned char*)(TRAMP); \
+@@ -570,8 +570,6 @@
+ mapping. */ \
+ })
+
+-#endif
+-
+ /* the cif must already be prep'ed */
+
+ ffi_status
+@@ -591,13 +589,19 @@
+ return FFI_BAD_ABI;
+
+ #if FFI_EXEC_TRAMPOLINE_TABLE
++if (closure != codeloc) {
+ void **config = FFI_TRAMPOLINE_CODELOC_CONFIG(codeloc);
+ config[0] = closure;
+ config[1] = closure_func;
+-#else
++} else {
++#endif
++
+ FFI_INIT_TRAMPOLINE (&closure->tramp[0], \
+ closure_func, \
+ codeloc);
++
++#if FFI_EXEC_TRAMPOLINE_TABLE
++}
+ #endif
+
+ closure->cif = cif;