Ensure that users don't include ffitarget.h directly
authorAnthony Green <green@moxielogic.com>
Thu, 23 Feb 2012 12:01:13 +0000 (07:01 -0500)
committerAnthony Green <green@moxielogic.com>
Thu, 23 Feb 2012 12:01:13 +0000 (07:01 -0500)
114 files changed:
.pc/aix-ibm-xlc/ChangeLog
.pc/aix-ibm-xlc/configure
.pc/aix-ibm-xlc/configure.ac
.pc/alpha/ChangeLog
.pc/amiga/ChangeLog
.pc/amiga/configure
.pc/amiga/configure.ac
.pc/applied-patches
.pc/autoconf-archive-update/Makefile.in
.pc/autoconf-archive-update/acinclude.m4 [deleted file]
.pc/autoconf-archive-update/configure
.pc/autoconf-archive-update/include/Makefile.in
.pc/autoconf-archive-update/m4/ax_configure_args.m4 [deleted file]
.pc/autoconf-archive-update/m4/ax_gcc_x86_cpuid.m4 [deleted file]
.pc/autoconf-archive-update/man/Makefile.in
.pc/autoconf-archive-update/testsuite/Makefile.in
.pc/bad-abi-fix/ChangeLog
.pc/bad-abi-fix/src/prep_cif.c
.pc/darwin-EH-fix/ChangeLog
.pc/darwin11/ChangeLog
.pc/darwin11/configure
.pc/darwin11/configure.ac
.pc/debug-build/ChangeLog
.pc/debug-build/Makefile.in
.pc/debug-build/configure
.pc/debug-build/configure.ac
.pc/ffi_last_abi/ChangeLog
.pc/ffi_last_abi/src/prep_cif.c
.pc/ffi_last_abi/src/x86/ffitarget.h
.pc/ffitarget-include-fix/.timestamp [new file with mode: 0644]
.pc/ffitarget-include-fix/src/alpha/ffitarget.h [new file with mode: 0644]
.pc/ffitarget-include-fix/src/arm/ffitarget.h [new file with mode: 0644]
.pc/ffitarget-include-fix/src/avr32/ffitarget.h [new file with mode: 0644]
.pc/ffitarget-include-fix/src/cris/ffitarget.h [new file with mode: 0644]
.pc/ffitarget-include-fix/src/frv/ffitarget.h [new file with mode: 0644]
.pc/ffitarget-include-fix/src/ia64/ffitarget.h [new file with mode: 0644]
.pc/ffitarget-include-fix/src/m32r/ffitarget.h [new file with mode: 0644]
.pc/ffitarget-include-fix/src/m68k/ffitarget.h [new file with mode: 0644]
.pc/ffitarget-include-fix/src/mips/ffitarget.h [new file with mode: 0644]
.pc/ffitarget-include-fix/src/moxie/ffitarget.h [new file with mode: 0644]
.pc/ffitarget-include-fix/src/pa/ffitarget.h [new file with mode: 0644]
.pc/ffitarget-include-fix/src/powerpc/ffitarget.h [new file with mode: 0644]
.pc/ffitarget-include-fix/src/s390/ffitarget.h [new file with mode: 0644]
.pc/ffitarget-include-fix/src/sh/ffitarget.h [new file with mode: 0644]
.pc/ffitarget-include-fix/src/sh64/ffitarget.h [new file with mode: 0644]
.pc/ffitarget-include-fix/src/sparc/ffitarget.h [new file with mode: 0644]
.pc/ffitarget-include-fix/src/x86/ffitarget.h [new file with mode: 0644]
.pc/fix-grammar/ChangeLog
.pc/fix-ppc32/ChangeLog
.pc/fix-xfails/ChangeLog
.pc/fix-xfails/src/prep_cif.c
.pc/fix_maxopt/ChangeLog
.pc/hpux-mallinfo/ChangeLog
.pc/interix/ChangeLog
.pc/interix/configure
.pc/interix/configure.ac
.pc/ios-fixes/ChangeLog
.pc/ios/ChangeLog
.pc/ios/configure.ac
.pc/irix/ChangeLog
.pc/kfreebsd-mmap/ChangeLog
.pc/kfreebsd-mmap/configure.ac
.pc/ml64-safeseh/ChangeLog
.pc/more-openbsd-mips/configure.ac
.pc/more-openbsd/ChangeLog
.pc/more-openbsd/configure.ac
.pc/msvcc-warning/ChangeLog
.pc/powerpc-ffi-softfloat/ChangeLog
.pc/powerpc-sysv-without-string-ops/ChangeLog
.pc/ppc64-darwin/ChangeLog
.pc/ppc64-darwin/configure
.pc/ppc64-darwin/configure.ac
.pc/remove-debug-code/ChangeLog
.pc/sparc-abi-check/ChangeLog
.pc/sparc-v8-aggregate-returns/ChangeLog
.pc/stand-alone/configure
.pc/stand-alone/configure.ac
.pc/stdcall-x86-closure-fix/ChangeLog
.pc/stdcall-x86-closure-fix/src/prep_cif.c
.pc/stdcall-x86-closure-fix/src/x86/ffi.c
.pc/stdcall-x86-closure-fix/src/x86/ffitarget.h
.pc/ungccify/configure.ac
.pc/unlikely/ChangeLog
.pc/variadic/ChangeLog
.pc/variadic/src/prep_cif.c
.pc/win64-struct-args/ChangeLog
.pc/win64-struct-args/src/x86/ffi.c
.pc/win64-underscore/ChangeLog
.pc/win64-underscore/configure
.pc/win64-underscore/configure.ac
.pc/windows-ce-arm/ChangeLog
.pc/x86_pcrel_test/ChangeLog
.pc/x86_pcrel_test/configure
.pc/x86_pcrel_test/configure.ac
ChangeLog
patches/ffitarget-include-fix [new file with mode: 0644]
patches/series
src/alpha/ffitarget.h
src/arm/ffitarget.h
src/avr32/ffitarget.h
src/cris/ffitarget.h
src/frv/ffitarget.h
src/ia64/ffitarget.h
src/m32r/ffitarget.h
src/m68k/ffitarget.h
src/mips/ffitarget.h
src/moxie/ffitarget.h
src/pa/ffitarget.h
src/powerpc/ffitarget.h
src/s390/ffitarget.h
src/sh/ffitarget.h
src/sh64/ffitarget.h
src/sparc/ffitarget.h
src/x86/ffitarget.h

index 6af22cb..38795ee 100644 (file)
@@ -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 e35da14..23cb992 100755 (executable)
@@ -12167,6 +12167,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 1e2e615..71d58b7 100644 (file)
@@ -178,6 +178,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 5afcc13..5e200fd 100644 (file)
@@ -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 59e12f4..4aa07e7 100644 (file)
@@ -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 70a15e3..73a60ef 100755 (executable)
@@ -12178,6 +12178,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 b4a60c8..731f5fe 100644 (file)
@@ -186,6 +186,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 a2b8dff..60939cc 100644 (file)
@@ -41,3 +41,4 @@ unlikely
 amiga
 alpha
 autoconf-archive-update
+ffitarget-include-fix
index 73ff260..861a5b2 100644 (file)
@@ -394,7 +394,6 @@ psdir = @psdir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-sys_symbol_underscore = @sys_symbol_underscore@
 sysconfdir = @sysconfdir@
 target = @target@
 target_alias = @target_alias@
diff --git a/.pc/autoconf-archive-update/acinclude.m4 b/.pc/autoconf-archive-update/acinclude.m4
deleted file mode 100644 (file)
index 3e8f8ba..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-# mmap(2) blacklisting.  Some platforms provide the mmap library routine
-# but don't support all of the features we need from it.
-AC_DEFUN([AC_FUNC_MMAP_BLACKLIST],
-[
-AC_CHECK_HEADER([sys/mman.h],
-               [libffi_header_sys_mman_h=yes], [libffi_header_sys_mman_h=no])
-AC_CHECK_FUNC([mmap], [libffi_func_mmap=yes], [libffi_func_mmap=no])
-if test "$libffi_header_sys_mman_h" != yes \
- || test "$libffi_func_mmap" != yes; then
-   ac_cv_func_mmap_file=no
-   ac_cv_func_mmap_dev_zero=no
-   ac_cv_func_mmap_anon=no
-else
-   AC_CACHE_CHECK([whether read-only mmap of a plain file works],
-  ac_cv_func_mmap_file,
-  [# Add a system to this blacklist if
-   # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a
-   # memory area containing the same data that you'd get if you applied
-   # read() to the same fd.  The only system known to have a problem here
-   # is VMS, where text files have record structure.
-   case "$host_os" in
-     vms* | ultrix*)
-       ac_cv_func_mmap_file=no ;;
-     *)
-       ac_cv_func_mmap_file=yes;;
-   esac])
-   AC_CACHE_CHECK([whether mmap from /dev/zero works],
-  ac_cv_func_mmap_dev_zero,
-  [# Add a system to this blacklist if it has mmap() but /dev/zero
-   # does not exist, or if mmapping /dev/zero does not give anonymous
-   # zeroed pages with both the following properties:
-   # 1. If you map N consecutive pages in with one call, and then
-   #    unmap any subset of those pages, the pages that were not
-   #    explicitly unmapped remain accessible.
-   # 2. If you map two adjacent blocks of memory and then unmap them
-   #    both at once, they must both go away.
-   # Systems known to be in this category are Windows (all variants),
-   # VMS, and Darwin.
-   case "$host_os" in
-     vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00)
-       ac_cv_func_mmap_dev_zero=no ;;
-     *)
-       ac_cv_func_mmap_dev_zero=yes;;
-   esac])
-
-   # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for.
-   AC_CACHE_CHECK([for MAP_ANON(YMOUS)], ac_cv_decl_map_anon,
-    [AC_TRY_COMPILE(
-[#include <sys/types.h>
-#include <sys/mman.h>
-#include <unistd.h>
-
-#ifndef MAP_ANONYMOUS
-#define MAP_ANONYMOUS MAP_ANON
-#endif
-],
-[int n = MAP_ANONYMOUS;],
-    ac_cv_decl_map_anon=yes,
-    ac_cv_decl_map_anon=no)])
-
-   if test $ac_cv_decl_map_anon = no; then
-     ac_cv_func_mmap_anon=no
-   else
-     AC_CACHE_CHECK([whether mmap with MAP_ANON(YMOUS) works],
-     ac_cv_func_mmap_anon,
-  [# Add a system to this blacklist if it has mmap() and MAP_ANON or
-   # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
-   # doesn't give anonymous zeroed pages with the same properties listed
-   # above for use of /dev/zero.
-   # Systems known to be in this category are Windows, VMS, and SCO Unix.
-   case "$host_os" in
-     vms* | cygwin* | pe | mingw* | sco* | udk* )
-       ac_cv_func_mmap_anon=no ;;
-     *)
-       ac_cv_func_mmap_anon=yes;;
-   esac])
-   fi
-fi
-
-if test $ac_cv_func_mmap_file = yes; then
-  AC_DEFINE(HAVE_MMAP_FILE, 1,
-           [Define if read-only mmap of a plain file works.])
-fi
-if test $ac_cv_func_mmap_dev_zero = yes; then
-  AC_DEFINE(HAVE_MMAP_DEV_ZERO, 1,
-           [Define if mmap of /dev/zero works.])
-fi
-if test $ac_cv_func_mmap_anon = yes; then
-  AC_DEFINE(HAVE_MMAP_ANON, 1,
-           [Define if mmap with MAP_ANON(YMOUS) works.])
-fi
-])
index 2b6e029..cf6995e 100755 (executable)
@@ -12181,6 +12181,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-*-*)
@@ -13310,7 +13319,7 @@ case "$target" in
 $as_echo "#define FFI_EXEC_TRAMPOLINE_TABLE 1" >>confdefs.h
 
      ;;
-     *-apple-darwin1[10]* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris*)
+     *-apple-darwin1[10]* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
 
 $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h
 
index 93c3820..d52ee67 100644 (file)
@@ -107,7 +107,6 @@ ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
-FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@
 FGREP = @FGREP@
 GREP = @GREP@
 HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@
@@ -197,7 +196,6 @@ psdir = @psdir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-sys_symbol_underscore = @sys_symbol_underscore@
 sysconfdir = @sysconfdir@
 target = @target@
 target_alias = @target_alias@
diff --git a/.pc/autoconf-archive-update/m4/ax_configure_args.m4 b/.pc/autoconf-archive-update/m4/ax_configure_args.m4
deleted file mode 100644 (file)
index 0726b1b..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-# ===========================================================================
-#     http://www.gnu.org/software/autoconf-archive/ax_configure_args.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_CONFIGURE_ARGS
-#
-# DESCRIPTION
-#
-#   Helper macro for AX_ENABLE_BUILDDIR.
-#
-#   The traditional way of starting a subdir-configure is running the script
-#   with ${1+"$@"} but since autoconf 2.60 this is broken. Instead we have
-#   to rely on eval'ing $ac_configure_args however some old autoconf
-#   versions do not provide that. To ensure maximum portability of autoconf
-#   extension macros this helper can be AC_REQUIRE'd so that
-#   $ac_configure_args will alsways be present.
-#
-#   Sadly, the traditional "exec $SHELL" of the enable_builddir macros is
-#   spoiled now and must be replaced by "eval + exit $?".
-#
-#   Example:
-#
-#     AC_DEFUN([AX_ENABLE_SUBDIR],[dnl
-#       AC_REQUIRE([AX_CONFIGURE_ARGS])dnl
-#       eval $SHELL $ac_configure_args || exit $?
-#       ...])
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
-#
-#   This program is free software; you can redistribute it and/or modify it
-#   under the terms of the GNU General Public License as published by the
-#   Free Software Foundation; either version 3 of the License, or (at your
-#   option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-#   Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Archive. When you make and distribute a
-#   modified version of the Autoconf Macro, you may extend this special
-#   exception to the GPL to apply to your modified version as well.
-
-#serial 9
-
-AC_DEFUN([AX_CONFIGURE_ARGS],[
-   # [$]@ is unsable in 2.60+ but earlier autoconf had no ac_configure_args
-   if test "${ac_configure_args+set}" != "set" ; then
-      ac_configure_args=
-      for ac_arg in ${1+"[$]@"}; do
-         ac_configure_args="$ac_configure_args '$ac_arg'"
-      done
-   fi
-])
diff --git a/.pc/autoconf-archive-update/m4/ax_gcc_x86_cpuid.m4 b/.pc/autoconf-archive-update/m4/ax_gcc_x86_cpuid.m4
deleted file mode 100644 (file)
index 7d46fee..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-# ===========================================================================
-#     http://www.gnu.org/software/autoconf-archive/ax_gcc_x86_cpuid.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_GCC_X86_CPUID(OP)
-#
-# DESCRIPTION
-#
-#   On Pentium and later x86 processors, with gcc or a compiler that has a
-#   compatible syntax for inline assembly instructions, run a small program
-#   that executes the cpuid instruction with input OP. This can be used to
-#   detect the CPU type.
-#
-#   On output, the values of the eax, ebx, ecx, and edx registers are stored
-#   as hexadecimal strings as "eax:ebx:ecx:edx" in the cache variable
-#   ax_cv_gcc_x86_cpuid_OP.
-#
-#   If the cpuid instruction fails (because you are running a
-#   cross-compiler, or because you are not using gcc, or because you are on
-#   a processor that doesn't have this instruction), ax_cv_gcc_x86_cpuid_OP
-#   is set to the string "unknown".
-#
-#   This macro mainly exists to be used in AX_GCC_ARCHFLAG.
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
-#   Copyright (c) 2008 Matteo Frigo
-#
-#   This program is free software: you can redistribute it and/or modify it
-#   under the terms of the GNU General Public License as published by the
-#   Free Software Foundation, either version 3 of the License, or (at your
-#   option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-#   Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Archive. When you make and distribute a
-#   modified version of the Autoconf Macro, you may extend this special
-#   exception to the GPL to apply to your modified version as well.
-
-#serial 7
-
-AC_DEFUN([AX_GCC_X86_CPUID],
-[AC_REQUIRE([AC_PROG_CC])
-AC_LANG_PUSH([C])
-AC_CACHE_CHECK(for x86 cpuid $1 output, ax_cv_gcc_x86_cpuid_$1,
- [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], [
-     int op = $1, eax, ebx, ecx, edx;
-     FILE *f;
-      __asm__("cpuid"
-        : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
-        : "a" (op));
-     f = fopen("conftest_cpuid", "w"); if (!f) return 1;
-     fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
-     fclose(f);
-     return 0;
-])],
-     [ax_cv_gcc_x86_cpuid_$1=`cat conftest_cpuid`; rm -f conftest_cpuid],
-     [ax_cv_gcc_x86_cpuid_$1=unknown; rm -f conftest_cpuid],
-     [ax_cv_gcc_x86_cpuid_$1=unknown])])
-AC_LANG_POP([C])
-])
index bb27fac..29eb211 100644 (file)
@@ -105,7 +105,6 @@ ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
-FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@
 FGREP = @FGREP@
 GREP = @GREP@
 HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@
@@ -195,7 +194,6 @@ psdir = @psdir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-sys_symbol_underscore = @sys_symbol_underscore@
 sysconfdir = @sysconfdir@
 target = @target@
 target_alias = @target_alias@
@@ -208,8 +206,8 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = foreign
-EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3
-man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3 ffi_prep_cif_var.3
+EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3
+man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3
 all: all-am
 
 .SUFFIXES:
index b249542..9aa1ce5 100644 (file)
@@ -82,7 +82,6 @@ ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
-FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@
 FGREP = @FGREP@
 GREP = @GREP@
 HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@
@@ -172,7 +171,6 @@ psdir = @psdir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-sys_symbol_underscore = @sys_symbol_underscore@
 sysconfdir = @sysconfdir@
 target = @target@
 target_alias = @target_alias@
index d90ef49..f27b6be 100644 (file)
@@ -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 e90a952..66ac0ba 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
@@ -104,8 +104,13 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs,
   ffi_type **ptr;
 
   FFI_ASSERT(cif != NULL);
-  if (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI))
+#ifndef X86_WIN32
+  if (! (abi > FFI_FIRST_ABI) && (abi <= FFI_LAST_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 0868fc8..15eac6e 100644 (file)
@@ -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 07020f9..c4bb4c3 100644 (file)
@@ -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 975dc0e..13d1d94 100755 (executable)
@@ -12167,6 +12167,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 7a120cd..815efc7 100644 (file)
@@ -186,6 +186,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 bc94393..f98f1c4 100644 (file)
@@ -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 583cffd..3ac6d29 100644 (file)
@@ -15,7 +15,6 @@
 
 @SET_MAKE@
 
-
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
@@ -55,33 +54,36 @@ 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
-@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
+@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
 subdir = .
-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
+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
 ACLOCAL_M4 = $(top_srcdir)/aclocal.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 \
+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 \
        $(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 = $(install_sh) -d
+mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
 CONFIG_HEADER = fficonfig.h
-CONFIG_CLEAN_FILES = libffi.pc
+CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
@@ -104,9 +106,8 @@ am__nobase_list = $(am__nobase_strip_setup); \
 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)$(libdir)" "$(DESTDIR)$(infodir)" \
-       "$(DESTDIR)$(pkgconfigdir)"
-LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
+am__installdirs = "$(DESTDIR)$(toolexeclibdir)"
+LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES)
 libffi_la_LIBADD =
 am__dirstamp = $(am__leading_dot)dirstamp
 am_libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo src/types.lo \
@@ -142,14 +143,13 @@ am_libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo src/types.lo \
 @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
-@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 \
+@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 \
 @X86_64_TRUE@  src/x86/ffi.lo src/x86/sysv.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
+@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
 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 +158,17 @@ nodist_libffi_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
        $(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_26)
+       $(am__objects_24) $(am__objects_25)
 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_27 = src/debug.lo src/prep_cif.lo src/types.lo \
+am__objects_26 = 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_27)
-am__objects_28 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
+am_libffi_convenience_la_OBJECTS = $(am__objects_26)
+am__objects_27 = $(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 +176,12 @@ am__objects_28 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
        $(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_26)
-nodist_libffi_convenience_la_OBJECTS = $(am__objects_28)
+       $(am__objects_25)
+nodist_libffi_convenience_la_OBJECTS = $(am__objects_27)
 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,18 +202,12 @@ SOURCES = $(libffi_la_SOURCES) $(nodist_libffi_la_SOURCES) \
        $(libffi_convenience_la_SOURCES) \
        $(nodist_libffi_convenience_la_SOURCES)
 DIST_SOURCES = $(libffi_la_SOURCES) $(libffi_convenience_la_SOURCES)
-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
+MULTISRCTOP = 
+MULTIBUILDTOP = 
+MULTIDIRS = 
+MULTISUBDIR = 
+MULTIDO = true
+MULTICLEAN = true
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
        html-recursive info-recursive install-data-recursive \
        install-dvi-recursive install-exec-recursive \
@@ -221,7 +215,6 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
        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=) \
@@ -287,7 +280,6 @@ CPPFLAGS = @CPPFLAGS@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -313,7 +305,6 @@ LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
@@ -341,7 +332,6 @@ 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@
@@ -376,6 +366,7 @@ localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
+multi_basedir = @multi_basedir@
 oldincludedir = @oldincludedir@
 pdfdir = @pdfdir@
 prefix = @prefix@
@@ -396,6 +387,7 @@ 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 \
@@ -420,16 +412,10 @@ EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj configure.host \
        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/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
+       src/frv/ffi.c src/frv/eabi.S src/frv/ffitarget.h src/dlmalloc.c
 
-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
@@ -470,14 +456,11 @@ AM_MAKEFLAGS = \
        "DESTDIR=$(DESTDIR)"
 
 MAKEOVERRIDES = 
-ACLOCAL_AMFLAGS = $(ACLOCAL_AMFLAGS) -I m4
-lib_LTLIBRARIES = libffi.la
+toolexeclib_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) \
@@ -486,10 +469,11 @@ nodist_libffi_la_SOURCES = $(am__append_1) $(am__append_2) \
        $(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_26)
+       $(am__append_24) $(am__append_25)
 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))
 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)
@@ -497,7 +481,7 @@ all: fficonfig.h
        $(MAKE) $(AM_MAKEFLAGS) all-recursive
 
 .SUFFIXES:
-.SUFFIXES: .S .c .dvi .lo .o .obj .ps
+.SUFFIXES: .S .c .lo .o .obj
 am--refresh:
        @:
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
@@ -549,43 +533,41 @@ $(srcdir)/fficonfig.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 
 distclean-hdr:
        -rm -f fficonfig.h stamp-h1
-libffi.pc: $(top_builddir)/config.status $(srcdir)/libffi.pc.in
-       cd $(top_builddir) && $(SHELL) ./config.status $@
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+
+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)
        @$(NORMAL_INSTALL)
-       test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
-       @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+       test -z "$(toolexeclibdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)"
+       @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || 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)$(libdir)'"; \
-         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+         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)"; \
        }
 
-uninstall-libLTLIBRARIES:
+uninstall-toolexeclibLTLIBRARIES:
        @$(NORMAL_UNINSTALL)
-       @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+       @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \
        for p in $$list; do \
          $(am__strip_dir) \
-         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
-         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(toolexeclibdir)/$$f'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(toolexeclibdir)/$$f"; \
        done
 
-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 \
+clean-toolexeclibLTLIBRARIES:
+       -test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES)
+       @list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
          dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
          test "$$dir" != "$$p" || dir=.; \
          echo "rm -f \"$${dir}/so_locations\""; \
@@ -755,16 +737,6 @@ 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)
@@ -808,7 +780,7 @@ src/pa/ffi.lo: src/pa/$(am__dirstamp) src/pa/$(DEPDIR)/$(am__dirstamp)
 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 $(libdir) $(libffi_la_OBJECTS) $(libffi_la_LIBADD) $(LIBS)
+       $(libffi_la_LINK) -rpath $(toolexeclibdir) $(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)
 
@@ -858,10 +830,6 @@ 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)
@@ -959,8 +927,6 @@ 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@
@@ -1056,7 +1022,6 @@ 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
@@ -1067,191 +1032,23 @@ 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
-
-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
+# 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)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -1448,9 +1245,6 @@ 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 \
@@ -1568,10 +1362,10 @@ distcleancheck: distclean
               exit 1; } >&2
 check-am: all-am
 check: check-recursive
-all-am: Makefile $(INFO_DEPS) $(LTLIBRARIES) $(DATA) fficonfig.h
+all-am: Makefile $(LTLIBRARIES) all-multi fficonfig.h
 installdirs: installdirs-recursive
 installdirs-am:
-       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(pkgconfigdir)"; do \
+       for dir in "$(DESTDIR)$(toolexeclibdir)"; do \
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-recursive
@@ -1595,7 +1389,6 @@ 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)
@@ -1616,8 +1409,6 @@ 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)
@@ -1636,186 +1427,114 @@ 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-recursive
+clean: clean-multi clean-recursive
 
-clean-am: clean-aminfo clean-generic clean-libLTLIBRARIES \
-       clean-libtool clean-noinstLTLIBRARIES mostlyclean-am
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+       clean-toolexeclibLTLIBRARIES mostlyclean-am
 
-distclean: distclean-recursive
+distclean: distclean-multi 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/moxie/$(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/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: $(DVIS)
+dvi-am:
 
 html: html-recursive
 
-html-am: $(HTMLS)
+html-am:
 
 info: info-recursive
 
-info-am: $(INFO_DEPS)
+info-am:
 
-install-data-am: install-info-am install-pkgconfigDATA
+install-data-am:
 
 install-dvi: install-dvi-recursive
 
-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-dvi-am:
+
+install-exec-am: install-multi install-toolexeclibLTLIBRARIES
+
+install-html: install-html-recursive
+
+install-html-am:
 
-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: $(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-info-am:
+
 install-man:
 
-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-pdf: install-pdf-recursive
+
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
-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
+install-ps-am:
+
 installcheck-am:
 
-maintainer-clean: maintainer-clean-recursive
+maintainer-clean: maintainer-clean-multi 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/moxie/$(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/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-aminfo \
-       maintainer-clean-generic maintainer-clean-vti
+maintainer-clean-am: distclean-am maintainer-clean-generic
 
-mostlyclean: mostlyclean-recursive
+mostlyclean: mostlyclean-multi mostlyclean-recursive
 
-mostlyclean-am: mostlyclean-aminfo mostlyclean-compile \
-       mostlyclean-generic mostlyclean-libtool mostlyclean-vti
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
 
 pdf: pdf-recursive
 
-pdf-am: $(PDFS)
+pdf-am:
 
 ps: ps-recursive
 
-ps-am: $(PSS)
+ps-am:
 
-uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
-       uninstall-libLTLIBRARIES uninstall-pdf-am \
-       uninstall-pkgconfigDATA uninstall-ps-am
+uninstall-am: uninstall-toolexeclibLTLIBRARIES
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
-       ctags-recursive install-am install-strip tags-recursive
+.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
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-       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 \
+       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 \
        mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-       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
+       mostlyclean-multi pdf pdf-am ps ps-am tags tags-recursive \
+       uninstall uninstall-am uninstall-toolexeclibLTLIBRARIES
 
 
-# No install-html or install-pdf support in automake yet
-.PHONY: install-html install-pdf
-install-html:
-install-pdf:
+# 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
 
 # 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 b214b8c..7f88c51 100755 (executable)
@@ -12160,6 +12160,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 ae84c3f..b32f83b 100644 (file)
@@ -174,6 +174,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 1142f60..cb9401f 100644 (file)
@@ -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 c1c3b9a..e0a0c68 100644 (file)
@@ -93,7 +93,12 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs,
   ffi_type **ptr;
 
   FFI_ASSERT(cif != NULL);
+#ifndef X86_WIN32
   FFI_ASSERT((abi > FFI_FIRST_ABI) && (abi <= FFI_DEFAULT_ABI));
+#else
+  FFI_ASSERT(abi > FFI_FIRST_ABI && abi <= FFI_DEFAULT_ABI
+            || abi == FFI_THISCALL);
+#endif
 
   cif->abi = abi;
   cif->arg_types = atypes;
index 4154762..dfecd1b 100644 (file)
@@ -103,7 +103,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
diff --git a/.pc/ffitarget-include-fix/.timestamp b/.pc/ffitarget-include-fix/.timestamp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/.pc/ffitarget-include-fix/src/alpha/ffitarget.h b/.pc/ffitarget-include-fix/src/alpha/ffitarget.h
new file mode 100644 (file)
index 0000000..7d06eb0
--- /dev/null
@@ -0,0 +1,48 @@
+/* -----------------------------------------------------------------*-C-*-
+   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   Target configuration macros for Alpha.
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   ``Software''), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+   ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_ASM
+typedef unsigned long          ffi_arg;
+typedef signed long            ffi_sarg;
+
+typedef enum ffi_abi {
+  FFI_FIRST_ABI = 0,
+  FFI_OSF,
+  FFI_LAST_ABI,
+  FFI_DEFAULT_ABI = FFI_OSF
+} ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_TRAMPOLINE_SIZE 24
+#define FFI_NATIVE_RAW_API 0
+
+#endif
diff --git a/.pc/ffitarget-include-fix/src/arm/ffitarget.h b/.pc/ffitarget-include-fix/src/arm/ffitarget.h
new file mode 100644 (file)
index 0000000..b9a0428
--- /dev/null
@@ -0,0 +1,66 @@
+/* -----------------------------------------------------------------*-C-*-
+   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+                 Copyright (c) 2010 CodeSourcery
+
+   Target configuration macros for ARM.
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   ``Software''), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+   ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_ASM
+typedef unsigned long          ffi_arg;
+typedef signed long            ffi_sarg;
+
+typedef enum ffi_abi {
+  FFI_FIRST_ABI = 0,
+  FFI_SYSV,
+  FFI_VFP,
+  FFI_LAST_ABI,
+#ifdef __ARM_PCS_VFP
+  FFI_DEFAULT_ABI = FFI_VFP,
+#else
+  FFI_DEFAULT_ABI = FFI_SYSV,
+#endif
+} ffi_abi;
+#endif
+
+#define FFI_EXTRA_CIF_FIELDS                   \
+  int vfp_used;                                        \
+  short vfp_reg_free, vfp_nargs;               \
+  signed char vfp_args[16]                     \
+
+/* Internally used. */
+#define FFI_TYPE_STRUCT_VFP_FLOAT  (FFI_TYPE_LAST + 1)
+#define FFI_TYPE_STRUCT_VFP_DOUBLE (FFI_TYPE_LAST + 2)
+
+#define FFI_TARGET_SPECIFIC_VARIADIC
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_TRAMPOLINE_SIZE 20
+#define FFI_NATIVE_RAW_API 0
+
+#endif
diff --git a/.pc/ffitarget-include-fix/src/avr32/ffitarget.h b/.pc/ffitarget-include-fix/src/avr32/ffitarget.h
new file mode 100644 (file)
index 0000000..b85d062
--- /dev/null
@@ -0,0 +1,50 @@
+/* -----------------------------------------------------------------*-C-*-
+   ffitarget.h - Copyright (c) 2009  Bradley Smith <brad@brad-smith.co.uk>
+   Target configuration macros for AVR32.
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   ``Software''), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+   ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_ASM
+typedef unsigned long          ffi_arg;
+typedef signed long            ffi_sarg;
+
+typedef enum ffi_abi {
+  FFI_FIRST_ABI = 0,
+  FFI_SYSV,
+  FFI_LAST_ABI,
+  FFI_DEFAULT_ABI = FFI_SYSV
+} ffi_abi;
+#endif
+
+#define FFI_EXTRA_CIF_FIELDS unsigned int rstruct_flag
+
+/* Definitions for closures */
+
+#define FFI_CLOSURES 1
+#define FFI_TRAMPOLINE_SIZE 36
+#define FFI_NATIVE_RAW_API 0
+
+#endif
diff --git a/.pc/ffitarget-include-fix/src/cris/ffitarget.h b/.pc/ffitarget-include-fix/src/cris/ffitarget.h
new file mode 100644 (file)
index 0000000..0e3705d
--- /dev/null
@@ -0,0 +1,51 @@
+/* -----------------------------------------------------------------*-C-*-
+   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   Target configuration macros for CRIS.
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   ``Software''), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+   ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_ASM
+typedef unsigned long          ffi_arg;
+typedef signed long            ffi_sarg;
+
+typedef enum ffi_abi {
+  FFI_FIRST_ABI = 0,
+  FFI_SYSV,
+  FFI_LAST_ABI,
+  FFI_DEFAULT_ABI = FFI_SYSV
+} ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_CRIS_TRAMPOLINE_CODE_PART_SIZE 36
+#define FFI_CRIS_TRAMPOLINE_DATA_PART_SIZE (7*4)
+#define FFI_TRAMPOLINE_SIZE \
+ (FFI_CRIS_TRAMPOLINE_CODE_PART_SIZE + FFI_CRIS_TRAMPOLINE_DATA_PART_SIZE)
+#define FFI_NATIVE_RAW_API 0
+
+#endif
diff --git a/.pc/ffitarget-include-fix/src/frv/ffitarget.h b/.pc/ffitarget-include-fix/src/frv/ffitarget.h
new file mode 100644 (file)
index 0000000..4839069
--- /dev/null
@@ -0,0 +1,57 @@
+/* -----------------------------------------------------------------*-C-*-
+   ffitarget.h - Copyright (c) 1996-2004  Red Hat, Inc.
+   Target configuration macros for FR-V
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   ``Software''), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+   ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+/* ---- System specific configurations ----------------------------------- */
+
+#ifndef LIBFFI_ASM
+typedef unsigned long          ffi_arg;
+typedef signed long            ffi_sarg;
+
+typedef enum ffi_abi {
+  FFI_FIRST_ABI = 0,
+  FFI_EABI,
+  FFI_LAST_ABI,
+  FFI_DEFAULT_ABI = FFI_EABI
+} ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_NATIVE_RAW_API 0
+
+#ifdef __FRV_FDPIC__
+/* Trampolines are 8 4-byte instructions long.  */
+#define FFI_TRAMPOLINE_SIZE (8*4)
+#else
+/* Trampolines are 5 4-byte instructions long.  */
+#define FFI_TRAMPOLINE_SIZE (5*4)
+#endif
+
+#endif
diff --git a/.pc/ffitarget-include-fix/src/ia64/ffitarget.h b/.pc/ffitarget-include-fix/src/ia64/ffitarget.h
new file mode 100644 (file)
index 0000000..0d2001d
--- /dev/null
@@ -0,0 +1,50 @@
+/* -----------------------------------------------------------------*-C-*-
+   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   Target configuration macros for IA-64.
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   ``Software''), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+   ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_ASM
+typedef unsigned long long          ffi_arg;
+typedef signed long long            ffi_sarg;
+
+typedef enum ffi_abi {
+  FFI_FIRST_ABI = 0,
+  FFI_UNIX,    /* Linux and all Unix variants use the same conventions */
+  FFI_LAST_ABI,
+  FFI_DEFAULT_ABI = FFI_UNIX
+} ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_TRAMPOLINE_SIZE 24  /* Really the following struct, which  */
+                               /* can be interpreted as a C function   */
+                               /* descriptor:                          */
+
+#endif
+
diff --git a/.pc/ffitarget-include-fix/src/m32r/ffitarget.h b/.pc/ffitarget-include-fix/src/m32r/ffitarget.h
new file mode 100644 (file)
index 0000000..2e2ea48
--- /dev/null
@@ -0,0 +1,48 @@
+/* -----------------------------------------------------------------*-C-*-
+   ffitarget.h - Copyright (c) 2004  Renesas Technology.
+   Target configuration macros for M32R.
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   ``Software''), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
+   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+   IN NO EVENT SHALL RENESAS TECHNOLOGY BE LIABLE FOR ANY CLAIM, DAMAGES OR
+   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+   OTHER DEALINGS IN THE SOFTWARE.
+
+   ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+/* ---- Generic type definitions ----------------------------------------- */
+
+#ifndef LIBFFI_ASM
+typedef unsigned long          ffi_arg;
+typedef signed long            ffi_sarg;
+
+typedef enum ffi_abi
+  {
+    FFI_FIRST_ABI = 0,
+    FFI_SYSV,
+    FFI_LAST_ABI,
+    FFI_DEFAULT_ABI = FFI_SYSV
+  } ffi_abi;
+#endif
+
+#define FFI_CLOSURES           0
+#define FFI_TRAMPOLINE_SIZE    24
+#define FFI_NATIVE_RAW_API     0
+
+#endif
diff --git a/.pc/ffitarget-include-fix/src/m68k/ffitarget.h b/.pc/ffitarget-include-fix/src/m68k/ffitarget.h
new file mode 100644 (file)
index 0000000..3b777ed
--- /dev/null
@@ -0,0 +1,49 @@
+/* -----------------------------------------------------------------*-C-*-
+   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   Target configuration macros for Motorola 68K.
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   ``Software''), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+   ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifndef LIBFFI_ASM
+typedef unsigned long          ffi_arg;
+typedef signed long            ffi_sarg;
+
+typedef enum ffi_abi {
+  FFI_FIRST_ABI = 0,
+  FFI_SYSV,
+  FFI_LAST_ABI,
+  FFI_DEFAULT_ABI = FFI_SYSV
+} ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_TRAMPOLINE_SIZE 16
+#define FFI_NATIVE_RAW_API 0
+
+#endif
+
diff --git a/.pc/ffitarget-include-fix/src/mips/ffitarget.h b/.pc/ffitarget-include-fix/src/mips/ffitarget.h
new file mode 100644 (file)
index 0000000..637adbf
--- /dev/null
@@ -0,0 +1,242 @@
+/* -----------------------------------------------------------------*-C-*-
+   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   Target configuration macros for MIPS.
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   ``Software''), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+   ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#ifdef linux
+# include <asm/sgidefs.h>
+#elif defined(__rtems__)
+/*
+ * Subprogram calling convention - copied from sgidefs.h
+ */
+#define _MIPS_SIM_ABI32                1
+#define _MIPS_SIM_NABI32       2
+#define _MIPS_SIM_ABI64                3
+#elif !defined(__OpenBSD__)
+# include <sgidefs.h>
+#endif
+
+#  ifndef _ABIN32
+#    define _ABIN32 _MIPS_SIM_NABI32
+#  endif
+#  ifndef _ABI64
+#    define _ABI64 _MIPS_SIM_ABI64
+#  endif
+#  ifndef _ABIO32
+#    define _ABIO32 _MIPS_SIM_ABI32
+#  endif
+
+#if !defined(_MIPS_SIM)
+# error -- something is very wrong --
+#else
+#  if (_MIPS_SIM==_ABIN32 && defined(_ABIN32)) || (_MIPS_SIM==_ABI64 && defined(_ABI64))
+#    define FFI_MIPS_N32
+#  else
+#    if (_MIPS_SIM==_ABIO32 && defined(_ABIO32))
+#      define FFI_MIPS_O32
+#    else
+#     error -- this is an unsupported platform --
+#    endif
+#  endif
+#endif
+
+#ifdef FFI_MIPS_O32
+/* O32 stack frames have 32bit integer args */
+#  define FFI_SIZEOF_ARG    4
+#else
+/* N32 and N64 frames have 64bit integer args */
+#  define FFI_SIZEOF_ARG    8
+#  if _MIPS_SIM == _ABIN32
+#    define FFI_SIZEOF_JAVA_RAW  4
+#  endif
+#endif
+
+#define FFI_FLAG_BITS 2
+
+/* SGI's strange assembler requires that we multiply by 4 rather 
+   than shift left by FFI_FLAG_BITS */
+
+#define FFI_ARGS_D   FFI_TYPE_DOUBLE
+#define FFI_ARGS_F   FFI_TYPE_FLOAT
+#define FFI_ARGS_DD  FFI_TYPE_DOUBLE * 4 + FFI_TYPE_DOUBLE
+#define FFI_ARGS_FF  FFI_TYPE_FLOAT * 4 +  FFI_TYPE_FLOAT
+#define FFI_ARGS_FD  FFI_TYPE_DOUBLE * 4 + FFI_TYPE_FLOAT
+#define FFI_ARGS_DF  FFI_TYPE_FLOAT * 4 + FFI_TYPE_DOUBLE
+
+/* Needed for N32 structure returns */
+#define FFI_TYPE_SMALLSTRUCT  FFI_TYPE_UINT8
+#define FFI_TYPE_SMALLSTRUCT2 FFI_TYPE_SINT8
+
+#if 0
+/* The SGI assembler can't handle this.. */
+#define FFI_TYPE_STRUCT_DD (( FFI_ARGS_DD ) << 4) + FFI_TYPE_STRUCT
+/* (and so on) */
+#else
+/* ...so we calculate these by hand! */
+#define FFI_TYPE_STRUCT_D      61
+#define FFI_TYPE_STRUCT_F      45
+#define FFI_TYPE_STRUCT_DD     253
+#define FFI_TYPE_STRUCT_FF     173
+#define FFI_TYPE_STRUCT_FD     237
+#define FFI_TYPE_STRUCT_DF     189
+#define FFI_TYPE_STRUCT_SMALL  93
+#define FFI_TYPE_STRUCT_SMALL2 109
+
+/* and for n32 soft float, add 16 * 2^4 */
+#define FFI_TYPE_STRUCT_D_SOFT      317
+#define FFI_TYPE_STRUCT_F_SOFT      301
+#define FFI_TYPE_STRUCT_DD_SOFT     509
+#define FFI_TYPE_STRUCT_FF_SOFT     429
+#define FFI_TYPE_STRUCT_FD_SOFT     493
+#define FFI_TYPE_STRUCT_DF_SOFT     445
+#define FFI_TYPE_STRUCT_SOFT        16
+#endif
+
+#ifdef LIBFFI_ASM
+#define v0 $2
+#define v1 $3
+#define a0 $4
+#define a1 $5
+#define a2 $6
+#define a3 $7
+#define a4 $8          
+#define a5 $9          
+#define a6 $10         
+#define a7 $11         
+#define t0 $8
+#define t1 $9
+#define t2 $10
+#define t3 $11
+#define t4 $12         
+#define t5 $13
+#define t6 $14 
+#define t7 $15
+#define t8 $24
+#define t9 $25
+#define ra $31         
+
+#ifdef FFI_MIPS_O32
+# define REG_L lw
+# define REG_S sw
+# define SUBU  subu
+# define ADDU  addu
+# define SRL   srl
+# define LI    li
+#else /* !FFI_MIPS_O32 */
+# define REG_L ld
+# define REG_S sd
+# define SUBU  dsubu
+# define ADDU  daddu
+# define SRL   dsrl
+# define LI    dli
+# if (_MIPS_SIM==_ABI64)
+#  define LA dla
+#  define EH_FRAME_ALIGN 3
+#  define FDE_ADDR_BYTES .8byte
+# else
+#  define LA la
+#  define EH_FRAME_ALIGN 2
+#  define FDE_ADDR_BYTES .4byte
+# endif /* _MIPS_SIM==_ABI64 */
+#endif /* !FFI_MIPS_O32 */
+#else /* !LIBFFI_ASM */
+# ifdef __GNUC__
+#  ifdef FFI_MIPS_O32
+/* O32 stack frames have 32bit integer args */
+typedef unsigned int     ffi_arg __attribute__((__mode__(__SI__)));
+typedef signed   int     ffi_sarg __attribute__((__mode__(__SI__)));
+#else
+/* N32 and N64 frames have 64bit integer args */
+typedef unsigned int     ffi_arg __attribute__((__mode__(__DI__)));
+typedef signed   int     ffi_sarg __attribute__((__mode__(__DI__)));
+#  endif
+# else
+#  ifdef FFI_MIPS_O32
+/* O32 stack frames have 32bit integer args */
+typedef __uint32_t ffi_arg;
+typedef __int32_t ffi_sarg;
+#  else
+/* N32 and N64 frames have 64bit integer args */
+typedef __uint64_t ffi_arg;
+typedef __int64_t ffi_sarg;
+#  endif
+# endif /* __GNUC__ */
+
+typedef enum ffi_abi {
+  FFI_FIRST_ABI = 0,
+  FFI_O32,
+  FFI_N32,
+  FFI_N64,
+  FFI_O32_SOFT_FLOAT,
+  FFI_N32_SOFT_FLOAT,
+  FFI_N64_SOFT_FLOAT,
+  FFI_LAST_ABI,
+
+#ifdef FFI_MIPS_O32
+#ifdef __mips_soft_float
+  FFI_DEFAULT_ABI = FFI_O32_SOFT_FLOAT
+#else
+  FFI_DEFAULT_ABI = FFI_O32
+#endif
+#else
+# if _MIPS_SIM==_ABI64
+#  ifdef __mips_soft_float
+  FFI_DEFAULT_ABI = FFI_N64_SOFT_FLOAT
+#  else
+  FFI_DEFAULT_ABI = FFI_N64
+#  endif
+# else
+#  ifdef __mips_soft_float
+  FFI_DEFAULT_ABI = FFI_N32_SOFT_FLOAT
+#  else
+  FFI_DEFAULT_ABI = FFI_N32
+#  endif
+# endif
+#endif
+} ffi_abi;
+
+#define FFI_EXTRA_CIF_FIELDS unsigned rstruct_flag
+#endif /* !LIBFFI_ASM */
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#if defined(FFI_MIPS_O32)
+#define FFI_CLOSURES 1
+#define FFI_TRAMPOLINE_SIZE 20
+#else
+/* N32/N64. */
+# define FFI_CLOSURES 1
+#if _MIPS_SIM==_ABI64
+#define FFI_TRAMPOLINE_SIZE 52
+#else
+#define FFI_TRAMPOLINE_SIZE 20
+#endif
+#endif /* FFI_MIPS_O32 */
+#define FFI_NATIVE_RAW_API 0
+
+#endif
+
diff --git a/.pc/ffitarget-include-fix/src/moxie/ffitarget.h b/.pc/ffitarget-include-fix/src/moxie/ffitarget.h
new file mode 100644 (file)
index 0000000..2a9d954
--- /dev/null
@@ -0,0 +1,52 @@
+/* -----------------------------------------------------------------*-C-*-
+   ffitarget.h - Copyright (c) 2009 Anthony Green
+   Target configuration macros for Moxie
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   ``Software''), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+   ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+/* ---- System specific configurations ----------------------------------- */
+
+#ifndef LIBFFI_ASM
+typedef unsigned long          ffi_arg;
+typedef signed long            ffi_sarg;
+
+typedef enum ffi_abi {
+  FFI_FIRST_ABI = 0,
+  FFI_EABI,
+  FFI_LAST_ABI,
+  FFI_DEFAULT_ABI = FFI_EABI
+} ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 0
+#define FFI_NATIVE_RAW_API 0
+
+/* Trampolines are 5 4-byte instructions long.  */
+#define FFI_TRAMPOLINE_SIZE (5*4)
+
+#endif
diff --git a/.pc/ffitarget-include-fix/src/pa/ffitarget.h b/.pc/ffitarget-include-fix/src/pa/ffitarget.h
new file mode 100644 (file)
index 0000000..efa2f4e
--- /dev/null
@@ -0,0 +1,78 @@
+/* -----------------------------------------------------------------*-C-*-
+   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   Target configuration macros for hppa.
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   ``Software''), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+   ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+/* ---- System specific configurations ----------------------------------- */
+
+#ifndef LIBFFI_ASM
+typedef unsigned long          ffi_arg;
+typedef signed long            ffi_sarg;
+
+typedef enum ffi_abi {
+  FFI_FIRST_ABI = 0,
+
+#ifdef PA_LINUX
+  FFI_PA32,
+  FFI_LAST_ABI,
+  FFI_DEFAULT_ABI = FFI_PA32
+#endif
+
+#ifdef PA_HPUX
+  FFI_PA32,
+  FFI_LAST_ABI,
+  FFI_DEFAULT_ABI = FFI_PA32
+#endif
+
+#ifdef PA64_HPUX
+#error "PA64_HPUX FFI is not yet implemented"
+  FFI_PA64,
+  FFI_LAST_ABI,
+  FFI_DEFAULT_ABI = FFI_PA64
+#endif
+} ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_NATIVE_RAW_API 0
+
+#ifdef PA_LINUX
+#define FFI_TRAMPOLINE_SIZE 32
+#else
+#define FFI_TRAMPOLINE_SIZE 40
+#endif
+
+#define FFI_TYPE_SMALL_STRUCT2 -1
+#define FFI_TYPE_SMALL_STRUCT3 -2
+#define FFI_TYPE_SMALL_STRUCT4 -3
+#define FFI_TYPE_SMALL_STRUCT5 -4
+#define FFI_TYPE_SMALL_STRUCT6 -5
+#define FFI_TYPE_SMALL_STRUCT7 -6
+#define FFI_TYPE_SMALL_STRUCT8 -7
+#endif
diff --git a/.pc/ffitarget-include-fix/src/powerpc/ffitarget.h b/.pc/ffitarget-include-fix/src/powerpc/ffitarget.h
new file mode 100644 (file)
index 0000000..820c482
--- /dev/null
@@ -0,0 +1,135 @@
+/* -----------------------------------------------------------------*-C-*-
+   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc
+   Target configuration macros for PowerPC.
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   ``Software''), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+   ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+/* ---- System specific configurations ----------------------------------- */
+
+#if defined (POWERPC) && defined (__powerpc64__)       /* linux64 */
+#ifndef POWERPC64
+#define POWERPC64
+#endif
+#elif defined (POWERPC_DARWIN) && defined (__ppc64__)  /* Darwin64 */
+#ifndef POWERPC64
+#define POWERPC64
+#endif
+#ifndef POWERPC_DARWIN64
+#define POWERPC_DARWIN64
+#endif
+#elif defined (POWERPC_AIX) && defined (__64BIT__)     /* AIX64 */
+#ifndef POWERPC64
+#define POWERPC64
+#endif
+#endif
+
+#ifndef LIBFFI_ASM
+typedef unsigned long          ffi_arg;
+typedef signed long            ffi_sarg;
+
+typedef enum ffi_abi {
+  FFI_FIRST_ABI = 0,
+
+#ifdef POWERPC
+  FFI_SYSV,
+  FFI_GCC_SYSV,
+  FFI_LINUX64,
+  FFI_LINUX,
+  FFI_LINUX_SOFT_FLOAT,
+# if defined(POWERPC64)
+  FFI_DEFAULT_ABI = FFI_LINUX64,
+# elif defined(__NO_FPRS__)
+  FFI_DEFAULT_ABI = FFI_LINUX_SOFT_FLOAT,
+# elif (__LDBL_MANT_DIG__ == 106)
+  FFI_DEFAULT_ABI = FFI_LINUX,
+# else
+  FFI_DEFAULT_ABI = FFI_GCC_SYSV,
+# endif
+#endif
+
+#ifdef POWERPC_AIX
+  FFI_AIX,
+  FFI_DARWIN,
+  FFI_DEFAULT_ABI = FFI_AIX,
+#endif
+
+#ifdef POWERPC_DARWIN
+  FFI_AIX,
+  FFI_DARWIN,
+  FFI_DEFAULT_ABI = FFI_DARWIN,
+#endif
+
+#ifdef POWERPC_FREEBSD
+  FFI_SYSV,
+  FFI_GCC_SYSV,
+  FFI_LINUX64,
+  FFI_LINUX,
+  FFI_LINUX_SOFT_FLOAT,
+  FFI_DEFAULT_ABI = FFI_SYSV,
+#endif
+
+  FFI_LAST_ABI
+} ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_NATIVE_RAW_API 0
+
+/* For additional types like the below, take care about the order in
+   ppc_closures.S. They must follow after the FFI_TYPE_LAST.  */
+
+/* Needed for soft-float long-double-128 support.  */
+#define FFI_TYPE_UINT128 (FFI_TYPE_LAST + 1)
+
+/* Needed for FFI_SYSV small structure returns.
+   We use two flag bits, (FLAG_SYSV_SMST_R3, FLAG_SYSV_SMST_R4) which are
+   defined in ffi.c, to determine the exact return type and its size.  */
+#define FFI_SYSV_TYPE_SMALL_STRUCT (FFI_TYPE_LAST + 2)
+
+#if defined(POWERPC64) || defined(POWERPC_AIX)
+#  if defined(POWERPC_DARWIN64)
+#    define FFI_TRAMPOLINE_SIZE 48
+#  else
+#    define FFI_TRAMPOLINE_SIZE 24
+#  endif
+#else /* POWERPC || POWERPC_AIX */
+#  define FFI_TRAMPOLINE_SIZE 40
+#endif
+
+#ifndef LIBFFI_ASM
+#if defined(POWERPC_DARWIN) || defined(POWERPC_AIX)
+struct ffi_aix_trampoline_struct {
+    void * code_pointer;       /* Pointer to ffi_closure_ASM */
+    void * toc;                        /* TOC */
+    void * static_chain;       /* Pointer to closure */
+};
+#endif
+#endif
+
+#endif
diff --git a/.pc/ffitarget-include-fix/src/s390/ffitarget.h b/.pc/ffitarget-include-fix/src/s390/ffitarget.h
new file mode 100644 (file)
index 0000000..a262691
--- /dev/null
@@ -0,0 +1,62 @@
+/* -----------------------------------------------------------------*-C-*-
+   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   Target configuration macros for S390.
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   ``Software''), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+   ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+#if defined (__s390x__)
+#ifndef S390X
+#define S390X
+#endif
+#endif
+
+/* ---- System specific configurations ----------------------------------- */
+
+#ifndef LIBFFI_ASM
+typedef unsigned long          ffi_arg;
+typedef signed long            ffi_sarg;
+
+typedef enum ffi_abi {
+  FFI_FIRST_ABI = 0,
+  FFI_SYSV,
+  FFI_LAST_ABI,
+  FFI_DEFAULT_ABI = FFI_SYSV
+} ffi_abi;
+#endif
+
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#ifdef S390X
+#define FFI_TRAMPOLINE_SIZE 32
+#else
+#define FFI_TRAMPOLINE_SIZE 16
+#endif
+#define FFI_NATIVE_RAW_API 0
+
+#endif
+
diff --git a/.pc/ffitarget-include-fix/src/sh/ffitarget.h b/.pc/ffitarget-include-fix/src/sh/ffitarget.h
new file mode 100644 (file)
index 0000000..4f1f639
--- /dev/null
@@ -0,0 +1,49 @@
+/* -----------------------------------------------------------------*-C-*-
+   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   Target configuration macros for SuperH.
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   ``Software''), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+   ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+/* ---- Generic type definitions ----------------------------------------- */
+
+#ifndef LIBFFI_ASM
+typedef unsigned long          ffi_arg;
+typedef signed long            ffi_sarg;
+
+typedef enum ffi_abi {
+  FFI_FIRST_ABI = 0,
+  FFI_SYSV,
+  FFI_LAST_ABI,
+  FFI_DEFAULT_ABI = FFI_SYSV
+} ffi_abi;
+#endif
+
+#define FFI_CLOSURES 1
+#define FFI_TRAMPOLINE_SIZE 16
+#define FFI_NATIVE_RAW_API 0
+
+#endif
+
diff --git a/.pc/ffitarget-include-fix/src/sh64/ffitarget.h b/.pc/ffitarget-include-fix/src/sh64/ffitarget.h
new file mode 100644 (file)
index 0000000..d935b89
--- /dev/null
@@ -0,0 +1,53 @@
+/* -----------------------------------------------------------------*-C-*-
+   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   Target configuration macros for SuperH - SHmedia.
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   ``Software''), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+   ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+/* ---- Generic type definitions ----------------------------------------- */
+
+#ifndef LIBFFI_ASM
+typedef unsigned long          ffi_arg;
+typedef signed long            ffi_sarg;
+
+typedef enum ffi_abi {
+  FFI_FIRST_ABI = 0,
+  FFI_SYSV,
+  FFI_LAST_ABI,
+  FFI_DEFAULT_ABI = FFI_SYSV
+} ffi_abi;
+
+#define FFI_EXTRA_CIF_FIELDS long long flags2
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_TRAMPOLINE_SIZE 32
+#define FFI_NATIVE_RAW_API 0
+
+#endif
+
diff --git a/.pc/ffitarget-include-fix/src/sparc/ffitarget.h b/.pc/ffitarget-include-fix/src/sparc/ffitarget.h
new file mode 100644 (file)
index 0000000..51275cb
--- /dev/null
@@ -0,0 +1,68 @@
+/* -----------------------------------------------------------------*-C-*-
+   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   Target configuration macros for SPARC.
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   ``Software''), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+   ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+/* ---- System specific configurations ----------------------------------- */
+
+#if defined(__arch64__) || defined(__sparcv9)
+#ifndef SPARC64
+#define SPARC64
+#endif
+#endif
+
+#ifndef LIBFFI_ASM
+typedef unsigned long          ffi_arg;
+typedef signed long            ffi_sarg;
+
+typedef enum ffi_abi {
+  FFI_FIRST_ABI = 0,
+  FFI_V8,
+  FFI_V8PLUS,
+  FFI_V9,
+  FFI_LAST_ABI,
+#ifdef SPARC64
+  FFI_DEFAULT_ABI = FFI_V9
+#else
+  FFI_DEFAULT_ABI = FFI_V8
+#endif
+} ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_NATIVE_RAW_API 0
+
+#ifdef SPARC64
+#define FFI_TRAMPOLINE_SIZE 24
+#else
+#define FFI_TRAMPOLINE_SIZE 16
+#endif
+
+#endif
+
diff --git a/.pc/ffitarget-include-fix/src/x86/ffitarget.h b/.pc/ffitarget-include-fix/src/x86/ffitarget.h
new file mode 100644 (file)
index 0000000..7c2b588
--- /dev/null
@@ -0,0 +1,124 @@
+/* -----------------------------------------------------------------*-C-*-
+   ffitarget.h - Copyright (c) 2012  Anthony Green
+                 Copyright (c) 1996-2003, 2010  Red Hat, Inc.
+                 Copyright (C) 2008  Free Software Foundation, Inc.
+
+   Target configuration macros for x86 and x86-64.
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   ``Software''), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+   ----------------------------------------------------------------------- */
+
+#ifndef LIBFFI_TARGET_H
+#define LIBFFI_TARGET_H
+
+/* ---- System specific configurations ----------------------------------- */
+
+/* For code common to all platforms on x86 and x86_64. */
+#define X86_ANY
+
+#if defined (X86_64) && defined (__i386__)
+#undef X86_64
+#define X86
+#endif
+
+#ifdef X86_WIN64
+#define FFI_SIZEOF_ARG 8
+#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */
+#endif
+
+/* ---- Generic type definitions ----------------------------------------- */
+
+#ifndef LIBFFI_ASM
+#ifdef X86_WIN64
+#ifdef _MSC_VER
+typedef unsigned __int64       ffi_arg;
+typedef __int64                ffi_sarg;
+#else
+typedef unsigned long long     ffi_arg;
+typedef long long              ffi_sarg;
+#endif
+#else
+typedef unsigned long          ffi_arg;
+typedef signed long            ffi_sarg;
+#endif
+
+typedef enum ffi_abi {
+  FFI_FIRST_ABI = 0,
+
+  /* ---- Intel x86 Win32 ---------- */
+#ifdef X86_WIN32
+  FFI_SYSV,
+  FFI_STDCALL,
+  FFI_THISCALL,
+  FFI_FASTCALL,
+  FFI_LAST_ABI,
+  /* TODO: Add fastcall support for the sake of completeness */
+  FFI_DEFAULT_ABI = FFI_SYSV
+
+#elif defined(X86_WIN64)
+  FFI_WIN64,
+  FFI_LAST_ABI,
+  FFI_DEFAULT_ABI = FFI_WIN64
+
+#else
+  /* ---- Intel x86 and AMD x86-64 - */
+  FFI_SYSV,
+  FFI_UNIX64,   /* Unix variants all use the same ABI for x86-64  */
+  FFI_LAST_ABI,
+#if defined(__i386__) || defined(__i386)
+  FFI_DEFAULT_ABI = FFI_SYSV
+#else
+  FFI_DEFAULT_ABI = FFI_UNIX64
+#endif
+#endif
+} ffi_abi;
+#endif
+
+/* ---- Definitions for closures ----------------------------------------- */
+
+#define FFI_CLOSURES 1
+#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
+#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
+#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
+
+#if defined (X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
+#define FFI_TRAMPOLINE_SIZE 24
+#define FFI_NATIVE_RAW_API 0
+#else
+#ifdef X86_WIN32
+#define FFI_TRAMPOLINE_SIZE 52
+#else
+#ifdef X86_WIN64
+#define FFI_TRAMPOLINE_SIZE 29
+#define FFI_NATIVE_RAW_API 0
+#define FFI_NO_RAW_API 1
+#else
+#define FFI_TRAMPOLINE_SIZE 10
+#endif
+#endif
+#ifndef X86_WIN64
+#define FFI_NATIVE_RAW_API 1   /* x86 has native raw api support */
+#endif
+#endif
+
+#endif
+
index b1c068b..458a629 100644 (file)
@@ -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 936cc71..9f8a59a 100644 (file)
@@ -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 792bea0..d436f80 100644 (file)
@@ -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 761abdc..f3f835f 100644 (file)
@@ -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.
 
    Permission is hereby granted, free of charge, to any person obtaining
    a copy of this software and associated documentation files (the
@@ -93,7 +94,12 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs,
   ffi_type **ptr;
 
   FFI_ASSERT(cif != NULL);
-  FFI_ASSERT(abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI);
+#ifndef X86_WIN32
+  FFI_ASSERT((abi > FFI_FIRST_ABI) && (abi <= FFI_DEFAULT_ABI));
+#else
+  FFI_ASSERT(abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI
+            || abi == FFI_THISCALL);
+#endif
 
   cif->abi = abi;
   cif->arg_types = atypes;
index 2a0665b..178a530 100644 (file)
@@ -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 b35ca19..502aaef 100644 (file)
@@ -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 b0a77e4..2073829 100644 (file)
@@ -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 ce7d191..6bc08a9 100755 (executable)
@@ -12167,6 +12167,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 d980b5b..d926ee3 100644 (file)
@@ -178,6 +178,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 6d490ac..ae63b53 100644 (file)
@@ -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 6eae3a1..14b2029 100644 (file)
@@ -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 4b78bf4..0b0bf59 100644 (file)
@@ -178,6 +178,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 78579a7..5d13a51 100644 (file)
@@ -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 0ff1933..6512f37 100644 (file)
@@ -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 fdd21b7..0cdf33c 100644 (file)
@@ -186,6 +186,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 1ae97c7..1c00d73 100644 (file)
@@ -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 a7b5680..a7a8f8e 100644 (file)
@@ -186,6 +186,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 3e182f9..295b115 100644 (file)
@@ -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 354a854..1c71d7f 100644 (file)
@@ -186,6 +186,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 10ad4fc..3521bdc 100644 (file)
@@ -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 7fc467e..bba2d50 100644 (file)
@@ -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 c79a568..5744c4b 100644 (file)
@@ -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 a76ed28..dee8a54 100644 (file)
@@ -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 f8c7c3a..984d8d6 100755 (executable)
@@ -12167,6 +12167,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 40c0cc8..448aacb 100644 (file)
@@ -178,6 +178,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 e94379c..588d0bb 100644 (file)
@@ -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 e5ca60e..cc4f9f1 100644 (file)
@@ -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 5e404b2..8e6fe96 100644 (file)
@@ -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 43a1a37..818a69e 100755 (executable)
@@ -11439,6 +11439,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 52b30cf..c75697b 100644 (file)
@@ -170,6 +170,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 7b56624..d88761e 100644 (file)
@@ -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 5d749ef..e83c928 100644 (file)
@@ -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.
 
    Permission is hereby granted, free of charge, to any person obtaining
    a copy of this software and associated documentation files (the
@@ -93,7 +94,12 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs,
   ffi_type **ptr;
 
   FFI_ASSERT(cif != NULL);
-  FFI_ASSERT(abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI);
+#ifndef X86_WIN32
+  FFI_ASSERT((abi > FFI_FIRST_ABI) && (abi <= FFI_DEFAULT_ABI));
+#else
+  FFI_ASSERT(abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI
+            || abi == FFI_THISCALL);
+#endif
 
   cif->abi = abi;
   cif->arg_types = atypes;
index 2ab98d1..0e2f87e 100644 (file)
@@ -430,6 +430,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 *);
@@ -589,6 +591,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); \
@@ -631,6 +660,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 a3b96e6..8cce3a8 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 c625a0c..ee8bd10 100644 (file)
@@ -178,6 +178,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 f9435da..c2973ab 100644 (file)
@@ -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 d85c060..22aa3dd 100644 (file)
@@ -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 8548cfd..bf3f030 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
@@ -98,8 +98,13 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs,
   ffi_type **ptr;
 
   FFI_ASSERT(cif != NULL);
-  if (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI))
+#ifndef X86_WIN32
+  if (! (abi > FFI_FIRST_ABI) && (abi <= FFI_LAST_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 c6157d4..30cdc30 100644 (file)
@@ -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 bbfd95e..7c01c57 100644 (file)
@@ -449,6 +449,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 *);
@@ -608,6 +610,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); \
@@ -650,6 +679,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 4d2e4e3..022a57a 100644 (file)
@@ -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 67eea56..1304266 100755 (executable)
@@ -12166,6 +12166,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 f9fb0f9..6998293 100644 (file)
@@ -178,6 +178,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 9f0edcb..39399ca 100644 (file)
@@ -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 2e77803..732fb99 100644 (file)
@@ -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 9456c82..3a3c06f 100755 (executable)
@@ -12167,6 +12167,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 936bab9..66e61ff 100644 (file)
@@ -178,6 +178,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 81f35ef..4fa1b4a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,14 @@
+2012-02-23  Anthony Green  <green@moxielogic.com>
+
+       * src/*/ffitarget.h: Ensure that users never include ffitarget.h
+       directly.
+
 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
diff --git a/patches/ffitarget-include-fix b/patches/ffitarget-include-fix
new file mode 100644 (file)
index 0000000..b2a77db
--- /dev/null
@@ -0,0 +1,387 @@
+Index: libffi/src/alpha/ffitarget.h
+===================================================================
+--- libffi.orig/src/alpha/ffitarget.h
++++ libffi/src/alpha/ffitarget.h
+@@ -1,5 +1,6 @@
+ /* -----------------------------------------------------------------*-C-*-
+-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
++   ffitarget.h - Copyright (c) 2012  Anthony Green
++                 Copyright (c) 1996-2003  Red Hat, Inc.
+    Target configuration macros for Alpha.
+    Permission is hereby granted, free of charge, to any person obtaining
+@@ -27,6 +28,10 @@
+ #ifndef LIBFFI_TARGET_H
+ #define LIBFFI_TARGET_H
++#ifndef LIBFFI_H
++#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
++#endif
++
+ #ifndef LIBFFI_ASM
+ typedef unsigned long          ffi_arg;
+ typedef signed long            ffi_sarg;
+Index: libffi/src/arm/ffitarget.h
+===================================================================
+--- libffi.orig/src/arm/ffitarget.h
++++ libffi/src/arm/ffitarget.h
+@@ -1,6 +1,7 @@
+ /* -----------------------------------------------------------------*-C-*-
+-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+-                 Copyright (c) 2010 CodeSourcery
++   ffitarget.h - Copyright (c) 2012  Anthony Green
++                 Copyright (c) 2010  CodeSourcery
++                 Copyright (c) 1996-2003  Red Hat, Inc.
+    Target configuration macros for ARM.
+@@ -29,6 +30,10 @@
+ #ifndef LIBFFI_TARGET_H
+ #define LIBFFI_TARGET_H
++#ifndef LIBFFI_H
++#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
++#endif
++
+ #ifndef LIBFFI_ASM
+ typedef unsigned long          ffi_arg;
+ typedef signed long            ffi_sarg;
+Index: libffi/src/avr32/ffitarget.h
+===================================================================
+--- libffi.orig/src/avr32/ffitarget.h
++++ libffi/src/avr32/ffitarget.h
+@@ -1,5 +1,6 @@
+ /* -----------------------------------------------------------------*-C-*-
+-   ffitarget.h - Copyright (c) 2009  Bradley Smith <brad@brad-smith.co.uk>
++   ffitarget.h - Copyright (c) 2012  Anthony Green
++                 Copyright (c) 2009  Bradley Smith <brad@brad-smith.co.uk>
+    Target configuration macros for AVR32.
+    Permission is hereby granted, free of charge, to any person obtaining
+@@ -27,6 +28,10 @@
+ #ifndef LIBFFI_TARGET_H
+ #define LIBFFI_TARGET_H
++#ifndef LIBFFI_H
++#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
++#endif
++
+ #ifndef LIBFFI_ASM
+ typedef unsigned long          ffi_arg;
+ typedef signed long            ffi_sarg;
+Index: libffi/src/cris/ffitarget.h
+===================================================================
+--- libffi.orig/src/cris/ffitarget.h
++++ libffi/src/cris/ffitarget.h
+@@ -1,5 +1,6 @@
+ /* -----------------------------------------------------------------*-C-*-
+-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
++   ffitarget.h - Copyright (c) 2012  Anthony Green
++                 Copyright (c) 1996-2003  Red Hat, Inc.
+    Target configuration macros for CRIS.
+    Permission is hereby granted, free of charge, to any person obtaining
+@@ -27,6 +28,10 @@
+ #ifndef LIBFFI_TARGET_H
+ #define LIBFFI_TARGET_H
++#ifndef LIBFFI_H
++#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
++#endif
++
+ #ifndef LIBFFI_ASM
+ typedef unsigned long          ffi_arg;
+ typedef signed long            ffi_sarg;
+Index: libffi/src/frv/ffitarget.h
+===================================================================
+--- libffi.orig/src/frv/ffitarget.h
++++ libffi/src/frv/ffitarget.h
+@@ -1,5 +1,6 @@
+ /* -----------------------------------------------------------------*-C-*-
+-   ffitarget.h - Copyright (c) 1996-2004  Red Hat, Inc.
++   ffitarget.h - Copyright (c) 2012  Anthony Green
++                 Copyright (c) 1996-2004  Red Hat, Inc.
+    Target configuration macros for FR-V
+    Permission is hereby granted, free of charge, to any person obtaining
+@@ -27,6 +28,10 @@
+ #ifndef LIBFFI_TARGET_H
+ #define LIBFFI_TARGET_H
++#ifndef LIBFFI_H
++#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
++#endif
++
+ /* ---- System specific configurations ----------------------------------- */
+ #ifndef LIBFFI_ASM
+Index: libffi/src/ia64/ffitarget.h
+===================================================================
+--- libffi.orig/src/ia64/ffitarget.h
++++ libffi/src/ia64/ffitarget.h
+@@ -1,5 +1,6 @@
+ /* -----------------------------------------------------------------*-C-*-
+-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
++   ffitarget.h - Copyright (c) 2012  Anthony Green
++                 Copyright (c) 1996-2003  Red Hat, Inc.
+    Target configuration macros for IA-64.
+    Permission is hereby granted, free of charge, to any person obtaining
+@@ -27,6 +28,10 @@
+ #ifndef LIBFFI_TARGET_H
+ #define LIBFFI_TARGET_H
++#ifndef LIBFFI_H
++#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
++#endif
++
+ #ifndef LIBFFI_ASM
+ typedef unsigned long long          ffi_arg;
+ typedef signed long long            ffi_sarg;
+Index: libffi/src/m32r/ffitarget.h
+===================================================================
+--- libffi.orig/src/m32r/ffitarget.h
++++ libffi/src/m32r/ffitarget.h
+@@ -1,5 +1,6 @@
+ /* -----------------------------------------------------------------*-C-*-
+-   ffitarget.h - Copyright (c) 2004  Renesas Technology.
++   ffitarget.h - Copyright (c) 2012  Anthony Green
++                 Copyright (c) 2004  Renesas Technology.
+    Target configuration macros for M32R.
+    Permission is hereby granted, free of charge, to any person obtaining
+@@ -26,6 +27,10 @@
+ #ifndef LIBFFI_TARGET_H
+ #define LIBFFI_TARGET_H
++#ifndef LIBFFI_H
++#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
++#endif
++
+ /* ---- Generic type definitions ----------------------------------------- */
+ #ifndef LIBFFI_ASM
+Index: libffi/src/m68k/ffitarget.h
+===================================================================
+--- libffi.orig/src/m68k/ffitarget.h
++++ libffi/src/m68k/ffitarget.h
+@@ -1,5 +1,6 @@
+ /* -----------------------------------------------------------------*-C-*-
+-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
++   ffitarget.h - Copyright (c) 2012  Anthony Green
++                 Copyright (c) 1996-2003  Red Hat, Inc.
+    Target configuration macros for Motorola 68K.
+    Permission is hereby granted, free of charge, to any person obtaining
+@@ -27,6 +28,10 @@
+ #ifndef LIBFFI_TARGET_H
+ #define LIBFFI_TARGET_H
++#ifndef LIBFFI_H
++#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
++#endif
++
+ #ifndef LIBFFI_ASM
+ typedef unsigned long          ffi_arg;
+ typedef signed long            ffi_sarg;
+Index: libffi/src/mips/ffitarget.h
+===================================================================
+--- libffi.orig/src/mips/ffitarget.h
++++ libffi/src/mips/ffitarget.h
+@@ -1,5 +1,6 @@
+ /* -----------------------------------------------------------------*-C-*-
+-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
++   ffitarget.h - Copyright (c) 2012  Anthony Green
++                 Copyright (c) 1996-2003  Red Hat, Inc.
+    Target configuration macros for MIPS.
+    Permission is hereby granted, free of charge, to any person obtaining
+@@ -27,6 +28,10 @@
+ #ifndef LIBFFI_TARGET_H
+ #define LIBFFI_TARGET_H
++#ifndef LIBFFI_H
++#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
++#endif
++
+ #ifdef linux
+ # include <asm/sgidefs.h>
+ #elif defined(__rtems__)
+Index: libffi/src/moxie/ffitarget.h
+===================================================================
+--- libffi.orig/src/moxie/ffitarget.h
++++ libffi/src/moxie/ffitarget.h
+@@ -1,5 +1,5 @@
+ /* -----------------------------------------------------------------*-C-*-
+-   ffitarget.h - Copyright (c) 2009 Anthony Green
++   ffitarget.h - Copyright (c) 2012, 2009 Anthony Green
+    Target configuration macros for Moxie
+    Permission is hereby granted, free of charge, to any person obtaining
+@@ -27,6 +27,10 @@
+ #ifndef LIBFFI_TARGET_H
+ #define LIBFFI_TARGET_H
++#ifndef LIBFFI_H
++#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
++#endif
++
+ /* ---- System specific configurations ----------------------------------- */
+ #ifndef LIBFFI_ASM
+Index: libffi/src/pa/ffitarget.h
+===================================================================
+--- libffi.orig/src/pa/ffitarget.h
++++ libffi/src/pa/ffitarget.h
+@@ -1,5 +1,6 @@
+ /* -----------------------------------------------------------------*-C-*-
+-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
++   ffitarget.h - Copyright (c) 2012  Anthony Green
++                 Copyright (c) 1996-2003  Red Hat, Inc.
+    Target configuration macros for hppa.
+    Permission is hereby granted, free of charge, to any person obtaining
+@@ -27,6 +28,10 @@
+ #ifndef LIBFFI_TARGET_H
+ #define LIBFFI_TARGET_H
++#ifndef LIBFFI_H
++#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
++#endif
++
+ /* ---- System specific configurations ----------------------------------- */
+ #ifndef LIBFFI_ASM
+Index: libffi/src/powerpc/ffitarget.h
+===================================================================
+--- libffi.orig/src/powerpc/ffitarget.h
++++ libffi/src/powerpc/ffitarget.h
+@@ -1,6 +1,8 @@
+ /* -----------------------------------------------------------------*-C-*-
+-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+-   Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc
++   ffitarget.h - Copyright (c) 2012  Anthony Green
++                 Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc
++                 Copyright (c) 1996-2003  Red Hat, Inc.
++
+    Target configuration macros for PowerPC.
+    Permission is hereby granted, free of charge, to any person obtaining
+@@ -28,6 +30,10 @@
+ #ifndef LIBFFI_TARGET_H
+ #define LIBFFI_TARGET_H
++#ifndef LIBFFI_H
++#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
++#endif
++
+ /* ---- System specific configurations ----------------------------------- */
+ #if defined (POWERPC) && defined (__powerpc64__)      /* linux64 */
+Index: libffi/src/s390/ffitarget.h
+===================================================================
+--- libffi.orig/src/s390/ffitarget.h
++++ libffi/src/s390/ffitarget.h
+@@ -1,5 +1,6 @@
+ /* -----------------------------------------------------------------*-C-*-
+-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
++   ffitarget.h - Copyright (c) 2012  Anthony Green
++                 Copyright (c) 1996-2003  Red Hat, Inc.
+    Target configuration macros for S390.
+    Permission is hereby granted, free of charge, to any person obtaining
+@@ -27,6 +28,10 @@
+ #ifndef LIBFFI_TARGET_H
+ #define LIBFFI_TARGET_H
++#ifndef LIBFFI_H
++#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
++#endif
++
+ #if defined (__s390x__)
+ #ifndef S390X
+ #define S390X
+Index: libffi/src/sh/ffitarget.h
+===================================================================
+--- libffi.orig/src/sh/ffitarget.h
++++ libffi/src/sh/ffitarget.h
+@@ -1,5 +1,6 @@
+ /* -----------------------------------------------------------------*-C-*-
+-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
++   ffitarget.h - Copyright (c) 2012 Anthony Green
++                 Copyright (c) 1996-2003  Red Hat, Inc.
+    Target configuration macros for SuperH.
+    Permission is hereby granted, free of charge, to any person obtaining
+@@ -27,6 +28,10 @@
+ #ifndef LIBFFI_TARGET_H
+ #define LIBFFI_TARGET_H
++#ifndef LIBFFI_H
++#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
++#endif
++
+ /* ---- Generic type definitions ----------------------------------------- */
+ #ifndef LIBFFI_ASM
+Index: libffi/src/sh64/ffitarget.h
+===================================================================
+--- libffi.orig/src/sh64/ffitarget.h
++++ libffi/src/sh64/ffitarget.h
+@@ -1,5 +1,6 @@
+ /* -----------------------------------------------------------------*-C-*-
+-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
++   ffitarget.h - Copyright (c) 2012  Anthony Green
++                 Copyright (c) 1996-2003  Red Hat, Inc.
+    Target configuration macros for SuperH - SHmedia.
+    Permission is hereby granted, free of charge, to any person obtaining
+@@ -27,6 +28,10 @@
+ #ifndef LIBFFI_TARGET_H
+ #define LIBFFI_TARGET_H
++#ifndef LIBFFI_H
++#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
++#endif
++
+ /* ---- Generic type definitions ----------------------------------------- */
+ #ifndef LIBFFI_ASM
+Index: libffi/src/sparc/ffitarget.h
+===================================================================
+--- libffi.orig/src/sparc/ffitarget.h
++++ libffi/src/sparc/ffitarget.h
+@@ -1,5 +1,6 @@
+ /* -----------------------------------------------------------------*-C-*-
+-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
++   ffitarget.h - Copyright (c) 2012  Anthony Green
++                 Copyright (c) 1996-2003  Red Hat, Inc.
+    Target configuration macros for SPARC.
+    Permission is hereby granted, free of charge, to any person obtaining
+@@ -27,6 +28,10 @@
+ #ifndef LIBFFI_TARGET_H
+ #define LIBFFI_TARGET_H
++#ifndef LIBFFI_H
++#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
++#endif
++
+ /* ---- System specific configurations ----------------------------------- */
+ #if defined(__arch64__) || defined(__sparcv9)
+Index: libffi/src/x86/ffitarget.h
+===================================================================
+--- libffi.orig/src/x86/ffitarget.h
++++ libffi/src/x86/ffitarget.h
+@@ -30,6 +30,10 @@
+ #ifndef LIBFFI_TARGET_H
+ #define LIBFFI_TARGET_H
++#ifndef LIBFFI_H
++#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
++#endif
++
+ /* ---- System specific configurations ----------------------------------- */
+ /* For code common to all platforms on x86 and x86_64. */
index b4740b4..f0db25d 100644 (file)
@@ -42,3 +42,4 @@ unlikely
 amiga
 alpha
 autoconf-archive-update
+ffitarget-include-fix
index 7d06eb0..af145bc 100644 (file)
@@ -1,5 +1,6 @@
 /* -----------------------------------------------------------------*-C-*-
-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   ffitarget.h - Copyright (c) 2012  Anthony Green
+                 Copyright (c) 1996-2003  Red Hat, Inc.
    Target configuration macros for Alpha.
 
    Permission is hereby granted, free of charge, to any person obtaining
 #ifndef LIBFFI_TARGET_H
 #define LIBFFI_TARGET_H
 
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
+#endif
+
 #ifndef LIBFFI_ASM
 typedef unsigned long          ffi_arg;
 typedef signed long            ffi_sarg;
index b9a0428..26d494d 100644 (file)
@@ -1,6 +1,7 @@
 /* -----------------------------------------------------------------*-C-*-
-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
-                 Copyright (c) 2010 CodeSourcery
+   ffitarget.h - Copyright (c) 2012  Anthony Green
+                 Copyright (c) 2010  CodeSourcery
+                 Copyright (c) 1996-2003  Red Hat, Inc.
 
    Target configuration macros for ARM.
 
 #ifndef LIBFFI_TARGET_H
 #define LIBFFI_TARGET_H
 
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
+#endif
+
 #ifndef LIBFFI_ASM
 typedef unsigned long          ffi_arg;
 typedef signed long            ffi_sarg;
index b85d062..d0c7586 100644 (file)
@@ -1,5 +1,6 @@
 /* -----------------------------------------------------------------*-C-*-
-   ffitarget.h - Copyright (c) 2009  Bradley Smith <brad@brad-smith.co.uk>
+   ffitarget.h - Copyright (c) 2012  Anthony Green
+                 Copyright (c) 2009  Bradley Smith <brad@brad-smith.co.uk>
    Target configuration macros for AVR32.
 
    Permission is hereby granted, free of charge, to any person obtaining
 #ifndef LIBFFI_TARGET_H
 #define LIBFFI_TARGET_H
 
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
+#endif
+
 #ifndef LIBFFI_ASM
 typedef unsigned long          ffi_arg;
 typedef signed long            ffi_sarg;
index 0e3705d..b837e97 100644 (file)
@@ -1,5 +1,6 @@
 /* -----------------------------------------------------------------*-C-*-
-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   ffitarget.h - Copyright (c) 2012  Anthony Green
+                 Copyright (c) 1996-2003  Red Hat, Inc.
    Target configuration macros for CRIS.
 
    Permission is hereby granted, free of charge, to any person obtaining
 #ifndef LIBFFI_TARGET_H
 #define LIBFFI_TARGET_H
 
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
+#endif
+
 #ifndef LIBFFI_ASM
 typedef unsigned long          ffi_arg;
 typedef signed long            ffi_sarg;
index 4839069..d42540e 100644 (file)
@@ -1,5 +1,6 @@
 /* -----------------------------------------------------------------*-C-*-
-   ffitarget.h - Copyright (c) 1996-2004  Red Hat, Inc.
+   ffitarget.h - Copyright (c) 2012  Anthony Green
+                 Copyright (c) 1996-2004  Red Hat, Inc.
    Target configuration macros for FR-V
 
    Permission is hereby granted, free of charge, to any person obtaining
 #ifndef LIBFFI_TARGET_H
 #define LIBFFI_TARGET_H
 
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
+#endif
+
 /* ---- System specific configurations ----------------------------------- */
 
 #ifndef LIBFFI_ASM
index 0d2001d..e68cea6 100644 (file)
@@ -1,5 +1,6 @@
 /* -----------------------------------------------------------------*-C-*-
-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   ffitarget.h - Copyright (c) 2012  Anthony Green
+                 Copyright (c) 1996-2003  Red Hat, Inc.
    Target configuration macros for IA-64.
 
    Permission is hereby granted, free of charge, to any person obtaining
 #ifndef LIBFFI_TARGET_H
 #define LIBFFI_TARGET_H
 
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
+#endif
+
 #ifndef LIBFFI_ASM
 typedef unsigned long long          ffi_arg;
 typedef signed long long            ffi_sarg;
index 2e2ea48..6c34801 100644 (file)
@@ -1,5 +1,6 @@
 /* -----------------------------------------------------------------*-C-*-
-   ffitarget.h - Copyright (c) 2004  Renesas Technology.
+   ffitarget.h - Copyright (c) 2012  Anthony Green
+                 Copyright (c) 2004  Renesas Technology.
    Target configuration macros for M32R.
 
    Permission is hereby granted, free of charge, to any person obtaining
 #ifndef LIBFFI_TARGET_H
 #define LIBFFI_TARGET_H
 
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
+#endif
+
 /* ---- Generic type definitions ----------------------------------------- */
 
 #ifndef LIBFFI_ASM
index 3b777ed..e81dde2 100644 (file)
@@ -1,5 +1,6 @@
 /* -----------------------------------------------------------------*-C-*-
-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   ffitarget.h - Copyright (c) 2012  Anthony Green
+                 Copyright (c) 1996-2003  Red Hat, Inc.
    Target configuration macros for Motorola 68K.
 
    Permission is hereby granted, free of charge, to any person obtaining
 #ifndef LIBFFI_TARGET_H
 #define LIBFFI_TARGET_H
 
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
+#endif
+
 #ifndef LIBFFI_ASM
 typedef unsigned long          ffi_arg;
 typedef signed long            ffi_sarg;
index 637adbf..717d659 100644 (file)
@@ -1,5 +1,6 @@
 /* -----------------------------------------------------------------*-C-*-
-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   ffitarget.h - Copyright (c) 2012  Anthony Green
+                 Copyright (c) 1996-2003  Red Hat, Inc.
    Target configuration macros for MIPS.
 
    Permission is hereby granted, free of charge, to any person obtaining
 #ifndef LIBFFI_TARGET_H
 #define LIBFFI_TARGET_H
 
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
+#endif
+
 #ifdef linux
 # include <asm/sgidefs.h>
 #elif defined(__rtems__)
index 2a9d954..75bb8cc 100644 (file)
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------*-C-*-
-   ffitarget.h - Copyright (c) 2009 Anthony Green
+   ffitarget.h - Copyright (c) 2012, 2009 Anthony Green
    Target configuration macros for Moxie
 
    Permission is hereby granted, free of charge, to any person obtaining
 #ifndef LIBFFI_TARGET_H
 #define LIBFFI_TARGET_H
 
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
+#endif
+
 /* ---- System specific configurations ----------------------------------- */
 
 #ifndef LIBFFI_ASM
index efa2f4e..5e364d3 100644 (file)
@@ -1,5 +1,6 @@
 /* -----------------------------------------------------------------*-C-*-
-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   ffitarget.h - Copyright (c) 2012  Anthony Green
+                 Copyright (c) 1996-2003  Red Hat, Inc.
    Target configuration macros for hppa.
 
    Permission is hereby granted, free of charge, to any person obtaining
 #ifndef LIBFFI_TARGET_H
 #define LIBFFI_TARGET_H
 
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
+#endif
+
 /* ---- System specific configurations ----------------------------------- */
 
 #ifndef LIBFFI_ASM
index 820c482..3c9db49 100644 (file)
@@ -1,6 +1,8 @@
 /* -----------------------------------------------------------------*-C-*-
-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
-   Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc
+   ffitarget.h - Copyright (c) 2012  Anthony Green
+                 Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc
+                 Copyright (c) 1996-2003  Red Hat, Inc.
+
    Target configuration macros for PowerPC.
 
    Permission is hereby granted, free of charge, to any person obtaining
 #ifndef LIBFFI_TARGET_H
 #define LIBFFI_TARGET_H
 
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
+#endif
+
 /* ---- System specific configurations ----------------------------------- */
 
 #if defined (POWERPC) && defined (__powerpc64__)       /* linux64 */
index a262691..97fa5c4 100644 (file)
@@ -1,5 +1,6 @@
 /* -----------------------------------------------------------------*-C-*-
-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   ffitarget.h - Copyright (c) 2012  Anthony Green
+                 Copyright (c) 1996-2003  Red Hat, Inc.
    Target configuration macros for S390.
 
    Permission is hereby granted, free of charge, to any person obtaining
 #ifndef LIBFFI_TARGET_H
 #define LIBFFI_TARGET_H
 
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
+#endif
+
 #if defined (__s390x__)
 #ifndef S390X
 #define S390X
index 4f1f639..a36bf42 100644 (file)
@@ -1,5 +1,6 @@
 /* -----------------------------------------------------------------*-C-*-
-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   ffitarget.h - Copyright (c) 2012 Anthony Green
+                 Copyright (c) 1996-2003  Red Hat, Inc.
    Target configuration macros for SuperH.
 
    Permission is hereby granted, free of charge, to any person obtaining
 #ifndef LIBFFI_TARGET_H
 #define LIBFFI_TARGET_H
 
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
+#endif
+
 /* ---- Generic type definitions ----------------------------------------- */
 
 #ifndef LIBFFI_ASM
index d935b89..08a6fe9 100644 (file)
@@ -1,5 +1,6 @@
 /* -----------------------------------------------------------------*-C-*-
-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   ffitarget.h - Copyright (c) 2012  Anthony Green
+                 Copyright (c) 1996-2003  Red Hat, Inc.
    Target configuration macros for SuperH - SHmedia.
 
    Permission is hereby granted, free of charge, to any person obtaining
 #ifndef LIBFFI_TARGET_H
 #define LIBFFI_TARGET_H
 
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
+#endif
+
 /* ---- Generic type definitions ----------------------------------------- */
 
 #ifndef LIBFFI_ASM
index 51275cb..d89f787 100644 (file)
@@ -1,5 +1,6 @@
 /* -----------------------------------------------------------------*-C-*-
-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   ffitarget.h - Copyright (c) 2012  Anthony Green
+                 Copyright (c) 1996-2003  Red Hat, Inc.
    Target configuration macros for SPARC.
 
    Permission is hereby granted, free of charge, to any person obtaining
 #ifndef LIBFFI_TARGET_H
 #define LIBFFI_TARGET_H
 
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
+#endif
+
 /* ---- System specific configurations ----------------------------------- */
 
 #if defined(__arch64__) || defined(__sparcv9)
index 7c2b588..17f60bc 100644 (file)
 #ifndef LIBFFI_TARGET_H
 #define LIBFFI_TARGET_H
 
+#ifndef LIBFFI_H
+#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
+#endif
+
 /* ---- System specific configurations ----------------------------------- */
 
 /* For code common to all platforms on x86 and x86_64. */