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