Rebased from gcc
authorAnthony Green <green@moxielogic.com>
Fri, 10 Feb 2012 18:06:46 +0000 (13:06 -0500)
committerAnthony Green <green@moxielogic.com>
Fri, 10 Feb 2012 18:06:46 +0000 (13:06 -0500)
45 files changed:
ChangeLog
configure
configure.ac
fficonfig.h.in
patches/aix-ibm-xlc
patches/alpha
patches/amiga
patches/autoconf-archive-update
patches/bad-abi-fix
patches/darwin-EH-fix
patches/darwin11
patches/debug-build
patches/ffi_last_abi
patches/fix-grammar
patches/fix-ppc32
patches/fix-xfails
patches/fix_maxopt
patches/hpux-mallinfo
patches/interix
patches/ios
patches/ios-fixes
patches/irix
patches/kfreebsd-mmap
patches/ml64-safeseh
patches/more-openbsd
patches/msvcc-warning
patches/powerpc-ffi-softfloat
patches/powerpc-sysv-without-string-ops
patches/ppc64-darwin
patches/remove-debug-code
patches/sparc-abi-check
patches/sparc-v8-aggregate-returns
patches/stand-alone
patches/stdcall-x86-closure-fix
patches/unlikely
patches/variadic
patches/win64-struct-args
patches/win64-underscore
patches/windows-ce-arm
patches/x86_pcrel_test
src/prep_cif.c
src/x86/ffi.c
src/x86/ffitarget.h
src/x86/win32.S
testsuite/libffi.call/closure_thiscall.c [new file with mode: 0644]

index 0558cf0..81f35ef 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+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
index 0d830ab..cec095b 100755 (executable)
--- a/configure
+++ b/configure
@@ -13257,6 +13257,15 @@ case "$host" in
 
   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-*-*)
index df20c2f..efe013a 100644 (file)
@@ -189,6 +189,15 @@ case "$host" in
 
   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-*-*)
index 168ebc3..b54b273 100644 (file)
 /* 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
index a2cc902..88ba200 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- libffi.orig/ChangeLog
 +++ libffi/ChangeLog
-@@ -93,6 +93,19 @@
+@@ -111,6 +111,19 @@
  
        * configure: Regenerate.
  
@@ -22,7 +22,7 @@ Index: libffi/ChangeLog
  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.
@@ -178,7 +178,7 @@ Index: libffi/configure
 ===================================================================
 --- 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
  
@@ -277,7 +277,7 @@ Index: libffi/configure.ac
 ===================================================================
 --- 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
  
index ed452ef..fe439e9 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- 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.
  
index e56ce71..e16d8df 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- 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>
index 66422cd..03ff9c8 100644 (file)
@@ -2074,7 +2074,7 @@ Index: libffi/configure
        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
  #
@@ -2089,7 +2089,7 @@ Index: libffi/configure
  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" ;;
@@ -2097,7 +2097,7 @@ Index: libffi/configure
      "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
@@ -2266,7 +2266,7 @@ Index: libffi/include/Makefile.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@
@@ -2274,7 +2274,7 @@ Index: libffi/include/Makefile.in
  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@
@@ -2300,7 +2300,7 @@ Index: libffi/man/Makefile.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 \
-@@ -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@
@@ -2308,7 +2308,7 @@ Index: libffi/man/Makefile.in
  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@
@@ -2334,7 +2334,7 @@ Index: libffi/testsuite/Makefile.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 \
-@@ -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@
@@ -2342,7 +2342,7 @@ Index: libffi/testsuite/Makefile.in
  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@
index 412d33a..5d6e1eb 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- libffi.orig/ChangeLog
 +++ libffi/ChangeLog
-@@ -93,6 +93,23 @@
+@@ -111,6 +111,23 @@
  
        * configure: Regenerate.
  
index 4d857b4..2453498 100644 (file)
@@ -28,7 +28,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- 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.
  
index 657c166..bbd7a9a 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- libffi.orig/ChangeLog
 +++ libffi/ChangeLog
-@@ -41,6 +41,14 @@
+@@ -59,6 +59,14 @@
  
        * configure: Regenerate.
  
@@ -80,7 +80,7 @@ Index: libffi/configure
        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
  
@@ -112,7 +112,7 @@ Index: libffi/configure
  
  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
  
@@ -127,7 +127,7 @@ Index: libffi/configure.ac
 ===================================================================
 --- 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])
       ;;
index 7571f3f..cea74a7 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- 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.
  
@@ -54,7 +54,7 @@ Index: libffi/configure.ac
  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)
@@ -66,27 +66,892 @@ Index: libffi/Makefile.in
 ===================================================================
 --- 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
@@ -121,7 +986,7 @@ Index: libffi/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
  
@@ -136,7 +1001,7 @@ Index: libffi/configure
  
  # 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
  
index ab8eb22..f68cc16 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- 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.
  
@@ -221,15 +221,23 @@ Index: libffi/src/prep_cif.c
 ===================================================================
 --- 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
index 4911b92..efaf4c0 100644 (file)
@@ -15,7 +15,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- libffi.orig/ChangeLog
 +++ libffi/ChangeLog
-@@ -102,6 +102,10 @@
+@@ -120,6 +120,10 @@
        instructions.
        * src/powerpc/aix_closure.S: Declare .ffi_closure_helper_DARWIN.
  
index e2699be..ad91ac7 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- 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.
  
index 78e5264..2d37b2e 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- libffi.orig/ChangeLog
 +++ libffi/ChangeLog
-@@ -95,7 +95,12 @@
+@@ -113,7 +113,12 @@
  
  2011-02-09  Anthony Green <green@moxielogic.com>
  
@@ -16,7 +16,7 @@ Index: libffi/ChangeLog
  
  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.
@@ -28,15 +28,14 @@ Index: libffi/src/prep_cif.c
 ===================================================================
 --- 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>
  
@@ -49,7 +48,7 @@ Index: libffi/src/prep_cif.c
  /* 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]);
  
@@ -64,16 +63,21 @@ Index: libffi/src/prep_cif.c
        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
index d6cbd2e..1ad2032 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- 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.
  
index 8a9536d..d96a132 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- libffi.orig/ChangeLog
 +++ libffi/ChangeLog
-@@ -93,6 +93,11 @@
+@@ -111,6 +111,11 @@
  
        * configure: Regenerate.
  
index 0c83b13..fac2a2e 100644 (file)
@@ -64,7 +64,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- libffi.orig/ChangeLog
 +++ libffi/ChangeLog
-@@ -95,6 +95,17 @@
+@@ -113,6 +113,17 @@
  
  2011-02-09  Anthony Green <green@moxielogic.com>
  
index a50d8a5..fadbded 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- libffi.orig/ChangeLog
 +++ libffi/ChangeLog
-@@ -93,6 +93,29 @@
+@@ -111,6 +111,29 @@
  
        * configure: Regenerate.
  
@@ -311,7 +311,7 @@ Index: libffi/configure.ac
 ===================================================================
 --- 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
  
index 502f46e..e0c89f1 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- 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.
  
index 8c63ece..8d45db7 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- libffi.orig/ChangeLog
 +++ libffi/ChangeLog
-@@ -93,6 +93,14 @@
+@@ -111,6 +111,14 @@
  
        * configure: Regenerate.
  
index 7b801bc..09e715b 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- libffi.orig/ChangeLog
 +++ libffi/ChangeLog
-@@ -41,6 +41,11 @@
+@@ -59,6 +59,11 @@
  
        * configure: Regenerate.
  
@@ -18,7 +18,7 @@ Index: libffi/configure.ac
 ===================================================================
 --- 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])
       ;;
index d5c643f..34b0b5d 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- 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.
  
index 1bf3e6e..61bcc57 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- libffi.orig/ChangeLog
 +++ libffi/ChangeLog
-@@ -832,6 +832,11 @@
+@@ -850,6 +850,11 @@
        * man/Makefile.in: Regenerate.
        * testsuite/Makefile.in: Regenerate.
  
index c9d2691..876fe1b 100644 (file)
@@ -55,7 +55,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- libffi.orig/ChangeLog
 +++ libffi/ChangeLog
-@@ -291,6 +291,11 @@
+@@ -309,6 +309,11 @@
        * man/Makefile.in: Regenerate.
        * testsuite/Makefile.in: Regenerate.
  
index 215a312..441c097 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- libffi.orig/ChangeLog
 +++ libffi/ChangeLog
-@@ -41,6 +41,12 @@
+@@ -59,6 +59,12 @@
  
        * configure: Regenerate.
  
index c647583..1748f56 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- libffi.orig/ChangeLog
 +++ libffi/ChangeLog
-@@ -41,6 +41,12 @@
+@@ -59,6 +59,12 @@
  
        * configure: Regenerate.
  
index f655ed9..37caa9c 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- libffi.orig/ChangeLog
 +++ libffi/ChangeLog
-@@ -93,6 +93,10 @@
+@@ -111,6 +111,10 @@
  
        * configure: Regenerate.
  
index 71990b8..49c6349 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- libffi.orig/ChangeLog
 +++ libffi/ChangeLog
-@@ -65,6 +65,26 @@
+@@ -83,6 +83,26 @@
        X 10.7.
        * configure: Rebuilt.
  
index 1a3f19e..dfcb718 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- libffi.orig/ChangeLog
 +++ libffi/ChangeLog
-@@ -93,6 +93,11 @@
+@@ -111,6 +111,11 @@
  
        * configure: Regenerate.
  
index 87dfaf7..2e71dec 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- libffi.orig/ChangeLog
 +++ libffi/ChangeLog
-@@ -93,6 +93,12 @@
+@@ -111,6 +111,12 @@
  
        * configure: Regenerate.
  
index 6c7aa8f..24db447 100644 (file)
@@ -4094,7 +4094,7 @@ Index: libffi/configure
        ;;
  
    avr32*-*-*)
-@@ -11450,7 +12171,7 @@ esac
+@@ -11459,7 +12180,7 @@ esac
  
  
  if test $TARGETDIR = unknown; then
@@ -4103,7 +4103,7 @@ Index: libffi/configure
  fi
  
   if test x$TARGET = xMIPS; then
-@@ -11541,6 +12262,14 @@ else
+@@ -11550,6 +12271,14 @@ else
    M68K_FALSE=
  fi
  
@@ -4118,7 +4118,7 @@ Index: libffi/configure
   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; }
@@ -4127,7 +4127,7 @@ Index: libffi/configure
    $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"
@@ -4136,7 +4136,7 @@ Index: libffi/configure
    cat >>confdefs.h <<_ACEOF
  #define HAVE_MEMCPY 1
  _ACEOF
-@@ -11785,11 +12514,22 @@ _ACEOF
+@@ -11794,11 +12523,22 @@ _ACEOF
  fi
  done
  
@@ -4160,7 +4160,7 @@ Index: libffi/configure
    $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; }
@@ -4169,7 +4169,7 @@ Index: libffi/configure
    $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 */
@@ -4178,7 +4178,7 @@ Index: libffi/configure
  #    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; }
@@ -4187,7 +4187,7 @@ Index: libffi/configure
    $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"
@@ -4197,7 +4197,7 @@ Index: libffi/configure
  
  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; }
@@ -4206,7 +4206,7 @@ Index: libffi/configure
    $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; }
@@ -4215,7 +4215,7 @@ Index: libffi/configure
    $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;}
@@ -4227,7 +4227,7 @@ Index: libffi/configure
     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; }
@@ -4236,7 +4236,7 @@ Index: libffi/configure
    $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;}
@@ -4248,7 +4248,7 @@ Index: libffi/configure
     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; }
@@ -4257,7 +4257,7 @@ Index: libffi/configure
    $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
  
       ;; #(
     *)
@@ -4274,7 +4274,7 @@ Index: libffi/configure
    $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; }
@@ -4283,7 +4283,7 @@ Index: libffi/configure
    $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; }
@@ -4292,7 +4292,7 @@ Index: libffi/configure
    $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; }
@@ -4301,7 +4301,7 @@ Index: libffi/configure
    $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; }
@@ -4310,7 +4310,7 @@ Index: libffi/configure
    $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; }
@@ -4319,7 +4319,7 @@ Index: libffi/configure
    $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; }
@@ -4328,7 +4328,7 @@ Index: libffi/configure
    $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; }
@@ -4337,7 +4337,7 @@ Index: libffi/configure
    $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; }
@@ -4346,7 +4346,7 @@ Index: libffi/configure
    $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
  
  
@@ -4385,7 +4385,7 @@ Index: libffi/configure
  
  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"
  
  
@@ -4394,7 +4394,7 @@ Index: libffi/configure
  
  
  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
@@ -4418,7 +4418,7 @@ Index: libffi/configure
    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=
@@ -4426,7 +4426,7 @@ Index: libffi/configure
  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
@@ -4595,7 +4595,7 @@ Index: libffi/configure
  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.
@@ -4603,7 +4603,7 @@ Index: libffi/configure
  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
  
  
@@ -4631,7 +4631,7 @@ Index: libffi/configure
    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"
@@ -4640,7 +4640,7 @@ Index: libffi/configure
  
  
  } # 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="
@@ -4651,7 +4651,7 @@ Index: libffi/configure
  
    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
@@ -4659,7 +4659,7 @@ Index: libffi/configure
    -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
  
@@ -4682,7 +4682,7 @@ Index: libffi/configure
  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
@@ -4700,7 +4700,7 @@ Index: libffi/configure
    *)
      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 ;;
@@ -4716,7 +4716,7 @@ Index: libffi/configure
      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
@@ -4725,7 +4725,7 @@ Index: libffi/configure
  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.
@@ -4734,7 +4734,7 @@ Index: libffi/configure
  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
  #
@@ -4755,7 +4755,7 @@ Index: libffi/configure
  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"`'
@@ -4776,7 +4776,7 @@ Index: libffi/configure
  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"`'
@@ -4795,7 +4795,7 @@ Index: libffi/configure
  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"`'
@@ -4809,7 +4809,7 @@ Index: libffi/configure
  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 \
@@ -4823,7 +4823,7 @@ Index: libffi/configure
  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 \
@@ -4839,7 +4839,7 @@ Index: libffi/configure
  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 \
@@ -4847,7 +4847,7 @@ Index: libffi/configure
  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 \
@@ -4855,7 +4855,7 @@ Index: libffi/configure
  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" ;;
@@ -4863,7 +4863,7 @@ Index: libffi/configure
      "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" ;;
@@ -4874,7 +4874,7 @@ Index: libffi/configure
    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 ||
  {
@@ -4887,7 +4887,7 @@ Index: libffi/configure
  ' 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` &&
@@ -4903,7 +4903,7 @@ Index: libffi/configure
  
  # 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
@@ -4918,7 +4918,7 @@ Index: libffi/configure
  _ACEOF
  
  
-@@ -13847,18 +14620,18 @@ _ACEOF
+@@ -13856,18 +14629,18 @@ _ACEOF
    echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
    echo "_ACEOF"
  } >conf$$subs.sh ||
@@ -4941,7 +4941,7 @@ Index: libffi/configure
    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
@@ -4950,7 +4950,7 @@ Index: libffi/configure
  _ACEOF
  sed -n '
  h
-@@ -13880,7 +14653,7 @@ s/'"$ac_delim"'$//
+@@ -13889,7 +14662,7 @@ s/'"$ac_delim"'$//
  t delim
  :nl
  h
@@ -4959,7 +4959,7 @@ Index: libffi/configure
  t more1
  s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
  p
-@@ -13894,7 +14667,7 @@ s/.\{148\}//
+@@ -13903,7 +14676,7 @@ s/.\{148\}//
  t nl
  :delim
  h
@@ -4968,7 +4968,7 @@ Index: libffi/configure
  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
@@ -4977,7 +4977,7 @@ Index: libffi/configure
    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
@@ -5016,7 +5016,7 @@ Index: libffi/configure
  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
@@ -5025,7 +5025,7 @@ Index: libffi/configure
  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
@@ -5040,7 +5040,7 @@ Index: libffi/configure
    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
@@ -5049,7 +5049,7 @@ Index: libffi/configure
  fi # test -n "$CONFIG_HEADERS"
  
  
-@@ -14086,7 +14867,7 @@ do
+@@ -14095,7 +14876,7 @@ do
    esac
    case $ac_mode$ac_tag in
    :[FHL]*:*);;
@@ -5058,7 +5058,7 @@ Index: libffi/configure
    :[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
@@ -5067,7 +5067,7 @@ Index: libffi/configure
        *) # 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 ||
@@ -5076,7 +5076,7 @@ Index: libffi/configure
        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
@@ -5087,7 +5087,7 @@ Index: libffi/configure
      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
  "
@@ -5122,7 +5122,7 @@ Index: libffi/configure
   ;;
    :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  */" \
@@ -5152,7 +5152,7 @@ Index: libffi/configure
    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
@@ -5175,7 +5175,7 @@ Index: libffi/configure
    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
@@ -5190,7 +5190,7 @@ Index: libffi/configure
      "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,
@@ -5200,7 +5200,7 @@ Index: libffi/configure
  #   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
  
@@ -5244,7 +5244,7 @@ Index: libffi/configure
  # 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
  
@@ -5257,7 +5257,7 @@ Index: libffi/configure
  # 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
  
@@ -5267,7 +5267,7 @@ Index: libffi/configure
  # 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
  
@@ -5283,7 +5283,7 @@ Index: libffi/configure
  # 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
  
@@ -5293,7 +5293,7 @@ Index: libffi/configure
  # 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
  
@@ -5303,7 +5303,7 @@ Index: libffi/configure
  # 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?
@@ -5674,7 +5674,7 @@ Index: libffi/configure
      (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 ||
@@ -5683,7 +5683,7 @@ Index: libffi/configure
  
  
  # 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.
@@ -5739,7 +5739,7 @@ Index: libffi/configure.ac
        ;;
  
    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)
@@ -5747,7 +5747,7 @@ Index: libffi/configure.ac
  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)
  
@@ -5787,7 +5787,7 @@ Index: libffi/configure.ac
  
  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)
  
index 7f7eae8..159d51f 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- 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.
  
@@ -21,7 +21,7 @@ Index: libffi/src/prep_cif.c
 ===================================================================
 --- 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. */
@@ -30,7 +30,7 @@ Index: libffi/src/prep_cif.c
    /* 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);
  
index b4f6ac8..a4b24d0 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- 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.
  
index d3e09bc..745fc58 100644 (file)
@@ -265,7 +265,7 @@ Index: libffi/src/prep_cif.c
 ===================================================================
 --- 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. */
  
@@ -292,8 +292,10 @@ Index: libffi/src/prep_cif.c
 +  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;
@@ -302,7 +304,7 @@ Index: libffi/src/prep_cif.c
    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 */
@@ -572,7 +574,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- libffi.orig/ChangeLog
 +++ libffi/ChangeLog
-@@ -41,6 +41,17 @@
+@@ -59,6 +59,17 @@
  
        * configure: Regenerate.
  
index faf6a99..b521ac8 100644 (file)
@@ -51,7 +51,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- 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.
  
index 1193663..12b714b 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- 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.
  
@@ -20,7 +20,7 @@ Index: libffi/configure.ac
 ===================================================================
 --- 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
  
@@ -924,7 +924,7 @@ Index: libffi/configure
  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
index 486d8ce..e786893 100644 (file)
@@ -50,7 +50,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- libffi.orig/ChangeLog
 +++ libffi/ChangeLog
-@@ -41,6 +41,11 @@
+@@ -59,6 +59,11 @@
  
        * configure: Regenerate.
  
index ccaaa68..519a07e 100644 (file)
@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
 ===================================================================
 --- 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.
  
@@ -18,7 +18,7 @@ Index: libffi/configure
 ===================================================================
 --- 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
  
@@ -36,7 +36,7 @@ Index: libffi/configure.ac
 ===================================================================
 --- 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, [
index 0e2e116..cc2fb74 100644 (file)
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------
-   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
@@ -111,8 +111,13 @@ ffi_status FFI_HIDDEN ffi_prep_cif_core(ffi_cif *cif, ffi_abi abi,
   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;
index c5f962c..9343c26 100644 (file)
@@ -428,6 +428,8 @@ void FFI_HIDDEN ffi_closure_raw_SYSV (ffi_raw_closure *)
 #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 *);
@@ -587,6 +589,33 @@ ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, void **avalue,
    *(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); \
@@ -629,6 +658,13 @@ ffi_prep_closure_loc (ffi_closure* closure,
                            (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],
index cfda21c..7c2b588 100644 (file)
@@ -105,7 +105,7 @@ typedef enum ffi_abi {
 #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
index e472d62..e5c93ec 100644 (file)
@@ -170,6 +170,16 @@ ca_epilogue:
         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.
 
@@ -177,6 +187,7 @@ ffi_closure_SYSV PROC NEAR FORCEFRAME
         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
@@ -573,6 +584,19 @@ _ffi_call_win32:
         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.
@@ -591,6 +615,7 @@ _ffi_closure_SYSV:
        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 */
diff --git a/testsuite/libffi.call/closure_thiscall.c b/testsuite/libffi.call/closure_thiscall.c
new file mode 100644 (file)
index 0000000..6c46f35
--- /dev/null
@@ -0,0 +1,64 @@
+/* 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);
+}