+2012-02-10 Kai Tietz <ktietz@redhat.com>
+
+ * configure.ac (AM_LTLDFLAGS): Add -no-undefine for x64
+ windows target.
+ * configure: Regenerated.
+
+2012-02-08 Kai Tietz <ktietz@redhat.com>
+
+ * src/prep_cif.c (ffi_prep_cif): Allow for X86_WIN32
+ also FFI_THISCALL.
+ * src/x86/ffi.c (ffi_closure_THISCALL): Add prototype.
+ (FFI_INIT_TRAMPOLINE_THISCALL): New trampoline code.
+ (ffi_prep_closure_loc): Add FFI_THISCALL support.
+ * src/x86/ffitarget.h (FFI_TRAMPOLINE_SIZE): Adjust size.
+ * src/x86/win32.S (ffi_closure_THISCALL): New closure code
+ for thiscall-calling convention.
+ * testsuite/libffi.call/closure_thiscall.c: New test.
+
2012-01-28 Kai Tietz <ktietz@redhat.com>
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
x86_64-*-cygwin* | x86_64-*-mingw*)
TARGET=X86_WIN64; TARGETDIR=x86
+ # All mingw/cygwin/win32 builds require -no-undefined for sharedlib.
+ # We must also check with_cross_host to decide if this is a native
+ # or cross-build and select where to install dlls appropriately.
+ if test -n "$with_cross_host" &&
+ test x"$with_cross_host" != x"no"; then
+ AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"';
+ else
+ AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"';
+ fi
;;
x86_64-*-*)
x86_64-*-cygwin* | x86_64-*-mingw*)
TARGET=X86_WIN64; TARGETDIR=x86
+ # All mingw/cygwin/win32 builds require -no-undefined for sharedlib.
+ # We must also check with_cross_host to decide if this is a native
+ # or cross-build and select where to install dlls appropriately.
+ if test -n "$with_cross_host" &&
+ test x"$with_cross_host" != x"no"; then
+ AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"';
+ else
+ AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"';
+ fi
;;
x86_64-*-*)
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
-/* Define if symbols are underscored. */
-#undef SYMBOL_UNDERSCORE
-
/* Define this if you are using Purify and want to suppress spurious messages.
*/
#undef USING_PURIFY
# endif
#endif
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
-
#ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
#ifdef LIBFFI_ASM
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -93,6 +93,19 @@
+@@ -111,6 +111,19 @@
* configure: Regenerate.
2011-02-09 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
PR libffi/46661
-@@ -103,7 +116,7 @@
+@@ -121,7 +134,7 @@
2011-02-08 Rafael Avila de Espindola <respindola@mozilla.com>
* configure.ac: Fix x86 test for pc related relocs.
===================================================================
--- libffi.orig/configure
+++ libffi/configure
-@@ -13318,67 +13318,69 @@ $as_echo "#define HAVE_AS_X86_64_UNWIND_
+@@ -13327,67 +13327,69 @@ $as_echo "#define HAVE_AS_X86_64_UNWIND_
fi
fi
===================================================================
--- libffi.orig/configure.ac
+++ libffi/configure.ac
-@@ -345,44 +345,46 @@ if test x$TARGET = xX86_64; then
+@@ -354,44 +354,46 @@ if test x$TARGET = xX86_64; then
fi
fi
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -17,6 +17,10 @@
+@@ -35,6 +35,10 @@
* testsuite/libffi.call/struct1_win32.c: New test.
* testsuite/libffi.call/struct2_win32.c: New test.
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -18,7 +18,12 @@
+@@ -36,7 +36,12 @@
* testsuite/libffi.call/struct2_win32.c: New test.
2012-01-23 Anthony Green <green@moxielogic.com>
TARGET=ALPHA; TARGETDIR=alpha;
# Support 128-bit long double, changeable via command-line switch.
HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)'
-@@ -14358,6 +15434,14 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
+@@ -14367,6 +15443,14 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
#
# INIT-COMMANDS
#
AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-@@ -14647,6 +15731,7 @@ for ac_config_target in $ac_config_targe
+@@ -14656,6 +15740,7 @@ for ac_config_target in $ac_config_targe
do
case $ac_config_target in
"fficonfig.h") CONFIG_HEADERS="$CONFIG_HEADERS fficonfig.h" ;;
"depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
"libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
"include") CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;;
-@@ -15285,6 +16370,150 @@ $as_echo "$as_me: executing $ac_file com
+@@ -15294,6 +16379,150 @@ $as_echo "$as_me: executing $ac_file com
case $ac_file$ac_mode in
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-@@ -142,6 +149,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
+@@ -141,6 +148,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
-@@ -162,6 +170,7 @@ am__leading_dot = @am__leading_dot@
+@@ -161,6 +169,7 @@ am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-@@ -140,6 +147,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
+@@ -139,6 +146,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
-@@ -160,6 +168,7 @@ am__leading_dot = @am__leading_dot@
+@@ -159,6 +167,7 @@ am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-@@ -117,6 +124,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
+@@ -116,6 +123,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
-@@ -137,6 +145,7 @@ am__leading_dot = @am__leading_dot@
+@@ -136,6 +144,7 @@ am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -93,6 +93,23 @@
+@@ -111,6 +111,23 @@
* configure: Regenerate.
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -89,6 +89,11 @@
+@@ -107,6 +107,11 @@
Use them to handle ELF vs. ECOFF differences.
[__osf__] (_GLOBAL__F_ffi_call_osf): Define.
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -41,6 +41,14 @@
+@@ -59,6 +59,14 @@
* configure: Regenerate.
TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
;;
powerpc64-*-freebsd*)
-@@ -13287,13 +13298,30 @@ $as_echo "#define SYMBOL_UNDERSCORE 1" >
+@@ -13296,13 +13307,30 @@ $as_echo "#define SYMBOL_UNDERSCORE 1" >
fi
fi
if test x$TARGET = xX86_64; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports unwind section type" >&5
-@@ -13721,6 +13749,10 @@ if test -z "${PA64_HPUX_TRUE}" && test -
+@@ -13730,6 +13758,10 @@ if test -z "${PA64_HPUX_TRUE}" && test -
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
===================================================================
--- libffi.orig/configure.ac
+++ libffi/configure.ac
-@@ -339,7 +339,7 @@ case "$target" in
+@@ -348,7 +348,7 @@ case "$target" in
[Cannot use PROT_EXEC on this target, so, we revert to
alternative means])
;;
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -225,6 +225,13 @@
+@@ -243,6 +243,13 @@
* testsuite/libffi.call/cls_longdouble.c: Likewise.
* testsuite/libffi.call/huge_struct.c: Likewise.
m4_undefine([_AC_ARG_VAR_PRECIOUS])
m4_rename([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
-@@ -400,6 +404,7 @@ AC_ARG_ENABLE(debug,
+@@ -409,6 +413,7 @@ AC_ARG_ENABLE(debug,
if test "$enable_debug" = "yes"; then
AC_DEFINE(FFI_DEBUG, 1, [Define this if you want extra debugging.])
fi)
===================================================================
--- libffi.orig/Makefile.in
+++ libffi/Makefile.in
-@@ -62,6 +62,11 @@ target_triplet = @target@
- @SH64_TRUE@am__append_24 = src/sh64/sysv.S src/sh64/ffi.c
- @PA_LINUX_TRUE@am__append_25 = src/pa/linux.S src/pa/ffi.c
- @PA_HPUX_TRUE@am__append_26 = src/pa/hpux32.S src/pa/ffi.c
+@@ -15,6 +15,7 @@
+
+ @SET_MAKE@
+
++
+ VPATH = @srcdir@
+ pkgdatadir = $(datadir)/@PACKAGE@
+ pkgincludedir = $(includedir)/@PACKAGE@
+@@ -54,36 +55,38 @@ target_triplet = @target@
+ @AVR32_TRUE@am__append_17 = src/avr32/sysv.S src/avr32/ffi.c
+ @LIBFFI_CRIS_TRUE@am__append_18 = src/cris/sysv.S src/cris/ffi.c
+ @FRV_TRUE@am__append_19 = src/frv/eabi.S src/frv/ffi.c
+-@S390_TRUE@am__append_20 = src/s390/sysv.S src/s390/ffi.c
+-@X86_64_TRUE@am__append_21 = src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S
+-@SH_TRUE@am__append_22 = src/sh/sysv.S src/sh/ffi.c
+-@SH64_TRUE@am__append_23 = src/sh64/sysv.S src/sh64/ffi.c
+-@PA_LINUX_TRUE@am__append_24 = src/pa/linux.S src/pa/ffi.c
+-@PA_HPUX_TRUE@am__append_25 = src/pa/hpux32.S src/pa/ffi.c
++@MOXIE_TRUE@am__append_20 = src/moxie/eabi.S src/moxie/ffi.c
++@S390_TRUE@am__append_21 = src/s390/sysv.S src/s390/ffi.c
++@X86_64_TRUE@am__append_22 = src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S
++@SH_TRUE@am__append_23 = src/sh/sysv.S src/sh/ffi.c
++@SH64_TRUE@am__append_24 = src/sh64/sysv.S src/sh64/ffi.c
++@PA_LINUX_TRUE@am__append_25 = src/pa/linux.S src/pa/ffi.c
++@PA_HPUX_TRUE@am__append_26 = src/pa/hpux32.S src/pa/ffi.c
+# Build debug. Define FFI_DEBUG on the commandline so that, when building with
+# MSVC, it can link against the debug CRT.
+@FFI_DEBUG_TRUE@am__append_27 = -DFFI_DEBUG
+# Build opt.
+@FFI_DEBUG_FALSE@am__append_28 = -O2
subdir = .
- DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(srcdir)/doc/stamp-vti \
-@@ -489,7 +494,7 @@ nodist_libffi_la_SOURCES = $(am__append_
- $(am__append_24) $(am__append_25) $(am__append_26)
+-DIST_COMMON = README $(am__configure_deps) $(srcdir)/../compile \
+- $(srcdir)/../config.guess $(srcdir)/../config.sub \
+- $(srcdir)/../depcomp $(srcdir)/../install-sh \
+- $(srcdir)/../ltmain.sh $(srcdir)/../missing \
+- $(srcdir)/../mkinstalldirs $(srcdir)/Makefile.am \
+- $(srcdir)/Makefile.in $(srcdir)/fficonfig.h.in \
+- $(top_srcdir)/configure ChangeLog
++DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
++ $(srcdir)/Makefile.in $(srcdir)/doc/stamp-vti \
++ $(srcdir)/doc/version.texi $(srcdir)/fficonfig.h.in \
++ $(srcdir)/libffi.pc.in $(top_srcdir)/configure ChangeLog \
++ compile config.guess config.sub depcomp install-sh ltmain.sh \
++ mdate-sh missing texinfo.tex
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
+- $(top_srcdir)/../config/lead-dot.m4 \
+- $(top_srcdir)/../config/multi.m4 \
+- $(top_srcdir)/../config/override.m4 \
+- $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
+- $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \
+- $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
++am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \
++ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
++ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
++ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+-mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
++mkinstalldirs = $(install_sh) -d
+ CONFIG_HEADER = fficonfig.h
+-CONFIG_CLEAN_FILES =
++CONFIG_CLEAN_FILES = libffi.pc
+ CONFIG_CLEAN_VPATH_FILES =
+ am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+ am__vpath_adj = case $$p in \
+@@ -106,8 +109,9 @@ am__nobase_list = $(am__nobase_strip_set
+ am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+-am__installdirs = "$(DESTDIR)$(toolexeclibdir)"
+-LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES)
++am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(infodir)" \
++ "$(DESTDIR)$(pkgconfigdir)"
++LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
+ libffi_la_LIBADD =
+ am__dirstamp = $(am__leading_dot)dirstamp
+ am_libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo src/types.lo \
+@@ -143,13 +147,14 @@ am_libffi_la_OBJECTS = src/debug.lo src/
+ @AVR32_TRUE@am__objects_17 = src/avr32/sysv.lo src/avr32/ffi.lo
+ @LIBFFI_CRIS_TRUE@am__objects_18 = src/cris/sysv.lo src/cris/ffi.lo
+ @FRV_TRUE@am__objects_19 = src/frv/eabi.lo src/frv/ffi.lo
+-@S390_TRUE@am__objects_20 = src/s390/sysv.lo src/s390/ffi.lo
+-@X86_64_TRUE@am__objects_21 = src/x86/ffi64.lo src/x86/unix64.lo \
++@MOXIE_TRUE@am__objects_20 = src/moxie/eabi.lo src/moxie/ffi.lo
++@S390_TRUE@am__objects_21 = src/s390/sysv.lo src/s390/ffi.lo
++@X86_64_TRUE@am__objects_22 = src/x86/ffi64.lo src/x86/unix64.lo \
+ @X86_64_TRUE@ src/x86/ffi.lo src/x86/sysv.lo
+-@SH_TRUE@am__objects_22 = src/sh/sysv.lo src/sh/ffi.lo
+-@SH64_TRUE@am__objects_23 = src/sh64/sysv.lo src/sh64/ffi.lo
+-@PA_LINUX_TRUE@am__objects_24 = src/pa/linux.lo src/pa/ffi.lo
+-@PA_HPUX_TRUE@am__objects_25 = src/pa/hpux32.lo src/pa/ffi.lo
++@SH_TRUE@am__objects_23 = src/sh/sysv.lo src/sh/ffi.lo
++@SH64_TRUE@am__objects_24 = src/sh64/sysv.lo src/sh64/ffi.lo
++@PA_LINUX_TRUE@am__objects_25 = src/pa/linux.lo src/pa/ffi.lo
++@PA_HPUX_TRUE@am__objects_26 = src/pa/hpux32.lo src/pa/ffi.lo
+ nodist_libffi_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
+ $(am__objects_3) $(am__objects_4) $(am__objects_5) \
+ $(am__objects_6) $(am__objects_7) $(am__objects_8) \
+@@ -158,17 +163,17 @@ nodist_libffi_la_OBJECTS = $(am__objects
+ $(am__objects_15) $(am__objects_16) $(am__objects_17) \
+ $(am__objects_18) $(am__objects_19) $(am__objects_20) \
+ $(am__objects_21) $(am__objects_22) $(am__objects_23) \
+- $(am__objects_24) $(am__objects_25)
++ $(am__objects_24) $(am__objects_25) $(am__objects_26)
+ libffi_la_OBJECTS = $(am_libffi_la_OBJECTS) \
+ $(nodist_libffi_la_OBJECTS)
+ libffi_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(libffi_la_LDFLAGS) $(LDFLAGS) -o $@
+ libffi_convenience_la_LIBADD =
+-am__objects_26 = src/debug.lo src/prep_cif.lo src/types.lo \
++am__objects_27 = src/debug.lo src/prep_cif.lo src/types.lo \
+ src/raw_api.lo src/java_raw_api.lo src/closures.lo
+-am_libffi_convenience_la_OBJECTS = $(am__objects_26)
+-am__objects_27 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
++am_libffi_convenience_la_OBJECTS = $(am__objects_27)
++am__objects_28 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
+ $(am__objects_4) $(am__objects_5) $(am__objects_6) \
+ $(am__objects_7) $(am__objects_8) $(am__objects_9) \
+ $(am__objects_10) $(am__objects_11) $(am__objects_12) \
+@@ -176,12 +181,12 @@ am__objects_27 = $(am__objects_1) $(am__
+ $(am__objects_16) $(am__objects_17) $(am__objects_18) \
+ $(am__objects_19) $(am__objects_20) $(am__objects_21) \
+ $(am__objects_22) $(am__objects_23) $(am__objects_24) \
+- $(am__objects_25)
+-nodist_libffi_convenience_la_OBJECTS = $(am__objects_27)
++ $(am__objects_25) $(am__objects_26)
++nodist_libffi_convenience_la_OBJECTS = $(am__objects_28)
+ libffi_convenience_la_OBJECTS = $(am_libffi_convenience_la_OBJECTS) \
+ $(nodist_libffi_convenience_la_OBJECTS)
+ DEFAULT_INCLUDES = -I.@am__isrc@
+-depcomp = $(SHELL) $(top_srcdir)/../depcomp
++depcomp = $(SHELL) $(top_srcdir)/depcomp
+ am__depfiles_maybe = depfiles
+ am__mv = mv -f
+ CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+@@ -202,12 +207,18 @@ SOURCES = $(libffi_la_SOURCES) $(nodist_
+ $(libffi_convenience_la_SOURCES) \
+ $(nodist_libffi_convenience_la_SOURCES)
+ DIST_SOURCES = $(libffi_la_SOURCES) $(libffi_convenience_la_SOURCES)
+-MULTISRCTOP =
+-MULTIBUILDTOP =
+-MULTIDIRS =
+-MULTISUBDIR =
+-MULTIDO = true
+-MULTICLEAN = true
++INFO_DEPS = $(srcdir)/doc/libffi.info
++am__TEXINFO_TEX_DIR = $(srcdir)
++DVIS = doc/libffi.dvi
++PDFS = doc/libffi.pdf
++PSS = doc/libffi.ps
++HTMLS = doc/libffi.html
++TEXINFOS = doc/libffi.texi
++TEXI2DVI = texi2dvi
++TEXI2PDF = $(TEXI2DVI) --pdf --batch
++MAKEINFOHTML = $(MAKEINFO) --html
++AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
++DVIPS = dvips
+ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+@@ -215,6 +226,7 @@ RECURSIVE_TARGETS = all-recursive check-
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
++DATA = $(pkgconfig_DATA)
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+@@ -280,6 +292,7 @@ CPPFLAGS = @CPPFLAGS@
+ CYGPATH_W = @CYGPATH_W@
+ DEFS = @DEFS@
+ DEPDIR = @DEPDIR@
++DLLTOOL = @DLLTOOL@
+ DSYMUTIL = @DSYMUTIL@
+ DUMPBIN = @DUMPBIN@
+ ECHO_C = @ECHO_C@
+@@ -305,6 +318,7 @@ LN_S = @LN_S@
+ LTLIBOBJS = @LTLIBOBJS@
+ MAINT = @MAINT@
+ MAKEINFO = @MAKEINFO@
++MANIFEST_TOOL = @MANIFEST_TOOL@
+ MKDIR_P = @MKDIR_P@
+ NM = @NM@
+ NMEDIT = @NMEDIT@
+@@ -332,6 +346,7 @@ abs_builddir = @abs_builddir@
+ abs_srcdir = @abs_srcdir@
+ abs_top_builddir = @abs_top_builddir@
+ abs_top_srcdir = @abs_top_srcdir@
++ac_ct_AR = @ac_ct_AR@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ am__include = @am__include@
+@@ -366,7 +381,6 @@ localedir = @localedir@
+ localstatedir = @localstatedir@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+-multi_basedir = @multi_basedir@
+ oldincludedir = @oldincludedir@
+ pdfdir = @pdfdir@
+ prefix = @prefix@
+@@ -387,7 +401,6 @@ top_build_prefix = @top_build_prefix@
+ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+ AUTOMAKE_OPTIONS = foreign subdir-objects
+-ACLOCAL_AMFLAGS = -I .. -I ../config
+ SUBDIRS = include testsuite man
+ EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj configure.host \
+ src/alpha/ffi.c src/alpha/osf.S src/alpha/ffitarget.h \
+@@ -412,10 +425,16 @@ EXTRA_DIST = LICENSE ChangeLog.v1 Change
+ src/sparc/v8.S src/sparc/v9.S src/sparc/ffitarget.h \
+ src/sparc/ffi.c src/x86/darwin64.S \
+ src/x86/ffi.c src/x86/sysv.S src/x86/win32.S src/x86/darwin.S \
++ src/x86/win64.S src/x86/freebsd.S \
+ src/x86/ffi64.c src/x86/unix64.S src/x86/ffitarget.h \
+ src/pa/ffitarget.h src/pa/ffi.c src/pa/linux.S src/pa/hpux32.S \
+- src/frv/ffi.c src/frv/eabi.S src/frv/ffitarget.h src/dlmalloc.c
++ src/frv/ffi.c src/frv/eabi.S src/frv/ffitarget.h \
++ src/dlmalloc.c \
++ src/moxie/ffi.c src/moxie/eabi.S \
++ libtool-version ChangeLog.libffi m4/libtool.m4 \
++ m4/lt~obsolete.m4 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4
+
++info_TEXINFOS = doc/libffi.texi
+
+ # Work around what appears to be a GNU make bug handling MAKEFLAGS
+ # values defined in terms of make variables, as is the case for CC and
+@@ -456,11 +475,14 @@ AM_MAKEFLAGS = \
+ "DESTDIR=$(DESTDIR)"
+
+ MAKEOVERRIDES =
+-toolexeclib_LTLIBRARIES = libffi.la
++ACLOCAL_AMFLAGS = $(ACLOCAL_AMFLAGS) -I m4
++lib_LTLIBRARIES = libffi.la
+ noinst_LTLIBRARIES = libffi_convenience.la
+ libffi_la_SOURCES = src/debug.c src/prep_cif.c src/types.c \
+ src/raw_api.c src/java_raw_api.c src/closures.c
+
++pkgconfigdir = $(libdir)/pkgconfig
++pkgconfig_DATA = libffi.pc
+ nodist_libffi_la_SOURCES = $(am__append_1) $(am__append_2) \
+ $(am__append_3) $(am__append_4) $(am__append_5) \
+ $(am__append_6) $(am__append_7) $(am__append_8) \
+@@ -469,11 +491,10 @@ nodist_libffi_la_SOURCES = $(am__append_
+ $(am__append_15) $(am__append_16) $(am__append_17) \
+ $(am__append_18) $(am__append_19) $(am__append_20) \
+ $(am__append_21) $(am__append_22) $(am__append_23) \
+- $(am__append_24) $(am__append_25)
++ $(am__append_24) $(am__append_25) $(am__append_26)
libffi_convenience_la_SOURCES = $(libffi_la_SOURCES)
nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES)
-AM_CFLAGS = -Wall -g -fexceptions
+-LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
+AM_CFLAGS = -Wall -g -fexceptions $(am__append_27) $(am__append_28)
libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) $(AM_LTLDFLAGS)
AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src
AM_CCASFLAGS = $(AM_CPPFLAGS)
+@@ -481,7 +502,7 @@ all: fficonfig.h
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+ .SUFFIXES:
+-.SUFFIXES: .S .c .lo .o .obj
++.SUFFIXES: .S .c .dvi .lo .o .obj .ps
+ am--refresh:
+ @:
+ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+@@ -533,41 +554,43 @@ $(srcdir)/fficonfig.h.in: @MAINTAINER_MO
+
+ distclean-hdr:
+ -rm -f fficonfig.h stamp-h1
+-
+-clean-noinstLTLIBRARIES:
+- -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+- @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+- test "$$dir" != "$$p" || dir=.; \
+- echo "rm -f \"$${dir}/so_locations\""; \
+- rm -f "$${dir}/so_locations"; \
+- done
+-install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES)
++libffi.pc: $(top_builddir)/config.status $(srcdir)/libffi.pc.in
++ cd $(top_builddir) && $(SHELL) ./config.status $@
++install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+- test -z "$(toolexeclibdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)"
+- @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \
++ test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
++ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(toolexeclibdir)'"; \
+- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(toolexeclibdir)"; \
++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+ }
+
+-uninstall-toolexeclibLTLIBRARIES:
++uninstall-libLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+- @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \
++ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(toolexeclibdir)/$$f'"; \
+- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(toolexeclibdir)/$$f"; \
++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
+ done
+
+-clean-toolexeclibLTLIBRARIES:
+- -test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES)
+- @list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
++clean-libLTLIBRARIES:
++ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
++ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
++ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
++ test "$$dir" != "$$p" || dir=.; \
++ echo "rm -f \"$${dir}/so_locations\""; \
++ rm -f "$${dir}/so_locations"; \
++ done
++
++clean-noinstLTLIBRARIES:
++ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
++ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+@@ -737,6 +760,16 @@ src/frv/eabi.lo: src/frv/$(am__dirstamp)
+ src/frv/$(DEPDIR)/$(am__dirstamp)
+ src/frv/ffi.lo: src/frv/$(am__dirstamp) \
+ src/frv/$(DEPDIR)/$(am__dirstamp)
++src/moxie/$(am__dirstamp):
++ @$(MKDIR_P) src/moxie
++ @: > src/moxie/$(am__dirstamp)
++src/moxie/$(DEPDIR)/$(am__dirstamp):
++ @$(MKDIR_P) src/moxie/$(DEPDIR)
++ @: > src/moxie/$(DEPDIR)/$(am__dirstamp)
++src/moxie/eabi.lo: src/moxie/$(am__dirstamp) \
++ src/moxie/$(DEPDIR)/$(am__dirstamp)
++src/moxie/ffi.lo: src/moxie/$(am__dirstamp) \
++ src/moxie/$(DEPDIR)/$(am__dirstamp)
+ src/s390/$(am__dirstamp):
+ @$(MKDIR_P) src/s390
+ @: > src/s390/$(am__dirstamp)
+@@ -780,7 +813,7 @@ src/pa/ffi.lo: src/pa/$(am__dirstamp) sr
+ src/pa/hpux32.lo: src/pa/$(am__dirstamp) \
+ src/pa/$(DEPDIR)/$(am__dirstamp)
+ libffi.la: $(libffi_la_OBJECTS) $(libffi_la_DEPENDENCIES)
+- $(libffi_la_LINK) -rpath $(toolexeclibdir) $(libffi_la_OBJECTS) $(libffi_la_LIBADD) $(LIBS)
++ $(libffi_la_LINK) -rpath $(libdir) $(libffi_la_OBJECTS) $(libffi_la_LIBADD) $(LIBS)
+ libffi_convenience.la: $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_DEPENDENCIES)
+ $(LINK) $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_LIBADD) $(LIBS)
+
+@@ -830,6 +863,10 @@ mostlyclean-compile:
+ -rm -f src/mips/n32.lo
+ -rm -f src/mips/o32.$(OBJEXT)
+ -rm -f src/mips/o32.lo
++ -rm -f src/moxie/eabi.$(OBJEXT)
++ -rm -f src/moxie/eabi.lo
++ -rm -f src/moxie/ffi.$(OBJEXT)
++ -rm -f src/moxie/ffi.lo
+ -rm -f src/pa/ffi.$(OBJEXT)
+ -rm -f src/pa/ffi.lo
+ -rm -f src/pa/hpux32.$(OBJEXT)
+@@ -927,6 +964,8 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/ffi.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/n32.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/o32.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@src/moxie/$(DEPDIR)/eabi.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@src/moxie/$(DEPDIR)/ffi.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/ffi.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/hpux32.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/linux.Plo@am__quote@
+@@ -1022,6 +1061,7 @@ clean-libtool:
+ -rm -rf src/m32r/.libs src/m32r/_libs
+ -rm -rf src/m68k/.libs src/m68k/_libs
+ -rm -rf src/mips/.libs src/mips/_libs
++ -rm -rf src/moxie/.libs src/moxie/_libs
+ -rm -rf src/pa/.libs src/pa/_libs
+ -rm -rf src/powerpc/.libs src/powerpc/_libs
+ -rm -rf src/s390/.libs src/s390/_libs
+@@ -1032,23 +1072,191 @@ clean-libtool:
+
+ distclean-libtool:
+ -rm -f libtool config.lt
++doc/$(am__dirstamp):
++ @$(MKDIR_P) doc
++ @: > doc/$(am__dirstamp)
++
++$(srcdir)/doc/libffi.info: doc/libffi.texi $(srcdir)/doc/version.texi
++ restore=: && backupdir="$(am__leading_dot)am$$$$" && \
++ am__cwd=`pwd` && $(am__cd) $(srcdir) && \
++ rm -rf $$backupdir && mkdir $$backupdir && \
++ if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
++ for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
++ if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
++ done; \
++ else :; fi && \
++ cd "$$am__cwd"; \
++ if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \
++ -o $@ $(srcdir)/doc/libffi.texi; \
++ then \
++ rc=0; \
++ $(am__cd) $(srcdir); \
++ else \
++ rc=$$?; \
++ $(am__cd) $(srcdir) && \
++ $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
++ fi; \
++ rm -rf $$backupdir; exit $$rc
++
++doc/libffi.dvi: doc/libffi.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
++ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
++ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \
++ $(TEXI2DVI) -o $@ `test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi
++
++doc/libffi.pdf: doc/libffi.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
++ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
++ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \
++ $(TEXI2PDF) -o $@ `test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi
++
++doc/libffi.html: doc/libffi.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
++ rm -rf $(@:.html=.htp)
++ if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \
++ -o $(@:.html=.htp) `test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi; \
++ then \
++ rm -rf $@; \
++ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
++ mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
++ else \
++ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
++ rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
++ exit 1; \
++ fi
++$(srcdir)/doc/version.texi: @MAINTAINER_MODE_TRUE@ $(srcdir)/doc/stamp-vti
++$(srcdir)/doc/stamp-vti: doc/libffi.texi $(top_srcdir)/configure
++ test -f doc/$(am__dirstamp) || $(MAKE) $(AM_MAKEFLAGS) doc/$(am__dirstamp)
++ @(dir=.; test -f ./doc/libffi.texi || dir=$(srcdir); \
++ set `$(SHELL) $(srcdir)/mdate-sh $$dir/doc/libffi.texi`; \
++ echo "@set UPDATED $$1 $$2 $$3"; \
++ echo "@set UPDATED-MONTH $$2 $$3"; \
++ echo "@set EDITION $(VERSION)"; \
++ echo "@set VERSION $(VERSION)") > vti.tmp
++ @cmp -s vti.tmp $(srcdir)/doc/version.texi \
++ || (echo "Updating $(srcdir)/doc/version.texi"; \
++ cp vti.tmp $(srcdir)/doc/version.texi)
++ -@rm -f vti.tmp
++ @cp $(srcdir)/doc/version.texi $@
++
++mostlyclean-vti:
++ -rm -f vti.tmp
++
++maintainer-clean-vti:
++@MAINTAINER_MODE_TRUE@ -rm -f $(srcdir)/doc/stamp-vti $(srcdir)/doc/version.texi
++.dvi.ps:
++ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
++ $(DVIPS) -o $@ $<
++
++uninstall-dvi-am:
++ @$(NORMAL_UNINSTALL)
++ @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
++ for p in $$list; do \
++ $(am__strip_dir) \
++ echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
++ rm -f "$(DESTDIR)$(dvidir)/$$f"; \
++ done
++
++uninstall-html-am:
++ @$(NORMAL_UNINSTALL)
++ @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \
++ for p in $$list; do \
++ $(am__strip_dir) \
++ echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
++ rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
++ done
+
+-# GNU Make needs to see an explicit $(MAKE) variable in the command it
+-# runs to enable its job server during parallel builds. Hence the
+-# comments below.
+-all-multi:
+- $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE)
+-install-multi:
+- $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE)
+-
+-mostlyclean-multi:
+- $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean # $(MAKE)
+-clean-multi:
+- $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean # $(MAKE)
+-distclean-multi:
+- $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE)
+-maintainer-clean-multi:
+- $(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean # $(MAKE)
++uninstall-info-am:
++ @$(PRE_UNINSTALL)
++ @if test -d '$(DESTDIR)$(infodir)' && \
++ (install-info --version && \
++ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
++ list='$(INFO_DEPS)'; \
++ for file in $$list; do \
++ relfile=`echo "$$file" | sed 's|^.*/||'`; \
++ echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
++ if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
++ then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \
++ done; \
++ else :; fi
++ @$(NORMAL_UNINSTALL)
++ @list='$(INFO_DEPS)'; \
++ for file in $$list; do \
++ relfile=`echo "$$file" | sed 's|^.*/||'`; \
++ relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
++ (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \
++ echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
++ rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
++ else :; fi); \
++ done
++
++uninstall-pdf-am:
++ @$(NORMAL_UNINSTALL)
++ @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
++ for p in $$list; do \
++ $(am__strip_dir) \
++ echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
++ rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
++ done
++
++uninstall-ps-am:
++ @$(NORMAL_UNINSTALL)
++ @list='$(PSS)'; test -n "$(psdir)" || list=; \
++ for p in $$list; do \
++ $(am__strip_dir) \
++ echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
++ rm -f "$(DESTDIR)$(psdir)/$$f"; \
++ done
++
++dist-info: $(INFO_DEPS)
++ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
++ list='$(INFO_DEPS)'; \
++ for base in $$list; do \
++ case $$base in \
++ $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
++ esac; \
++ if test -f $$base; then d=.; else d=$(srcdir); fi; \
++ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
++ for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
++ if test -f $$file; then \
++ relfile=`expr "$$file" : "$$d/\(.*\)"`; \
++ test -f "$(distdir)/$$relfile" || \
++ cp -p $$file "$(distdir)/$$relfile"; \
++ else :; fi; \
++ done; \
++ done
++
++mostlyclean-aminfo:
++ -rm -rf libffi.aux libffi.cp libffi.cps libffi.fn libffi.ky libffi.log \
++ libffi.pg libffi.tmp libffi.toc libffi.tp libffi.vr
++
++clean-aminfo:
++ -test -z "doc/libffi.dvi doc/libffi.pdf doc/libffi.ps doc/libffi.html" \
++ || rm -rf doc/libffi.dvi doc/libffi.pdf doc/libffi.ps doc/libffi.html
++
++maintainer-clean-aminfo:
++ @list='$(INFO_DEPS)'; for i in $$list; do \
++ i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
++ echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
++ rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
++ done
++install-pkgconfigDATA: $(pkgconfig_DATA)
++ @$(NORMAL_INSTALL)
++ test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
++ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
++ for p in $$list; do \
++ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
++ echo "$$d$$p"; \
++ done | $(am__base_list) | \
++ while read files; do \
++ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
++ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
++ done
++
++uninstall-pkgconfigDATA:
++ @$(NORMAL_UNINSTALL)
++ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
++ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
++ test -n "$$files" || exit 0; \
++ echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \
++ cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files
+
+ # This directory's subdirectories are mostly independent; you can cd
+ # into them and run `make' without going through this Makefile.
+@@ -1245,6 +1453,9 @@ distdir: $(DISTFILES)
+ || exit 1; \
+ fi; \
+ done
++ $(MAKE) $(AM_MAKEFLAGS) \
++ top_distdir="$(top_distdir)" distdir="$(distdir)" \
++ dist-info
+ -test -n "$(am__skip_mode_fix)" \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -o \
+@@ -1362,10 +1573,10 @@ distcleancheck: distclean
+ exit 1; } >&2
+ check-am: all-am
+ check: check-recursive
+-all-am: Makefile $(LTLIBRARIES) all-multi fficonfig.h
++all-am: Makefile $(INFO_DEPS) $(LTLIBRARIES) $(DATA) fficonfig.h
+ installdirs: installdirs-recursive
+ installdirs-am:
+- for dir in "$(DESTDIR)$(toolexeclibdir)"; do \
++ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(pkgconfigdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+ install: install-recursive
+@@ -1389,6 +1600,7 @@ clean-generic:
+ distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
++ -rm -f doc/$(am__dirstamp)
+ -rm -f src/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/$(am__dirstamp)
+ -rm -f src/alpha/$(DEPDIR)/$(am__dirstamp)
+@@ -1409,6 +1621,8 @@ distclean-generic:
+ -rm -f src/m68k/$(am__dirstamp)
+ -rm -f src/mips/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/mips/$(am__dirstamp)
++ -rm -f src/moxie/$(DEPDIR)/$(am__dirstamp)
++ -rm -f src/moxie/$(am__dirstamp)
+ -rm -f src/pa/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/pa/$(am__dirstamp)
+ -rm -f src/powerpc/$(DEPDIR)/$(am__dirstamp)
+@@ -1427,114 +1641,186 @@ distclean-generic:
+ maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+-clean: clean-multi clean-recursive
++clean: clean-recursive
+
+-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+- clean-toolexeclibLTLIBRARIES mostlyclean-am
++clean-am: clean-aminfo clean-generic clean-libLTLIBRARIES \
++ clean-libtool clean-noinstLTLIBRARIES mostlyclean-am
+
+-distclean: distclean-multi distclean-recursive
++distclean: distclean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+- -rm -rf src/$(DEPDIR) src/alpha/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/mips/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/x86/$(DEPDIR)
++ -rm -rf src/$(DEPDIR) src/alpha/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/x86/$(DEPDIR)
+ -rm -f Makefile
+ distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-hdr distclean-libtool distclean-tags
+
+ dvi: dvi-recursive
+
+-dvi-am:
++dvi-am: $(DVIS)
+
+ html: html-recursive
+
+-html-am:
++html-am: $(HTMLS)
+
+ info: info-recursive
+
+-info-am:
++info-am: $(INFO_DEPS)
+
+-install-data-am:
++install-data-am: install-info-am install-pkgconfigDATA
+
+ install-dvi: install-dvi-recursive
+
+-install-dvi-am:
+-
+-install-exec-am: install-multi install-toolexeclibLTLIBRARIES
+-
+-install-html: install-html-recursive
+-
+-install-html-am:
++install-dvi-am: $(DVIS)
++ @$(NORMAL_INSTALL)
++ test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)"
++ @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
++ for p in $$list; do \
++ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
++ echo "$$d$$p"; \
++ done | $(am__base_list) | \
++ while read files; do \
++ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \
++ $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \
++ done
++install-exec-am: install-libLTLIBRARIES
+
++install-html-am: $(HTMLS)
++ @$(NORMAL_INSTALL)
++ test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
++ @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
++ for p in $$list; do \
++ if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
++ $(am__strip_dir) \
++ if test -d "$$d$$p"; then \
++ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
++ $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
++ echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
++ $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
++ else \
++ list2="$$list2 $$d$$p"; \
++ fi; \
++ done; \
++ test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
++ while read files; do \
++ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
++ $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
++ done; }
+ install-info: install-info-recursive
+
+-install-info-am:
+-
++install-info-am: $(INFO_DEPS)
++ @$(NORMAL_INSTALL)
++ test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)"
++ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
++ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
++ for file in $$list; do \
++ case $$file in \
++ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
++ esac; \
++ if test -f $$file; then d=.; else d=$(srcdir); fi; \
++ file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
++ for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
++ $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
++ if test -f $$ifile; then \
++ echo "$$ifile"; \
++ else : ; fi; \
++ done; \
++ done | $(am__base_list) | \
++ while read files; do \
++ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
++ $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
++ @$(POST_INSTALL)
++ @if (install-info --version && \
++ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
++ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
++ for file in $$list; do \
++ relfile=`echo "$$file" | sed 's|^.*/||'`; \
++ echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
++ install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
++ done; \
++ else : ; fi
+ install-man:
+
+-install-pdf: install-pdf-recursive
+-
+-install-pdf-am:
+-
++install-pdf-am: $(PDFS)
++ @$(NORMAL_INSTALL)
++ test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)"
++ @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
++ for p in $$list; do \
++ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
++ echo "$$d$$p"; \
++ done | $(am__base_list) | \
++ while read files; do \
++ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \
++ $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done
+ install-ps: install-ps-recursive
+
+-install-ps-am:
+-
++install-ps-am: $(PSS)
++ @$(NORMAL_INSTALL)
++ test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
++ @list='$(PSS)'; test -n "$(psdir)" || list=; \
++ for p in $$list; do \
++ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
++ echo "$$d$$p"; \
++ done | $(am__base_list) | \
++ while read files; do \
++ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \
++ $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done
+ installcheck-am:
+
+-maintainer-clean: maintainer-clean-multi maintainer-clean-recursive
++maintainer-clean: maintainer-clean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+- -rm -rf src/$(DEPDIR) src/alpha/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/mips/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/x86/$(DEPDIR)
++ -rm -rf src/$(DEPDIR) src/alpha/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/x86/$(DEPDIR)
+ -rm -f Makefile
+-maintainer-clean-am: distclean-am maintainer-clean-generic
++maintainer-clean-am: distclean-am maintainer-clean-aminfo \
++ maintainer-clean-generic maintainer-clean-vti
+
+-mostlyclean: mostlyclean-multi mostlyclean-recursive
++mostlyclean: mostlyclean-recursive
+
+-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+- mostlyclean-libtool
++mostlyclean-am: mostlyclean-aminfo mostlyclean-compile \
++ mostlyclean-generic mostlyclean-libtool mostlyclean-vti
+
+ pdf: pdf-recursive
+
+-pdf-am:
++pdf-am: $(PDFS)
+
+ ps: ps-recursive
+
+-ps-am:
++ps-am: $(PSS)
+
+-uninstall-am: uninstall-toolexeclibLTLIBRARIES
++uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
++ uninstall-libLTLIBRARIES uninstall-pdf-am \
++ uninstall-pkgconfigDATA uninstall-ps-am
+
+-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all all-multi \
+- clean-multi ctags-recursive distclean-multi install-am \
+- install-multi install-strip maintainer-clean-multi \
+- mostlyclean-multi tags-recursive
++.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
++ ctags-recursive install-am install-strip tags-recursive
+
+ .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+- all all-am all-multi am--refresh check check-am clean \
+- clean-generic clean-libtool clean-multi \
+- clean-noinstLTLIBRARIES clean-toolexeclibLTLIBRARIES ctags \
+- ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-lzma \
+- dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \
+- distclean-compile distclean-generic distclean-hdr \
+- distclean-libtool distclean-multi distclean-tags \
+- distcleancheck distdir distuninstallcheck dvi dvi-am html \
+- html-am info info-am install install-am install-data \
+- install-data-am install-dvi install-dvi-am install-exec \
+- install-exec-am install-html install-html-am install-info \
+- install-info-am install-man install-multi install-pdf \
+- install-pdf-am install-ps install-ps-am install-strip \
+- install-toolexeclibLTLIBRARIES installcheck installcheck-am \
+- installdirs installdirs-am maintainer-clean \
+- maintainer-clean-generic maintainer-clean-multi mostlyclean \
++ all all-am am--refresh check check-am clean clean-aminfo \
++ clean-generic clean-libLTLIBRARIES clean-libtool \
++ clean-noinstLTLIBRARIES ctags ctags-recursive dist dist-all \
++ dist-bzip2 dist-gzip dist-info dist-lzma dist-shar dist-tarZ \
++ dist-xz dist-zip distcheck distclean distclean-compile \
++ distclean-generic distclean-hdr distclean-libtool \
++ distclean-tags distcleancheck distdir distuninstallcheck dvi \
++ dvi-am html html-am info info-am install install-am \
++ install-data install-data-am install-dvi install-dvi-am \
++ install-exec install-exec-am install-html install-html-am \
++ install-info install-info-am install-libLTLIBRARIES \
++ install-man install-pdf install-pdf-am install-pkgconfigDATA \
++ install-ps install-ps-am install-strip installcheck \
++ installcheck-am installdirs installdirs-am maintainer-clean \
++ maintainer-clean-aminfo maintainer-clean-generic \
++ maintainer-clean-vti mostlyclean mostlyclean-aminfo \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+- mostlyclean-multi pdf pdf-am ps ps-am tags tags-recursive \
+- uninstall uninstall-am uninstall-toolexeclibLTLIBRARIES
++ mostlyclean-vti pdf pdf-am ps ps-am tags tags-recursive \
++ uninstall uninstall-am uninstall-dvi-am uninstall-html-am \
++ uninstall-info-am uninstall-libLTLIBRARIES uninstall-pdf-am \
++ uninstall-pkgconfigDATA uninstall-ps-am
+
+
+-# Multilib support. Automake should provide these on its own.
+-all-recursive: all-multi
+-install-recursive: install-multi
+-mostlyclean-recursive: mostlyclean-multi
+-clean-recursive: clean-multi
+-distclean-recursive: distclean-multi
+-maintainer-clean-recursive: maintainer-clean-multi
++# No install-html or install-pdf support in automake yet
++.PHONY: install-html install-pdf
++install-html:
++install-pdf:
+
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
Index: libffi/configure
===================================================================
--- libffi.orig/configure
-@@ -13335,6 +13341,14 @@ $as_echo "#define FFI_DEBUG 1" >>confdef
+@@ -13344,6 +13350,14 @@ $as_echo "#define FFI_DEBUG 1" >>confdef
fi
fi
# Check whether --enable-structs was given.
if test "${enable_structs+set}" = set; then :
-@@ -13649,6 +13663,10 @@ if test -z "${PA64_HPUX_TRUE}" && test -
+@@ -13658,6 +13672,10 @@ if test -z "${PA64_HPUX_TRUE}" && test -
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -225,6 +225,12 @@
+@@ -243,6 +243,12 @@
* testsuite/libffi.call/cls_longdouble.c: Likewise.
* testsuite/libffi.call/huge_struct.c: Likewise.
===================================================================
--- libffi.orig/src/prep_cif.c
+++ libffi/src/prep_cif.c
-@@ -93,7 +93,7 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
- ffi_type **ptr;
+@@ -1,5 +1,6 @@
+ /* -----------------------------------------------------------------------
+- prep_cif.c - Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
++ prep_cif.c - Copyright (c) 2012 Anthony Green
++ Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
- FFI_ASSERT(cif != NULL);
-- FFI_ASSERT((abi > FFI_FIRST_ABI) && (abi <= FFI_DEFAULT_ABI));
-+ FFI_ASSERT(abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI);
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+@@ -96,7 +97,7 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
+ #ifndef X86_WIN32
+ FFI_ASSERT((abi > FFI_FIRST_ABI) && (abi <= FFI_DEFAULT_ABI));
+ #else
+- FFI_ASSERT(abi > FFI_FIRST_ABI && abi <= FFI_DEFAULT_ABI
++ FFI_ASSERT(abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI
+ || abi == FFI_THISCALL);
+ #endif
- cif->abi = abi;
- cif->arg_types = atypes;
Index: libffi/src/s390/ffitarget.h
===================================================================
--- libffi.orig/src/s390/ffitarget.h
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -102,6 +102,10 @@
+@@ -120,6 +120,10 @@
instructions.
* src/powerpc/aix_closure.S: Declare .ffi_closure_helper_DARWIN.
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -89,6 +89,11 @@
+@@ -107,6 +107,11 @@
Use them to handle ELF vs. ECOFF differences.
[__osf__] (_GLOBAL__F_ffi_call_osf): Define.
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -95,7 +95,12 @@
+@@ -113,7 +113,12 @@
2011-02-09 Anthony Green <green@moxielogic.com>
2011-02-09 Landon Fuller <landonf@macports.org>
-@@ -115,6 +120,7 @@
+@@ -133,6 +138,7 @@
* src/closures.c: Handle FFI_EXEC_TRAMPOLINE_TABLE case.
* build-ios.sh: New file.
* fficonfig.h.in, configure, Makefile.in: Rebuilt.
===================================================================
--- libffi.orig/src/prep_cif.c
+++ libffi/src/prep_cif.c
-@@ -1,5 +1,6 @@
+@@ -1,5 +1,5 @@
/* -----------------------------------------------------------------------
-- prep_cif.c - Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
-+ prep_cif.c - Copyright (c) 2011 Anthony Green
-+ Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
+- prep_cif.c - Copyright (c) 2012 Anthony Green
++ prep_cif.c - Copyright (c) 2011, 2012 Anthony Green
+ Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
-@@ -26,6 +27,12 @@
+@@ -27,6 +27,12 @@
#include <ffi_common.h>
#include <stdlib.h>
/* Round up to FFI_SIZEOF_ARG. */
#define STACK_ARG_SIZE(x) ALIGN(x, FFI_SIZEOF_ARG)
-@@ -45,9 +52,13 @@ static ffi_status initialize_aggregate(f
+@@ -46,9 +52,13 @@ static ffi_status initialize_aggregate(f
ptr = &(arg->elements[0]);
return FFI_BAD_TYPEDEF;
/* Perform a sanity check on the argument type */
-@@ -93,7 +104,8 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
- ffi_type **ptr;
+@@ -95,10 +105,11 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
FFI_ASSERT(cif != NULL);
-- FFI_ASSERT(abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI);
-+ if (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI))
+ #ifndef X86_WIN32
+- FFI_ASSERT((abi > FFI_FIRST_ABI) && (abi <= FFI_DEFAULT_ABI));
++ if ((abi > FFI_FIRST_ABI) && (abi <= FFI_DEFAULT_ABI))
+ return FFI_BAD_ABI;
+ #else
+- FFI_ASSERT(abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI
+- || abi == FFI_THISCALL);
++ if (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI || abi == FFI_THISCALL)
++ return FFI_BAD_ABI;
+ #endif
cif->abi = abi;
- cif->arg_types = atypes;
Index: libffi/src/x86/ffi64.c
===================================================================
--- libffi.orig/src/x86/ffi64.c
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -89,6 +89,11 @@
+@@ -107,6 +107,11 @@
Use them to handle ELF vs. ECOFF differences.
[__osf__] (_GLOBAL__F_ffi_call_osf): Define.
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -93,6 +93,11 @@
+@@ -111,6 +111,11 @@
* configure: Regenerate.
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -95,6 +95,17 @@
+@@ -113,6 +113,17 @@
2011-02-09 Anthony Green <green@moxielogic.com>
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -93,6 +93,29 @@
+@@ -111,6 +111,29 @@
* configure: Regenerate.
===================================================================
--- libffi.orig/configure.ac
+++ libffi/configure.ac
-@@ -322,13 +322,23 @@ if test x$TARGET = xX86_WIN64; then
+@@ -331,13 +331,23 @@ if test x$TARGET = xX86_WIN64; then
fi
fi
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -130,7 +130,7 @@
+@@ -148,7 +148,7 @@
* src/prep_cif.c (UNLIKELY, LIKELY): Define.
(initialize_aggregate): Check for bad types.
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -93,6 +93,14 @@
+@@ -111,6 +111,14 @@
* configure: Regenerate.
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -41,6 +41,11 @@
+@@ -59,6 +59,11 @@
* configure: Regenerate.
===================================================================
--- libffi.orig/configure.ac
+++ libffi/configure.ac
-@@ -339,7 +339,7 @@ case "$target" in
+@@ -348,7 +348,7 @@ case "$target" in
[Cannot use PROT_EXEC on this target, so, we revert to
alternative means])
;;
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -233,6 +233,10 @@
+@@ -251,6 +251,10 @@
* src/prep_cif.c: Push stack space computation into src/x86/ffi.c
for X86_ANY so return value space doesn't get added twice.
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -832,6 +832,11 @@
+@@ -850,6 +850,11 @@
* man/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -291,6 +291,11 @@
+@@ -309,6 +309,11 @@
* man/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -41,6 +41,12 @@
+@@ -59,6 +59,12 @@
* configure: Regenerate.
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -41,6 +41,12 @@
+@@ -59,6 +59,12 @@
* configure: Regenerate.
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -93,6 +93,10 @@
+@@ -111,6 +111,10 @@
* configure: Regenerate.
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -65,6 +65,26 @@
+@@ -83,6 +83,26 @@
X 10.7.
* configure: Rebuilt.
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -93,6 +93,11 @@
+@@ -111,6 +111,11 @@
* configure: Regenerate.
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -93,6 +93,12 @@
+@@ -111,6 +111,12 @@
* configure: Regenerate.
;;
avr32*-*-*)
-@@ -11450,7 +12171,7 @@ esac
+@@ -11459,7 +12180,7 @@ esac
if test $TARGETDIR = unknown; then
fi
if test x$TARGET = xMIPS; then
-@@ -11541,6 +12262,14 @@ else
+@@ -11550,6 +12271,14 @@ else
M68K_FALSE=
fi
if test x$TARGET = xPOWERPC; then
POWERPC_TRUE=
POWERPC_FALSE='#'
-@@ -11664,7 +12393,7 @@ fi
+@@ -11673,7 +12402,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
$as_echo_n "checking for ANSI C header files... " >&6; }
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-@@ -11777,7 +12506,7 @@ fi
+@@ -11786,7 +12515,7 @@ fi
for ac_func in memcpy
do :
ac_fn_c_check_func "$LINENO" "memcpy" "ac_cv_func_memcpy"
cat >>confdefs.h <<_ACEOF
#define HAVE_MEMCPY 1
_ACEOF
-@@ -11785,11 +12514,22 @@ _ACEOF
+@@ -11794,11 +12523,22 @@ _ACEOF
fi
done
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-@@ -11822,7 +12562,7 @@ fi
+@@ -11831,7 +12571,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
$as_echo_n "checking for alloca... " >&6; }
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-@@ -11841,7 +12581,7 @@ else
+@@ -11850,7 +12590,7 @@ else
#pragma alloca
# else
# ifndef alloca /* predefined by HP cc +Olibcalls */
# endif
# endif
# endif
-@@ -11885,7 +12625,7 @@ $as_echo "#define C_ALLOCA 1" >>confdefs
+@@ -11894,7 +12634,7 @@ $as_echo "#define C_ALLOCA 1" >>confdefs
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-@@ -11912,8 +12652,7 @@ if test $ac_cv_os_cray = yes; then
+@@ -11921,8 +12661,7 @@ if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
cat >>confdefs.h <<_ACEOF
#define CRAY_STACKSEG_END $ac_func
-@@ -11927,7 +12666,7 @@ fi
+@@ -11936,7 +12675,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
$as_echo_n "checking stack direction for C alloca... " >&6; }
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then :
-@@ -11982,7 +12721,7 @@ fi
+@@ -11991,7 +12730,7 @@ fi
# This bug is HP SR number 8606223364.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5
$as_echo_n "checking size of double... " >&6; }
$as_echo_n "(cached) " >&6
else
if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default"; then :
-@@ -11991,9 +12730,8 @@ else
+@@ -12000,9 +12739,8 @@ else
if test "$ac_cv_type_double" = yes; then
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
else
ac_cv_sizeof_double=0
fi
-@@ -12016,7 +12754,7 @@ _ACEOF
+@@ -12025,7 +12763,7 @@ _ACEOF
# This bug is HP SR number 8606223364.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long double" >&5
$as_echo_n "checking size of long double... " >&6; }
$as_echo_n "(cached) " >&6
else
if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long double))" "ac_cv_sizeof_long_double" "$ac_includes_default"; then :
-@@ -12025,9 +12763,8 @@ else
+@@ -12034,9 +12772,8 @@ else
if test "$ac_cv_type_long_double" = yes; then
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
else
ac_cv_sizeof_long_double=0
fi
-@@ -12061,7 +12798,7 @@ fi
+@@ -12070,7 +12807,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
$as_echo_n "(cached) " >&6
else
ac_cv_c_bigendian=unknown
-@@ -12279,14 +13016,14 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUI
+@@ -12288,14 +13025,14 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUI
;; #(
*)
$as_echo_n "(cached) " >&6
else
-@@ -12322,7 +13059,7 @@ $as_echo "#define HAVE_AS_CFI_PSEUDO_OP
+@@ -12331,7 +13068,7 @@ $as_echo "#define HAVE_AS_CFI_PSEUDO_OP
if test x$TARGET = xSPARC; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler and linker support unaligned pc related relocs" >&5
$as_echo_n "checking assembler and linker support unaligned pc related relocs... " >&6; }
$as_echo_n "(cached) " >&6
else
-@@ -12361,7 +13098,7 @@ $as_echo "#define HAVE_AS_SPARC_UA_PCREL
+@@ -12370,7 +13107,7 @@ $as_echo "#define HAVE_AS_SPARC_UA_PCREL
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .register pseudo-op support" >&5
$as_echo_n "checking assembler .register pseudo-op support... " >&6; }
$as_echo_n "(cached) " >&6
else
-@@ -12398,7 +13135,7 @@ fi
+@@ -12407,7 +13144,7 @@ fi
if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports pc related relocs" >&5
$as_echo_n "checking assembler supports pc related relocs... " >&6; }
$as_echo_n "(cached) " >&6
else
-@@ -12419,7 +13156,7 @@ $as_echo "#define HAVE_AS_X86_PCREL 1" >
+@@ -12428,7 +13165,7 @@ $as_echo "#define HAVE_AS_X86_PCREL 1" >
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .ascii pseudo-op support" >&5
$as_echo_n "checking assembler .ascii pseudo-op support... " >&6; }
$as_echo_n "(cached) " >&6
else
-@@ -12454,7 +13191,7 @@ $as_echo "#define HAVE_AS_ASCII_PSEUDO_O
+@@ -12463,7 +13200,7 @@ $as_echo "#define HAVE_AS_ASCII_PSEUDO_O
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .string pseudo-op support" >&5
$as_echo_n "checking assembler .string pseudo-op support... " >&6; }
$as_echo_n "(cached) " >&6
else
-@@ -12499,7 +13236,7 @@ esac
+@@ -12508,7 +13245,7 @@ esac
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_n "(cached) " >&6
else
-@@ -12521,7 +13258,7 @@ fi
+@@ -12530,7 +13267,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether .eh_frame section should be read-only" >&5
$as_echo_n "checking whether .eh_frame section should be read-only... " >&6; }
$as_echo_n "(cached) " >&6
else
-@@ -12555,7 +13292,7 @@ fi
+@@ -12564,7 +13301,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5
$as_echo_n "checking for __attribute__((visibility(\"hidden\")))... " >&6; }
$as_echo_n "(cached) " >&6
else
-@@ -12629,21 +13366,25 @@ $as_echo "#define USING_PURIFY 1" >>conf
+@@ -12638,21 +13375,25 @@ $as_echo "#define USING_PURIFY 1" >>conf
fi
if test "${multilib}" = "yes"; then
multilib_arg="--enable-multilib"
-@@ -12659,7 +13400,7 @@ ac_config_commands="$ac_config_commands
+@@ -12668,7 +13409,7 @@ ac_config_commands="$ac_config_commands
ac_config_links="$ac_config_links include/ffitarget.h:src/$TARGETDIR/ffitarget.h"
cat >confcache <<\_ACEOF
-@@ -12726,10 +13467,21 @@ $as_echo "$as_me: WARNING: cache variabl
+@@ -12735,10 +13476,21 @@ $as_echo "$as_me: WARNING: cache variabl
:end' >>confcache
if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
if test -w "$cache_file"; then
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-@@ -12745,6 +13497,7 @@ DEFS=-DHAVE_CONFIG_H
+@@ -12754,6 +13506,7 @@ DEFS=-DHAVE_CONFIG_H
ac_libobjs=
ac_ltlibobjs=
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-@@ -12768,132 +13521,136 @@ else
+@@ -12777,132 +13530,136 @@ else
fi
if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
ac_write_fail=0
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-@@ -12994,6 +13751,7 @@ fi
+@@ -13003,6 +13760,7 @@ fi
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
case $0 in #((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-@@ -13039,19 +13797,19 @@ export LANGUAGE
+@@ -13048,19 +13806,19 @@ export LANGUAGE
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
as_fn_exit $as_status
} # as_fn_error
-@@ -13247,7 +14005,7 @@ $as_echo X"$as_dir" |
+@@ -13256,7 +14014,7 @@ $as_echo X"$as_dir" |
test -d "$as_dir" && break
done
test -z "$as_dirs" || eval "mkdir $as_dirs"
} # as_fn_mkdir_p
-@@ -13300,8 +14058,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
+@@ -13309,8 +14067,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
-@@ -13342,6 +14100,7 @@ Usage: $0 [OPTION]... [TAG]...
+@@ -13351,6 +14109,7 @@ Usage: $0 [OPTION]... [TAG]...
-h, --help print this help, then exit
-V, --version print version number and configuration settings, then exit
-q, --quiet, --silent
do not print progress messages
-d, --debug don't remove temporary files
-@@ -13363,16 +14122,17 @@ $config_links
+@@ -13372,16 +14131,17 @@ $config_links
Configuration commands:
$config_commands
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
-@@ -13390,11 +14150,16 @@ ac_need_defaults=:
+@@ -13399,11 +14159,16 @@ ac_need_defaults=:
while test $# != 0
do
case $1 in
*)
ac_option=$1
ac_optarg=$2
-@@ -13408,12 +14173,15 @@ do
+@@ -13417,12 +14182,15 @@ do
ac_cs_recheck=: ;;
--version | --versio | --versi | --vers | --ver | --ve | --v | -V )
$as_echo "$ac_cs_version"; exit ;;
esac
as_fn_append CONFIG_FILES " '$ac_optarg'"
ac_need_defaults=false;;
-@@ -13426,7 +14194,7 @@ do
+@@ -13435,7 +14203,7 @@ do
ac_need_defaults=false;;
--he | --h)
# Conflict between --help and --header
Try \`$0 --help' for more information.";;
--help | --hel | -h )
$as_echo "$ac_cs_usage"; exit ;;
-@@ -13435,7 +14203,7 @@ Try \`$0 --help' for more information.";
+@@ -13444,7 +14212,7 @@ Try \`$0 --help' for more information.";
ac_cs_silent=: ;;
# This is an error.
Try \`$0 --help' for more information." ;;
*) as_fn_append ac_config_targets " $1"
-@@ -13479,20 +14247,6 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
+@@ -13488,20 +14256,6 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
#
# INIT-COMMANDS
#
AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-@@ -13531,13 +14285,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_
+@@ -13540,13 +14294,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_
lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -13552,14 +14313,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$l
+@@ -13561,14 +14322,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$l
lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -13592,12 +14356,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcod
+@@ -13601,12 +14365,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcod
hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -13652,8 +14416,13 @@ reload_flag \
+@@ -13661,8 +14425,13 @@ reload_flag \
OBJDUMP \
deplibs_check_method \
file_magic_cmd \
STRIP \
RANLIB \
CC \
-@@ -13663,12 +14432,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -13672,12 +14441,14 @@ lt_cv_sys_global_symbol_pipe \
lt_cv_sys_global_symbol_to_cdecl \
lt_cv_sys_global_symbol_to_c_name_address \
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
DSYMUTIL \
NMEDIT \
LIPO \
-@@ -13684,7 +14455,6 @@ no_undefined_flag \
+@@ -13693,7 +14464,6 @@ no_undefined_flag \
hardcode_libdir_flag_spec \
hardcode_libdir_flag_spec_ld \
hardcode_libdir_separator \
exclude_expsyms \
include_expsyms \
file_list_spec \
-@@ -13720,6 +14490,7 @@ module_cmds \
+@@ -13729,6 +14499,7 @@ module_cmds \
module_expsym_cmds \
export_symbols_cmds \
prelink_cmds \
postinstall_cmds \
postuninstall_cmds \
finish_cmds \
-@@ -13765,7 +14536,6 @@ for ac_config_target in $ac_config_targe
+@@ -13774,7 +14545,6 @@ for ac_config_target in $ac_config_targe
do
case $ac_config_target in
"fficonfig.h") CONFIG_HEADERS="$CONFIG_HEADERS fficonfig.h" ;;
"depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
"libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
"include") CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;;
-@@ -13776,8 +14546,9 @@ do
+@@ -13785,8 +14555,9 @@ do
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"testsuite/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/Makefile" ;;
"man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;;
esac
done
-@@ -13801,9 +14572,10 @@ fi
+@@ -13810,9 +14581,10 @@ fi
# after its creation but before its name has been assigned to `$tmp'.
$debug ||
{
' 0
trap 'as_fn_exit 1' 1 2 13 15
}
-@@ -13811,12 +14583,13 @@ $debug ||
+@@ -13820,12 +14592,13 @@ $debug ||
{
tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
# Set up the scripts for CONFIG_FILES section.
# No need to generate them if there are no CONFIG_FILES.
-@@ -13833,12 +14606,12 @@ if test "x$ac_cr" = x; then
+@@ -13842,12 +14615,12 @@ if test "x$ac_cr" = x; then
fi
ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
_ACEOF
-@@ -13847,18 +14620,18 @@ _ACEOF
+@@ -13856,18 +14629,18 @@ _ACEOF
echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
echo "_ACEOF"
} >conf$$subs.sh ||
else
ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
fi
-@@ -13866,7 +14639,7 @@ done
+@@ -13875,7 +14648,7 @@ done
rm -f conf$$subs.sh
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
_ACEOF
sed -n '
h
-@@ -13880,7 +14653,7 @@ s/'"$ac_delim"'$//
+@@ -13889,7 +14662,7 @@ s/'"$ac_delim"'$//
t delim
:nl
h
t more1
s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
p
-@@ -13894,7 +14667,7 @@ s/.\{148\}//
+@@ -13903,7 +14676,7 @@ s/.\{148\}//
t nl
:delim
h
t more2
s/["\\]/\\&/g; s/^/"/; s/$/"/
p
-@@ -13914,7 +14687,7 @@ t delim
+@@ -13923,7 +14696,7 @@ t delim
rm -f conf$$subs.awk
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
_ACAWK
for (key in S) S_is_set[key] = 1
FS = "\a"
-@@ -13946,21 +14719,29 @@ if sed "s/$ac_cr//" < /dev/null > /dev/n
+@@ -13955,21 +14728,29 @@ if sed "s/$ac_cr//" < /dev/null > /dev/n
sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
else
cat
s/^[^=]*=[ ]*$//
}'
fi
-@@ -13972,7 +14753,7 @@ fi # test -n "$CONFIG_FILES"
+@@ -13981,7 +14762,7 @@ fi # test -n "$CONFIG_FILES"
# No need to generate them if there are no CONFIG_HEADERS.
# This happens for instance with `./config.status Makefile'.
if test -n "$CONFIG_HEADERS"; then
BEGIN {
_ACEOF
-@@ -13984,11 +14765,11 @@ _ACEOF
+@@ -13993,11 +14774,11 @@ _ACEOF
# handling of long lines.
ac_delim='%!_!# '
for ac_last_try in false false :; do
else
ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
fi
-@@ -14073,7 +14854,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
+@@ -14082,7 +14863,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
_ACAWK
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
fi # test -n "$CONFIG_HEADERS"
-@@ -14086,7 +14867,7 @@ do
+@@ -14095,7 +14876,7 @@ do
esac
case $ac_mode$ac_tag in
:[FHL]*:*);;
:[FH]-) ac_tag=-:-;;
:[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
esac
-@@ -14105,7 +14886,7 @@ do
+@@ -14114,7 +14895,7 @@ do
for ac_f
do
case $ac_f in
*) # Look for the file first in the build tree, then in the source tree
# (if the path is not absolute). The absolute path cannot be DOS-style,
# because $ac_f cannot contain `:'.
-@@ -14114,7 +14895,7 @@ do
+@@ -14123,7 +14904,7 @@ do
[\\/$]*) false;;
*) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
esac ||
esac
case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
as_fn_append ac_file_inputs " '$ac_f'"
-@@ -14140,8 +14921,8 @@ $as_echo "$as_me: creating $ac_file" >&6
+@@ -14149,8 +14930,8 @@ $as_echo "$as_me: creating $ac_file" >&6
esac
case $ac_tag in
esac
;;
esac
-@@ -14277,23 +15058,24 @@ s&@INSTALL@&$ac_INSTALL&;t t
+@@ -14286,23 +15067,24 @@ s&@INSTALL@&$ac_INSTALL&;t t
s&@MKDIR_P@&$ac_MKDIR_P&;t t
$ac_datarootdir_hack
"
;;
:H)
#
-@@ -14302,21 +15084,21 @@ which seems to be undefined. Please mak
+@@ -14311,21 +15093,21 @@ which seems to be undefined. Please mak
if test x"$ac_file" != x-; then
{
$as_echo "/* $configure_input */" \
fi
# Compute "$ac_file"'s index in $config_headers.
_am_arg="$ac_file"
-@@ -14370,19 +15152,19 @@ $as_echo X"$_am_arg" |
+@@ -14379,19 +15161,19 @@ $as_echo X"$_am_arg" |
$as_echo "$as_me: linking $ac_source to $ac_file" >&6;}
if test ! -r "$ac_source"; then
fi
;;
:C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-@@ -14392,14 +15174,6 @@ $as_echo "$as_me: executing $ac_file com
+@@ -14401,14 +15183,6 @@ $as_echo "$as_me: executing $ac_file com
case $ac_file$ac_mode in
"depfiles":C) test x"$AMDEP_TRUE" != x"" || {
# Autoconf 2.62 quotes --file arguments for eval, but not when files
# are listed without --file. Let's play safe and only enable the eval
-@@ -14516,7 +15290,8 @@ $as_echo X"$file" |
+@@ -14525,7 +15299,8 @@ $as_echo X"$file" |
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
-@@ -14619,19 +15394,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -14628,19 +15403,42 @@ SP2NL=$lt_lt_SP2NL
# turn newlines into spaces.
NL2SP=$lt_lt_NL2SP
# A symbol stripping program.
STRIP=$lt_STRIP
-@@ -14661,6 +15459,12 @@ global_symbol_to_c_name_address=$lt_lt_c
+@@ -14670,6 +15468,12 @@ global_symbol_to_c_name_address=$lt_lt_c
# Transform the output of nm in a C name address pair when lib prefix is needed.
global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
# The name of the directory that contains temporary libtool files.
objdir=$objdir
-@@ -14670,6 +15474,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -14679,6 +15483,9 @@ MAGIC_CMD=$MAGIC_CMD
# Must we lock files when doing compilation?
need_locks=$lt_need_locks
# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
DSYMUTIL=$lt_DSYMUTIL
-@@ -14784,12 +15591,12 @@ with_gcc=$GCC
+@@ -14793,12 +15600,12 @@ with_gcc=$GCC
# Compiler flag to turn off builtin functions.
no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
# Compiler flag to prevent dynamic linking.
link_static_flag=$lt_lt_prog_compiler_static
-@@ -14876,9 +15683,6 @@ inherit_rpath=$inherit_rpath
+@@ -14885,9 +15692,6 @@ inherit_rpath=$inherit_rpath
# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=$link_all_deplibs
# Set to "yes" if exported symbols are required.
always_export_symbols=$always_export_symbols
-@@ -14894,6 +15698,9 @@ include_expsyms=$lt_include_expsyms
+@@ -14903,6 +15707,9 @@ include_expsyms=$lt_include_expsyms
# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=$lt_prelink_cmds
# Specify filename containing input files.
file_list_spec=$lt_file_list_spec
-@@ -14926,210 +15733,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -14935,210 +15742,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
# if finds mixed CR/LF and LF-only lines. Since sed operates in
# text mode, it properly converts lines to CR/LF. This bash problem
# is reportedly fixed, but why not run on old versions too?
(rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
chmod +x "$ofile"
-@@ -15149,7 +15915,7 @@ _ACEOF
+@@ -15158,7 +15924,7 @@ _ACEOF
ac_clean_files=$ac_clean_files_save
test $ac_write_fail = 0 ||
# configure is writing to config.log, and then calls config.status.
-@@ -15170,7 +15936,7 @@ if test "$no_create" != yes; then
+@@ -15179,7 +15945,7 @@ if test "$no_create" != yes; then
exec 5>>config.log
# Use ||, not &&, to avoid exiting from the if with $? = 1, which
# would make configure fail if this is the last instruction.
;;
avr32*-*-*)
-@@ -195,6 +199,7 @@ AM_CONDITIONAL(ALPHA, test x$TARGET = xA
+@@ -204,6 +208,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(POWERPC, test x$TARGET = xPOWERPC)
AM_CONDITIONAL(POWERPC_AIX, test x$TARGET = xPOWERPC_AIX)
AM_CONDITIONAL(POWERPC_DARWIN, test x$TARGET = xPOWERPC_DARWIN)
-@@ -414,21 +419,25 @@ AC_ARG_ENABLE(purify-safety,
+@@ -423,21 +428,25 @@ AC_ARG_ENABLE(purify-safety,
AC_DEFINE(USING_PURIFY, 1, [Define this if you are using Purify and want to suppress spurious messages.])
fi)
if test "${multilib}" = "yes"; then
multilib_arg="--enable-multilib"
-@@ -444,6 +453,6 @@ test -d src/$TARGETDIR || mkdir src/$TAR
+@@ -453,6 +462,6 @@ test -d src/$TARGETDIR || mkdir src/$TAR
AC_CONFIG_LINKS(include/ffitarget.h:src/$TARGETDIR/ffitarget.h)
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -225,6 +225,14 @@
+@@ -243,6 +243,14 @@
* testsuite/libffi.call/cls_longdouble.c: Likewise.
* testsuite/libffi.call/huge_struct.c: Likewise.
===================================================================
--- libffi.orig/src/prep_cif.c
+++ libffi/src/prep_cif.c
-@@ -110,7 +110,7 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
+@@ -116,7 +116,7 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
FFI_ASSERT_VALID_TYPE(cif->rtype);
/* x86, x86-64 and s390 stack space allocation is handled in prep_machdep. */
/* Make space for the return structure pointer */
if (cif->rtype->type == FFI_TYPE_STRUCT
#ifdef SPARC
-@@ -131,7 +131,7 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
+@@ -137,7 +137,7 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
check after the initialization. */
FFI_ASSERT_VALID_TYPE(*ptr);
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -17,6 +17,11 @@
+@@ -35,6 +35,11 @@
* testsuite/libffi.call/struct1_win32.c: New test.
* testsuite/libffi.call/struct2_win32.c: New test.
===================================================================
--- libffi.orig/src/prep_cif.c
+++ libffi/src/prep_cif.c
-@@ -90,20 +90,33 @@ static ffi_status initialize_aggregate(f
+@@ -90,14 +90,27 @@ static ffi_status initialize_aggregate(f
/* Perform machine independent ffi_cif preparation, then call
machine dependent routine. */
+ FFI_ASSERT((!isvariadic) || (nfixedargs >= 1));
+ FFI_ASSERT(nfixedargs <= ntotalargs);
+
- if (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI))
+ #ifndef X86_WIN32
+ if ((abi > FFI_FIRST_ABI) && (abi <= FFI_DEFAULT_ABI))
return FFI_BAD_ABI;
+@@ -108,7 +121,7 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
cif->abi = abi;
cif->arg_types = atypes;
cif->rtype = rtype;
cif->flags = 0;
-@@ -159,10 +172,31 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
+@@ -164,10 +177,31 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
cif->bytes = bytes;
/* Perform machine dependent cif processing */
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -41,6 +41,17 @@
+@@ -59,6 +59,17 @@
* configure: Regenerate.
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -262,6 +262,14 @@
+@@ -280,6 +280,14 @@
* fficonfig.h.in: Regenerate.
* src/x86/sysv.S (.eh_frame): Use .ascii, .string or error.
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -158,6 +158,13 @@
+@@ -176,6 +176,13 @@
(.eh_frame): Use FDE_ENCODING.
(.LASFDE1, .LASFDE2, LASFDE3): Simplify with FDE_ENCODE.
===================================================================
--- libffi.orig/configure.ac
+++ libffi/configure.ac
-@@ -315,6 +315,13 @@ if test x$TARGET = xX86 || test x$TARGET
+@@ -324,6 +324,13 @@ if test x$TARGET = xX86 || test x$TARGET
fi
fi
HAVE_LONG_DOUBLE
ALLOCA
PA64_HPUX_FALSE
-@@ -13230,6 +13231,61 @@ $as_echo "#define HAVE_AS_STRING_PSEUDO_
+@@ -13239,6 +13240,61 @@ $as_echo "#define HAVE_AS_STRING_PSEUDO_
fi
fi
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -41,6 +41,11 @@
+@@ -59,6 +59,11 @@
* configure: Regenerate.
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -100,6 +100,11 @@
+@@ -118,6 +118,11 @@
uintptr_t first.
* testsuite/libffi.call/cls_pointer_stack.c (main): Likewise.
===================================================================
--- libffi.orig/configure
+++ libffi/configure
-@@ -13146,10 +13146,10 @@ if ${libffi_cv_as_x86_pcrel+:} false; th
+@@ -13155,10 +13155,10 @@ if ${libffi_cv_as_x86_pcrel+:} false; th
$as_echo_n "(cached) " >&6
else
===================================================================
--- libffi.orig/configure.ac
+++ libffi/configure.ac
-@@ -277,10 +277,10 @@ fi
+@@ -286,10 +286,10 @@ fi
if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64; then
AC_CACHE_CHECK([assembler supports pc related relocs],
libffi_cv_as_x86_pcrel, [
/* -----------------------------------------------------------------------
- prep_cif.c - Copyright (c) 2011 Anthony Green
+ prep_cif.c - Copyright (c) 2011, 2012 Anthony Green
Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
Permission is hereby granted, free of charge, to any person obtaining
FFI_ASSERT((!isvariadic) || (nfixedargs >= 1));
FFI_ASSERT(nfixedargs <= ntotalargs);
- if (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI))
+#ifndef X86_WIN32
+ if ((abi > FFI_FIRST_ABI) && (abi <= FFI_DEFAULT_ABI))
return FFI_BAD_ABI;
+#else
+ if (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI || abi == FFI_THISCALL)
+ return FFI_BAD_ABI;
+#endif
cif->abi = abi;
cif->arg_types = atypes;
#ifdef X86_WIN32
void FFI_HIDDEN ffi_closure_STDCALL (ffi_closure *)
__attribute__ ((regparm(1)));
+void FFI_HIDDEN ffi_closure_THISCALL (ffi_closure *)
+ __attribute__ ((regparm(1)));
#endif
#ifdef X86_WIN64
void FFI_HIDDEN ffi_closure_win64 (ffi_closure *);
*(unsigned int*) &__tramp[6] = __dis; /* jmp __fun */ \
}
+#define FFI_INIT_TRAMPOLINE_THISCALL(TRAMP,FUN,CTX,SIZE) \
+{ unsigned char *__tramp = (unsigned char*)(TRAMP); \
+ unsigned int __fun = (unsigned int)(FUN); \
+ unsigned int __ctx = (unsigned int)(CTX); \
+ unsigned int __dis = __fun - (__ctx + 22); \
+ unsigned short __size = (unsigned short)(SIZE); \
+ *(unsigned int *) &__tramp[0] = 0x8324048b; /* mov (%esp), %eax */ \
+ *(unsigned int *) &__tramp[4] = 0x4c890cec; /* sub $12, %esp */ \
+ *(unsigned int *) &__tramp[8] = 0x04890424; /* mov %ecx, 4(%esp) */ \
+ *(unsigned char*) &__tramp[12] = 0x24; /* mov %eax, (%esp) */ \
+ *(unsigned char*) &__tramp[13] = 0xb8; \
+ *(unsigned int *) &__tramp[14] = __size; /* mov __size, %eax */ \
+ *(unsigned int *) &__tramp[18] = 0x08244c8d; /* lea 8(%esp), %ecx */ \
+ *(unsigned int *) &__tramp[22] = 0x4802e8c1; /* shr $2, %eax ; dec %eax */ \
+ *(unsigned short*) &__tramp[26] = 0x0b74; /* jz 1f */ \
+ *(unsigned int *) &__tramp[28] = 0x8908518b; /* 2b: mov 8(%ecx), %edx */ \
+ *(unsigned int *) &__tramp[32] = 0x04c18311; /* mov %edx, (%ecx) ; add $4, %ecx */ \
+ *(unsigned char*) &__tramp[36] = 0x48; /* dec %eax */ \
+ *(unsigned short*) &__tramp[37] = 0xf575; /* jnz 2b ; 1f: */ \
+ *(unsigned char*) &__tramp[39] = 0xb8; \
+ *(unsigned int*) &__tramp[40] = __ctx; /* movl __ctx, %eax */ \
+ *(unsigned char *) &__tramp[44] = 0xe8; \
+ *(unsigned int*) &__tramp[45] = __dis; /* call __fun */ \
+ *(unsigned char*) &__tramp[49] = 0xc2; /* ret */ \
+ *(unsigned short*) &__tramp[50] = (__size + 8); /* ret (__size + 8) */ \
+ }
+
#define FFI_INIT_TRAMPOLINE_STDCALL(TRAMP,FUN,CTX,SIZE) \
{ unsigned char *__tramp = (unsigned char*)(TRAMP); \
unsigned int __fun = (unsigned int)(FUN); \
(void*)codeloc);
}
#ifdef X86_WIN32
+ else if (cif->abi == FFI_THISCALL)
+ {
+ FFI_INIT_TRAMPOLINE_THISCALL (&closure->tramp[0],
+ &ffi_closure_THISCALL,
+ (void*)codeloc,
+ cif->bytes);
+ }
else if (cif->abi == FFI_STDCALL)
{
FFI_INIT_TRAMPOLINE_STDCALL (&closure->tramp[0],
#define FFI_NATIVE_RAW_API 0
#else
#ifdef X86_WIN32
-#define FFI_TRAMPOLINE_SIZE 13
+#define FFI_TRAMPOLINE_SIZE 52
#else
#ifdef X86_WIN64
#define FFI_TRAMPOLINE_SIZE 29
ret
ffi_call_win32 ENDP
+ffi_closure_THISCALL PROC NEAR FORCEFRAME
+ push ebp
+ mov ebp, esp
+ sub esp, 40
+ lea edx, [ebp -24]
+ mov [ebp - 12], edx /* resp */
+ lea edx, [ebp + 12] /* account for stub return address on stack */
+ jmp stub
+ffi_closure_THISCALL ENDP
+
ffi_closure_SYSV PROC NEAR FORCEFRAME
;; the ffi_closure ctx is passed in eax by the trampoline.
lea edx, [ebp - 24]
mov [ebp - 12], edx ;; resp
lea edx, [ebp + 8]
+stub:
mov [esp + 8], edx ;; args
lea edx, [ebp - 12]
mov [esp + 4], edx ;; &resp
popl %ebp
ret
.ffi_call_win32_end:
+ .balign 16
+ .globl _ffi_closure_THISCALL
+#ifndef __OS2__
+ .def _ffi_closure_THISCALL; .scl 2; .type 32; .endef
+#endif
+_ffi_closure_THISCALL:
+ pushl %ebp
+ movl %esp, %ebp
+ subl $40, %esp
+ leal -24(%ebp), %edx
+ movl %edx, -12(%ebp) /* resp */
+ leal 12(%ebp), %edx /* account for stub return address on stack */
+ jmp .stub
.LFE1:
# This assumes we are using gas.
leal -24(%ebp), %edx
movl %edx, -12(%ebp) /* resp */
leal 8(%ebp), %edx
+.stub:
movl %edx, 4(%esp) /* args = __builtin_dwarf_cfa () */
leal -12(%ebp), %edx
movl %edx, (%esp) /* &resp */
--- /dev/null
+/* Area: closure_call (thiscall convention)
+ Purpose: Check handling when caller expects thiscall callee
+ Limitations: none.
+ PR: none.
+ Originator: <ktietz@redhat.com> */
+
+/* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */
+#include "ffitest.h"
+
+static void
+closure_test_thiscall(ffi_cif* cif __UNUSED__, void* resp, void** args,
+ void* userdata)
+{
+ *(ffi_arg*)resp =
+ (int)*(int *)args[0] + (int)(*(int *)args[1])
+ + (int)(*(int *)args[2]) + (int)(*(int *)args[3])
+ + (int)(intptr_t)userdata;
+
+ printf("%d %d %d %d: %d\n",
+ (int)*(int *)args[0], (int)(*(int *)args[1]),
+ (int)(*(int *)args[2]), (int)(*(int *)args[3]),
+ (int)*(ffi_arg *)resp);
+
+}
+
+typedef int (__thiscall *closure_test_type0)(int, int, int, int);
+
+int main (void)
+{
+ ffi_cif cif;
+ void *code;
+ ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
+ ffi_type * cl_arg_types[17];
+ int res;
+ void* sp_pre;
+ void* sp_post;
+ char buf[1024];
+
+ cl_arg_types[0] = &ffi_type_uint;
+ cl_arg_types[1] = &ffi_type_uint;
+ cl_arg_types[2] = &ffi_type_uint;
+ cl_arg_types[3] = &ffi_type_uint;
+ cl_arg_types[4] = NULL;
+
+ /* Initialize the cif */
+ CHECK(ffi_prep_cif(&cif, FFI_THISCALL, 4,
+ &ffi_type_sint, cl_arg_types) == FFI_OK);
+
+ CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_thiscall,
+ (void *) 3 /* userdata */, code) == FFI_OK);
+
+ asm volatile (" movl %%esp,%0" : "=g" (sp_pre));
+ res = (*(closure_test_type0)code)(0, 1, 2, 3);
+ asm volatile (" movl %%esp,%0" : "=g" (sp_post));
+ /* { dg-output "0 1 2 3: 9" } */
+
+ printf("res: %d\n",res);
+ /* { dg-output "\nres: 9" } */
+
+ sprintf(buf, "mismatch: pre=%p vs post=%p", sp_pre, sp_post);
+ printf("stack pointer %s\n", (sp_pre == sp_post ? "match" : buf));
+ /* { dg-output "\nstack pointer match" } */
+ exit(0);
+}