pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

frida-libffi: Initial cleaning up of the package



Module Name:	pkgsrc-wip
Committed By:	Kamil Rytarowski <n54%gmx.com@localhost>
Pushed By:	kamil
Date:		Mon Mar 12 21:13:31 2018 +0100
Changeset:	1c0c51bbb0ed49a4a2f33748c34282ec63c1e84d

Modified Files:
	frida-libffi/Makefile
	frida-libffi/distinfo
Removed Files:
	frida-libffi/patches/patch-Makefile.am
	frida-libffi/patches/patch-aa
	frida-libffi/patches/patch-ac
	frida-libffi/patches/patch-ad
	frida-libffi/patches/patch-ae
	frida-libffi/patches/patch-af
	frida-libffi/patches/patch-ag
	frida-libffi/patches/patch-ah
	frida-libffi/patches/patch-ai
	frida-libffi/patches/patch-aj
	frida-libffi/patches/patch-configure.ac
	frida-libffi/patches/patch-fficonfig.h.in
	frida-libffi/patches/patch-src_arm_sysv.S
	frida-libffi/patches/patch-src_m88k_elfbsd.S
	frida-libffi/patches/patch-src_m88k_ffi.c
	frida-libffi/patches/patch-src_m88k_ffitarget.h
	frida-libffi/patches/patch-src_vax_elfbsd.S
	frida-libffi/patches/patch-src_vax_ffi.c
	frida-libffi/patches/patch-src_vax_ffitarget.h
	frida-libffi/patches/patch-src_x86_ffi.c
	frida-libffi/patches/patch-src_x86_win64.S

Log Message:
frida-libffi: Initial cleaning up of the package

Drop patches as they no longer apply cleanly.

Initial work towards adding subprefix installation (frida/)

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=1c0c51bbb0ed49a4a2f33748c34282ec63c1e84d

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 frida-libffi/Makefile                           |  16 +-
 frida-libffi/distinfo                           |  28 +-
 frida-libffi/patches/patch-Makefile.am          |  40 ---
 frida-libffi/patches/patch-aa                   | 173 ----------
 frida-libffi/patches/patch-ac                   |  15 -
 frida-libffi/patches/patch-ad                   |  15 -
 frida-libffi/patches/patch-ae                   |  40 ---
 frida-libffi/patches/patch-af                   |  59 ----
 frida-libffi/patches/patch-ag                   |  15 -
 frida-libffi/patches/patch-ah                   |  26 --
 frida-libffi/patches/patch-ai                   |  20 --
 frida-libffi/patches/patch-aj                   |  29 --
 frida-libffi/patches/patch-configure.ac         |  51 ---
 frida-libffi/patches/patch-fficonfig.h.in       |  14 -
 frida-libffi/patches/patch-src_arm_sysv.S       |  96 ------
 frida-libffi/patches/patch-src_m88k_elfbsd.S    | 200 ------------
 frida-libffi/patches/patch-src_m88k_ffi.c       | 405 ------------------------
 frida-libffi/patches/patch-src_m88k_ffitarget.h |  54 ----
 frida-libffi/patches/patch-src_vax_elfbsd.S     | 200 ------------
 frida-libffi/patches/patch-src_vax_ffi.c        | 281 ----------------
 frida-libffi/patches/patch-src_vax_ffitarget.h  |  54 ----
 frida-libffi/patches/patch-src_x86_ffi.c        |  15 -
 frida-libffi/patches/patch-src_x86_win64.S      |  15 -
 23 files changed, 18 insertions(+), 1843 deletions(-)

diffs:
diff --git a/frida-libffi/Makefile b/frida-libffi/Makefile
index 787da991bb..1518e4b2b3 100644
--- a/frida-libffi/Makefile
+++ b/frida-libffi/Makefile
@@ -1,8 +1,10 @@
 # $NetBSD: Makefile,v 1.23 2014/05/18 15:17:51 wiz Exp $
 
 DISTNAME=	libffi-3.0.13
+PKGNAME=	frida-${DISTNAME}
 CATEGORIES=	devel
-MASTER_SITES=	ftp://sourceware.org/pub/libffi/
+MASTER_SITES=   ${MASTER_SITE_GITHUB:=frida/}
+GITHUB_TAG=	808ca2c69269f6df3ee6d33e22515d11739ffd5c
 
 MAINTAINER=	asau%inbox.ru@localhost
 HOMEPAGE=	https://www.sourceware.org/libffi/
@@ -12,12 +14,14 @@ LICENSE=	mit
 GNU_CONFIGURE=	yes
 CONFIGURE_ARGS=	--includedir=${PREFIX}/include
 USE_LIBTOOL=	yes
-USE_TOOLS+=	pkg-config
+USE_TOOLS+=	pkg-config autoconf automake makeinfo gmake
 USE_LANGUAGES=	c c++
 INFO_FILES=	yes
 
 PKGCONFIG_OVERRIDE+=	libffi.pc.in
 
+WRKSRC=		${WRKDIR}/libffi-${GITHUB_TAG}
+
 .include "../../mk/compiler.mk"
 # The Compaq C frontend groks .s, but not .S. Assemble osf.S directly w/ as(1).
 pre-build:
@@ -50,4 +54,12 @@ USE_TOOLS+=     bash gmake
 MAKE_FLAGS+=SHELL=${TOOLS_DIR}/bin/bash
 .endif
 
+FRIDA_SUBPREFIX=	frida
+FRIDA_PREFIX=		${PREFIX}/${FRIDA_SUBPREFIX}
+
+CONFIGURE_ARGS+=	--prefix=${FRIDA_PREFIX:Q}
+
+pre-configure:
+	${RUN} cd ${WRKSRC} && autoreconf -fiv
+
 .include "../../mk/bsd.pkg.mk"
diff --git a/frida-libffi/distinfo b/frida-libffi/distinfo
index 5a66fb3a19..7ad2e1eea0 100644
--- a/frida-libffi/distinfo
+++ b/frida-libffi/distinfo
@@ -1,26 +1,6 @@
 $NetBSD: distinfo,v 1.34 2014/06/11 11:45:04 joerg Exp $
 
-SHA1 (libffi-3.0.13.tar.gz) = f5230890dc0be42fb5c58fbf793da253155de106
-RMD160 (libffi-3.0.13.tar.gz) = 03f0627c0fcc800d38636258a2fab2d6bb8b6625
-Size (libffi-3.0.13.tar.gz) = 845747 bytes
-SHA1 (patch-Makefile.am) = 01109a0d5708835162a2d007a26decac5bb0bbac
-SHA1 (patch-aa) = 79cc45c6051705bde3f3229aca4e0fa49ff149b9
-SHA1 (patch-ac) = f3c6324f4334d23e684b4eca25173a13be5d37eb
-SHA1 (patch-ad) = 8901a00abe25422e3e35f321a5fb89311185fc0b
-SHA1 (patch-ae) = 3d8cd3bcd834876f6e60ae519dca8c0b0ba0d4d1
-SHA1 (patch-af) = 2c7ca79ef980a2561333bf79a18df1ecb0bbb9f7
-SHA1 (patch-ag) = 6333317170f6e92f89db966315276dcd8e3484f2
-SHA1 (patch-ah) = e9580069ede90cd616da7bc230b28acbf5d204a6
-SHA1 (patch-ai) = f85a6cb64d4a9d7c3e56b47b7092fce10a744b5b
-SHA1 (patch-aj) = d130b2b20b94ca26c70dcc46614e36c6d0ac9153
-SHA1 (patch-configure.ac) = 080d79b5ada93c5073df7dd09c5131fcfe72ce86
-SHA1 (patch-fficonfig.h.in) = fd85fa767bc057c843ff71cc61bedfcff84def43
-SHA1 (patch-src_arm_sysv.S) = c7c8b33bb019c0f41b6866368096a7594314efea
-SHA1 (patch-src_m88k_elfbsd.S) = fae3e425dcff3e924ef195eab165f9bbc6ec4077
-SHA1 (patch-src_m88k_ffi.c) = e4b7382c3d6e253b8c1c6054150c530c21d018de
-SHA1 (patch-src_m88k_ffitarget.h) = e8479bc3aa876f5e6d52a4d578c5da88291c6646
-SHA1 (patch-src_vax_elfbsd.S) = abf284bd1db086a12608b7243344af30e4a314ca
-SHA1 (patch-src_vax_ffi.c) = f47ced03388e9744afa44d6bb5e14d5f4285cfbf
-SHA1 (patch-src_vax_ffitarget.h) = 388f3a58e37dd8af5c194b5be77a6ea6f9beef4b
-SHA1 (patch-src_x86_ffi.c) = b9ac64a53a92de663a339212e22c1286fa41c1d5
-SHA1 (patch-src_x86_win64.S) = 5b6836bae6c73743b925de4d11bc241c783bffd6
+SHA1 (libffi-3.0.13-808ca2c69269f6df3ee6d33e22515d11739ffd5c.tar.gz) = a2d3530b2146bddedc71fa414cb43410f101d6b2
+RMD160 (libffi-3.0.13-808ca2c69269f6df3ee6d33e22515d11739ffd5c.tar.gz) = 30ee4d1a863f732d21feb2a498e5d786b22e73f7
+SHA512 (libffi-3.0.13-808ca2c69269f6df3ee6d33e22515d11739ffd5c.tar.gz) = 896981a96814073c7e488926e8cd7e5fb92bb6203e9e380046dfa46b20247db95844024f3e48ebc4e325d6c15420d200055be3bc52010f490184f1c5da82d033
+Size (libffi-3.0.13-808ca2c69269f6df3ee6d33e22515d11739ffd5c.tar.gz) = 448696 bytes
diff --git a/frida-libffi/patches/patch-Makefile.am b/frida-libffi/patches/patch-Makefile.am
deleted file mode 100644
index 89521b781f..0000000000
--- a/frida-libffi/patches/patch-Makefile.am
+++ /dev/null
@@ -1,40 +0,0 @@
-$NetBSD: patch-Makefile.am,v 1.1 2013/11/03 23:51:51 jklos Exp $
-
---- Makefile.am.orig	2013-03-16 11:52:11.000000000 +0000
-+++ Makefile.am
-@@ -19,6 +19,7 @@ EXTRA_DIST = LICENSE ChangeLog.v1 Change
- 	 src/moxie/ffitarget.h src/moxie/eabi.S src/mips/ffitarget.h	\
- 	 src/m32r/ffi.c src/m32r/sysv.S src/m32r/ffitarget.h		\
- 	 src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h		\
-+	 src/m88k/ffi.c src/m88k/obsd.S src/m88k/ffitarget.h		\
- 	 src/microblaze/ffi.c src/microblaze/sysv.S			\
- 	 src/microblaze/ffitarget.h src/powerpc/ffi.c			\
- 	 src/powerpc/sysv.S src/powerpc/linux64.S			\
-@@ -38,6 +39,7 @@ EXTRA_DIST = LICENSE ChangeLog.v1 Change
- 	 src/bfin/ffitarget.h src/bfin/sysv.S src/frv/eabi.S		\
- 	 src/frv/ffitarget.h src/dlmalloc.c src/tile/ffi.c		\
- 	 src/tile/ffitarget.h src/tile/tile.S libtool-version		\
-+	 src/vax/ffi.c src/vax/ffitarget.h src/vax/elfbsd.S		\
- 	 src/xtensa/ffitarget.h src/xtensa/ffi.c src/xtensa/sysv.S	\
- 	 ChangeLog.libffi m4/libtool.m4 m4/lt~obsolete.m4		\
- 	 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4			\
-@@ -149,6 +151,9 @@ endif
- if M68K
- nodist_libffi_la_SOURCES += src/m68k/ffi.c src/m68k/sysv.S
- endif
-+if M88K
-+nodist_libffi_la_SOURCES += src/m88k/ffi.c src/m88k/obsd.S
-+endif
- if MOXIE
- nodist_libffi_la_SOURCES += src/moxie/ffi.c src/moxie/eabi.S
- endif
-@@ -212,6 +217,9 @@ endif
- if METAG
- nodist_libffi_la_SOURCES += src/metag/sysv.S src/metag/ffi.c
- endif
-+if VAX
-+nodist_libffi_la_SOURCES += src/vax/elfbsd.S src/vax/ffi.c
-+endif
- 
- libffi_convenience_la_SOURCES = $(libffi_la_SOURCES)
- nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES)
diff --git a/frida-libffi/patches/patch-aa b/frida-libffi/patches/patch-aa
deleted file mode 100644
index 5ea53e4404..0000000000
--- a/frida-libffi/patches/patch-aa
+++ /dev/null
@@ -1,173 +0,0 @@
-$NetBSD: patch-aa,v 1.20 2014/06/01 03:53:03 ryoon Exp $
-
-* unwind: from https://github.com/atgreen/libffi/commit/76d19d004e36e99d261ee78261e2f52cea5e4ab1#diff-e2d5a00791bce9a01f99bc6fd613a39d
-  Fix build under OpenBSD 5.5
-
---- configure.orig	2013-03-17 22:36:19.000000000 +0000
-+++ configure
-@@ -651,6 +651,8 @@ XTENSA_FALSE
- XTENSA_TRUE
- TILE_FALSE
- TILE_TRUE
-+VAX_FALSE
-+VAX_TRUE
- PA64_HPUX_FALSE
- PA64_HPUX_TRUE
- PA_HPUX_FALSE
-@@ -13331,7 +13333,7 @@ case "$host" in
- 	TARGET=FRV; TARGETDIR=frv
- 	;;
- 
--  hppa*-*-linux* | parisc*-*-linux* | hppa*-*-openbsd*)
-+  hppa*-*-linux* | hppa*-*-netbsd* | parisc*-*-linux* | hppa*-*-openbsd*)
- 	TARGET=PA_LINUX; TARGETDIR=pa
- 	;;
-   hppa*64-*-hpux*)
-@@ -13425,10 +13427,10 @@ case "$host" in
- 	TARGET=METAG; TARGETDIR=metag
- 	;;
- 
--  mips-sgi-irix5.* | mips-sgi-irix6.* | mips*-*-rtems*)
-+  mips*-sgi-irix5.* | mips*-sgi-irix6.* | mips*-*-rtems*)
- 	TARGET=MIPS; TARGETDIR=mips
- 	;;
--  mips*-*-linux* | mips*-*-openbsd*)
-+  mips*-*-linux* | mips*-*-netbsd* | mips*-*-openbsd*)
- 	# Support 128-bit long double for NewABI.
- 	HAVE_LONG_DOUBLE='defined(__mips64)'
- 	TARGET=MIPS; TARGETDIR=mips
-@@ -13449,7 +13451,7 @@ case "$host" in
-   powerpc-*-aix* | rs6000-*-aix*)
- 	TARGET=POWERPC_AIX; TARGETDIR=powerpc
- 	;;
--  powerpc-*-freebsd* | powerpc-*-openbsd*)
-+  powerpc-*-freebsd* | powerpc-*-netbsd* | powerpc-*-openbsd*)
- 	TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
- 	;;
-   powerpc64-*-freebsd*)
-@@ -13463,7 +13465,7 @@ case "$host" in
- 	TARGET=S390; TARGETDIR=s390
- 	;;
- 
--  sh-*-* | sh[34]*-*-*)
-+  sh-*-* | shle-*-* | sh[34]*-*-*)
- 	TARGET=SH; TARGETDIR=sh
- 	;;
-   sh64-*-* | sh5*-*-*)
-@@ -13478,6 +13480,10 @@ case "$host" in
-         TARGET=TILE; TARGETDIR=tile
-         ;;
- 
-+  vax-*-*)
-+	TARGET=VAX; TARGETDIR=vax
-+	;;
-+
-   xtensa*-*)
- 	TARGET=XTENSA; TARGETDIR=xtensa
- 	;;
-@@ -13747,6 +13753,14 @@ else
-   TILE_FALSE=
- fi
- 
-+ if test x$TARGET = xVAX; then
-+  VAX_TRUE=
-+  VAX_FALSE='#'
-+else
-+  VAX_TRUE='#'
-+  VAX_FALSE=
-+fi
-+
-  if test x$TARGET = xXTENSA; then
-   XTENSA_TRUE=
-   XTENSA_FALSE='#'
-@@ -14661,7 +14675,7 @@ case "$target" in
- $as_echo "#define FFI_EXEC_TRAMPOLINE_TABLE 1" >>confdefs.h
- 
-      ;;
--     *-apple-darwin1* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris*)
-+     *-apple-darwin1* | *-*-freebsd* | *-*-kfreebsd* | *-*-netbsd* | *-*-openbsd* | *-pc-solaris*)
- 
- $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h
- 
-@@ -14678,16 +14692,32 @@ fi
- 
- 
- if test x$TARGET = xX86_64; then
--    { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports unwind section type" >&5
--$as_echo_n "checking assembler supports unwind section type... " >&6; }
-+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking toolchain supports unwind section type" >&5
-+$as_echo_n "checking toolchain supports unwind section type... " >&6; }
- if ${libffi_cv_as_x86_64_unwind_section_type+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
- 
--	libffi_cv_as_x86_64_unwind_section_type=yes
--	echo '.section .eh_frame,"a",@unwind' > conftest.s
--	if $CC $CFLAGS -c conftest.s 2>&1 | grep -i warning > /dev/null; then
--	    libffi_cv_as_x86_64_unwind_section_type=no
-+        cat  > conftest1.s << EOF
-+.text
-+.globl foo
-+foo:
-+jmp bar
-+.section .eh_frame,"a",@unwind
-+bar:
-+EOF
-+
-+        cat > conftest2.c  << EOF
-+extern void foo();
-+int main(){foo();}
-+EOF
-+
-+	libffi_cv_as_x86_64_unwind_section_type=no
-+	# we ensure that we can compile _and_ link an assembly file containing an @unwind section
-+	# since the compiler can support it and not the linker (ie old binutils)
-+	if $CC -Wa,--fatal-warnings $CFLAGS -c conftest1.s > /dev/null 2>&1 && \
-+           $CC conftest2.c conftest1.o > /dev/null 2>&1 ; then
-+	    libffi_cv_as_x86_64_unwind_section_type=yes
- 	fi
- 
- fi
-@@ -14840,11 +14870,6 @@ if test "x$GCC" = "xyes"; then
-     toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
-     toolexeclibdir='$(libdir)'
-   fi
--  multi_os_directory=`$CC -print-multi-os-directory`
--  case $multi_os_directory in
--    .) ;; # Avoid trailing /.
--    ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
--  esac
- 
- else
-   toolexeclibdir='$(libdir)'
-@@ -15135,6 +15160,10 @@ if test -z "${TILE_TRUE}" && test -z "${
-   as_fn_error $? "conditional \"TILE\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
-+if test -z "${VAX_TRUE}" && test -z "${VAX_FALSE}"; then
-+  as_fn_error $? "conditional \"VAX\" was never defined.
-+Usually this means the macro was only invoked conditionally." "$LINENO" 5
-+fi
- if test -z "${XTENSA_TRUE}" && test -z "${XTENSA_FALSE}"; then
-   as_fn_error $? "conditional \"XTENSA\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
-@@ -16734,13 +16763,13 @@ s/ [a-zA-Z0-9-]*-all [a-zA-Z0-9-]*-all-a
- /-all-all/d
- a\\
- 	@ HOST="\$(HOST)\" \\\\\\
--	; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\
--	; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
--	; use=$x basename "\$\@" -all $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\
--	; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test "\$\$n" -eq "0" ; then : \\\\\\
--	; BUILD=$x grep "^####.*|" Makefile |tail -1| sed -e 's/.*|//' $x ; fi \\\\\\
-+	; test ".\$\$HOST" = "." && HOST="$x sh $ax_enable_builddir_auxdir/config.guess $x" \\\\\\
-+	; BUILD="$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x" \\\\\\
-+	; use="$x basename "\$\@" -all $x"; n="$x echo \$\$BUILD | wc -w $x" \\\\\\
-+	; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test \$\$n = "0" ; then : \\\\\\
-+	; BUILD="$x grep "^####.*|" Makefile |tail -1| sed -e 's/.*|//' $x" ; fi \\\\\\
- 	; test ".\$\$BUILD" = "." && BUILD="." \\\\\\
--	; test "\$\$use" = "\$\@" && BUILD=$x echo "\$\$BUILD" | tail -1 $x \\\\\\
-+	; test "\$\$use" = "\$\@" && BUILD="$x echo "\$\$BUILD" | tail -1 $x" \\\\\\
- 	; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
- 	; (cd "\$\$i" && test ! -f configure && \$(MAKE) \$\$use) || exit; done
- /dist-all *:/a\\
diff --git a/frida-libffi/patches/patch-ac b/frida-libffi/patches/patch-ac
deleted file mode 100644
index 5fd6bf8d70..0000000000
--- a/frida-libffi/patches/patch-ac
+++ /dev/null
@@ -1,15 +0,0 @@
-$NetBSD: patch-ac,v 1.2 2010/01/16 16:28:58 asau Exp $
-
-Install header files in backwards compatible way.
-
---- include/Makefile.in.orig	2009-12-31 15:41:01.000000000 +0300
-+++ include/Makefile.in	2010-01-12 12:43:57.000000000 +0300
-@@ -203,7 +203,7 @@
- AUTOMAKE_OPTIONS = foreign
- DISTCLEANFILES = ffitarget.h
- EXTRA_DIST = ffi.h.in ffi_common.h
--includesdir = $(libdir)/@PACKAGE_NAME@-@PACKAGE_VERSION@/include
-+includesdir = $(includedir)
- nodist_includes_HEADERS = ffi.h ffitarget.h
- all: all-am
- 
diff --git a/frida-libffi/patches/patch-ad b/frida-libffi/patches/patch-ad
deleted file mode 100644
index 514eff5d80..0000000000
--- a/frida-libffi/patches/patch-ad
+++ /dev/null
@@ -1,15 +0,0 @@
-$NetBSD: patch-ad,v 1.1 2008/10/11 22:33:56 dholland Exp $
-
-Install header files in backwards compatible way.
-
---- libffi.pc.in.orig	2008-10-09 12:38:02.000000000 +0400
-+++ libffi.pc.in	2008-10-09 12:41:54.000000000 +0400
-@@ -1,7 +1,7 @@
- prefix=@prefix@
- exec_prefix=@exec_prefix@
- libdir=@libdir@
--includedir=${libdir}/@PACKAGE_NAME@-@PACKAGE_VERSION@/include
-+includedir=@includedir@
- 
- Name: @PACKAGE_NAME@
- Description: Library supporting Foreign Function Interfaces
diff --git a/frida-libffi/patches/patch-ae b/frida-libffi/patches/patch-ae
deleted file mode 100644
index 8ca294a9df..0000000000
--- a/frida-libffi/patches/patch-ae
+++ /dev/null
@@ -1,40 +0,0 @@
-$NetBSD: patch-ae,v 1.6 2014/02/11 07:21:28 dholland Exp $
-
-Make a minimal adjustment to support the various NetBSD mips ports.
-
---- src/mips/ffitarget.h.orig	2012-04-12 02:46:06.000000000 +0000
-+++ src/mips/ffitarget.h
-@@ -32,7 +32,7 @@
- #error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
- #endif
- 
--#ifdef linux
-+#if defined(linux)
- # include <asm/sgidefs.h>
- #elif defined(__rtems__)
- /*
-@@ -41,8 +41,10 @@
- #define _MIPS_SIM_ABI32		1
- #define _MIPS_SIM_NABI32	2
- #define _MIPS_SIM_ABI64		3
--#elif !defined(__OpenBSD__)
-+#elif defined(__sgi)
- # include <sgidefs.h>
-+#else
-+# include <sys/cdefs.h>
- #endif
- 
- #  ifndef _ABIN32
-@@ -55,6 +57,12 @@
- #    define _ABIO32 _MIPS_SIM_ABI32
- #  endif
- 
-+#ifdef __NetBSD__
-+/* Let's cheat a bit... */   
-+#  define _ABIO32 1     
-+#  define _MIPS_SIM _ABIO32
-+#endif
-+
- #if !defined(_MIPS_SIM)
- # error -- something is very wrong --
- #else
diff --git a/frida-libffi/patches/patch-af b/frida-libffi/patches/patch-af
deleted file mode 100644
index 3b6ed649b1..0000000000
--- a/frida-libffi/patches/patch-af
+++ /dev/null
@@ -1,59 +0,0 @@
-$NetBSD: patch-af,v 1.3 2012/09/14 23:45:27 asau Exp $
-
-Fixes to support the various NetBSD mips ports.
-
---- src/mips/ffi.c.orig	2011-08-23 18:28:08.000000000 +0400
-+++ src/mips/ffi.c	2012-02-19 20:04:17.000000000 +0400
-@@ -33,12 +33,17 @@
- 
- #ifdef __GNUC__
- #  if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3))
--#    define USE__BUILTIN___CLEAR_CACHE 1
-+#    if !defined(__NetBSD__)
-+#      define USE__BUILTIN___CLEAR_CACHE 1
-+#    endif
- #  endif
- #endif
- 
- #ifndef USE__BUILTIN___CLEAR_CACHE
--#  if defined(__OpenBSD__)
-+#  if defined(__NetBSD__)
-+#    include <mips/cachectl.h>
-+#    define cacheflush _cacheflush
-+#  elif defined(__OpenBSD__)
- #    include <mips64/sysarch.h>
- #  else
- #    include <sys/cachectl.h>
-@@ -465,6 +470,7 @@
-               ((cif->arg_types)[index]->type << (arg_reg * FFI_FLAG_BITS));
- 	    arg_reg++;
- 	    break;
-+#ifdef __mips64
-           case FFI_TYPE_LONGDOUBLE:
-             /* Align it.  */
-             arg_reg = ALIGN(arg_reg, 2);
-@@ -483,7 +489,7 @@
- 		arg_reg++;
- 	      }
-             break;
--
-+#endif
- 	  case FFI_TYPE_STRUCT:
-             loc = arg_reg * FFI_SIZEOF_ARG;
- 	    cif->flags += calc_n32_struct_flags(soft_float,
-@@ -545,6 +551,7 @@
- 	  cif->flags += cif->rtype->type << (FFI_FLAG_BITS * 8);
- 	break;
- 
-+#ifdef __mips64
-       case FFI_TYPE_LONGDOUBLE:
- 	/* Long double is returned as if it were a struct containing
- 	   two doubles.  */
-@@ -561,6 +568,7 @@
- 					      << (4 + (FFI_FLAG_BITS * 8));
- 	  }
- 	break;
-+#endif
-       default:
- 	cif->flags += FFI_TYPE_INT << (FFI_FLAG_BITS * 8);
- 	break;
diff --git a/frida-libffi/patches/patch-ag b/frida-libffi/patches/patch-ag
deleted file mode 100644
index 6033bfbc3f..0000000000
--- a/frida-libffi/patches/patch-ag
+++ /dev/null
@@ -1,15 +0,0 @@
-$NetBSD: patch-ag,v 1.1 2009/05/26 12:27:12 he Exp $
-
-The %Lf printf format expects "long double", so cast args accordingly.
-
---- testsuite/libffi.call/float2.c.orig	2008-01-29 16:15:20.000000000 +0100
-+++ testsuite/libffi.call/float2.c
-@@ -44,7 +44,7 @@ int main (void)
-   /* This is ifdef'd out for now. long double support under SunOS/gcc
-      is pretty much non-existent.  You'll get the odd bus error in library
-      routines like printf().  */
--  printf ("%Lf, %Lf, %Lf, %Lf\n", ld, ldblit(f), ld - ldblit(f), LDBL_EPSILON);
-+  printf ("%Lf, %Lf, %Lf, %Lf\n", (long double)ld, (long double)ldblit(f), (long double)(ld - ldblit(f)), (long double)LDBL_EPSILON);
- #endif
- 
-   /* These are not always the same!! Check for a reasonable delta */
diff --git a/frida-libffi/patches/patch-ah b/frida-libffi/patches/patch-ah
deleted file mode 100644
index fd636e3ab5..0000000000
--- a/frida-libffi/patches/patch-ah
+++ /dev/null
@@ -1,26 +0,0 @@
-$NetBSD: patch-ah,v 1.1 2009/09/20 13:10:30 tnn Exp $
-
---- src/alpha/ffi.c.orig	2008-02-26 18:34:36.000000000 +0100
-+++ src/alpha/ffi.c
-@@ -27,6 +27,9 @@
- #include <ffi.h>
- #include <ffi_common.h>
- #include <stdlib.h>
-+#ifndef __GNUC__
-+#include <c_asm.h>
-+#endif
- 
- /* Force FFI_TYPE_LONGDOUBLE to be different than FFI_TYPE_DOUBLE;
-    all further uses in this file will refer to the 128-bit type.  */
-@@ -195,7 +198,11 @@ ffi_prep_closure_loc (ffi_closure* closu
-      instead, since both Compaq as and gas can handle it.
- 
-      0x86 is PAL_imb in Tru64 UNIX <alpha/pal.h>.  */
-+#ifdef __GNUC__
-   asm volatile ("call_pal 0x86" : : : "memory");
-+#else /* Compaq C compiler */
-+  asm ("call_pal 0x86");
-+#endif
- 
-   return FFI_OK;
- }
diff --git a/frida-libffi/patches/patch-ai b/frida-libffi/patches/patch-ai
deleted file mode 100644
index a0ec8299a9..0000000000
--- a/frida-libffi/patches/patch-ai
+++ /dev/null
@@ -1,20 +0,0 @@
-$NetBSD: patch-ai,v 1.2 2010/01/16 16:28:58 asau Exp $
-
---- include/ffi_common.h.orig	2009-12-29 18:22:26.000000000 +0300
-+++ include/ffi_common.h	2010-01-12 12:47:54.000000000 +0300
-@@ -99,6 +99,15 @@
- typedef uint64_t UINT64;
- typedef int64_t  SINT64;
- # endif
-+#elif defined(__digital__) && !defined(__GNUC__) /* XXX tnn: check sunpro */
-+typedef unsigned int UINT8;
-+typedef signed int   SINT8;
-+typedef unsigned int UINT16;
-+typedef signed int   SINT16;
-+typedef unsigned int UINT32;
-+typedef signed int   SINT32;
-+typedef unsigned int UINT64;
-+typedef signed int   SINT64;
- #else
- typedef unsigned int UINT8  __attribute__((__mode__(__QI__)));
- typedef signed int   SINT8  __attribute__((__mode__(__QI__)));
diff --git a/frida-libffi/patches/patch-aj b/frida-libffi/patches/patch-aj
deleted file mode 100644
index b9a2a25101..0000000000
--- a/frida-libffi/patches/patch-aj
+++ /dev/null
@@ -1,29 +0,0 @@
-$NetBSD: patch-aj,v 1.4 2012/09/14 23:45:27 asau Exp $
-
---- src/m68k/ffi.c.orig	2012-04-12 02:46:06.000000000 +0000
-+++ src/m68k/ffi.c
-@@ -9,8 +9,11 @@
- 
- #include <stdlib.h>
- #include <unistd.h>
--#ifdef __rtems__
-+#if defined(__rtems__)
- void rtems_cache_flush_multiple_data_lines( const void *, size_t );
-+#elif defined(__NetBSD__)
-+#include <sys/types.h>
-+#include <m68k/sync_icache.h>
- #else
- #include <sys/syscall.h>
- #ifdef __MINT__
-@@ -335,8 +338,10 @@ ffi_prep_closure_loc (ffi_closure* closu
-   else
-     *(void **)(closure->tramp + 8) = ffi_closure_SYSV;
- 
--#ifdef __rtems__
-+#if defined(__rtems__)
-   rtems_cache_flush_multiple_data_lines( codeloc, FFI_TRAMPOLINE_SIZE );
-+#elif defined(__NetBSD__)
-+  m68k_sync_icache(codeloc, FFI_TRAMPOLINE_SIZE);
- #elif defined(__MINT__)
-   Ssystem(S_FLUSHCACHE, codeloc, FFI_TRAMPOLINE_SIZE);
- #else
diff --git a/frida-libffi/patches/patch-configure.ac b/frida-libffi/patches/patch-configure.ac
deleted file mode 100644
index aa6fe6816d..0000000000
--- a/frida-libffi/patches/patch-configure.ac
+++ /dev/null
@@ -1,51 +0,0 @@
-$NetBSD: patch-configure.ac,v 1.2 2014/02/11 07:21:28 dholland Exp $
-
---- configure.ac.orig	2014-02-11 07:13:01.000000000 +0000
-+++ configure.ac
-@@ -191,6 +191,10 @@ case "$host" in
- 	TARGET=M68K; TARGETDIR=m68k
- 	;;
- 
-+  m88k-*-*)
-+	TARGET=M88K; TARGETDIR=m88k
-+	;;
-+
-   microblaze*-*-*)
- 	TARGET=MICROBLAZE; TARGETDIR=microblaze
- 	;;
-@@ -203,7 +207,7 @@ case "$host" in
- 	TARGET=METAG; TARGETDIR=metag
- 	;;
- 
--  mips-sgi-irix5.* | mips-sgi-irix6.* | mips*-*-rtems*)
-+  mips*-sgi-irix5.* | mips*-sgi-irix6.* | mips*-*-rtems*)
- 	TARGET=MIPS; TARGETDIR=mips
- 	;;
-   mips*-*-linux* | mips*-*-openbsd*)
-@@ -256,6 +260,10 @@ case "$host" in
-         TARGET=TILE; TARGETDIR=tile
-         ;;
- 
-+  vax-*-*)
-+	TARGET=VAX; TARGETDIR=vax
-+	;;
-+
-   xtensa*-*)
- 	TARGET=XTENSA; TARGETDIR=xtensa
- 	;;
-@@ -281,6 +289,7 @@ AM_CONDITIONAL(ALPHA, test x$TARGET = xA
- AM_CONDITIONAL(IA64, test x$TARGET = xIA64)
- AM_CONDITIONAL(M32R, test x$TARGET = xM32R)
- AM_CONDITIONAL(M68K, test x$TARGET = xM68K)
-+AM_CONDITIONAL(M88K, test x$TARGET = xM88K)
- AM_CONDITIONAL(MICROBLAZE, test x$TARGET = xMICROBLAZE)
- AM_CONDITIONAL(METAG, test x$TARGET = xMETAG)
- AM_CONDITIONAL(MOXIE, test x$TARGET = xMOXIE)
-@@ -301,6 +310,7 @@ AM_CONDITIONAL(PA_LINUX, test x$TARGET =
- AM_CONDITIONAL(PA_HPUX, test x$TARGET = xPA_HPUX)
- AM_CONDITIONAL(PA64_HPUX, test x$TARGET = xPA64_HPUX)
- AM_CONDITIONAL(TILE, test x$TARGET = xTILE)
-+AM_CONDITIONAL(VAX, test x$TARGET = xVAX)
- AM_CONDITIONAL(XTENSA, test x$TARGET = xXTENSA)
- 
- AC_HEADER_STDC
diff --git a/frida-libffi/patches/patch-fficonfig.h.in b/frida-libffi/patches/patch-fficonfig.h.in
deleted file mode 100644
index 2285977d79..0000000000
--- a/frida-libffi/patches/patch-fficonfig.h.in
+++ /dev/null
@@ -1,14 +0,0 @@
-$NetBSD: patch-fficonfig.h.in,v 1.1 2012/05/30 09:13:16 jperkin Exp $
-
---- fficonfig.h.in.orig	Wed May 30 08:53:33 2012
-+++ fficonfig.h.in	Wed May 30 08:54:03 2012
-@@ -46,6 +46,9 @@
- /* Define if your assembler supports PC relative relocs. */
- #undef HAVE_AS_X86_PCREL
- 
-+/* Define if your assembler supports unwind section type. */
-+#undef HAVE_AS_X86_64_UNWIND_SECTION_TYPE
-+
- /* Define to 1 if you have the <dlfcn.h> header file. */
- #undef HAVE_DLFCN_H
- 
diff --git a/frida-libffi/patches/patch-src_arm_sysv.S b/frida-libffi/patches/patch-src_arm_sysv.S
deleted file mode 100644
index fd116b9807..0000000000
--- a/frida-libffi/patches/patch-src_arm_sysv.S
+++ /dev/null
@@ -1,96 +0,0 @@
-$NetBSD: patch-src_arm_sysv.S,v 1.4 2014/06/11 11:45:04 joerg Exp $
-
---- src/arm/sysv.S.orig	2013-03-16 11:19:39.000000000 +0000
-+++ src/arm/sysv.S
-@@ -25,6 +25,8 @@
-    DEALINGS IN THE SOFTWARE.
-    ----------------------------------------------------------------------- */
- 
-+.syntax unified
-+
- #define LIBFFI_ASM	
- #include <fficonfig.h>
- #include <ffi.h>
-@@ -103,7 +105,7 @@
- #endif
- 
- /* Conditionally compile unwinder directives.  */
--#ifdef __ARM_EABI__
-+#if defined(__ARM_EABI__) && !defined(__ARM_DWARF_EH__)
- #define UNWIND
- #else
- #define UNWIND @
-@@ -125,6 +127,7 @@
- 	nop
- 	.arm
- 	UNWIND .fnstart
-+	.cfi_startproc
- /* A hook to tell gdb that we've switched to ARM mode.  Also used to call
-    directly from other local arm routines.  */
- #ifdef __APPLE__
-@@ -144,6 +147,7 @@ _L__\name:
- 	ENTRY(\name)
- #endif
- 	UNWIND .fnstart
-+        .cfi_startproc
- .endm
- #endif
- 
-@@ -175,6 +179,7 @@ ARM_FUNC_START ffi_call_SYSV
- 	@ Save registers
-         stmfd	sp!, {r0-r3, fp, lr}
- 	UNWIND .save	{r0-r3, fp, lr}
-+
- 	mov	fp, sp
- 
- 	UNWIND .setfp	fp, sp
-@@ -228,7 +233,7 @@ ARM_FUNC_START ffi_call_SYSV
- #if defined(__SOFTFP__) || defined(__ARM_EABI__)
- 	cmpne	r3, #FFI_TYPE_DOUBLE
- #endif
--	stmeqia	r2, {r0, r1}
-+	stmiaeq	r2, {r0, r1}
- 
- #if !defined(__SOFTFP__) && !defined(__ARM_EABI__)
- 	beq	LSYM(Lepilogue)
-@@ -253,6 +258,7 @@ LSYM(Lepilogue):
- 
- .ffi_call_SYSV_end:
- 	UNWIND .fnend
-+	.cfi_endproc
- #ifdef __ELF__
-         .size    CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV)
- #endif
-@@ -328,6 +334,7 @@ ARM_FUNC_START ffi_closure_SYSV
- 
- .ffi_closure_SYSV_end:
- 	UNWIND .fnend
-+	.cfi_endproc
- #ifdef __ELF__
-         .size    CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV)
- #endif
-@@ -410,7 +417,7 @@ LSYM(Lbase_args):
- 	beq	LSYM(Lepilogue_vfp)
- 
- 	cmp	r3, #FFI_TYPE_SINT64
--	stmeqia	r2, {r0, r1}
-+	stmiaeq	r2, {r0, r1}
- 	beq	LSYM(Lepilogue_vfp)
- 
- 	cmp	r3, #FFI_TYPE_FLOAT
-@@ -430,6 +437,7 @@ LSYM(Lepilogue_vfp):
- 
- .ffi_call_VFP_end:
- 	UNWIND .fnend
-+	.cfi_endproc
-         .size    CNAME(ffi_call_VFP),.ffi_call_VFP_end-CNAME(ffi_call_VFP)
- 
- 
-@@ -492,6 +500,7 @@ ARM_FUNC_START ffi_closure_VFP
- 
- .ffi_closure_VFP_end:
- 	UNWIND .fnend
-+	.cfi_endproc
-         .size    CNAME(ffi_closure_VFP),.ffi_closure_VFP_end-CNAME(ffi_closure_VFP)
- #endif
- 
diff --git a/frida-libffi/patches/patch-src_m88k_elfbsd.S b/frida-libffi/patches/patch-src_m88k_elfbsd.S
deleted file mode 100644
index 644ce2c221..0000000000
--- a/frida-libffi/patches/patch-src_m88k_elfbsd.S
+++ /dev/null
@@ -1,200 +0,0 @@
-$NetBSD: patch-src_m88k_elfbsd.S,v 1.1 2013/11/03 23:51:51 jklos Exp $
-
---- src/m88k/elfbsd.S.orig	2013-11-03 22:57:57.000000000 +0000
-+++ src/m88k/elfbsd.S
-@@ -0,0 +1,195 @@
-+/*
-+ * Copyright (c) 2013 Miodrag Vallat.  <miod%openbsd.org@localhost>
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining
-+ * a copy of this software and associated documentation files (the
-+ * ``Software''), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, sublicense, and/or sell copies of the Software, and to
-+ * permit persons to whom the Software is furnished to do so, subject to
-+ * the following conditions:
-+ * 
-+ * The above copyright notice and this permission notice shall be included
-+ * in all copies or substantial portions of the Software.
-+ * 
-+ * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/*
-+ * vax Foreign Function Interface
-+ */
-+
-+#define LIBFFI_ASM	
-+#include <fficonfig.h>
-+#include <ffi.h>
-+
-+	.text
-+
-+/*
-+ * void *					%r0
-+ * ffi_call_elfbsd(extended_cif *ecif,		4(%ap)
-+ *		   unsigned bytes,		8(%ap)
-+ *		   unsigned flags,		12(%ap)
-+ *		   void *rvalue,		16(%ap)
-+ *		   void (*fn)());		20(%ap)
-+ */
-+	.globl	ffi_call_elfbsd
-+	.type	ffi_call_elfbsd,@function
-+	.align	2
-+ffi_call_elfbsd:
-+	.word	0x00c		# save R2 and R3
-+
-+	# Allocate stack space for the args
-+	subl2	8(%ap), %sp
-+
-+	# Call ffi_prep_args
-+	pushl	%sp
-+	pushl	4(%ap)
-+	calls	$2, ffi_prep_args
-+
-+	# Get function pointer
-+	movl	20(%ap), %r1
-+
-+	# Build a CALLS frame
-+	ashl	$-2, 8(%ap), %r0
-+	pushl	%r0		# argument stack usage
-+	movl	%sp, %r0	# future %ap
-+	# saved registers
-+	bbc	$11, 0(%r1), 1f
-+	pushl	%r11
-+1:	bbc	$10, 0(%r1), 1f
-+	pushl	%r10
-+1:	bbc	$9, 0(%r1), 1f
-+	pushl	%r9
-+1:	bbc	$8, 0(%r1), 1f
-+	pushl	%r8
-+1:	bbc	$7, 0(%r1), 1f
-+	pushl	%r7
-+1:	bbc	$6, 0(%r1), 1f
-+	pushl	%r6
-+1:	bbc	$5, 0(%r1), 1f
-+	pushl	%r5
-+1:	bbc	$4, 0(%r1), 1f
-+	pushl	%r4
-+1:	bbc	$3, 0(%r1), 1f
-+	pushl	%r3
-+1:	bbc	$2, 0(%r1), 1f
-+	pushl	%r2
-+1:	
-+	pushal	9f
-+	pushl	%fp
-+	pushl	%ap
-+	movl	16(%ap), %r3	# struct return address, if needed
-+	movl	%r0, %ap
-+	movzwl	4(%fp), %r0	# previous PSW, without the saved registers mask
-+	bisl2	$0x20000000, %r0 # calls frame
-+	movzwl	0(%r1), %r2
-+	bicw2	$0xf003, %r2	# only keep R11-R2
-+	ashl	$16, %r2, %r2
-+	bisl2	%r2, %r0	# saved register mask of the called function
-+	pushl	%r0	
-+	pushl	$0
-+	movl	%sp, %fp
-+
-+	# Invoke the function
-+	pushal	2(%r1)		# skip procedure entry mask
-+	movl	%r3, %r1
-+	bicpsw	$0x000f
-+	rsb
-+
-+9:
-+	# Copy return value if necessary
-+	tstl	16(%ap)
-+	jeql	9f
-+	movl	16(%ap), %r2
-+
-+	bbc	$0, 12(%ap), 1f	# CIF_FLAGS_CHAR
-+	movb	%r0, 0(%r2)
-+	brb	9f
-+1:
-+	bbc	$1, 12(%ap), 1f	# CIF_FLAGS_SHORT
-+	movw	%r0, 0(%r2)
-+	brb	9f
-+1:
-+	bbc	$2, 12(%ap), 1f	# CIF_FLAGS_INT
-+	movl	%r0, 0(%r2)
-+	brb	9f
-+1:
-+	bbc	$3, 12(%ap), 1f	# CIF_FLAGS_DINT
-+	movq	%r0, 0(%r2)
-+	brb	9f
-+1:
-+	movl	%r1, %r0	# might have been a struct
-+	#brb	9f
-+
-+9:
-+	ret
-+
-+/*
-+ * ffi_closure_elfbsd(void);
-+ * invoked with	%r0: ffi_closure *closure
-+ */
-+	.globl	ffi_closure_elfbsd
-+	.type	ffi_closure_elfbsd, @function
-+	.align	2
-+ffi_closure_elfbsd:
-+	.word	0
-+
-+	# Allocate room on stack for return value
-+	subl2	$8, %sp
-+
-+	# Invoke the closure function
-+	pushal	4(%ap)		# calling stack
-+	pushal	4(%sp)		# return value
-+	pushl	%r0		# closure
-+	calls	$3, ffi_closure_elfbsd_inner
-+
-+	# Copy return value if necessary
-+	bitb	$1, %r0		# CIF_FLAGS_CHAR
-+	beql	1f
-+	movb	0(%sp), %r0
-+	brb	9f
-+1:
-+	bitb	$2, %r0		# CIF_FLAGS_SHORT
-+	beql	1f
-+	movw	0(%sp), %r0
-+	brb	9f
-+1:
-+	bitb	$4, %r0		# CIF_FLAGS_INT
-+	beql	1f
-+	movl	0(%sp), %r0
-+	brb	9f
-+1:
-+	bitb	$8, %r0		# CIF_FLAGS_DINT
-+	beql	1f
-+	movq	0(%sp), %r0
-+	#brb	9f
-+1:
-+
-+9:
-+	ret
-+
-+/*
-+ * ffi_closure_struct_elfbsd(void);
-+ * invoked with	%r0: ffi_closure *closure
-+ *		%r1: struct return address
-+ */
-+	.globl	ffi_closure_struct_elfbsd
-+	.type	ffi_closure_struct_elfbsd, @function
-+	.align	2
-+ffi_closure_struct_elfbsd:
-+	.word	0
-+
-+	# Invoke the closure function
-+	pushal	4(%ap)		# calling stack
-+	pushl	%r1		# return value
-+	pushl	%r0		# closure
-+	calls	$3, ffi_closure_elfbsd_inner
-+
-+	ret
diff --git a/frida-libffi/patches/patch-src_m88k_ffi.c b/frida-libffi/patches/patch-src_m88k_ffi.c
deleted file mode 100644
index 3eb5cdce8b..0000000000
--- a/frida-libffi/patches/patch-src_m88k_ffi.c
+++ /dev/null
@@ -1,405 +0,0 @@
-$NetBSD: patch-src_m88k_ffi.c,v 1.1 2013/11/03 23:51:51 jklos Exp $
-
---- src/m88k/ffi.c.orig	2013-11-03 22:59:04.000000000 +0000
-+++ src/m88k/ffi.c
-@@ -0,0 +1,400 @@
-+/*
-+ * Copyright (c) 2013 Miodrag Vallat.  <miod%openbsd.org@localhost>
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining
-+ * a copy of this software and associated documentation files (the
-+ * ``Software''), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, sublicense, and/or sell copies of the Software, and to
-+ * permit persons to whom the Software is furnished to do so, subject to
-+ * the following conditions:
-+ * 
-+ * The above copyright notice and this permission notice shall be included
-+ * in all copies or substantial portions of the Software.
-+ * 
-+ * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/*
-+ * m88k Foreign Function Interface
-+ *
-+ * This file attempts to provide all the FFI entry points which can reliably
-+ * be implemented in C.
-+ *
-+ * Only OpenBSD/m88k is currently supported; other platforms (such as
-+ * Motorola's SysV/m88k) could be supported with the following tweaks:
-+ *
-+ * - non-OpenBSD systems use an `outgoing parameter area' as part of the
-+ *   88BCS calling convention, which is not supported under OpenBSD from
-+ *   release 3.6 onwards.  Supporting it should be as easy as taking it
-+ *   into account when adjusting the stack, in the assembly code.
-+ *
-+ * - the logic deciding whether a function argument gets passed through
-+ *   registers, or on the stack, has changed several times in OpenBSD in
-+ *   edge cases (especially for structs larger than 32 bytes being passed
-+ *   by value). The code below attemps to match the logic used by the
-+ *   system compiler of OpenBSD 5.3, i.e. gcc 3.3.6 with many m88k backend
-+ *   fixes.
-+ */
-+
-+#include <ffi.h>
-+#include <ffi_common.h>
-+
-+#include <stdlib.h>
-+#include <unistd.h>
-+
-+void ffi_call_OBSD (unsigned int, extended_cif *, unsigned int, void *,
-+		    void (*fn) ());
-+void *ffi_prep_args (void *, extended_cif *);
-+void ffi_closure_OBSD (ffi_closure *);
-+void ffi_closure_struct_OBSD (ffi_closure *);
-+unsigned int ffi_closure_OBSD_inner (ffi_closure *, void *, unsigned int *,
-+				     char *);
-+void ffi_cacheflush_OBSD (unsigned int, unsigned int);
-+
-+#define CIF_FLAGS_INT		(1 << 0)
-+#define CIF_FLAGS_DINT		(1 << 1)
-+
-+/*
-+ * Foreign Function Interface API
-+ */
-+
-+/* ffi_prep_args is called by the assembly routine once stack space has
-+   been allocated for the function's arguments.  */
-+
-+void *
-+ffi_prep_args (void *stack, extended_cif *ecif)
-+{
-+  unsigned int i;
-+  void **p_argv;
-+  char *argp, *stackp;
-+  unsigned int *regp;
-+  unsigned int regused;
-+  ffi_type **p_arg;
-+  void *struct_value_ptr;
-+
-+  regp = (unsigned int *)stack;
-+  stackp = (char *)(regp + 8);
-+  regused = 0;
-+
-+  if (ecif->cif->rtype->type == FFI_TYPE_STRUCT
-+      && !ecif->cif->flags)
-+    struct_value_ptr = ecif->rvalue;
-+  else
-+    struct_value_ptr = NULL;
-+
-+  p_argv = ecif->avalue;
-+
-+  for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; i != 0; i--, p_arg++)
-+    {
-+      size_t z;
-+      unsigned short t, a;
-+
-+      z = (*p_arg)->size;
-+      t = (*p_arg)->type;
-+      a = (*p_arg)->alignment;
-+
-+      /*
-+       * Figure out whether the argument can be passed through registers
-+       * or on the stack.
-+       * The rule is that registers can only receive simple types not larger
-+       * than 64 bits, or structs the exact size of a register and aligned to
-+       * the size of a register.
-+       */
-+      if (t == FFI_TYPE_STRUCT)
-+	{
-+	  if (z == sizeof (int) && a == sizeof (int) && regused < 8)
-+	    argp = (char *)regp;
-+	  else
-+	    argp = stackp;
-+	}
-+      else
-+	{
-+	  if (z > sizeof (int) && regused < 8 - 1)
-+	    {
-+	      /* align to an even register pair */
-+	      if (regused & 1)
-+		{
-+		  regp++;
-+		  regused++;
-+		}
-+	    }
-+	  if (regused < 8)
-+	    argp = (char *)regp;
-+	  else
-+	    argp = stackp;
-+	}
-+
-+      /* Enforce proper stack alignment of 64-bit types */
-+      if (argp == stackp && a > sizeof (int))
-+	{
-+	  stackp = (char *) ALIGN(stackp, a);
-+	  argp = stackp;
-+	}
-+
-+      switch (t)
-+	{
-+	case FFI_TYPE_SINT8:
-+	  *(signed int *) argp = (signed int) *(SINT8 *) *p_argv;
-+	  break;
-+
-+	case FFI_TYPE_UINT8:
-+	  *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv;
-+	  break;
-+
-+	case FFI_TYPE_SINT16:
-+	  *(signed int *) argp = (signed int) *(SINT16 *) *p_argv;
-+	  break;
-+
-+	case FFI_TYPE_UINT16:
-+	  *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv;
-+	  break;
-+
-+	case FFI_TYPE_INT:
-+	case FFI_TYPE_FLOAT:
-+	case FFI_TYPE_UINT32:
-+	case FFI_TYPE_SINT32:
-+	case FFI_TYPE_POINTER:
-+	  *(unsigned int *) argp = *(unsigned int *) *p_argv;
-+	  break;
-+
-+	case FFI_TYPE_DOUBLE:
-+	case FFI_TYPE_UINT64:
-+	case FFI_TYPE_SINT64:
-+	case FFI_TYPE_STRUCT:
-+	  memcpy (argp, *p_argv, z);
-+	  break;
-+
-+	default:
-+	  FFI_ASSERT (0);
-+	}
-+
-+      /* Align if necessary.  */
-+      if ((sizeof (int) - 1) & z)
-+	z = ALIGN(z, sizeof (int));
-+
-+      p_argv++;
-+
-+      /* Be careful, once all registers are filled, and about to continue
-+         on stack, regp == stackp.  Therefore the check for regused as well. */
-+      if (argp == (char *)regp && regused < 8)
-+	{
-+	  regp += z / sizeof (int);
-+	  regused += z / sizeof (int);
-+	}
-+      else
-+	stackp += z;
-+    }
-+
-+  return struct_value_ptr;
-+}
-+
-+/* Perform machine dependent cif processing */
-+ffi_status
-+ffi_prep_cif_machdep (ffi_cif *cif)
-+{
-+  /* Set the return type flag */
-+  switch (cif->rtype->type)
-+    {
-+    case FFI_TYPE_VOID:
-+      cif->flags = 0;
-+      break;
-+
-+    case FFI_TYPE_STRUCT:
-+      if (cif->rtype->size == sizeof (int) &&
-+	  cif->rtype->alignment == sizeof (int))
-+	cif->flags = CIF_FLAGS_INT;
-+      else
-+	cif->flags = 0;
-+      break;
-+
-+    case FFI_TYPE_DOUBLE:
-+    case FFI_TYPE_SINT64:
-+    case FFI_TYPE_UINT64:
-+      cif->flags = CIF_FLAGS_DINT;
-+      break;
-+
-+    default:
-+      cif->flags = CIF_FLAGS_INT;
-+      break;
-+    }
-+
-+  return FFI_OK;
-+}
-+
-+void
-+ffi_call (ffi_cif *cif, void (*fn) (), void *rvalue, void **avalue)
-+{
-+  extended_cif ecif;
-+
-+  ecif.cif = cif;
-+  ecif.avalue = avalue;
-+
-+  /* If the return value is a struct and we don't have a return value
-+     address then we need to make one.  */
-+
-+  if (rvalue == NULL
-+      && cif->rtype->type == FFI_TYPE_STRUCT
-+      && (cif->rtype->size != sizeof (int)
-+	  || cif->rtype->alignment != sizeof (int)))
-+    ecif.rvalue = alloca (cif->rtype->size);
-+  else
-+    ecif.rvalue = rvalue;
-+
-+  switch (cif->abi)
-+    {
-+    case FFI_OBSD:
-+      ffi_call_OBSD (cif->bytes, &ecif, cif->flags, ecif.rvalue, fn);
-+      break;
-+
-+    default:
-+      FFI_ASSERT (0);
-+      break;
-+    }
-+}
-+
-+/*
-+ * Closure API
-+ */
-+
-+static void
-+ffi_prep_closure_args_OBSD (ffi_cif *cif, void **avalue, unsigned int *regp,
-+			    char *stackp)
-+{
-+  unsigned int i;
-+  void **p_argv;
-+  char *argp;
-+  unsigned int regused;
-+  ffi_type **p_arg;
-+
-+  regused = 0;
-+
-+  p_argv = avalue;
-+
-+  for (i = cif->nargs, p_arg = cif->arg_types; i != 0; i--, p_arg++)
-+    {
-+      size_t z;
-+      unsigned short t, a;
-+
-+      z = (*p_arg)->size;
-+      t = (*p_arg)->type;
-+      a = (*p_arg)->alignment;
-+
-+      /*
-+       * Figure out whether the argument has been passed through registers
-+       * or on the stack.
-+       * The rule is that registers can only receive simple types not larger
-+       * than 64 bits, or structs the exact size of a register and aligned to
-+       * the size of a register.
-+       */
-+      if (t == FFI_TYPE_STRUCT)
-+	{
-+	  if (z == sizeof (int) && a == sizeof (int) && regused < 8)
-+	    argp = (char *)regp;
-+	  else
-+	    argp = stackp;
-+	}
-+      else
-+	{
-+	  if (z > sizeof (int) && regused < 8 - 1)
-+	    {
-+	      /* align to an even register pair */
-+	      if (regused & 1)
-+		{
-+		  regp++;
-+		  regused++;
-+		}
-+	    }
-+	  if (regused < 8)
-+	    argp = (char *)regp;
-+	  else
-+	    argp = stackp;
-+	}
-+
-+      /* Enforce proper stack alignment of 64-bit types */
-+      if (argp == stackp && a > sizeof (int))
-+	{
-+	  stackp = (char *) ALIGN(stackp, a);
-+	  argp = stackp;
-+	}
-+
-+      if (z < sizeof (int) && t != FFI_TYPE_STRUCT)
-+	*p_argv = (void *) (argp + sizeof (int) - z);
-+      else
-+	*p_argv = (void *) argp;
-+
-+      /* Align if necessary */
-+      if ((sizeof (int) - 1) & z)
-+	z = ALIGN(z, sizeof (int));
-+
-+      p_argv++;
-+
-+      /* Be careful, once all registers are exhausted, and about to fetch from
-+	 stack, regp == stackp.  Therefore the check for regused as well. */
-+      if (argp == (char *)regp && regused < 8)
-+	{
-+	  regp += z / sizeof (int);
-+	  regused += z / sizeof (int);
-+	}
-+      else
-+	stackp += z;
-+    }
-+}
-+
-+unsigned int
-+ffi_closure_OBSD_inner (ffi_closure *closure, void *resp, unsigned int *regp,
-+			char *stackp)
-+{
-+  ffi_cif *cif;
-+  void **arg_area;
-+
-+  cif = closure->cif;
-+  arg_area = (void**) alloca (cif->nargs * sizeof (void *));
-+
-+  ffi_prep_closure_args_OBSD(cif, arg_area, regp, stackp);
-+
-+  (closure->fun) (cif, resp, arg_area, closure->user_data);
-+
-+  return cif->flags;
-+}
-+
-+ffi_status
-+ffi_prep_closure_loc (ffi_closure* closure, ffi_cif* cif,
-+		      void (*fun)(ffi_cif*,void*,void**,void*),
-+		      void *user_data, void *codeloc)
-+{
-+  unsigned int *tramp = (unsigned int *) codeloc;
-+  void *fn;
-+
-+  FFI_ASSERT (cif->abi == FFI_OBSD);
-+
-+  if (cif->rtype->type == FFI_TYPE_STRUCT && !cif->flags)
-+    fn = &ffi_closure_struct_OBSD;
-+  else
-+    fn = &ffi_closure_OBSD;
-+
-+  /* or.u %r10, %r0, %hi16(fn) */
-+  tramp[0] = 0x5d400000 | (((unsigned int)fn) >> 16);
-+  /* or.u %r13, %r0, %hi16(closure) */
-+  tramp[1] = 0x5da00000 | ((unsigned int)closure >> 16);
-+  /* or %r10, %r10, %lo16(fn) */
-+  tramp[2] = 0x594a0000 | (((unsigned int)fn) & 0xffff);
-+  /* jmp.n %r10 */
-+  tramp[3] = 0xf400c40a;
-+  /* or %r13, %r13, %lo16(closure) */
-+  tramp[4] = 0x59ad0000 | ((unsigned int)closure & 0xffff);
-+
-+  ffi_cacheflush_OBSD((unsigned int)codeloc, FFI_TRAMPOLINE_SIZE);
-+
-+  closure->cif  = cif;
-+  closure->user_data = user_data;
-+  closure->fun  = fun;
-+
-+  return FFI_OK;
-+}
diff --git a/frida-libffi/patches/patch-src_m88k_ffitarget.h b/frida-libffi/patches/patch-src_m88k_ffitarget.h
deleted file mode 100644
index b9e789adb7..0000000000
--- a/frida-libffi/patches/patch-src_m88k_ffitarget.h
+++ /dev/null
@@ -1,54 +0,0 @@
-$NetBSD: patch-src_m88k_ffitarget.h,v 1.1 2013/11/03 23:51:51 jklos Exp $
-
---- src/m88k/ffitarget.h.orig	2013-11-03 23:00:28.000000000 +0000
-+++ src/m88k/ffitarget.h
-@@ -0,0 +1,49 @@
-+/*
-+ * Copyright (c) 2013 Miodrag Vallat.  <miod%openbsd.org@localhost>
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining
-+ * a copy of this software and associated documentation files (the
-+ * ``Software''), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, sublicense, and/or sell copies of the Software, and to
-+ * permit persons to whom the Software is furnished to do so, subject to
-+ * the following conditions:
-+ * 
-+ * The above copyright notice and this permission notice shall be included
-+ * in all copies or substantial portions of the Software.
-+ * 
-+ * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/*
-+ * m88k Foreign Function Interface
-+ */
-+
-+#ifndef LIBFFI_TARGET_H
-+#define LIBFFI_TARGET_H
-+
-+#ifndef LIBFFI_ASM
-+typedef unsigned long ffi_arg;
-+typedef signed long ffi_sarg;
-+
-+typedef enum ffi_abi {
-+  FFI_FIRST_ABI = 0,
-+  FFI_OBSD,
-+  FFI_DEFAULT_ABI = FFI_OBSD,
-+  FFI_LAST_ABI = FFI_DEFAULT_ABI + 1
-+} ffi_abi;
-+#endif
-+
-+/* ---- Definitions for closures ----------------------------------------- */
-+
-+#define FFI_CLOSURES 1
-+#define FFI_TRAMPOLINE_SIZE 0x14
-+#define FFI_NATIVE_RAW_API 0
-+
-+#endif
diff --git a/frida-libffi/patches/patch-src_vax_elfbsd.S b/frida-libffi/patches/patch-src_vax_elfbsd.S
deleted file mode 100644
index de67548ae5..0000000000
--- a/frida-libffi/patches/patch-src_vax_elfbsd.S
+++ /dev/null
@@ -1,200 +0,0 @@
-$NetBSD: patch-src_vax_elfbsd.S,v 1.1 2013/11/03 23:51:51 jklos Exp $
-
---- src/vax/elfbsd.S.orig	2013-11-03 23:01:39.000000000 +0000
-+++ src/vax/elfbsd.S
-@@ -0,0 +1,195 @@
-+/*
-+ * Copyright (c) 2013 Miodrag Vallat.  <miod%openbsd.org@localhost>
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining
-+ * a copy of this software and associated documentation files (the
-+ * ``Software''), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, sublicense, and/or sell copies of the Software, and to
-+ * permit persons to whom the Software is furnished to do so, subject to
-+ * the following conditions:
-+ * 
-+ * The above copyright notice and this permission notice shall be included
-+ * in all copies or substantial portions of the Software.
-+ * 
-+ * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/*
-+ * vax Foreign Function Interface
-+ */
-+
-+#define LIBFFI_ASM	
-+#include <fficonfig.h>
-+#include <ffi.h>
-+
-+	.text
-+
-+/*
-+ * void *					%r0
-+ * ffi_call_elfbsd(extended_cif *ecif,		4(%ap)
-+ *		   unsigned bytes,		8(%ap)
-+ *		   unsigned flags,		12(%ap)
-+ *		   void *rvalue,		16(%ap)
-+ *		   void (*fn)());		20(%ap)
-+ */
-+	.globl	ffi_call_elfbsd
-+	.type	ffi_call_elfbsd,@function
-+	.align	2
-+ffi_call_elfbsd:
-+	.word	0x00c		# save R2 and R3
-+
-+	# Allocate stack space for the args
-+	subl2	8(%ap), %sp
-+
-+	# Call ffi_prep_args
-+	pushl	%sp
-+	pushl	4(%ap)
-+	calls	$2, ffi_prep_args
-+
-+	# Get function pointer
-+	movl	20(%ap), %r1
-+
-+	# Build a CALLS frame
-+	ashl	$-2, 8(%ap), %r0
-+	pushl	%r0		# argument stack usage
-+	movl	%sp, %r0	# future %ap
-+	# saved registers
-+	bbc	$11, 0(%r1), 1f
-+	pushl	%r11
-+1:	bbc	$10, 0(%r1), 1f
-+	pushl	%r10
-+1:	bbc	$9, 0(%r1), 1f
-+	pushl	%r9
-+1:	bbc	$8, 0(%r1), 1f
-+	pushl	%r8
-+1:	bbc	$7, 0(%r1), 1f
-+	pushl	%r7
-+1:	bbc	$6, 0(%r1), 1f
-+	pushl	%r6
-+1:	bbc	$5, 0(%r1), 1f
-+	pushl	%r5
-+1:	bbc	$4, 0(%r1), 1f
-+	pushl	%r4
-+1:	bbc	$3, 0(%r1), 1f
-+	pushl	%r3
-+1:	bbc	$2, 0(%r1), 1f
-+	pushl	%r2
-+1:	
-+	pushal	9f
-+	pushl	%fp
-+	pushl	%ap
-+	movl	16(%ap), %r3	# struct return address, if needed
-+	movl	%r0, %ap
-+	movzwl	4(%fp), %r0	# previous PSW, without the saved registers mask
-+	bisl2	$0x20000000, %r0 # calls frame
-+	movzwl	0(%r1), %r2
-+	bicw2	$0xf003, %r2	# only keep R11-R2
-+	ashl	$16, %r2, %r2
-+	bisl2	%r2, %r0	# saved register mask of the called function
-+	pushl	%r0	
-+	pushl	$0
-+	movl	%sp, %fp
-+
-+	# Invoke the function
-+	pushal	2(%r1)		# skip procedure entry mask
-+	movl	%r3, %r1
-+	bicpsw	$0x000f
-+	rsb
-+
-+9:
-+	# Copy return value if necessary
-+	tstl	16(%ap)
-+	jeql	9f
-+	movl	16(%ap), %r2
-+
-+	bbc	$0, 12(%ap), 1f	# CIF_FLAGS_CHAR
-+	movb	%r0, 0(%r2)
-+	brb	9f
-+1:
-+	bbc	$1, 12(%ap), 1f	# CIF_FLAGS_SHORT
-+	movw	%r0, 0(%r2)
-+	brb	9f
-+1:
-+	bbc	$2, 12(%ap), 1f	# CIF_FLAGS_INT
-+	movl	%r0, 0(%r2)
-+	brb	9f
-+1:
-+	bbc	$3, 12(%ap), 1f	# CIF_FLAGS_DINT
-+	movq	%r0, 0(%r2)
-+	brb	9f
-+1:
-+	movl	%r1, %r0	# might have been a struct
-+	#brb	9f
-+
-+9:
-+	ret
-+
-+/*
-+ * ffi_closure_elfbsd(void);
-+ * invoked with	%r0: ffi_closure *closure
-+ */
-+	.globl	ffi_closure_elfbsd
-+	.type	ffi_closure_elfbsd, @function
-+	.align	2
-+ffi_closure_elfbsd:
-+	.word	0
-+
-+	# Allocate room on stack for return value
-+	subl2	$8, %sp
-+
-+	# Invoke the closure function
-+	pushal	4(%ap)		# calling stack
-+	pushal	4(%sp)		# return value
-+	pushl	%r0		# closure
-+	calls	$3, ffi_closure_elfbsd_inner
-+
-+	# Copy return value if necessary
-+	bitb	$1, %r0		# CIF_FLAGS_CHAR
-+	beql	1f
-+	movb	0(%sp), %r0
-+	brb	9f
-+1:
-+	bitb	$2, %r0		# CIF_FLAGS_SHORT
-+	beql	1f
-+	movw	0(%sp), %r0
-+	brb	9f
-+1:
-+	bitb	$4, %r0		# CIF_FLAGS_INT
-+	beql	1f
-+	movl	0(%sp), %r0
-+	brb	9f
-+1:
-+	bitb	$8, %r0		# CIF_FLAGS_DINT
-+	beql	1f
-+	movq	0(%sp), %r0
-+	#brb	9f
-+1:
-+
-+9:
-+	ret
-+
-+/*
-+ * ffi_closure_struct_elfbsd(void);
-+ * invoked with	%r0: ffi_closure *closure
-+ *		%r1: struct return address
-+ */
-+	.globl	ffi_closure_struct_elfbsd
-+	.type	ffi_closure_struct_elfbsd, @function
-+	.align	2
-+ffi_closure_struct_elfbsd:
-+	.word	0
-+
-+	# Invoke the closure function
-+	pushal	4(%ap)		# calling stack
-+	pushl	%r1		# return value
-+	pushl	%r0		# closure
-+	calls	$3, ffi_closure_elfbsd_inner
-+
-+	ret
diff --git a/frida-libffi/patches/patch-src_vax_ffi.c b/frida-libffi/patches/patch-src_vax_ffi.c
deleted file mode 100644
index dedcd2bb13..0000000000
--- a/frida-libffi/patches/patch-src_vax_ffi.c
+++ /dev/null
@@ -1,281 +0,0 @@
-$NetBSD: patch-src_vax_ffi.c,v 1.1 2013/11/03 23:51:51 jklos Exp $
-
---- src/vax/ffi.c.orig	2013-11-03 23:02:29.000000000 +0000
-+++ src/vax/ffi.c
-@@ -0,0 +1,276 @@
-+/*
-+ * Copyright (c) 2013 Miodrag Vallat.  <miod%openbsd.org@localhost>
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining
-+ * a copy of this software and associated documentation files (the
-+ * ``Software''), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, sublicense, and/or sell copies of the Software, and to
-+ * permit persons to whom the Software is furnished to do so, subject to
-+ * the following conditions:
-+ * 
-+ * The above copyright notice and this permission notice shall be included
-+ * in all copies or substantial portions of the Software.
-+ * 
-+ * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/*
-+ * vax Foreign Function Interface
-+ *
-+ * This file attempts to provide all the FFI entry points which can reliably
-+ * be implemented in C.
-+ */
-+
-+#include <ffi.h>
-+#include <ffi_common.h>
-+
-+#include <stdlib.h>
-+#include <unistd.h>
-+
-+#define CIF_FLAGS_CHAR		1	/* for struct only */
-+#define CIF_FLAGS_SHORT		2	/* for struct only */
-+#define CIF_FLAGS_INT		4
-+#define CIF_FLAGS_DINT		8
-+
-+/*
-+ * Foreign Function Interface API
-+ */
-+
-+void ffi_call_elfbsd (extended_cif *, unsigned, unsigned, void *,
-+		       void (*) ());
-+void *ffi_prep_args (extended_cif *ecif, void *stack);
-+
-+void *
-+ffi_prep_args (extended_cif *ecif, void *stack)
-+{
-+  unsigned int i;
-+  void **p_argv;
-+  char *argp;
-+  ffi_type **p_arg;
-+  void *struct_value_ptr;
-+
-+  argp = stack;
-+
-+  if (ecif->cif->rtype->type == FFI_TYPE_STRUCT
-+      && !ecif->cif->flags)
-+    struct_value_ptr = ecif->rvalue;
-+  else
-+    struct_value_ptr = NULL;
-+
-+  p_argv = ecif->avalue;
-+
-+  for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types;
-+       i != 0;
-+       i--, p_arg++)
-+    {
-+      size_t z;
-+
-+      z = (*p_arg)->size;
-+      if (z < sizeof (int))
-+	{
-+	  switch ((*p_arg)->type)
-+	    {
-+	    case FFI_TYPE_SINT8:
-+	      *(signed int *) argp = (signed int) *(SINT8 *) *p_argv;
-+	      break;
-+
-+	    case FFI_TYPE_UINT8:
-+	      *(unsigned int *) argp = (unsigned int) *(UINT8 *) *p_argv;
-+	      break;
-+
-+	    case FFI_TYPE_SINT16:
-+	      *(signed int *) argp = (signed int) *(SINT16 *) *p_argv;
-+	      break;
-+
-+	    case FFI_TYPE_UINT16:
-+	      *(unsigned int *) argp = (unsigned int) *(UINT16 *) *p_argv;
-+	      break;
-+
-+	    case FFI_TYPE_STRUCT:
-+	      memcpy (argp, *p_argv, z);
-+	      break;
-+
-+	    default:
-+	      FFI_ASSERT (0);
-+	    }
-+	  z = sizeof (int);
-+	}
-+      else
-+	{
-+	  memcpy (argp, *p_argv, z);
-+
-+	  /* Align if necessary.  */
-+	  if ((sizeof(int) - 1) & z)
-+	    z = ALIGN(z, sizeof(int));
-+	}
-+
-+      p_argv++;
-+      argp += z;
-+    }
-+
-+  return struct_value_ptr;
-+}
-+
-+ffi_status
-+ffi_prep_cif_machdep (ffi_cif *cif)
-+{
-+  /* Set the return type flag */
-+  switch (cif->rtype->type)
-+    {
-+    case FFI_TYPE_VOID:
-+      cif->flags = 0;
-+      break;
-+
-+    case FFI_TYPE_STRUCT:
-+      if (cif->rtype->elements[0]->type == FFI_TYPE_STRUCT &&
-+	  cif->rtype->elements[1])
-+	{
-+	  cif->flags = 0;
-+	  break;
-+	}
-+
-+      if (cif->rtype->size == sizeof (char))
-+	cif->flags = CIF_FLAGS_CHAR;
-+      else if (cif->rtype->size == sizeof (short))
-+	cif->flags = CIF_FLAGS_SHORT;
-+      else if (cif->rtype->size == sizeof (int))
-+	cif->flags = CIF_FLAGS_INT;
-+      else if (cif->rtype->size == 2 * sizeof (int))
-+	cif->flags = CIF_FLAGS_DINT;
-+      else
-+	cif->flags = 0;
-+      break;
-+
-+    default:
-+      if (cif->rtype->size <= sizeof (int))
-+	cif->flags = CIF_FLAGS_INT;
-+      else
-+	cif->flags = CIF_FLAGS_DINT;
-+      break;
-+    }
-+
-+  return FFI_OK;
-+}
-+
-+void
-+ffi_call (ffi_cif *cif, void (*fn) (), void *rvalue, void **avalue)
-+{
-+  extended_cif ecif;
-+
-+  ecif.cif = cif;
-+  ecif.avalue = avalue;
-+
-+  /* If the return value is a struct and we don't have a return value
-+     address then we need to make one.  */
-+
-+  if (rvalue == NULL
-+      && cif->rtype->type == FFI_TYPE_STRUCT
-+      && cif->flags == 0)
-+    ecif.rvalue = alloca (cif->rtype->size);
-+  else
-+    ecif.rvalue = rvalue;
-+
-+  switch (cif->abi)
-+    {
-+    case FFI_ELFBSD:
-+      ffi_call_elfbsd (&ecif, cif->bytes, cif->flags, ecif.rvalue, fn);
-+      break;
-+
-+    default:
-+      FFI_ASSERT (0);
-+      break;
-+    }
-+}
-+
-+/*
-+ * Closure API
-+ */
-+
-+void ffi_closure_elfbsd (void);
-+void ffi_closure_struct_elfbsd (void);
-+unsigned int ffi_closure_elfbsd_inner (ffi_closure *, void *, char *);
-+
-+static void
-+ffi_prep_closure_elfbsd (ffi_cif *cif, void **avalue, char *stackp)
-+{
-+  unsigned int i;
-+  void **p_argv;
-+  ffi_type **p_arg;
-+
-+  p_argv = avalue;
-+
-+  for (i = cif->nargs, p_arg = cif->arg_types; i != 0; i--, p_arg++)
-+    {
-+      size_t z;
-+
-+      z = (*p_arg)->size;
-+      *p_argv = stackp;
-+
-+      /* Align if necessary */
-+      if ((sizeof (int) - 1) & z)
-+	z = ALIGN(z, sizeof (int));
-+
-+      p_argv++;
-+      stackp += z;
-+    }
-+}
-+
-+unsigned int
-+ffi_closure_elfbsd_inner (ffi_closure *closure, void *resp, char *stack)
-+{
-+  ffi_cif *cif;
-+  void **arg_area;
-+
-+  cif = closure->cif;
-+  arg_area = (void **) alloca (cif->nargs * sizeof (void *));
-+
-+  ffi_prep_closure_elfbsd (cif, arg_area, stack);
-+
-+  (closure->fun) (cif, resp, arg_area, closure->user_data);
-+
-+  return cif->flags;
-+}
-+
-+ffi_status
-+ffi_prep_closure_loc (ffi_closure *closure, ffi_cif *cif,
-+		      void (*fun)(ffi_cif *, void *, void **, void *),
-+		      void *user_data, void *codeloc)
-+{
-+  char *tramp = (char *) codeloc;
-+  void *fn;
-+
-+  FFI_ASSERT (cif->abi == FFI_ELFBSD);
-+
-+  /* entry mask */
-+  *(unsigned short *)(tramp + 0) = 0x0000;
-+  /* movl #closure, r0 */
-+  tramp[2] = 0xd0;
-+  tramp[3] = 0x8f;
-+  *(unsigned int *)(tramp + 4) = (unsigned int) closure;
-+  tramp[8] = 0x50;
-+
-+  if (cif->rtype->type == FFI_TYPE_STRUCT
-+      && !cif->flags)
-+    fn = &ffi_closure_struct_elfbsd;
-+  else
-+    fn = &ffi_closure_elfbsd;
-+
-+  /* jmpl #fn */
-+  tramp[9] = 0x17;
-+  tramp[10] = 0xef;
-+  *(unsigned int *)(tramp + 11) = (unsigned int)fn + 2 -
-+				  (unsigned int)tramp - 9 - 6;
-+
-+  closure->cif = cif;
-+  closure->user_data = user_data;
-+  closure->fun = fun;
-+
-+  return FFI_OK;
-+}
diff --git a/frida-libffi/patches/patch-src_vax_ffitarget.h b/frida-libffi/patches/patch-src_vax_ffitarget.h
deleted file mode 100644
index 55233d268a..0000000000
--- a/frida-libffi/patches/patch-src_vax_ffitarget.h
+++ /dev/null
@@ -1,54 +0,0 @@
-$NetBSD: patch-src_vax_ffitarget.h,v 1.1 2013/11/03 23:51:51 jklos Exp $
-
---- src/vax/ffitarget.h.orig	2013-11-03 23:03:01.000000000 +0000
-+++ src/vax/ffitarget.h
-@@ -0,0 +1,49 @@
-+/*
-+ * Copyright (c) 2013 Miodrag Vallat.  <miod%openbsd.org@localhost>
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining
-+ * a copy of this software and associated documentation files (the
-+ * ``Software''), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, sublicense, and/or sell copies of the Software, and to
-+ * permit persons to whom the Software is furnished to do so, subject to
-+ * the following conditions:
-+ * 
-+ * The above copyright notice and this permission notice shall be included
-+ * in all copies or substantial portions of the Software.
-+ * 
-+ * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/*
-+ * vax Foreign Function Interface
-+ */
-+
-+#ifndef LIBFFI_TARGET_H
-+#define LIBFFI_TARGET_H
-+
-+#ifndef LIBFFI_ASM
-+typedef unsigned long ffi_arg;
-+typedef signed long ffi_sarg;
-+
-+typedef enum ffi_abi {
-+  FFI_FIRST_ABI = 0,
-+  FFI_ELFBSD,
-+  FFI_DEFAULT_ABI = FFI_ELFBSD,
-+  FFI_LAST_ABI = FFI_DEFAULT_ABI + 1
-+} ffi_abi;
-+#endif
-+
-+/* ---- Definitions for closures ----------------------------------------- */
-+
-+#define FFI_CLOSURES 1
-+#define FFI_TRAMPOLINE_SIZE 15
-+#define FFI_NATIVE_RAW_API 0
-+
-+#endif
diff --git a/frida-libffi/patches/patch-src_x86_ffi.c b/frida-libffi/patches/patch-src_x86_ffi.c
deleted file mode 100644
index eee8bedfc5..0000000000
--- a/frida-libffi/patches/patch-src_x86_ffi.c
+++ /dev/null
@@ -1,15 +0,0 @@
-$NetBSD: patch-src_x86_ffi.c,v 1.1 2013/07/26 13:12:25 ryoon Exp $
-
-Fix build on Cygwin64. From Cygwin64 1.7.22's 3.0.12-cygwin.patch.
-
---- src/x86/ffi.c.orig	2013-03-16 11:25:04.000000000 +0000
-+++ src/x86/ffi.c
-@@ -28,7 +28,7 @@
-    DEALINGS IN THE SOFTWARE.
-    ----------------------------------------------------------------------- */
- 
--#if !defined(__x86_64__) || defined(_WIN64)
-+#if !defined(__x86_64__) || defined(_WIN64) || defined(__CYGWIN__)
- 
- #ifdef _WIN64
- #include <windows.h>
diff --git a/frida-libffi/patches/patch-src_x86_win64.S b/frida-libffi/patches/patch-src_x86_win64.S
deleted file mode 100644
index c37faa9ce3..0000000000
--- a/frida-libffi/patches/patch-src_x86_win64.S
+++ /dev/null
@@ -1,15 +0,0 @@
-$NetBSD: patch-src_x86_win64.S,v 1.1 2013/07/26 13:12:25 ryoon Exp $
-
-Fix build on Cygwin64. From Cygwin64 1.7.22's 3.0.12-cygwin.patch.
-
---- src/x86/win64.S.orig	2013-03-16 11:19:39.000000000 +0000
-+++ src/x86/win64.S
-@@ -295,7 +295,7 @@ SYMBOL_NAME(ffi_closure_win64):
- 	mov	%rax, %rcx	# context is first parameter
- 	mov	%rsp, %rdx	# stack is second parameter
- 	add	$48, %rdx	# point to start of arguments
--	mov	$SYMBOL_NAME(ffi_closure_win64_inner), %rax
-+	lea	SYMBOL_NAME(ffi_closure_win64_inner)(%rip), %rax
- 	callq	*%rax		# call the real closure function
- 	add	$40, %rsp
- 	movq	%rax, %xmm0	# If the closure returned a float,


Home | Main Index | Thread Index | Old Index