summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJay Freeman (saurik) <saurik@saurik.com>2018-08-13 23:47:12 +0000
committerJay Freeman (saurik) <saurik@saurik.com>2018-08-13 23:47:12 +0000
commit6e8d2fe20c6426369266acff76054e625fac5c10 (patch)
tree4c551f1267205785f161787997b49129d17abd38
parent7e79c8bf3c31232aa79ef0ba731f25dc298b40b5 (diff)
Upgrade libffi (from 2012).
git-svn-id: http://svn.telesphoreo.org/trunk@825 514c082c-b64e-11dc-b46d-3d985efe055d
-rw-r--r--data/libffi/_metadata/version2
-rw-r--r--data/libffi/assembler.diff60
-rw-r--r--data/libffi/clearcache.diff18
-rw-r--r--data/libffi/cname.diff30
-rw-r--r--data/libffi/debug.diff24
-rw-r--r--data/libffi/incompetant.diff103
-rw-r--r--data/libffi/libffi-130618.tgzbin982313 -> 0 bytes
-rw-r--r--data/libffi/libffi-3.0.10.tar.gzbin0 -> 753346 bytes
-rw-r--r--data/libffi/make.sh10
-rw-r--r--data/libffi/private.diff12
-rw-r--r--data/libffi/vfpfp.diff61
11 files changed, 196 insertions, 124 deletions
diff --git a/data/libffi/_metadata/version b/data/libffi/_metadata/version
index d83f6df35..4c45776d3 100644
--- a/data/libffi/_metadata/version
+++ b/data/libffi/_metadata/version
@@ -1 +1 @@
-130618
+1:3.0.10
diff --git a/data/libffi/assembler.diff b/data/libffi/assembler.diff
index 8d46ac5f1..415a85d56 100644
--- a/data/libffi/assembler.diff
+++ b/data/libffi/assembler.diff
@@ -1,43 +1,33 @@
-Index: libffi/src/arm/sysv.S
-===================================================================
---- gcc/libffi/src/arm/sysv.S (revision 130618)
-+++ gcc+iPhone/libffi/src/arm/sysv.S (working copy)
-@@ -38,7 +38,7 @@
- #else
- #define CNAME(x) x
- #endif
--#define ENTRY(x) .globl CNAME(x); .type CNAME(x),%function; CNAME(x):
-+#define ENTRY(x) .globl CNAME(x); CNAME(x):
- #endif
+diff -ru libffi-3.0.10/src/arm/sysv.S libffi-3.0.10+iPhone/src/arm/sysv.S
+--- libffi-3.0.10/src/arm/sysv.S 2011-08-23 14:27:24.000000000 +0000
++++ libffi-3.0.10+iPhone/src/arm/sysv.S 2012-03-18 22:32:12.000000000 +0000
+@@ -335,7 +335,9 @@
- #ifdef __ELF__
-@@ -219,7 +219,7 @@
+ /* Below are VFP hard-float ABI call and closure implementations.
+ Add VFP FPU directive here. */
++#ifndef __APPLE__
+ .fpu vfp
++#endif
- .ffi_call_SYSV_end:
+ @ r0: fn
+ @ r1: &ecif
+@@ -428,7 +430,9 @@
+
+ .ffi_call_VFP_end:
UNWIND .fnend
-- .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV)
-+@ .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV)
++#ifdef __ELF__
+ .size CNAME(ffi_call_VFP),.ffi_call_VFP_end-CNAME(ffi_call_VFP)
++#endif
- /*
- unsigned int FFI_HIDDEN
-@@ -235,11 +235,11 @@
- stmfd sp!, {ip, lr}
- UNWIND .save {r0, lr}
- add r2, sp, #8
-- .pad #16
-+@ .pad #16
- sub sp, sp, #16
- str sp, [sp, #8]
- add r1, sp, #8
-- bl ffi_closure_SYSV_inner
-+ bl _ffi_closure_SYSV_inner
- cmp r0, #FFI_TYPE_INT
- beq .Lretint
-@@ -291,5 +291,5 @@
+ ARM_FUNC_START ffi_closure_VFP
+@@ -490,7 +494,9 @@
- .ffi_closure_SYSV_end:
+ .ffi_closure_VFP_end:
UNWIND .fnend
-- .size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV)
-+@ .size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV)
++#ifdef __ELF__
+ .size CNAME(ffi_closure_VFP),.ffi_closure_VFP_end-CNAME(ffi_closure_VFP)
++#endif
+ #if defined __ELF__ && defined __linux__
+ .section .note.GNU-stack,"",%progbits
diff --git a/data/libffi/clearcache.diff b/data/libffi/clearcache.diff
index e9bbdfa9a..7e4566482 100644
--- a/data/libffi/clearcache.diff
+++ b/data/libffi/clearcache.diff
@@ -1,14 +1,14 @@
-diff -ru gcc/libffi/src/arm/ffi.c gcc+iPhone/libffi/src/arm/ffi.c
---- gcc/libffi/src/arm/ffi.c 2007-09-04 17:52:45.000000000 +0000
-+++ gcc+iPhone/libffi/src/arm/ffi.c 2010-11-23 23:18:14.000000000 +0000
-@@ -270,6 +270,10 @@
- return;
- }
+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:34:32.000000000 +0000
+@@ -32,6 +32,10 @@
+
+ #include <stdlib.h>
+#ifdef __APPLE__
+#define __clear_cache(a, b)
+#endif
+
- /* How to make a trampoline. */
-
- #define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX) \
+ /* Forward declares. */
+ static int vfp_type_p (ffi_type *);
+ static void layout_vfp_args (ffi_cif *);
diff --git a/data/libffi/cname.diff b/data/libffi/cname.diff
new file mode 100644
index 000000000..bfa2419b5
--- /dev/null
+++ b/data/libffi/cname.diff
@@ -0,0 +1,30 @@
+diff -ru libffi-3.0.10/src/arm/sysv.S libffi-3.0.10+iPhone/src/arm/sysv.S
+--- libffi-3.0.10/src/arm/sysv.S 2011-08-23 14:27:24.000000000 +0000
++++ libffi-3.0.10+iPhone/src/arm/sysv.S 2012-03-18 23:31:44.000000000 +0000
+@@ -187,7 +187,7 @@
+ @ r1 already set
+
+ @ Call ffi_prep_args(stack, &ecif)
+- bl ffi_prep_args
++ bl CNAME(ffi_prep_args)
+
+ @ move first 4 parameters in registers
+ ldmia sp, {r0-r3}
+@@ -362,7 +362,7 @@
+ sub r2, fp, #64 @ VFP scratch space
+
+ @ Call ffi_prep_args(stack, &ecif, vfp_space)
+- bl ffi_prep_args
++ bl CNAME(ffi_prep_args)
+
+ @ Load VFP register args if needed
+ cmp r0, #0
+@@ -444,7 +444,7 @@
+ sub sp, sp, #72
+ str sp, [sp, #64]
+ add r1, sp, #64
+- bl ffi_closure_SYSV_inner
++ bl CNAME(ffi_closure_SYSV_inner)
+
+ cmp r0, #FFI_TYPE_INT
+ beq .Lretint_vfp
diff --git a/data/libffi/debug.diff b/data/libffi/debug.diff
new file mode 100644
index 000000000..bf33daa01
--- /dev/null
+++ b/data/libffi/debug.diff
@@ -0,0 +1,24 @@
+diff -ru libffi-3.0.10/Makefile.am libffi-3.0.10+iPhone/Makefile.am
+--- libffi-3.0.10/Makefile.am 2011-08-23 14:28:04.000000000 +0000
++++ libffi-3.0.10+iPhone/Makefile.am 2012-03-19 00:29:07.000000000 +0000
+@@ -178,7 +178,7 @@
+ libffi_convenience_la_SOURCES = $(libffi_la_SOURCES)
+ nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES)
+
+-AM_CFLAGS = -g
++AM_CFLAGS =
+ if FFI_DEBUG
+ # Build debug. Define FFI_DEBUG on the commandline so that, when building with
+ # MSVC, it can link against the debug CRT.
+diff -ru libffi-3.0.10/Makefile.in libffi-3.0.10+iPhone/Makefile.in
+--- libffi-3.0.10/Makefile.in 2011-08-23 14:28:35.000000000 +0000
++++ libffi-3.0.10+iPhone/Makefile.in 2012-03-19 00:29:18.000000000 +0000
+@@ -501,7 +501,7 @@
+ $(am__append_24) $(am__append_25) $(am__append_26)
+ libffi_convenience_la_SOURCES = $(libffi_la_SOURCES)
+ nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES)
+-AM_CFLAGS = -g $(am__append_27)
++AM_CFLAGS = $(am__append_27)
+ libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) $(AM_LTLDFLAGS)
+ AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src
+ AM_CCASFLAGS = $(AM_CPPFLAGS)
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;
diff --git a/data/libffi/libffi-130618.tgz b/data/libffi/libffi-130618.tgz
deleted file mode 100644
index d1d035c7d..000000000
--- a/data/libffi/libffi-130618.tgz
+++ /dev/null
Binary files differ
diff --git a/data/libffi/libffi-3.0.10.tar.gz b/data/libffi/libffi-3.0.10.tar.gz
new file mode 100644
index 000000000..3c44c6609
--- /dev/null
+++ b/data/libffi/libffi-3.0.10.tar.gz
Binary files differ
diff --git a/data/libffi/make.sh b/data/libffi/make.sh
index d8fe64d54..39dd00bfc 100644
--- a/data/libffi/make.sh
+++ b/data/libffi/make.sh
@@ -1,8 +1,6 @@
pkg:setup
-mkdir ../build
-cd ../build
-PKG_CONF=../gcc/libffi/configure pkg:configure --with-sysroot="${PKG_ROOT}"
-make
+pkg:configure
+pkg:make
pkg:install
-mv "${PKG_DEST}"/usr/lib/gcc/*/include "${PKG_DEST}"/usr
-pkg: rm -rfv /usr/lib/gcc
+mv "${PKG_DEST}"/usr/lib/libffi-*/include "${PKG_DEST}"/usr
+rmdir "${PKG_DEST}"/usr/lib/libffi-*
diff --git a/data/libffi/private.diff b/data/libffi/private.diff
deleted file mode 100644
index f30e5bdac..000000000
--- a/data/libffi/private.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: libffi/src/arm/ffi.c
-===================================================================
---- gcc/libffi/src/arm/ffi.c (revision 130618)
-+++ gcc+iPhone/libffi/src/arm/ffi.c (working copy)
-@@ -199,6 +199,7 @@
-
- /* This function is jumped to by the trampoline */
-
-+__private_extern__
- unsigned int
- ffi_closure_SYSV_inner (closure, respp, args)
- ffi_closure *closure;
diff --git a/data/libffi/vfpfp.diff b/data/libffi/vfpfp.diff
deleted file mode 100644
index 4713be660..000000000
--- a/data/libffi/vfpfp.diff
+++ /dev/null
@@ -1,61 +0,0 @@
-diff -ru gcc/libffi/src/arm/sysv.S gcc+iPhone/libffi/src/arm/sysv.S
---- gcc/libffi/src/arm/sysv.S 2007-09-04 17:52:45.000000000 +0000
-+++ gcc+iPhone/libffi/src/arm/sysv.S 2008-09-07 12:59:53.000000000 +0000
-@@ -188,7 +188,7 @@
-
- @ return INT
- cmp r3, #FFI_TYPE_INT
--#ifdef __SOFTFP__
-+#if defined(__SOFTFP__) || defined(__VFP_FP__)
- cmpne r3, #FFI_TYPE_FLOAT
- #endif
- streq r0, [r2]
-@@ -196,12 +196,12 @@
-
- @ return INT64
- cmp r3, #FFI_TYPE_SINT64
--#ifdef __SOFTFP__
-+#if defined(__SOFTFP__) || defined(__VFP_FP__)
- cmpne r3, #FFI_TYPE_DOUBLE
- #endif
- stmeqia r2, {r0, r1}
-
--#ifndef __SOFTFP__
-+#if !defined(__SOFTFP__) && !defined(__VFP_FP__)
- beq LSYM(Lepilogue)
-
- @ return FLOAT
-@@ -244,21 +244,21 @@
- beq .Lretint
-
- cmp r0, #FFI_TYPE_FLOAT
--#ifdef __SOFTFP__
-+#if defined(__SOFTFP__) || defined(__VFP_FP__)
- beq .Lretint
- #else
- beq .Lretfloat
- #endif
-
- cmp r0, #FFI_TYPE_DOUBLE
--#ifdef __SOFTFP__
-+#if defined(__SOFTFP__) || defined(__VFP_FP__)
- beq .Lretlonglong
- #else
- beq .Lretdouble
- #endif
-
- cmp r0, #FFI_TYPE_LONGDOUBLE
--#ifdef __SOFTFP__
-+#if defined(__SOFTFP__) || defined(__VFP_FP__)
- beq .Lretlonglong
- #else
- beq .Lretlongdouble
-@@ -277,7 +277,7 @@
- ldr r1, [sp, #4]
- b .Lclosure_epilogue
-
--#ifndef __SOFTFP__
-+#if !defined(__SOFTFP__) && !defined(__VFP_FP__)
- .Lretfloat:
- ldfs f0, [sp]
- b .Lclosure_epilogue