3.0.9rc12
authorAnthony Green <green@gmachine.(none)>
Tue, 29 Dec 2009 15:06:04 +0000 (10:06 -0500)
committerAnthony Green <green@gmachine.(none)>
Tue, 29 Dec 2009 15:06:04 +0000 (10:06 -0500)
51 files changed:
.pc/windows/testsuite/libffi.call/ffitest.h [new file with mode: 0644]
.pc/windows/testsuite/libffi.special/ffitestcxx.h [new file with mode: 0644]
ChangeLog
ChangeLog.libffi
README
configure
configure.ac
doc/.svn/entries
doc/stamp-vti
doc/version.texi
include/.svn/entries
man/.svn/entries
patches/fix-huge_struct-test
patches/powerpc-fixes
patches/series
patches/snow-leopard
patches/stand-alone
patches/undefine_AC_ARG_VAR_PRECIOUS
patches/windows
src/.svn/entries
src/.svn/text-base/closures.c.svn-base
src/alpha/.svn/entries
src/arm/.svn/entries
src/avr32/.svn/entries
src/closures.c
src/closures.c.rej [new file with mode: 0644]
src/cris/.svn/entries
src/frv/.svn/entries
src/ia64/.svn/entries
src/m32r/.svn/entries
src/m68k/.svn/entries
src/mips/.svn/entries
src/pa/.svn/entries
src/powerpc/.svn/entries
src/powerpc/.svn/text-base/ffi.c.svn-base
src/powerpc/.svn/text-base/ffi_darwin.c.svn-base
src/powerpc/ffi.c
src/powerpc/ffi.c.rej [new file with mode: 0644]
src/powerpc/ffi_darwin.c
src/s390/.svn/entries
src/sh/.svn/entries
src/sh64/.svn/entries
src/sparc/.svn/entries
src/x86/.svn/entries
testsuite/.svn/entries
testsuite/config/.svn/entries
testsuite/lib/.svn/entries
testsuite/libffi.call/.svn/entries
testsuite/libffi.call/ffitest.h
testsuite/libffi.special/.svn/entries
testsuite/libffi.special/ffitestcxx.h

diff --git a/.pc/windows/testsuite/libffi.call/ffitest.h b/.pc/windows/testsuite/libffi.call/ffitest.h
new file mode 100644 (file)
index 0000000..52220a3
--- /dev/null
@@ -0,0 +1,111 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <fcntl.h>
+#include <stdint.h>
+#include <inttypes.h>
+#include <ffi.h>
+#include "fficonfig.h"
+
+#define MAX_ARGS 256
+
+#define CHECK(x) !(x) ? abort() : 0
+
+/* Define __UNUSED__ that also other compilers than gcc can run the tests.  */
+#undef __UNUSED__
+#if defined(__GNUC__)
+#define __UNUSED__ __attribute__((__unused__))
+#else
+#define __UNUSED__
+#endif
+
+/* Prefer MAP_ANON(YMOUS) to /dev/zero, since we don't need to keep a
+   file open.  */
+#ifdef HAVE_MMAP_ANON
+# undef HAVE_MMAP_DEV_ZERO
+
+# include <sys/mman.h>
+# ifndef MAP_FAILED
+#  define MAP_FAILED -1
+# endif
+# if !defined (MAP_ANONYMOUS) && defined (MAP_ANON)
+#  define MAP_ANONYMOUS MAP_ANON
+# endif
+# define USING_MMAP
+
+#endif
+
+#ifdef HAVE_MMAP_DEV_ZERO
+
+# include <sys/mman.h>
+# ifndef MAP_FAILED
+#  define MAP_FAILED -1
+# endif
+# define USING_MMAP
+
+#endif
+
+/* MinGW kludge.  */
+#ifdef WIN64
+#define PRIdLL "PRId64"
+#define PRIuLL "PRIu64"
+#else
+#define PRIdLL "lld"
+#define PRIuLL "llu"
+#endif
+
+/* PA HP-UX kludge.  */
+#if defined(__hppa__) && defined(__hpux__) && !defined(PRIuPTR)
+#define PRIuPTR "lu"
+#endif
+
+/* Solaris < 10 kludge.  */
+#if defined(__sun__) && defined(__svr4__) && !defined(PRIuPTR)
+#if defined(__arch64__) || defined (__x86_64__)
+#define PRIuPTR "lu"
+#else
+#define PRIuPTR "u"
+#endif
+#endif
+
+#ifdef USING_MMAP
+static inline void *
+allocate_mmap (size_t size)
+{
+  void *page;
+#if defined (HAVE_MMAP_DEV_ZERO)
+  static int dev_zero_fd = -1;
+#endif
+
+#ifdef HAVE_MMAP_DEV_ZERO
+  if (dev_zero_fd == -1)
+    {
+      dev_zero_fd = open ("/dev/zero", O_RDONLY);
+      if (dev_zero_fd == -1)
+       {
+         perror ("open /dev/zero: %m");
+         exit (1);
+       }
+    }
+#endif
+
+
+#ifdef HAVE_MMAP_ANON
+  page = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
+              MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+#endif
+#ifdef HAVE_MMAP_DEV_ZERO
+  page = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
+              MAP_PRIVATE, dev_zero_fd, 0);
+#endif
+
+  if (page == (void *) MAP_FAILED)
+    {
+      perror ("virtual memory exhausted");
+      exit (1);
+    }
+
+  return page;
+}
+
+#endif
diff --git a/.pc/windows/testsuite/libffi.special/ffitestcxx.h b/.pc/windows/testsuite/libffi.special/ffitestcxx.h
new file mode 100644 (file)
index 0000000..92fb656
--- /dev/null
@@ -0,0 +1,96 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <ffi.h>
+#include "fficonfig.h"
+
+#define MAX_ARGS 256
+
+
+/* Define __UNUSED__ that also other compilers than gcc can run the tests.  */
+#undef __UNUSED__
+#if defined(__GNUC__)
+#define __UNUSED__ __attribute__((__unused__))
+#else
+#define __UNUSED__
+#endif
+
+#define CHECK(x) (!(x) ? abort() : (void)0)
+
+/* Prefer MAP_ANON(YMOUS) to /dev/zero, since we don't need to keep a
+   file open.  */
+#ifdef HAVE_MMAP_ANON
+# undef HAVE_MMAP_DEV_ZERO
+
+# include <sys/mman.h>
+# ifndef MAP_FAILED
+#  define MAP_FAILED -1
+# endif
+# if !defined (MAP_ANONYMOUS) && defined (MAP_ANON)
+#  define MAP_ANONYMOUS MAP_ANON
+# endif
+# define USING_MMAP
+
+#endif
+
+#ifdef HAVE_MMAP_DEV_ZERO
+
+# include <sys/mman.h>
+# ifndef MAP_FAILED
+#  define MAP_FAILED -1
+# endif
+# define USING_MMAP
+
+#endif
+
+
+/* MinGW kludge.  */
+#ifdef WIN64
+#define PRIdLL "PRId64"
+#define PRIuLL "PRIu64"
+#else
+#define PRIdLL "lld"
+#define PRIuLL "llu"
+#endif
+
+#ifdef USING_MMAP
+static inline void *
+allocate_mmap (size_t size)
+{
+  void *page;
+#if defined (HAVE_MMAP_DEV_ZERO)
+  static int dev_zero_fd = -1;
+#endif
+
+#ifdef HAVE_MMAP_DEV_ZERO
+  if (dev_zero_fd == -1)
+    {
+      dev_zero_fd = open ("/dev/zero", O_RDONLY);
+      if (dev_zero_fd == -1)
+       {
+         perror ("open /dev/zero: %m");
+         exit (1);
+       }
+    }
+#endif
+
+
+#ifdef HAVE_MMAP_ANON
+  page = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
+              MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+#endif
+#ifdef HAVE_MMAP_DEV_ZERO
+  page = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
+              MAP_PRIVATE, dev_zero_fd, 0);
+#endif
+
+  if (page == MAP_FAILED)
+    {
+      perror ("virtual memory exhausted");
+      exit (1);
+    }
+
+  return page;
+}
+
+#endif
index 4c07686..bb1ca90 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,25 @@
+2009-12-28  David Edelsohn  <edelsohn@gnu.org>
+
+       * src/powerpc/ffi_darwin.c (ffi_prep_args): Copy abi and nargs to
+       local variables.
+       (aix_adjust_aggregate_sizes): New function.
+       (ffi_prep_cif_machdep): Call it.
+
+2009-12-26  Andreas Tobler  <a.tobler@schweiz.org>
+
+       * configure.ac: Define FFI_MMAP_EXEC_WRIT for the given targets.
+       * configure: Regenerate.
+       * fficonfig.h.in: Likewise.
+       * src/closures.c: Remove the FFI_MMAP_EXEC_WRIT definition for
+       Solaris/x86.
+
+2009-12-26  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * src/powerpc/ffi.c (ffi_prep_args_SYSV): Advance intarg_count
+       when a float arguments is passed in memory.
+       (ffi_closure_helper_SYSV): Mark general registers as used up when
+       a 64bit or soft-float long double argument is passed in memory.
+
 2009-12-25  Matthias Klose  <doko@ubuntu.com>
 
        * man/ffi_call.3: Fix #include in examples.
@@ -10,7 +32,7 @@
        IRIX MIPSPro c99.
        * include/ffi_common.h: Added '__sgi' define to non
        '__attribute__((__mode__()))' integer typedefs.
-        * src/mips/ffi.c (ffi_call, ffi_closure_mips_inner_O32,
+       * src/mips/ffi.c (ffi_call, ffi_closure_mips_inner_O32,
        ffi_closure_mips_inner_N32): Added 'defined(_MIPSEB)' to BE check.
        (ffi_closure_mips_inner_O32, ffi_closure_mips_inner_N32): Added
        FFI_LONGDOUBLE support and alignment(N32 only).
 2009-12-04  David Edelsohn  <edelsohn@gnu.org>
 
        * src/powerpc/aix_closure.S: Reorganize 64-bit code to match
-        linux64_closure.S.
+       linux64_closure.S.
 
 2009-12-04  Uros Bizjak  <ubizjak@gmail.com>
 
 
        * testsuite/libffi.call/err_bad_typedef.c: xfail everywhere.
        * testsuite/libffi.call/err_bad_abi.c: Likewise.
-       
+
 2009-06-12  Andrew Haley  <aph@redhat.com>
 
        * Makefile.am: Remove info_TEXINFOS.
 2009-06-11  Timothy Wall  <twall@users.sf.net>
 
        * Makefile.am,
-        configure.ac,
-        include/ffi.h.in,
-        include/ffi_common.h,
-        src/closures.c,
-        src/dlmalloc.c,
-        src/x86/ffi.c,
-        src/x86/ffitarget.h,
-        src/x86/win64.S (new),
+       configure.ac,
+       include/ffi.h.in,
+       include/ffi_common.h,
+       src/closures.c,
+       src/dlmalloc.c,
+       src/x86/ffi.c,
+       src/x86/ffitarget.h,
+       src/x86/win64.S (new),
        README: Added win64 support (mingw or MSVC)
-        * Makefile.in,
-        include/Makefile.in,
-        man/Makefile.in,
-        testsuite/Makefile.in,
-        configure,
-        aclocal.m4: Regenerated
-        * ltcf-c.sh: properly escape cygwin/w32 path
-        * man/ffi_call.3: Clarify size requirements for return value.
-        * src/x86/ffi64.c: Fix filename in comment.
-        * src/x86/win32.S: Remove unused extern.
-
-        * testsuite/libffi.call/closure_fn0.c,
-        testsuite/libffi.call/closure_fn1.c,
-        testsuite/libffi.call/closure_fn2.c,
-        testsuite/libffi.call/closure_fn3.c,
-        testsuite/libffi.call/closure_fn4.c,
-        testsuite/libffi.call/closure_fn5.c,
-        testsuite/libffi.call/closure_fn6.c,
+       * Makefile.in,
+       include/Makefile.in,
+       man/Makefile.in,
+       testsuite/Makefile.in,
+       configure,
+       aclocal.m4: Regenerated
+       * ltcf-c.sh: properly escape cygwin/w32 path
+       * man/ffi_call.3: Clarify size requirements for return value.
+       * src/x86/ffi64.c: Fix filename in comment.
+       * src/x86/win32.S: Remove unused extern.
+
+       * testsuite/libffi.call/closure_fn0.c,
+       testsuite/libffi.call/closure_fn1.c,
+       testsuite/libffi.call/closure_fn2.c,
+       testsuite/libffi.call/closure_fn3.c,
+       testsuite/libffi.call/closure_fn4.c,
+       testsuite/libffi.call/closure_fn5.c,
+       testsuite/libffi.call/closure_fn6.c,
        testsuite/libffi.call/closure_stdcall.c,
        testsuite/libffi.call/cls_12byte.c,
        testsuite/libffi.call/cls_16byte.c,
        testsuite/libffi.call/stret_large2.c,
        testsuite/libffi.call/stret_medium.c,
        testsuite/libffi.call/stret_medium2.c,
-        testsuite/libffi.special/unwindtest.cc: use ffi_closure_alloc instead
-        of checking for MMAP.  Use intptr_t instead of long casts.
+       testsuite/libffi.special/unwindtest.cc: use ffi_closure_alloc instead
+       of checking for MMAP.  Use intptr_t instead of long casts.
 
 2009-06-11  Kaz Kojima  <kkojima@gcc.gnu.org>
 
 
 2008-12-26  Timothy Wall  <twall@users.sf.net>
 
-        * testsuite/libffi.call/cls_longdouble.c,
-        testsuite/libffi.call/cls_longdouble_va.c,
-        testsuite/libffi.call/cls_align_longdouble.c,
-        testsuite/libffi.call/cls_align_longdouble_split.c,
-        testsuite/libffi.call/cls_align_longdouble_split2.c: mark expected
-        failures on x86_64 cygwin/mingw.
+       * testsuite/libffi.call/cls_longdouble.c,
+       testsuite/libffi.call/cls_longdouble_va.c,
+       testsuite/libffi.call/cls_align_longdouble.c,
+       testsuite/libffi.call/cls_align_longdouble_split.c,
+       testsuite/libffi.call/cls_align_longdouble_split2.c: mark expected
+       failures on x86_64 cygwin/mingw.
 
 2008-12-22  Timothy Wall  <twall@users.sf.net>
 
-        * testsuite/libffi.call/closure_fn0.c,
-        testsuite/libffi.call/closure_fn1.c,
-        testsuite/libffi.call/closure_fn2.c,
-        testsuite/libffi.call/closure_fn3.c,
-        testsuite/libffi.call/closure_fn4.c,
-        testsuite/libffi.call/closure_fn5.c,
-        testsuite/libffi.call/closure_fn6.c,
-        testsuite/libffi.call/closure_loc_fn0.c,
-        testsuite/libffi.call/closure_stdcall.c,
-        testsuite/libffi.call/cls_align_pointer.c,
-        testsuite/libffi.call/cls_pointer.c,
-        testsuite/libffi.call/cls_pointer_stack.c: use portable cast from
-        pointer to integer (intptr_t).
-        * testsuite/libffi.call/cls_longdouble.c: disable for win64.
+       * testsuite/libffi.call/closure_fn0.c,
+       testsuite/libffi.call/closure_fn1.c,
+       testsuite/libffi.call/closure_fn2.c,
+       testsuite/libffi.call/closure_fn3.c,
+       testsuite/libffi.call/closure_fn4.c,
+       testsuite/libffi.call/closure_fn5.c,
+       testsuite/libffi.call/closure_fn6.c,
+       testsuite/libffi.call/closure_loc_fn0.c,
+       testsuite/libffi.call/closure_stdcall.c,
+       testsuite/libffi.call/cls_align_pointer.c,
+       testsuite/libffi.call/cls_pointer.c,
+       testsuite/libffi.call/cls_pointer_stack.c: use portable cast from
+       pointer to integer (intptr_t).
+       * testsuite/libffi.call/cls_longdouble.c: disable for win64.
 
 2008-07-24  Anthony Green  <green@redhat.com>
 
-        * testsuite/libffi.call/cls_dbls_struct.c,
-        testsuite/libffi.call/cls_double_va.c,
-        testsuite/libffi.call/cls_longdouble.c,
-        testsuite/libffi.call/cls_longdouble_va.c,
-        testsuite/libffi.call/cls_pointer.c,
-        testsuite/libffi.call/cls_pointer_stack.c,
-        testsuite/libffi.call/err_bad_abi.c: Clean up failures from
-        compiler warnings.
+       * testsuite/libffi.call/cls_dbls_struct.c,
+       testsuite/libffi.call/cls_double_va.c,
+       testsuite/libffi.call/cls_longdouble.c,
+       testsuite/libffi.call/cls_longdouble_va.c,
+       testsuite/libffi.call/cls_pointer.c,
+       testsuite/libffi.call/cls_pointer_stack.c,
+       testsuite/libffi.call/err_bad_abi.c: Clean up failures from
+       compiler warnings.
 
 2008-03-04  Anthony Green  <green@redhat.com>
-            Blake Chaffin
-            hos@tamanegi.org
-
-        * testsuite/libffi.call/cls_align_longdouble_split2.c
-          testsuite/libffi.call/cls_align_longdouble_split.c
-          testsuite/libffi.call/cls_dbls_struct.c
-          testsuite/libffi.call/cls_double_va.c
-          testsuite/libffi.call/cls_longdouble.c
-          testsuite/libffi.call/cls_longdouble_va.c
-          testsuite/libffi.call/cls_pointer.c
-          testsuite/libffi.call/cls_pointer_stack.c
-          testsuite/libffi.call/err_bad_abi.c
-          testsuite/libffi.call/err_bad_typedef.c
-          testsuite/libffi.call/stret_large2.c
-          testsuite/libffi.call/stret_large.c
-          testsuite/libffi.call/stret_medium2.c
-          testsuite/libffi.call/stret_medium.c: New tests from Apple.
+           Blake Chaffin
+           hos@tamanegi.org
+
+       * testsuite/libffi.call/cls_align_longdouble_split2.c
+         testsuite/libffi.call/cls_align_longdouble_split.c
+         testsuite/libffi.call/cls_dbls_struct.c
+         testsuite/libffi.call/cls_double_va.c
+         testsuite/libffi.call/cls_longdouble.c
+         testsuite/libffi.call/cls_longdouble_va.c
+         testsuite/libffi.call/cls_pointer.c
+         testsuite/libffi.call/cls_pointer_stack.c
+         testsuite/libffi.call/err_bad_abi.c
+         testsuite/libffi.call/err_bad_typedef.c
+         testsuite/libffi.call/stret_large2.c
+         testsuite/libffi.call/stret_large.c
+         testsuite/libffi.call/stret_medium2.c
+         testsuite/libffi.call/stret_medium.c: New tests from Apple.
 
 2009-06-05  Andrew Haley  <aph@redhat.com>
 
        stdcall changes.
 
 2008-02-26  Anthony Green  <green@redhat.com>
-            Thomas Heller  <theller@ctypes.org>
+           Thomas Heller  <theller@ctypes.org>
 
-        * src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C
-        comment.
+       * src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C
+       comment.
 
 2008-02-03  Timothy Wall  <twall@users.sf.net>
 
-        * src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL): Calculate jump return
-          offset based on code pointer, not data pointer.
+       * src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL): Calculate jump return
+         offset based on code pointer, not data pointer.
 
 2008-01-31  Timothy Wall <twall@users.sf.net>
 
-        * testsuite/libffi.call/closure_stdcall.c: Add test for stdcall
-        closures.
-        * src/x86/ffitarget.h: Increase size of trampoline for stdcall
-        closures.
-        * src/x86/win32.S: Add assembly for stdcall closure.
-        * src/x86/ffi.c: Initialize stdcall closure trampoline.
+       * testsuite/libffi.call/closure_stdcall.c: Add test for stdcall
+       closures.
+       * src/x86/ffitarget.h: Increase size of trampoline for stdcall
+       closures.
+       * src/x86/win32.S: Add assembly for stdcall closure.
+       * src/x86/ffi.c: Initialize stdcall closure trampoline.
 
 2009-06-04  Andrew Haley  <aph@redhat.com>
 
 
 2008-02-15  David Daney  <ddaney@avtrex.com>
 
-        * src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE):
-        Define (conditionally), and use it to include cachectl.h.
-        (ffi_prep_closure_loc): Fix cache flushing.
-        * src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define.
+       * src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE):
+       Define (conditionally), and use it to include cachectl.h.
+       (ffi_prep_closure_loc): Fix cache flushing.
+       * src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define.
 
 2009-06-04  Andrew Haley  <aph@redhat.com>
 
        (ffi_closure_v8): Likewise.
 
 2008-09-26  Peter O'Gorman  <pogma@thewrittenword.com>
-            Steve Ellcey  <sje@cup.hp.com>
+           Steve Ellcey  <sje@cup.hp.com>
 
        * configure: Regenerate for new libtool.
        * Makefile.in: Ditto.
 
 2007-12-08  David Daney  <ddaney@avtrex.com>
 
-       * src/mips/n32.S (ffi_call_N32):  Replace dadd with ADDU, dsub with 
+       * src/mips/n32.S (ffi_call_N32):  Replace dadd with ADDU, dsub with
        SUBU, add with ADDU and use smaller code sequences.
 
 2007-12-07  David Daney  <ddaney@avtrex.com>
        sizeof(ffi_java_raw) for alignment calculations.
        (ffi_java_ptrarray_to_raw): Same.
        (ffi_java_rvalue_to_raw): Add special handling for FFI_TYPE_POINTER
-        if FFI_SIZEOF_JAVA_RAW == 4.
+       if FFI_SIZEOF_JAVA_RAW == 4.
        (ffi_java_raw_to_rvalue): Same.
        (ffi_java_raw_call): Change type of raw to ffi_java_raw.
        (ffi_java_translate_args): Same.
 
 2007-12-06  David Daney  <ddaney@avtrex.com>
 
-       * src/mips/n32.S (ffi_closure_N32): Use 64-bit add instruction on 
+       * src/mips/n32.S (ffi_closure_N32): Use 64-bit add instruction on
        pointer values.
 
 2007-12-01  Andreas Tobler  <a.tobler@schweiz.org>
 
 2007-08-05  Steven Newbury  <s_j_newbury@yahoo.co.uk>
 
-       * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Use __clear_cache instead of 
+       * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Use __clear_cache instead of
        directly using the sys_cacheflush syscall.
 
 2007-07-27  Andrew Haley  <aph@redhat.com>
 
        * testsuite/libffi.call/return_ul.c (main): Define return type as
        ffi_arg.  Use proper printf conversion specifier.
-       
+
 2007-07-30  Andrew Haley  <aph@redhat.com>
 
        PR testsuite/32843
 
 2005-12-31  Phil Blundell  <pb@reciva.com>
 
-       * src/arm/ffi.c (ffi_prep_incoming_args_SYSV, 
-        ffi_closure_SYSV_inner, ffi_prep_closure): New, add closure support.
+       * src/arm/ffi.c (ffi_prep_incoming_args_SYSV,
+       ffi_closure_SYSV_inner, ffi_prep_closure): New, add closure support.
        * src/arm/sysv.S(ffi_closure_SYSV): Likewise.
        * src/arm/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise.
        (FFI_CLOSURES): Enable closure support.
 
 2007-07-03  Andrew Haley  <aph@hedges.billgatliff.com>
 
-        * testsuite/libffi.call/cls_multi_ushort.c,
-        testsuite/libffi.call/cls_align_uint16.c,
-        testsuite/libffi.call/nested_struct1.c,
-        testsuite/libffi.call/nested_struct3.c,
-        testsuite/libffi.call/cls_7_1_byte.c,
-        testsuite/libffi.call/cls_double.c,
-        testsuite/libffi.call/nested_struct5.c,
-        testsuite/libffi.call/nested_struct7.c,
-        testsuite/libffi.call/cls_sint.c,
-        testsuite/libffi.call/nested_struct9.c,
-        testsuite/libffi.call/cls_20byte1.c,
-        testsuite/libffi.call/cls_multi_sshortchar.c,
-        testsuite/libffi.call/cls_align_sint64.c,
-        testsuite/libffi.call/cls_3byte2.c,
-        testsuite/libffi.call/cls_multi_schar.c,
-        testsuite/libffi.call/cls_multi_uchar.c,
-        testsuite/libffi.call/cls_19byte.c,
-        testsuite/libffi.call/cls_9byte1.c,
-        testsuite/libffi.call/cls_align_float.c,
-        testsuite/libffi.call/closure_fn1.c,
-        testsuite/libffi.call/problem1.c,
-        testsuite/libffi.call/closure_fn3.c,
-        testsuite/libffi.call/cls_sshort.c,
-        testsuite/libffi.call/closure_fn5.c,
-        testsuite/libffi.call/cls_align_double.c,
-        testsuite/libffi.call/cls_2byte.c,
-        testsuite/libffi.call/nested_struct.c,
-        testsuite/libffi.call/nested_struct10.c,
-        testsuite/libffi.call/cls_4byte.c,
-        testsuite/libffi.call/cls_6byte.c,
-        testsuite/libffi.call/cls_8byte.c,
-        testsuite/libffi.call/cls_multi_sshort.c,
-        testsuite/libffi.call/cls_align_uint32.c,
-        testsuite/libffi.call/cls_align_sint16.c,
-        testsuite/libffi.call/cls_float.c,
-        testsuite/libffi.call/cls_20byte.c,
-        testsuite/libffi.call/cls_5_1_byte.c,
-        testsuite/libffi.call/nested_struct2.c,
-        testsuite/libffi.call/cls_24byte.c,
-        testsuite/libffi.call/nested_struct4.c,
-        testsuite/libffi.call/nested_struct6.c,
-        testsuite/libffi.call/cls_64byte.c,
-        testsuite/libffi.call/nested_struct8.c,
-        testsuite/libffi.call/cls_uint.c,
-        testsuite/libffi.call/cls_multi_ushortchar.c,
-        testsuite/libffi.call/cls_schar.c,
-        testsuite/libffi.call/cls_uchar.c,
-        testsuite/libffi.call/cls_align_uint64.c,
-        testsuite/libffi.call/cls_ulonglong.c,
-        testsuite/libffi.call/cls_align_longdouble.c,
-        testsuite/libffi.call/cls_1_1byte.c,
-        testsuite/libffi.call/cls_12byte.c,
-        testsuite/libffi.call/cls_3_1byte.c,
-        testsuite/libffi.call/cls_3byte1.c,
-        testsuite/libffi.call/cls_4_1byte.c,
-        testsuite/libffi.call/cls_6_1_byte.c,
-        testsuite/libffi.call/cls_16byte.c,
-        testsuite/libffi.call/cls_18byte.c,
-        testsuite/libffi.call/closure_fn0.c,
-        testsuite/libffi.call/cls_9byte2.c,
-        testsuite/libffi.call/closure_fn2.c,
-        testsuite/libffi.call/closure_fn4.c,
-        testsuite/libffi.call/cls_ushort.c,
-        testsuite/libffi.call/closure_fn6.c,
-        testsuite/libffi.call/cls_5byte.c,
-        testsuite/libffi.call/cls_align_pointer.c,
-        testsuite/libffi.call/cls_7byte.c,
-        testsuite/libffi.call/cls_align_sint32.c,
-        testsuite/libffi.special/unwindtest_ffi_call.cc,
-        testsuite/libffi.special/unwindtest.cc: Enable for ARM.
+       * testsuite/libffi.call/cls_multi_ushort.c,
+       testsuite/libffi.call/cls_align_uint16.c,
+       testsuite/libffi.call/nested_struct1.c,
+       testsuite/libffi.call/nested_struct3.c,
+       testsuite/libffi.call/cls_7_1_byte.c,
+       testsuite/libffi.call/cls_double.c,
+       testsuite/libffi.call/nested_struct5.c,
+       testsuite/libffi.call/nested_struct7.c,
+       testsuite/libffi.call/cls_sint.c,
+       testsuite/libffi.call/nested_struct9.c,
+       testsuite/libffi.call/cls_20byte1.c,
+       testsuite/libffi.call/cls_multi_sshortchar.c,
+       testsuite/libffi.call/cls_align_sint64.c,
+       testsuite/libffi.call/cls_3byte2.c,
+       testsuite/libffi.call/cls_multi_schar.c,
+       testsuite/libffi.call/cls_multi_uchar.c,
+       testsuite/libffi.call/cls_19byte.c,
+       testsuite/libffi.call/cls_9byte1.c,
+       testsuite/libffi.call/cls_align_float.c,
+       testsuite/libffi.call/closure_fn1.c,
+       testsuite/libffi.call/problem1.c,
+       testsuite/libffi.call/closure_fn3.c,
+       testsuite/libffi.call/cls_sshort.c,
+       testsuite/libffi.call/closure_fn5.c,
+       testsuite/libffi.call/cls_align_double.c,
+       testsuite/libffi.call/cls_2byte.c,
+       testsuite/libffi.call/nested_struct.c,
+       testsuite/libffi.call/nested_struct10.c,
+       testsuite/libffi.call/cls_4byte.c,
+       testsuite/libffi.call/cls_6byte.c,
+       testsuite/libffi.call/cls_8byte.c,
+       testsuite/libffi.call/cls_multi_sshort.c,
+       testsuite/libffi.call/cls_align_uint32.c,
+       testsuite/libffi.call/cls_align_sint16.c,
+       testsuite/libffi.call/cls_float.c,
+       testsuite/libffi.call/cls_20byte.c,
+       testsuite/libffi.call/cls_5_1_byte.c,
+       testsuite/libffi.call/nested_struct2.c,
+       testsuite/libffi.call/cls_24byte.c,
+       testsuite/libffi.call/nested_struct4.c,
+       testsuite/libffi.call/nested_struct6.c,
+       testsuite/libffi.call/cls_64byte.c,
+       testsuite/libffi.call/nested_struct8.c,
+       testsuite/libffi.call/cls_uint.c,
+       testsuite/libffi.call/cls_multi_ushortchar.c,
+       testsuite/libffi.call/cls_schar.c,
+       testsuite/libffi.call/cls_uchar.c,
+       testsuite/libffi.call/cls_align_uint64.c,
+       testsuite/libffi.call/cls_ulonglong.c,
+       testsuite/libffi.call/cls_align_longdouble.c,
+       testsuite/libffi.call/cls_1_1byte.c,
+       testsuite/libffi.call/cls_12byte.c,
+       testsuite/libffi.call/cls_3_1byte.c,
+       testsuite/libffi.call/cls_3byte1.c,
+       testsuite/libffi.call/cls_4_1byte.c,
+       testsuite/libffi.call/cls_6_1_byte.c,
+       testsuite/libffi.call/cls_16byte.c,
+       testsuite/libffi.call/cls_18byte.c,
+       testsuite/libffi.call/closure_fn0.c,
+       testsuite/libffi.call/cls_9byte2.c,
+       testsuite/libffi.call/closure_fn2.c,
+       testsuite/libffi.call/closure_fn4.c,
+       testsuite/libffi.call/cls_ushort.c,
+       testsuite/libffi.call/closure_fn6.c,
+       testsuite/libffi.call/cls_5byte.c,
+       testsuite/libffi.call/cls_align_pointer.c,
+       testsuite/libffi.call/cls_7byte.c,
+       testsuite/libffi.call/cls_align_sint32.c,
+       testsuite/libffi.special/unwindtest_ffi_call.cc,
+       testsuite/libffi.special/unwindtest.cc: Enable for ARM.
 
 2007-07-05  H.J. Lu  <hongjiu.lu@intel.com>
 
        * testsuite/libffi.call/return_fl2.c (return_fl): Mark as static.
        Use 'volatile float sum' to create sum of floats to avoid false
        negative due to excess precision on ix86 targets.
-       (main): Ditto. 
+       (main): Ditto.
 
 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
 
 2006-10-10  Paolo Bonzini  <bonzini@gnu.org>
            Sandro Tolaini  <tolaini@libero.it>
 
-       * configure.ac [i*86-*-darwin*]: Set X86_DARWIN symbol and 
+       * configure.ac [i*86-*-darwin*]: Set X86_DARWIN symbol and
        conditional.
        * configure: Regenerated.
        * Makefile.am (nodist_libffi_la_SOURCES) [X86_DARWIN]: New case.
        * src/sh/ffi.c (ffi_closure_helper_SYSV): Remove unused variable
        and cast integer to void * if needed.  Update the pointer to
        the FP register saved area correctly.
-       
+
 2006-02-17  Andreas Tobler  <a.tobler@schweiz.ch>
 
        * testsuite/libffi.call/nested_struct6.c: XFAIL this test until PR25630
 
        * configure.ac: Treat i*86-*-solaris2.10 and up as X86_64.
        * configure: Regenerate.
-       
+
 2005-06-01  Alan Modra  <amodra@bigpond.net.au>
 
        * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't use JUMPTARGET
        * Makefile.am (ACLOCAL_AMFLAGS): Remove -I ../config.
        * aclocal.m4, configure, fficonfig.h.in, Makefile.in,
        include/Makefile.in, testsuite/Makefile.in: Regenerate.
-       
+
 2005-05-09  Mike Stump  <mrs@apple.com>
 
        * configure: Regenerate.
        * testsuite/lib/libffi-dg.exp (libffi-dg-test-1): In regsub use,
        have Tcl8.3-compatible intermediate variable.
 
-2005-04-18  Simon Posnjak <simon.posnjak@siol.net> 
+2005-04-18  Simon Posnjak <simon.posnjak@siol.net>
            Hans-Peter Nilsson  <hp@axis.com>
 
        * Makefile.am: Add CRIS support.
 2005-03-30  Hans Boehm  <Hans.Boehm@hp.com>
 
        * src/ia64/ffitarget.h (ffi_arg): Use long long instead of DI.
-       
+
 2005-03-30  Steve Ellcey  <sje@cup.hp.com>
 
        * src/ia64/ffitarget.h (ffi_arg) ADD DI attribute.
index 0a49be8..f334583 100644 (file)
        * configure: Rebuilt.
        * fficonfig.h.in: Rebuilt.
 
+2009-12-29  Kay Tietz  <ktietz70@googlemail.com>
+
+       * testsuite/libffi.call/ffitest.h,
+       testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRuLL): Fix
+       definitions.
+
 2009-12-25  Carlo Bramini  <carlo.bramix@libero.it>
 
        * configure.ac (AM_LTLDFLAGS): Define for windows hosts.
        * testsuite/libffi.call/cls_longdouble.c: Ditto.
        * testsuite/libffi.call/cls_double_va.c: Ditto.
 
-2009-12-25  Andreas Tobler  <a.tobler@schweiz.org>
-
-       * fficonfig.h.in: Rebuilt again.
-       * src/closures.c: Remove the FFI_MMAP_EXEC_WRIT definition for
-       Solaris/x86.
-
-2009-10-27  Abdulaziz Ghuloum <aghuloum@gmail.com>
-
-       * configure.ac (FFI_MMAP_EXEC_WRIT): Define for snow
-       leopard (i?86-apple-darwin10*).
-       * configure: Rebuilt.
-       * fficonfig.h.in: Rebuilt.
-       * src/closures.c (dlmmap): Define version for snow leopard.
-
 2009-06-16  Andrew Haley  <aph@redhat.com>
 
        * testsuite/libffi.call/cls_align_sint64.c,
diff --git a/README b/README
index 6df1805..3fa6c74 100644 (file)
--- a/README
+++ b/README
@@ -39,41 +39,56 @@ between the two languages.
 Supported Platforms
 ===================
 
-Libffi has been ported to many different platforms, although this
-release was only tested on:
-
-     arm oabi linux
-     arm eabi linux
-     hppa linux
-     mips o32 linux (little endian)
-     powerpc darwin
-     powerpc freebsd
-     powerpc64 linux
-     sparc solaris
-     sparc64 freebsd
-     sparc64 solaris
-     x86 cygwin
-     x86 darwin
-     x86 freebsd
-     x86 linux
-     x86 openbsd
-     x86 solaris
-     x86-64 mingw
-     x86-64 darwin
-     x86-64 linux
-     x86-64 OS X
-     x86-64 freebsd
-     x86-64 solaris
+Libffi has been ported to many different platforms.
+For specific configuration details and testing status, please
+refer to the wiki page here:
+
+ http://www.moxielogic.org/wiki/index.php?title=Libffi_3.0.9
+
+At the time of release, the following basic configurations have been
+tested:
+
+|--------------+------------------|
+| Architecture | Operating System |
+|--------------+------------------|
+| Alpha        | Linux            |
+| ARM          | Linux            |
+| AVR32        | Linux            |
+| HPPA         | HPUX             |
+| IA-64        | Linux            |
+| MIPS         | IRIX             |
+| MIPS         | Linux            |
+| MIPS64       | Linux            |
+| PowerPC      | Linux            |
+| PowerPC      | Mac OSX          |
+| PowerPC      | FreeBSD          |
+| PowerPC64    | Linux            |
+| S390         | Linux            |
+| S390X        | Linux            |
+| SPARC        | Linux            |
+| SPARC        | Solaris          |
+| SPARC64      | Linux            |
+| SPARC64      | FreeBSD          |
+| X86          | FreeBSD          |
+| X86          | kFreeBSD         |
+| X86          | Linux            |
+| X86          | Mac OSX          |
+| X86          | OpenBSD          |
+| X86          | Solaris          |
+| X86          | Windows/Cygwin   |
+| X86          | Windows/MingW    |
+| X86-64       | FreeBSD          |
+| X86-64       | Linux            |
+| X86-64       | OpenBSD          |
+|--------------+------------------|
      
 Please send additional platform test results to
-libffi-discuss@sourceware.org.
+libffi-discuss@sourceware.org and feel free to update the wiki page
+above.
 
 Installing libffi
 =================
 
-[Note: before actually performing any of these installation steps,
- you may wish to read the "Platform Specific Notes" below.]
-
 First you must configure the distribution for your particular
 system. Go to the directory you wish to build libffi in and run the
 "configure" program found in the root directory of the libffi source
@@ -103,63 +118,6 @@ This will require that you have DejaGNU installed.
 To install the library and header files, type "make install".
 
 
-Platform Specific Notes
-=======================
-
-       MIPS - Irix 5.3 & 6.x
-       ---------------------
-
-Irix 6.2 and better supports three different calling conventions: o32,
-n32 and n64. Currently, libffi only supports both o32 and n32 under
-Irix 6.x, but only o32 under Irix 5.3. Libffi will automatically be
-configured for whichever calling convention it was built for.
-
-By default, the configure script will try to build libffi with the GNU
-development tools. To build libffi with the SGI development tools, set
-the environment variable CC to either "cc -32" or "cc -n32" before
-running configure under Irix 6.x (depending on whether you want an o32
-or n32 library), or just "cc" for Irix 5.3.
-
-With the n32 calling convention, when returning structures smaller
-than 16 bytes, be sure to provide an RVALUE that is 8 byte aligned.
-Here's one way of forcing this:
-
-       double struct_storage[2];
-       my_small_struct *s = (my_small_struct *) struct_storage;  
-       /* Use s for RVALUE */
-
-If you don't do this you are liable to get spurious bus errors. 
-
-"long long" values are not supported yet.
-
-You must use GNU Make to build libffi on SGI platforms.
-
-
-       PowerPC System V ABI
-       --------------------
-
-There are two `System V ABI's which libffi implements for PowerPC.
-They differ only in how small structures are returned from functions.
-
-In the FFI_SYSV version, structures that are 8 bytes or smaller are
-returned in registers.  This is what GCC does when it is configured
-for solaris, and is what the System V ABI I have (dated September
-1995) says.
-
-In the FFI_GCC_SYSV version, all structures are returned the same way:
-by passing a pointer as the first argument to the function.  This is
-what GCC does when it is configured for linux or a generic sysv
-target.
-
-EGCS 1.0.1 (and probably other versions of EGCS/GCC) also has a
-inconsistency with the SysV ABI: When a procedure is called with many
-floating-point arguments, some of them get put on the stack.  They are
-all supposed to be stored in double-precision format, even if they are
-only single-precision, but EGCS stores single-precision arguments as
-single-precision anyway.  This causes one test to fail (the `many
-arguments' test).
-
-
 History
 =======
 
@@ -169,6 +127,7 @@ See the ChangeLog files for details.
         Add AVR32 and win64 ports.  Add ARM softfp support.
        Many fixes for AIX, Solaris, HP-UX, *BSD.
        Fix x86-64 closure bug.
+       Build DLL for windows.
 
 3.0.8 Dec-19-08
         Add *BSD, BeOS, and PA-Linux support.
index 06d6d89..66b021c 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for libffi 3.0.9rc11.
+# Generated by GNU Autoconf 2.63 for libffi 3.0.9rc12.
 #
 # Report bugs to <http://gcc.gnu.org/bugs.html>.
 #
@@ -745,8 +745,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='libffi'
 PACKAGE_TARNAME='libffi'
-PACKAGE_VERSION='3.0.9rc11'
-PACKAGE_STRING='libffi 3.0.9rc11'
+PACKAGE_VERSION='3.0.9rc12'
+PACKAGE_STRING='libffi 3.0.9rc12'
 PACKAGE_BUGREPORT='http://gcc.gnu.org/bugs.html'
 
 # Factoring default headers for most tests.
@@ -1542,7 +1542,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures libffi 3.0.9rc11 to adapt to many kinds of systems.
+\`configure' configures libffi 3.0.9rc12 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1613,7 +1613,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libffi 3.0.9rc11:";;
+     short | recursive ) echo "Configuration of libffi 3.0.9rc12:";;
    esac
   cat <<\_ACEOF
 
@@ -1720,7 +1720,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libffi configure 3.0.9rc11
+libffi configure 3.0.9rc12
 generated by GNU Autoconf 2.63
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1734,7 +1734,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libffi $as_me 3.0.9rc11, which was
+It was created by libffi $as_me 3.0.9rc12, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   $ $0 $@
@@ -2716,7 +2716,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='libffi'
- VERSION='3.0.9rc11'
+ VERSION='3.0.9rc12'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -14501,13 +14501,13 @@ _ACEOF
 fi
 
 case "$target" in
-    *-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
+     *-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
 
 cat >>confdefs.h <<\_ACEOF
 #define FFI_MMAP_EXEC_WRIT 1
 _ACEOF
 
-    ;;
+     ;;
 esac
 
 { $as_echo "$as_me:$LINENO: checking whether .eh_frame section should be read-only" >&5
@@ -15315,7 +15315,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libffi $as_me 3.0.9rc11, which was
+This file was extended by libffi $as_me 3.0.9rc12, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -15382,7 +15382,7 @@ Report bugs to <bug-autoconf@gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_version="\\
-libffi config.status 3.0.9rc11
+libffi config.status 3.0.9rc12
 configured by $0, generated by GNU Autoconf 2.63,
   with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
index dbee919..6afef0d 100644 (file)
@@ -2,7 +2,7 @@ dnl Process this with autoconf to create configure
 
 AC_PREREQ(2.63)
 
-AC_INIT([libffi], [3.0.9rc11], [http://gcc.gnu.org/bugs.html])
+AC_INIT([libffi], [3.0.9rc12], [http://gcc.gnu.org/bugs.html])
 AC_CONFIG_HEADERS([fficonfig.h])
 
 AC_CANONICAL_SYSTEM
@@ -277,12 +277,12 @@ if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64
 fi
 
 case "$target" in
-    *-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
-       AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1,
-                 [Cannot use malloc on this target, so, we revert to
-                  alternative means])
-    ;;
-esac 
+     *-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
+       AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1,
+                 [Cannot use malloc on this target, so, we revert to
+                   alternative means])
+     ;;
+esac
 
 AC_CACHE_CHECK([whether .eh_frame section should be read-only],
     libffi_cv_ro_eh_frame, [
index ab08c69..5a33031 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/doc
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index 0c93db0..46415ad 100644 (file)
@@ -1,4 +1,4 @@
 @set UPDATED 26 December 2009
 @set UPDATED-MONTH December 2009
-@set EDITION 3.0.9rc11
-@set VERSION 3.0.9rc11
+@set EDITION 3.0.9rc12
+@set VERSION 3.0.9rc12
index 0c93db0..46415ad 100644 (file)
@@ -1,4 +1,4 @@
 @set UPDATED 26 December 2009
 @set UPDATED-MONTH December 2009
-@set EDITION 3.0.9rc11
-@set VERSION 3.0.9rc11
+@set EDITION 3.0.9rc12
+@set VERSION 3.0.9rc12
index 7b9977e..388da49 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/include
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index bf11eb0..65c4016 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/man
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index 2be3d2a..6118b32 100644 (file)
@@ -14,10 +14,10 @@ Index: libffi/ChangeLog.libffi
 +      * testsuite/libffi.call/cls_longdouble.c: Ditto.
 +      * testsuite/libffi.call/cls_double_va.c: Ditto.
 +
- 2009-12-25  Andreas Tobler  <a.tobler@schweiz.org>
+ 2009-06-16  Andrew Haley  <aph@redhat.com>
  
-       * fficonfig.h.in: Rebuilt again.
-@@ -187,20 +198,20 @@
+       * testsuite/libffi.call/cls_align_sint64.c,
+@@ -173,20 +184,20 @@
  2008-12-22  Timothy Wall  <twall@users.sf.net>
  
        * testsuite/libffi.call/closure_fn0.c,
index 57721da..f3890e2 100644 (file)
@@ -10,15 +10,7 @@ Index: libffi/src/powerpc/ffi.c
  
     PowerPC Foreign Function Interface
  
-@@ -185,6 +186,7 @@ ffi_prep_args_SYSV (extended_cif *ecif, 
-           {
-             *next_arg.f = (float) double_tmp;
-             next_arg.u += 1;
-+            intarg_count++;
-           }
-         else
-           *fpr_base.d++ = double_tmp;
-@@ -1149,6 +1151,7 @@ ffi_closure_helper_SYSV (ffi_closure *cl
+@@ -1204,6 +1205,7 @@ ffi_closure_helper_SYSV (ffi_closure *cl
                pst++;
              avalue[i] = pst;
              pst += 2;
@@ -26,14 +18,6 @@ Index: libffi/src/powerpc/ffi.c
            }
          break;
  
-@@ -1222,6 +1225,7 @@ ffi_closure_helper_SYSV (ffi_closure *cl
-               {
-                 avalue[i] = pst;
-                 pst += 4;
-+                ng = 8;
-               }
-             break;
-           }
 Index: libffi/ChangeLog.libffi
 ===================================================================
 --- libffi.orig/ChangeLog.libffi
index 3bcb2a3..4ee394b 100644 (file)
@@ -1,5 +1,4 @@
 stand-alone
-snow-leopard
 fix-huge_struct-test
 windows
 undefine_AC_ARG_VAR_PRECIOUS
index c486787..2a37b19 100644 (file)
@@ -1,56 +1,3 @@
-Index: libffi/src/closures.c
-===================================================================
---- libffi.orig/src/closures.c
-+++ libffi/src/closures.c
-@@ -50,11 +50,6 @@
-    executable memory. */
- #  define FFI_MMAP_EXEC_WRIT 1
- # endif
--# if defined(X86_64) && defined(__sun__) && defined(__svr4__)
--/* The data segment on 64-bit Solaris/x86 isn't executable, so use mmap
--   instead.  */
--#  define FFI_MMAP_EXEC_WRIT 1
--# endif
- #endif
- #if FFI_MMAP_EXEC_WRIT && !defined FFI_MMAP_EXEC_SELINUX
-@@ -214,6 +209,8 @@ static int dlmunmap(void *, size_t);
- #if !(defined(X86_WIN32) || defined(X86_WIN64)) || defined (__CYGWIN__)
-+#if FFI_MMAP_EXEC_SELINUX
-+
- /* A mutex used to synchronize access to *exec* variables in this file.  */
- static pthread_mutex_t open_temp_exec_file_mutex = PTHREAD_MUTEX_INITIALIZER;
-@@ -483,6 +480,27 @@ dlmmap (void *start, size_t length, int 
-   return dlmmap_locked (start, length, prot, flags, offset);
- }
-+#else
-+
-+static void *
-+dlmmap (void *start, size_t length, int prot,
-+      int flags, int fd, off_t offset)
-+{
-+  
-+  assert (start == NULL && length % malloc_getpagesize == 0
-+        && prot == (PROT_READ | PROT_WRITE)
-+        && flags == (MAP_PRIVATE | MAP_ANONYMOUS)
-+        && fd == -1 && offset == 0);
-+  
-+#if FFI_CLOSURE_TEST
-+  printf ("mapping in %zi\n", length);
-+#endif
-+  
-+  return mmap (start, length, prot | PROT_EXEC, flags, fd, offset);
-+}
-+
-+#endif
-+
- /* Release memory at the given address, as well as the corresponding
-    executable page if it's separate.  */
- static int
 Index: libffi/ChangeLog.libffi
 ===================================================================
 --- libffi.orig/ChangeLog.libffi
@@ -77,9 +24,9 @@ Index: libffi/configure.ac
 ===================================================================
 --- libffi.orig/configure.ac
 +++ libffi/configure.ac
-@@ -274,6 +274,14 @@ if test x$TARGET = xX86 || test x$TARGET
-     fi
- fi
+@@ -282,6 +282,14 @@ case "$target" in
+      ;;
+ esac
  
 +case "$target" in
 +    *-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
@@ -96,9 +43,9 @@ Index: libffi/configure
 ===================================================================
 --- libffi.orig/configure
 +++ libffi/configure
-@@ -14497,6 +14497,16 @@ _ACEOF
-     fi
- fi
+@@ -14507,6 +14507,16 @@ _ACEOF
+      ;;
+ esac
  
 +case "$target" in
 +    *-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
@@ -113,17 +60,3 @@ Index: libffi/configure
  { $as_echo "$as_me:$LINENO: checking whether .eh_frame section should be read-only" >&5
  $as_echo_n "checking whether .eh_frame section should be read-only... " >&6; }
  if test "${libffi_cv_ro_eh_frame+set}" = set; then
-Index: libffi/fficonfig.h.in
-===================================================================
---- libffi.orig/fficonfig.h.in
-+++ libffi/fficonfig.h.in
-@@ -17,6 +17,9 @@
- /* Define this if you want extra debugging. */
- #undef FFI_DEBUG
-+/* Cannot use malloc on this target, so, we revert to alternative means */
-+#undef FFI_MMAP_EXEC_WRIT
-+
- /* Define this is you do not want support for the raw API. */
- #undef FFI_NO_RAW_API
index f67c702..9758c2b 100644 (file)
@@ -12796,7 +12796,7 @@ Index: libffi/configure
  #! /bin/sh
  # Guess values for system-dependent variables and create Makefiles.
 -# Generated by GNU Autoconf 2.64 for libffi 3.0.8.
-+# Generated by GNU Autoconf 2.63 for libffi 3.0.9rc11.
++# Generated by GNU Autoconf 2.63 for libffi 3.0.9rc12.
  #
  # Report bugs to <http://gcc.gnu.org/bugs.html>.
  #
@@ -13752,8 +13752,8 @@ Index: libffi/configure
  PACKAGE_TARNAME='libffi'
 -PACKAGE_VERSION='3.0.8'
 -PACKAGE_STRING='libffi 3.0.8'
-+PACKAGE_VERSION='3.0.9rc11'
-+PACKAGE_STRING='libffi 3.0.9rc11'
++PACKAGE_VERSION='3.0.9rc12'
++PACKAGE_STRING='libffi 3.0.9rc12'
  PACKAGE_BUGREPORT='http://gcc.gnu.org/bugs.html'
 -PACKAGE_URL=''
  
@@ -13918,7 +13918,7 @@ Index: libffi/configure
    # This message is too long to be a string in the A/UX 3.1 sh.
    cat <<_ACEOF
 -\`configure' configures libffi 3.0.8 to adapt to many kinds of systems.
-+\`configure' configures libffi 3.0.9rc11 to adapt to many kinds of systems.
++\`configure' configures libffi 3.0.9rc12 to adapt to many kinds of systems.
  
  Usage: $0 [OPTION]... [VAR=VALUE]...
  
@@ -13927,7 +13927,7 @@ Index: libffi/configure
  if test -n "$ac_init_help"; then
    case $ac_init_help in
 -     short | recursive ) echo "Configuration of libffi 3.0.8:";;
-+     short | recursive ) echo "Configuration of libffi 3.0.9rc11:";;
++     short | recursive ) echo "Configuration of libffi 3.0.9rc12:";;
     esac
    cat <<\_ACEOF
  
@@ -13945,7 +13945,7 @@ Index: libffi/configure
    cat <<\_ACEOF
 -libffi configure 3.0.8
 -generated by GNU Autoconf 2.64
-+libffi configure 3.0.9rc11
++libffi configure 3.0.9rc12
 +generated by GNU Autoconf 2.63
  
 -Copyright (C) 2009 Free Software Foundation, Inc.
@@ -14045,7 +14045,7 @@ Index: libffi/configure
 -  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
 -  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 -  return $ac_retval
-+It was created by libffi $as_me 3.0.9rc11, which was
++It was created by libffi $as_me 3.0.9rc12, which was
 +generated by GNU Autoconf 2.63.  Invocation command line was
  
 -} # ac_fn_c_try_link
@@ -15318,7 +15318,7 @@ Index: libffi/configure
  # Define the identity of the package.
   PACKAGE='libffi'
 - VERSION='3.0.8'
-+ VERSION='3.0.9rc11'
++ VERSION='3.0.9rc12'
  
  
  cat >>confdefs.h <<_ACEOF
@@ -23803,7 +23803,7 @@ Index: libffi/configure
    $as_echo_n "(cached) " >&6
  else
  
-@@ -12396,18 +14486,20 @@ else
+@@ -12396,11 +14486,13 @@ else
        fi
  
  fi
@@ -23819,6 +23819,17 @@ Index: libffi/configure
  
      fi
  fi
+@@ -12408,14 +14500,16 @@ fi
+ case "$target" in
+      *-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
+-$as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h
++cat >>confdefs.h <<\_ACEOF
++#define FFI_MMAP_EXEC_WRIT 1
++_ACEOF
+      ;;
+ esac
  
 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether .eh_frame section should be read-only" >&5
 +{ $as_echo "$as_me:$LINENO: checking whether .eh_frame section should be read-only" >&5
@@ -23828,7 +23839,7 @@ Index: libffi/configure
    $as_echo_n "(cached) " >&6
  else
  
-@@ -12424,35 +14516,41 @@ else
+@@ -12432,35 +14526,41 @@ else
        rm -f conftest.*
  
  fi
@@ -23879,7 +23890,7 @@ Index: libffi/configure
            if grep '\.hidden.*foo' conftest.s >/dev/null; then
                libffi_cv_hidden_visibility_attribute=yes
            fi
-@@ -12460,11 +14558,13 @@ else
+@@ -12468,11 +14568,13 @@ else
        rm -f conftest.*
  
  fi
@@ -23895,7 +23906,7 @@ Index: libffi/configure
  
  fi
  
-@@ -12475,41 +14575,50 @@ fi
+@@ -12483,41 +14585,50 @@ fi
  
  
  
@@ -23954,7 +23965,7 @@ Index: libffi/configure
  
    fi
  fi
-@@ -12545,7 +14654,7 @@ ac_config_commands="$ac_config_commands 
+@@ -12553,7 +14664,7 @@ ac_config_commands="$ac_config_commands 
  ac_config_links="$ac_config_links include/ffitarget.h:src/$TARGETDIR/ffitarget.h"
  
  
@@ -23963,7 +23974,7 @@ Index: libffi/configure
  
  
  cat >confcache <<\_ACEOF
-@@ -12575,13 +14684,13 @@ _ACEOF
+@@ -12583,13 +14694,13 @@ _ACEOF
      case $ac_val in #(
      *${as_nl}*)
        case $ac_var in #(
@@ -23979,7 +23990,7 @@ Index: libffi/configure
        esac ;;
      esac
    done
-@@ -12589,8 +14698,8 @@ $as_echo "$as_me: WARNING: cache variabl
+@@ -12597,8 +14708,8 @@ $as_echo "$as_me: WARNING: cache variabl
    (set) 2>&1 |
      case $as_nl`(ac_space=' '; set) 2>&1` in #(
      *${as_nl}ac_space=\ *)
@@ -23990,7 +24001,7 @@ Index: libffi/configure
        sed -n \
        "s/'/'\\\\''/g;
          s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-@@ -12613,11 +14722,11 @@ $as_echo "$as_me: WARNING: cache variabl
+@@ -12621,11 +14732,11 @@ $as_echo "$as_me: WARNING: cache variabl
  if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
    if test -w "$cache_file"; then
      test "x$cache_file" != "x/dev/null" &&
@@ -24004,7 +24015,7 @@ Index: libffi/configure
  $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
    fi
  fi
-@@ -12637,8 +14746,8 @@ for ac_i in : $LIBOBJS; do test "x$ac_i"
+@@ -12645,8 +14756,8 @@ for ac_i in : $LIBOBJS; do test "x$ac_i"
    ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
    # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
    #    will be set to the directory where LIBOBJS objects are built.
@@ -24015,7 +24026,7 @@ Index: libffi/configure
  done
  LIBOBJS=$ac_libobjs
  
-@@ -12654,128 +14763,221 @@ else
+@@ -12662,128 +14773,221 @@ else
  fi
  
  if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
@@ -24299,7 +24310,7 @@ Index: libffi/configure
  fi
  
  
-@@ -12783,10 +14985,9 @@ fi
+@@ -12791,10 +14995,9 @@ fi
  ac_write_fail=0
  ac_clean_files_save=$ac_clean_files
  ac_clean_files="$ac_clean_files $CONFIG_STATUS"
@@ -24312,7 +24323,7 @@ Index: libffi/configure
  #! $SHELL
  # Generated by $as_me.
  # Run this file to recreate the current configuration.
-@@ -12796,18 +14997,17 @@ cat >$CONFIG_STATUS <<_ASEOF || as_write
+@@ -12804,18 +15007,17 @@ cat >$CONFIG_STATUS <<_ASEOF || as_write
  debug=false
  ac_cs_recheck=false
  ac_cs_silent=false
@@ -24338,7 +24349,7 @@ Index: libffi/configure
    emulate sh
    NULLCMD=:
    # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-@@ -12815,15 +15015,23 @@ if test -n "${ZSH_VERSION+set}" && (emul
+@@ -12823,15 +15025,23 @@ if test -n "${ZSH_VERSION+set}" && (emul
    alias -g '${1+"$@"}'='"$@"'
    setopt NO_GLOB_SUBST
  else
@@ -24367,7 +24378,7 @@ Index: libffi/configure
  as_nl='
  '
  export as_nl
-@@ -12831,13 +15039,7 @@ export as_nl
+@@ -12839,13 +15049,7 @@ export as_nl
  as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
  as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
  as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
@@ -24382,7 +24393,7 @@ Index: libffi/configure
    as_echo='printf %s\n'
    as_echo_n='printf %s'
  else
-@@ -12848,7 +15050,7 @@ else
+@@ -12856,7 +15060,7 @@ else
      as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
      as_echo_n_body='eval
        arg=$1;
@@ -24391,7 +24402,7 @@ Index: libffi/configure
        *"$as_nl"*)
        expr "X$arg" : "X\\(.*\\)$as_nl";
        arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-@@ -12871,6 +15073,13 @@ if test "${PATH_SEPARATOR+set}" != set; 
+@@ -12879,6 +15083,13 @@ if test "${PATH_SEPARATOR+set}" != set; 
    }
  fi
  
@@ -24405,7 +24416,7 @@ Index: libffi/configure
  
  # IFS
  # We need space, tab and new line, in precisely that order.  Quoting is
-@@ -12880,15 +15089,15 @@ fi
+@@ -12888,15 +15099,15 @@ fi
  IFS=" ""      $as_nl"
  
  # Find who we are.  Look in the path if we contain no directory separator.
@@ -24424,7 +24435,7 @@ Index: libffi/configure
  IFS=$as_save_IFS
  
       ;;
-@@ -12900,16 +15109,12 @@ if test "x$as_myself" = x; then
+@@ -12908,16 +15119,12 @@ if test "x$as_myself" = x; then
  fi
  if test ! -f "$as_myself"; then
    $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
@@ -24445,7 +24456,7 @@ Index: libffi/configure
  done
  PS1='$ '
  PS2='> '
-@@ -12921,89 +15126,7 @@ export LC_ALL
+@@ -12929,89 +15136,7 @@ export LC_ALL
  LANGUAGE=C
  export LANGUAGE
  
@@ -24536,7 +24547,7 @@ Index: libffi/configure
  if expr a : '\(a\)' >/dev/null 2>&1 &&
     test "X`expr 00001 : '.*\(...\)'`" = X001; then
    as_expr=expr
-@@ -13017,12 +15140,8 @@ else
+@@ -13025,12 +15150,8 @@ else
    as_basename=false
  fi
  
@@ -24550,7 +24561,7 @@ Index: libffi/configure
  as_me=`$as_basename -- "$0" ||
  $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
         X"$0" : 'X\(//\)$' \| \
-@@ -13042,25 +15161,76 @@ $as_echo X/"$0" |
+@@ -13050,25 +15171,76 @@ $as_echo X/"$0" |
          }
          s/.*/./; q'`
  
@@ -24638,7 +24649,7 @@ Index: libffi/configure
  
  rm -f conf$$ conf$$.exe conf$$.file
  if test -d conf$$.dir; then
-@@ -13089,56 +15259,8 @@ fi
+@@ -13097,56 +15269,8 @@ fi
  rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
  rmdir conf$$.dir 2>/dev/null
  
@@ -24696,7 +24707,7 @@ Index: libffi/configure
  else
    test -d ./-p && rmdir ./-p
    as_mkdir_p=false
-@@ -13157,10 +15279,10 @@ else
+@@ -13165,10 +15289,10 @@ else
        if test -d "$1"; then
        test -d "$1/.";
        else
@@ -24709,7 +24720,7 @@ Index: libffi/configure
        ???[sx]*):;;*)false;;esac;fi
      '\'' sh
    '
-@@ -13175,19 +15297,13 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr
+@@ -13183,19 +15307,13 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr
  
  
  exec 6>&1
@@ -24727,12 +24738,12 @@ Index: libffi/configure
  ac_log="
 -This file was extended by libffi $as_me 3.0.8, which was
 -generated by GNU Autoconf 2.64.  Invocation command line was
-+This file was extended by libffi $as_me 3.0.9rc11, which was
++This file was extended by libffi $as_me 3.0.9rc12, which was
 +generated by GNU Autoconf 2.63.  Invocation command line was
  
    CONFIG_FILES    = $CONFIG_FILES
    CONFIG_HEADERS  = $CONFIG_HEADERS
-@@ -13220,11 +15336,10 @@ _ACEOF
+@@ -13228,11 +15346,10 @@ _ACEOF
  
  cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
  ac_cs_usage="\
@@ -24747,7 +24758,7 @@ Index: libffi/configure
  
    -h, --help       print this help, then exit
    -V, --version    print version number and configuration settings, then exit
-@@ -13249,16 +15364,16 @@ $config_links
+@@ -13257,16 +15374,16 @@ $config_links
  Configuration commands:
  $config_commands
  
@@ -24759,7 +24770,7 @@ Index: libffi/configure
  ac_cs_version="\\
 -libffi config.status 3.0.8
 -configured by $0, generated by GNU Autoconf 2.64,
-+libffi config.status 3.0.9rc11
++libffi config.status 3.0.9rc12
 +configured by $0, generated by GNU Autoconf 2.63,
    with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
  
@@ -24768,7 +24779,7 @@ Index: libffi/configure
  This config.status script is free software; the Free Software Foundation
  gives unlimited permission to copy, distribute and modify it."
  
-@@ -13301,19 +15416,20 @@ do
+@@ -13309,19 +15426,20 @@ do
      case $ac_optarg in
      *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
      esac
@@ -24793,7 +24804,7 @@ Index: libffi/configure
    --help | --hel | -h )
      $as_echo "$ac_cs_usage"; exit ;;
    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-@@ -13321,10 +15437,11 @@ Try \`$0 --help' for more information.";
+@@ -13329,10 +15447,11 @@ Try \`$0 --help' for more information.";
      ac_cs_silent=: ;;
  
    # This is an error.
@@ -24808,7 +24819,7 @@ Index: libffi/configure
       ac_need_defaults=false ;;
  
    esac
-@@ -13365,20 +15482,6 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
+@@ -13373,20 +15492,6 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
  #
  # INIT-COMMANDS
  #
@@ -24829,7 +24840,7 @@ Index: libffi/configure
  AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
  
  
-@@ -13389,143 +15492,131 @@ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac
+@@ -13397,143 +15502,131 @@ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac
  sed_quote_subst='$sed_quote_subst'
  double_quote_subst='$double_quote_subst'
  delay_variable_subst='$delay_variable_subst'
@@ -25092,7 +25103,7 @@ Index: libffi/configure
  GREP \
  EGREP \
  FGREP \
-@@ -13549,6 +15640,8 @@ lt_cv_sys_global_symbol_pipe \
+@@ -13557,6 +15650,8 @@ lt_cv_sys_global_symbol_pipe \
  lt_cv_sys_global_symbol_to_cdecl \
  lt_cv_sys_global_symbol_to_c_name_address \
  lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
@@ -25101,7 +25112,7 @@ Index: libffi/configure
  lt_prog_compiler_no_builtin_flag \
  lt_prog_compiler_wl \
  lt_prog_compiler_pic \
-@@ -13578,13 +15671,12 @@ variables_saved_for_relink \
+@@ -13586,13 +15681,12 @@ variables_saved_for_relink \
  libname_spec \
  library_names_spec \
  soname_spec \
@@ -25117,7 +25128,7 @@ Index: libffi/configure
        ;;
      *)
        eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-@@ -13611,9 +15703,9 @@ postuninstall_cmds \
+@@ -13619,9 +15713,9 @@ postuninstall_cmds \
  finish_cmds \
  sys_lib_search_path_spec \
  sys_lib_dlsearch_path_spec; do
@@ -25129,7 +25140,7 @@ Index: libffi/configure
        ;;
      *)
        eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-@@ -13621,6 +15713,12 @@ sys_lib_dlsearch_path_spec; do
+@@ -13629,6 +15723,12 @@ sys_lib_dlsearch_path_spec; do
      esac
  done
  
@@ -25142,7 +25153,7 @@ Index: libffi/configure
  ac_aux_dir='$ac_aux_dir'
  xsi_shell='$xsi_shell'
  lt_shell_append='$lt_shell_append'
-@@ -13651,7 +15749,6 @@ for ac_config_target in $ac_config_targe
+@@ -13659,7 +15759,6 @@ for ac_config_target in $ac_config_targe
  do
    case $ac_config_target in
      "fficonfig.h") CONFIG_HEADERS="$CONFIG_HEADERS fficonfig.h" ;;
@@ -25150,7 +25161,7 @@ Index: libffi/configure
      "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
      "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
      "include") CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;;
-@@ -13662,8 +15759,11 @@ do
+@@ -13670,8 +15769,11 @@ do
      "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
      "testsuite/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/Makefile" ;;
      "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;;
@@ -25163,7 +25174,7 @@ Index: libffi/configure
    esac
  done
  
-@@ -13691,7 +15791,7 @@ $debug ||
+@@ -13699,7 +15801,7 @@ $debug ||
    trap 'exit_status=$?
    { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
  ' 0
@@ -25172,7 +25183,7 @@ Index: libffi/configure
  }
  # Create a (secure) tmp directory for tmp files.
  
-@@ -13702,7 +15802,11 @@ $debug ||
+@@ -13710,7 +15812,11 @@ $debug ||
  {
    tmp=./conf$$-$RANDOM
    (umask 077 && mkdir "$tmp")
@@ -25185,7 +25196,7 @@ Index: libffi/configure
  
  # Set up the scripts for CONFIG_FILES section.
  # No need to generate them if there are no CONFIG_FILES.
-@@ -13710,16 +15814,10 @@ $debug ||
+@@ -13718,16 +15824,10 @@ $debug ||
  if test -n "$CONFIG_FILES"; then
  
  
@@ -25204,7 +25215,7 @@ Index: libffi/configure
  else
    ac_cs_awk_cr=$ac_cr
  fi
-@@ -13733,18 +15831,24 @@ _ACEOF
+@@ -13741,18 +15841,24 @@ _ACEOF
    echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
    echo "_ACEOF"
  } >conf$$subs.sh ||
@@ -25232,7 +25243,7 @@ Index: libffi/configure
    else
      ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
    fi
-@@ -13833,7 +15937,9 @@ if sed "s/$ac_cr//" < /dev/null > /dev/n
+@@ -13841,7 +15947,9 @@ if sed "s/$ac_cr//" < /dev/null > /dev/n
  else
    cat
  fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
@@ -25243,7 +25254,7 @@ Index: libffi/configure
  _ACEOF
  
  # VPATH may cause trouble with some makes, so we remove $(srcdir),
-@@ -13874,7 +15980,9 @@ for ac_last_try in false false :; do
+@@ -13882,7 +15990,9 @@ for ac_last_try in false false :; do
    if test -z "$ac_t"; then
      break
    elif $ac_last_try; then
@@ -25254,7 +25265,7 @@ Index: libffi/configure
    else
      ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
    fi
-@@ -13959,7 +16067,9 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
+@@ -13967,7 +16077,9 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
  _ACAWK
  _ACEOF
  cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
@@ -25265,7 +25276,7 @@ Index: libffi/configure
  fi # test -n "$CONFIG_HEADERS"
  
  
-@@ -13972,7 +16082,9 @@ do
+@@ -13980,7 +16092,9 @@ do
    esac
    case $ac_mode$ac_tag in
    :[FHL]*:*);;
@@ -25276,7 +25287,7 @@ Index: libffi/configure
    :[FH]-) ac_tag=-:-;;
    :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
    esac
-@@ -14000,10 +16112,12 @@ do
+@@ -14008,10 +16122,12 @@ do
           [\\/$]*) false;;
           *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
           esac ||
@@ -25291,7 +25302,7 @@ Index: libffi/configure
      done
  
      # Let's still pretend it is `configure' which instantiates (i.e., don't
-@@ -14014,7 +16128,7 @@ do
+@@ -14022,7 +16138,7 @@ do
        `' by configure.'
      if test x"$ac_file" != x-; then
        configure_input="$ac_file.  $configure_input"
@@ -25300,7 +25311,7 @@ Index: libffi/configure
  $as_echo "$as_me: creating $ac_file" >&6;}
      fi
      # Neutralize special characters interpreted by sed in replacement strings.
-@@ -14027,7 +16141,9 @@ $as_echo "$as_me: creating $ac_file" >&6
+@@ -14035,7 +16151,9 @@ $as_echo "$as_me: creating $ac_file" >&6
  
      case $ac_tag in
      *:-:* | *:-) cat >"$tmp/stdin" \
@@ -25311,7 +25322,7 @@ Index: libffi/configure
      esac
      ;;
    esac
-@@ -14055,7 +16171,47 @@ $as_echo X"$ac_file" |
+@@ -14063,7 +16181,47 @@ $as_echo X"$ac_file" |
            q
          }
          s/.*/./; q'`
@@ -25360,7 +25371,7 @@ Index: libffi/configure
    ac_builddir=.
  
  case "$ac_dir" in
-@@ -14112,6 +16268,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
+@@ -14120,6 +16278,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
  # If the template does not know about datarootdir, expand it.
  # FIXME: This hack should be removed a few years after 2.60.
  ac_datarootdir_hack=; ac_datarootdir_seen=
@@ -25368,7 +25379,7 @@ Index: libffi/configure
  ac_sed_dataroot='
  /datarootdir/ {
    p
-@@ -14121,11 +16278,12 @@ ac_sed_dataroot='
+@@ -14129,11 +16288,12 @@ ac_sed_dataroot='
  /@docdir@/p
  /@infodir@/p
  /@localedir@/p
@@ -25383,7 +25394,7 @@ Index: libffi/configure
  $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
  _ACEOF
  cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-@@ -14135,7 +16293,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
+@@ -14143,7 +16303,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
    s&@infodir@&$infodir&g
    s&@localedir@&$localedir&g
    s&@mandir@&$mandir&g
@@ -25392,7 +25403,7 @@ Index: libffi/configure
  esac
  _ACEOF
  
-@@ -14164,12 +16322,14 @@ s&@MKDIR_P@&$ac_MKDIR_P&;t t
+@@ -14172,12 +16332,14 @@ s&@MKDIR_P@&$ac_MKDIR_P&;t t
  $ac_datarootdir_hack
  "
  eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
@@ -25409,7 +25420,7 @@ Index: libffi/configure
  which seems to be undefined.  Please make sure it is defined." >&5
  $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
  which seems to be undefined.  Please make sure it is defined." >&2;}
-@@ -14179,7 +16339,9 @@ which seems to be undefined.  Please mak
+@@ -14187,7 +16349,9 @@ which seems to be undefined.  Please mak
    -) cat "$tmp/out" && rm -f "$tmp/out";;
    *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
    esac \
@@ -25420,7 +25431,7 @@ Index: libffi/configure
   ;;
    :H)
    #
-@@ -14190,19 +16352,25 @@ which seems to be undefined.  Please mak
+@@ -14198,19 +16362,25 @@ which seems to be undefined.  Please mak
        $as_echo "/* $configure_input  */" \
        && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
      } >"$tmp/config.h" \
@@ -25450,7 +25461,7 @@ Index: libffi/configure
    fi
  # Compute "$ac_file"'s index in $config_headers.
  _am_arg="$ac_file"
-@@ -14252,11 +16420,13 @@ $as_echo X"$_am_arg" |
+@@ -14260,11 +16430,13 @@ $as_echo X"$_am_arg" |
        ac_source=$srcdir/$ac_source
      fi
  
@@ -25466,7 +25477,7 @@ Index: libffi/configure
      fi
      rm -f "$ac_file"
  
-@@ -14268,24 +16438,18 @@ $as_echo "$as_me: linking $ac_source to 
+@@ -14276,24 +16448,18 @@ $as_echo "$as_me: linking $ac_source to 
      ln -s "$ac_rel_source" "$ac_file" 2>/dev/null ||
        ln "$ac_source" "$ac_file" 2>/dev/null ||
        cp -p "$ac_source" "$ac_file" ||
@@ -25495,7 +25506,7 @@ Index: libffi/configure
      "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
    # Autoconf 2.62 quotes --file arguments for eval, but not when files
    # are listed without --file.  Let's play safe and only enable the eval
-@@ -14374,7 +16538,47 @@ $as_echo X"$file" |
+@@ -14382,7 +16548,47 @@ $as_echo X"$file" |
            q
          }
          s/.*/./; q'`
@@ -25544,7 +25555,7 @@ Index: libffi/configure
        # echo "creating $dirpart/$file"
        echo '# dummy' > "$dirpart/$file"
      done
-@@ -14402,7 +16606,7 @@ $as_echo X"$file" |
+@@ -14410,7 +16616,7 @@ $as_echo X"$file" |
  # NOTE: Changes made to this file will be lost: look at ltmain.sh.
  #
  #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
@@ -25553,7 +25564,7 @@ Index: libffi/configure
  #   Written by Gordon Matzigkeit, 1996
  #
  #   This file is part of GNU Libtool.
-@@ -14450,12 +16654,6 @@ pic_mode=$pic_mode
+@@ -14458,12 +16664,6 @@ pic_mode=$pic_mode
  # Whether or not to optimize for fast installation.
  fast_install=$enable_fast_install
  
@@ -25566,7 +25577,7 @@ Index: libffi/configure
  # The host system.
  host_alias=$host_alias
  host=$host
-@@ -14505,6 +16703,10 @@ SP2NL=$lt_lt_SP2NL
+@@ -14513,6 +16713,10 @@ SP2NL=$lt_lt_SP2NL
  # turn newlines into spaces.
  NL2SP=$lt_lt_NL2SP
  
@@ -25577,7 +25588,7 @@ Index: libffi/configure
  # An object symbol dumper.
  OBJDUMP=$lt_OBJDUMP
  
-@@ -14526,9 +16728,6 @@ RANLIB=$lt_RANLIB
+@@ -14534,9 +16738,6 @@ RANLIB=$lt_RANLIB
  old_postinstall_cmds=$lt_old_postinstall_cmds
  old_postuninstall_cmds=$lt_old_postuninstall_cmds
  
@@ -25587,7 +25598,7 @@ Index: libffi/configure
  # A C compiler.
  LTCC=$lt_CC
  
-@@ -14550,6 +16749,12 @@ global_symbol_to_c_name_address_lib_pref
+@@ -14558,6 +16759,12 @@ global_symbol_to_c_name_address_lib_pref
  # The name of the directory that contains temporary libtool files.
  objdir=$objdir
  
@@ -25600,7 +25611,7 @@ Index: libffi/configure
  # Used to examine libraries when file_magic_cmd begins with "file".
  MAGIC_CMD=$MAGIC_CMD
  
-@@ -14612,9 +16817,6 @@ library_names_spec=$lt_library_names_spe
+@@ -14620,9 +16827,6 @@ library_names_spec=$lt_library_names_spe
  # The coded name of the library, if different from the real name.
  soname_spec=$lt_soname_spec
  
@@ -25610,7 +25621,7 @@ Index: libffi/configure
  # Command to use after installation of a shared archive.
  postinstall_cmds=$lt_postinstall_cmds
  
-@@ -14654,10 +16856,6 @@ striplib=$lt_striplib
+@@ -14662,10 +16866,6 @@ striplib=$lt_striplib
  # The linker used to build libraries.
  LD=$lt_LD
  
@@ -25621,7 +25632,7 @@ Index: libffi/configure
  # Commands used to build an old-style archive.
  old_archive_cmds=$lt_old_archive_cmds
  
-@@ -14917,7 +17115,7 @@ _LT_EOF
+@@ -14925,7 +17125,7 @@ _LT_EOF
  func_dirname ()
  {
    # Extract subdirectory from the argument.
@@ -25630,7 +25641,7 @@ Index: libffi/configure
    if test "X$func_dirname_result" = "X${1}"; then
      func_dirname_result="${3}"
    else
-@@ -14928,7 +17126,7 @@ func_dirname ()
+@@ -14936,7 +17136,7 @@ func_dirname ()
  # func_basename file
  func_basename ()
  {
@@ -25639,7 +25650,7 @@ Index: libffi/configure
  }
  
  
-@@ -14941,8 +17139,10 @@ func_basename ()
+@@ -14949,8 +17149,10 @@ func_basename ()
  func_stripname ()
  {
    case ${2} in
@@ -25652,7 +25663,7 @@ Index: libffi/configure
    esac
  }
  
-@@ -14953,20 +17153,20 @@ my_sed_long_arg='1s/^-[^=]*=//'
+@@ -14961,20 +17163,20 @@ my_sed_long_arg='1s/^-[^=]*=//'
  # func_opt_split
  func_opt_split ()
  {
@@ -25677,7 +25688,7 @@ Index: libffi/configure
  }
  
  # func_arith arithmetic-term...
-@@ -15030,12 +17230,15 @@ test -d src/$TARGETDIR || mkdir src/$TAR
+@@ -15038,12 +17240,15 @@ test -d src/$TARGETDIR || mkdir src/$TAR
  done # for ac_tag
  
  
@@ -25695,7 +25706,7 @@ Index: libffi/configure
  
  
  # configure is writing to config.log, and then calls config.status.
-@@ -15056,10 +17259,10 @@ if test "$no_create" != yes; then
+@@ -15064,10 +17269,10 @@ if test "$no_create" != yes; then
    exec 5>>config.log
    # Use ||, not &&, to avoid exiting from the if with $? = 1, which
    # would make configure fail if this is the last instruction.
@@ -25719,7 +25730,7 @@ Index: libffi/configure.ac
 +AC_PREREQ(2.63)
  
 -AC_INIT([libffi], [3.0.8], [http://gcc.gnu.org/bugs.html])
-+AC_INIT([libffi], [3.0.9rc11], [http://gcc.gnu.org/bugs.html])
++AC_INIT([libffi], [3.0.9rc12], [http://gcc.gnu.org/bugs.html])
  AC_CONFIG_HEADERS([fficonfig.h])
  
 -AM_ENABLE_MULTILIB(, ..)
@@ -25754,7 +25765,7 @@ Index: libffi/configure.ac
        ;;
  
    avr32*-*-*)
-@@ -386,6 +389,6 @@ test -d src/$TARGETDIR || mkdir src/$TAR
+@@ -394,6 +397,6 @@ test -d src/$TARGETDIR || mkdir src/$TAR
  
  AC_CONFIG_LINKS(include/ffitarget.h:src/$TARGETDIR/ffitarget.h)
  
@@ -26378,7 +26389,7 @@ Index: libffi/include/Makefile.in
  CONFIG_HEADER = $(top_builddir)/fficonfig.h
  CONFIG_CLEAN_FILES = ffi.h ffitarget.h
  CONFIG_CLEAN_VPATH_FILES =
-@@ -76,8 +70,8 @@ am__nobase_list = $(am__nobase_strip_set
+@@ -76,14 +70,15 @@ am__nobase_list = $(am__nobase_strip_set
  am__base_list = \
    sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
    sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
@@ -26389,7 +26400,14 @@ Index: libffi/include/Makefile.in
  ETAGS = etags
  CTAGS = ctags
  DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-@@ -138,7 +132,6 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+ ACLOCAL = @ACLOCAL@
+ ALLOCA = @ALLOCA@
+ AMTAR = @AMTAR@
++AM_LTLDFLAGS = @AM_LTLDFLAGS@
+ AM_RUNTESTFLAGS = @AM_RUNTESTFLAGS@
+ AR = @AR@
+ AUTOCONF = @AUTOCONF@
+@@ -138,7 +133,6 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
  PACKAGE_NAME = @PACKAGE_NAME@
  PACKAGE_STRING = @PACKAGE_STRING@
  PACKAGE_TARNAME = @PACKAGE_TARNAME@
@@ -26397,7 +26415,7 @@ Index: libffi/include/Makefile.in
  PACKAGE_VERSION = @PACKAGE_VERSION@
  PATH_SEPARATOR = @PATH_SEPARATOR@
  RANLIB = @RANLIB@
-@@ -185,9 +178,9 @@ libdir = @libdir@
+@@ -185,9 +179,9 @@ libdir = @libdir@
  libexecdir = @libexecdir@
  localedir = @localedir@
  localstatedir = @localstatedir@
@@ -26408,7 +26426,7 @@ Index: libffi/include/Makefile.in
  oldincludedir = @oldincludedir@
  pdfdir = @pdfdir@
  prefix = @prefix@
-@@ -210,11 +203,8 @@ top_srcdir = @top_srcdir@
+@@ -210,11 +204,8 @@ top_srcdir = @top_srcdir@
  AUTOMAKE_OPTIONS = foreign
  DISTCLEANFILES = ffitarget.h
  EXTRA_DIST = ffi.h.in ffi_common.h
@@ -26422,7 +26440,7 @@ Index: libffi/include/Makefile.in
  all: all-am
  
  .SUFFIXES:
-@@ -256,26 +246,26 @@ mostlyclean-libtool:
+@@ -256,26 +247,26 @@ mostlyclean-libtool:
  
  clean-libtool:
        -rm -rf .libs _libs
@@ -26458,7 +26476,7 @@ Index: libffi/include/Makefile.in
  
  ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
        list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-@@ -363,7 +353,7 @@ check-am: all-am
+@@ -363,7 +354,7 @@ check-am: all-am
  check: check-am
  all-am: Makefile $(HEADERS)
  installdirs:
@@ -26467,7 +26485,7 @@ Index: libffi/include/Makefile.in
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
  install: install-am
-@@ -412,7 +402,7 @@ info: info-am
+@@ -412,7 +403,7 @@ info: info-am
  
  info-am:
  
@@ -26476,7 +26494,7 @@ Index: libffi/include/Makefile.in
  
  install-dvi: install-dvi-am
  
-@@ -456,7 +446,7 @@ ps: ps-am
+@@ -456,7 +447,7 @@ ps: ps-am
  
  ps-am:
  
@@ -26485,7 +26503,7 @@ Index: libffi/include/Makefile.in
  
  .MAKE: install-am install-strip
  
-@@ -466,13 +456,12 @@ uninstall-am: uninstall-toollibffiHEADER
+@@ -466,13 +457,12 @@ uninstall-am: uninstall-toollibffiHEADER
        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 \
@@ -35317,7 +35335,15 @@ Index: libffi/man/Makefile.in
  CONFIG_HEADER = $(top_builddir)/fficonfig.h
  CONFIG_CLEAN_FILES =
  CONFIG_CLEAN_VPATH_FILES =
-@@ -136,7 +130,6 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+@@ -82,6 +76,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCE
+ ACLOCAL = @ACLOCAL@
+ ALLOCA = @ALLOCA@
+ AMTAR = @AMTAR@
++AM_LTLDFLAGS = @AM_LTLDFLAGS@
+ AM_RUNTESTFLAGS = @AM_RUNTESTFLAGS@
+ AR = @AR@
+ AUTOCONF = @AUTOCONF@
+@@ -136,7 +131,6 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
  PACKAGE_NAME = @PACKAGE_NAME@
  PACKAGE_STRING = @PACKAGE_STRING@
  PACKAGE_TARNAME = @PACKAGE_TARNAME@
@@ -35325,7 +35351,7 @@ Index: libffi/man/Makefile.in
  PACKAGE_VERSION = @PACKAGE_VERSION@
  PATH_SEPARATOR = @PATH_SEPARATOR@
  RANLIB = @RANLIB@
-@@ -183,9 +176,9 @@ libdir = @libdir@
+@@ -183,9 +177,9 @@ libdir = @libdir@
  libexecdir = @libexecdir@
  localedir = @localedir@
  localstatedir = @localstatedir@
@@ -35931,7 +35957,15 @@ Index: libffi/testsuite/Makefile.in
  CONFIG_HEADER = $(top_builddir)/fficonfig.h
  CONFIG_CLEAN_FILES =
  CONFIG_CLEAN_VPATH_FILES =
-@@ -113,7 +107,6 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+@@ -59,6 +53,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCE
+ ACLOCAL = @ACLOCAL@
+ ALLOCA = @ALLOCA@
+ AMTAR = @AMTAR@
++AM_LTLDFLAGS = @AM_LTLDFLAGS@
+ AM_RUNTESTFLAGS = 
+ AR = @AR@
+ AUTOCONF = @AUTOCONF@
+@@ -113,7 +108,6 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
  PACKAGE_NAME = @PACKAGE_NAME@
  PACKAGE_STRING = @PACKAGE_STRING@
  PACKAGE_TARNAME = @PACKAGE_TARNAME@
@@ -35939,7 +35973,7 @@ Index: libffi/testsuite/Makefile.in
  PACKAGE_VERSION = @PACKAGE_VERSION@
  PATH_SEPARATOR = @PATH_SEPARATOR@
  RANLIB = @RANLIB@
-@@ -160,9 +153,9 @@ libdir = @libdir@
+@@ -160,9 +154,9 @@ libdir = @libdir@
  libexecdir = @libexecdir@
  localedir = @localedir@
  localstatedir = @localstatedir@
@@ -35950,7 +35984,7 @@ Index: libffi/testsuite/Makefile.in
  oldincludedir = @oldincludedir@
  pdfdir = @pdfdir@
  prefix = @prefix@
-@@ -194,6 +187,70 @@ RUNTEST = `if [ -f $(top_srcdir)/../deja
+@@ -194,6 +188,70 @@ RUNTEST = `if [ -f $(top_srcdir)/../deja
            else echo runtest; fi`
  
  CLEANFILES = *.exe core* *.log *.sum
@@ -43653,23 +43687,168 @@ Index: libffi/README
  page for updates: <URL:http://sourceware.org/libffi/>.
  
  
-@@ -166,6 +163,16 @@ arguments' test).
- History
- =======
+@@ -42,41 +39,56 @@ between the two languages.
+ Supported Platforms
+ ===================
  
+-Libffi has been ported to many different platforms, although this
+-release was only tested on:
+-
+-     arm oabi linux
+-     arm eabi linux
+-     hppa linux
+-     mips o32 linux (little endian)
+-     powerpc darwin
+-     powerpc freebsd
+-     powerpc64 linux
+-     sparc solaris
+-     sparc64 freebsd
+-     sparc64 solaris
+-     x86 cygwin
+-     x86 darwin
+-     x86 freebsd
+-     x86 linux
+-     x86 openbsd
+-     x86 solaris
+-     x86-64 mingw
+-     x86-64 darwin
+-     x86-64 linux
+-     x86-64 OS X
+-     x86-64 freebsd
+-     x86-64 solaris
++Libffi has been ported to many different platforms.
++For specific configuration details and testing status, please
++refer to the wiki page here:
++
++ http://www.moxielogic.org/wiki/index.php?title=Libffi_3.0.9
++
++At the time of release, the following basic configurations have been
++tested:
++
++|--------------+------------------|
++| Architecture | Operating System |
++|--------------+------------------|
++| Alpha        | Linux            |
++| ARM          | Linux            |
++| AVR32        | Linux            |
++| HPPA         | HPUX             |
++| IA-64        | Linux            |
++| MIPS         | IRIX             |
++| MIPS         | Linux            |
++| MIPS64       | Linux            |
++| PowerPC      | Linux            |
++| PowerPC      | Mac OSX          |
++| PowerPC      | FreeBSD          |
++| PowerPC64    | Linux            |
++| S390         | Linux            |
++| S390X        | Linux            |
++| SPARC        | Linux            |
++| SPARC        | Solaris          |
++| SPARC64      | Linux            |
++| SPARC64      | FreeBSD          |
++| X86          | FreeBSD          |
++| X86          | kFreeBSD         |
++| X86          | Linux            |
++| X86          | Mac OSX          |
++| X86          | OpenBSD          |
++| X86          | Solaris          |
++| X86          | Windows/Cygwin   |
++| X86          | Windows/MingW    |
++| X86-64       | FreeBSD          |
++| X86-64       | Linux            |
++| X86-64       | OpenBSD          |
++|--------------+------------------|
+      
+ Please send additional platform test results to
+-libffi-discuss@sourceware.org.
++libffi-discuss@sourceware.org and feel free to update the wiki page
++above.
+ Installing libffi
+ =================
+-[Note: before actually performing any of these installation steps,
+- you may wish to read the "Platform Specific Notes" below.]
+-
+ First you must configure the distribution for your particular
+ system. Go to the directory you wish to build libffi in and run the
+ "configure" program found in the root directory of the libffi source
+@@ -106,65 +118,19 @@ This will require that you have DejaGNU 
+ To install the library and header files, type "make install".
+-Platform Specific Notes
+-=======================
+-
+-      MIPS - Irix 5.3 & 6.x
+-      ---------------------
+-
+-Irix 6.2 and better supports three different calling conventions: o32,
+-n32 and n64. Currently, libffi only supports both o32 and n32 under
+-Irix 6.x, but only o32 under Irix 5.3. Libffi will automatically be
+-configured for whichever calling convention it was built for.
+-
+-By default, the configure script will try to build libffi with the GNU
+-development tools. To build libffi with the SGI development tools, set
+-the environment variable CC to either "cc -32" or "cc -n32" before
+-running configure under Irix 6.x (depending on whether you want an o32
+-or n32 library), or just "cc" for Irix 5.3.
+-
+-With the n32 calling convention, when returning structures smaller
+-than 16 bytes, be sure to provide an RVALUE that is 8 byte aligned.
+-Here's one way of forcing this:
+-
+-      double struct_storage[2];
+-      my_small_struct *s = (my_small_struct *) struct_storage;  
+-      /* Use s for RVALUE */
+-
+-If you don't do this you are liable to get spurious bus errors. 
+-
+-"long long" values are not supported yet.
+-
+-You must use GNU Make to build libffi on SGI platforms.
+-
+-
+-      PowerPC System V ABI
+-      --------------------
+-
+-There are two `System V ABI's which libffi implements for PowerPC.
+-They differ only in how small structures are returned from functions.
+-
+-In the FFI_SYSV version, structures that are 8 bytes or smaller are
+-returned in registers.  This is what GCC does when it is configured
+-for solaris, and is what the System V ABI I have (dated September
+-1995) says.
+-
+-In the FFI_GCC_SYSV version, all structures are returned the same way:
+-by passing a pointer as the first argument to the function.  This is
+-what GCC does when it is configured for linux or a generic sysv
+-target.
++History
++=======
+-EGCS 1.0.1 (and probably other versions of EGCS/GCC) also has a
+-inconsistency with the SysV ABI: When a procedure is called with many
+-floating-point arguments, some of them get put on the stack.  They are
+-all supposed to be stored in double-precision format, even if they are
+-only single-precision, but EGCS stores single-precision arguments as
+-single-precision anyway.  This causes one test to fail (the `many
+-arguments' test).
 +See the ChangeLog files for details.
-+
 +3.0.9 Dec-xx-09
 +        Add AVR32 and win64 ports.  Add ARM softfp support.
 +      Many fixes for AIX, Solaris, HP-UX, *BSD.
 +      Fix x86-64 closure bug.
-+
++      Build DLL for windows.
+-History
+-=======
 +3.0.8 Dec-19-08
 +        Add *BSD, BeOS, and PA-Linux support.
-+
  3.0.7 Nov-11-08
          Fix for ppc FreeBSD.
-       (thanks to Andreas Tobler)
 Index: libffi/testsuite/Makefile.am
 ===================================================================
 --- libffi.orig/testsuite/Makefile.am
index 5aa198f..521b36e 100644 (file)
@@ -9,9 +9,9 @@ Index: libffi/ChangeLog.libffi
 +      * configure: Rebuilt.
 +      * fficonfig.h.in: Rebuilt.
 +
- 2009-12-25  Carlo Bramini  <carlo.bramix@libero.it>
+ 2009-12-29  Kay Tietz  <ktietz70@googlemail.com>
  
-       * configure.ac (AM_LTLDFLAGS): Define for windows hosts.
+       * testsuite/libffi.call/ffitest.h,
 Index: libffi/configure
 ===================================================================
 --- libffi.orig/configure
index 35a35f3..0766f4d 100644 (file)
@@ -2,7 +2,13 @@ Index: libffi/ChangeLog.libffi
 ===================================================================
 --- libffi.orig/ChangeLog.libffi
 +++ libffi/ChangeLog.libffi
-@@ -1,3 +1,10 @@
+@@ -1,3 +1,16 @@
++2009-12-29  Kay Tietz  <ktietz70@googlemail.com>
++
++      * testsuite/libffi.call/ffitest.h,
++      testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRuLL): Fix
++      definitions.
++
 +2009-12-25  Carlo Bramini  <carlo.bramix@libero.it>
 +
 +      * configure.ac (AM_LTLDFLAGS): Define for windows hosts.
@@ -197,3 +203,37 @@ Index: libffi/Makefile.in
  AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src
  AM_CCASFLAGS = $(AM_CPPFLAGS)
  all: fficonfig.h
+Index: libffi/testsuite/libffi.call/ffitest.h
+===================================================================
+--- libffi.orig/testsuite/libffi.call/ffitest.h
++++ libffi/testsuite/libffi.call/ffitest.h
+@@ -46,9 +46,9 @@
+ #endif
+ /* MinGW kludge.  */
+-#ifdef WIN64
+-#define PRIdLL "PRId64"
+-#define PRIuLL "PRIu64"
++#ifdef _WIN64
++#define PRIdLL "I64d"
++#define PRIuLL "I64u"
+ #else
+ #define PRIdLL "lld"
+ #define PRIuLL "llu"
+Index: libffi/testsuite/libffi.special/ffitestcxx.h
+===================================================================
+--- libffi.orig/testsuite/libffi.special/ffitestcxx.h
++++ libffi/testsuite/libffi.special/ffitestcxx.h
+@@ -45,9 +45,9 @@
+ /* MinGW kludge.  */
+-#ifdef WIN64
+-#define PRIdLL "PRId64"
+-#define PRIuLL "PRIu64"
++#ifdef _WIN64
++#define PRIdLL "I64d"
++#define PRIuLL "I64u"
+ #else
+ #define PRIdLL "lld"
+ #define PRIuLL "llu"
index b9d5721..7e514ee 100644 (file)
@@ -1,15 +1,15 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/src
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
 
 
-2009-12-26T04:59:25.888276Z
-155470
-green
+2009-12-28T18:19:18.861565Z
+155492
+dje
 
 
 
@@ -26,10 +26,10 @@ green
 
 138bc75d-0d04-0410-961f-82ee72b054a4
 \f
-powerpc
+arm
 dir
 \f
-arm
+powerpc
 dir
 \f
 closures.c
@@ -38,11 +38,11 @@ file
 
 
 
-2009-12-20T06:01:56.058555Z
-c36f20ce319c714943a9f8272a1ec6c7
-2009-12-10T10:09:17.074519Z
-155124
-ro
+2009-12-29T03:43:00.566983Z
+51d610374f7ef5c8ca8e54c607e251d9
+2009-12-26T18:49:55.630686Z
+155475
+andreast
 
 
 
@@ -64,7 +64,7 @@ ro
 
 
 
-16543
+16354
 \f
 m32r
 dir
@@ -72,15 +72,6 @@ dir
 sh64
 dir
 \f
-m68k
-dir
-\f
-alpha
-dir
-\f
-x86
-dir
-\f
 types.c
 file
 
@@ -115,21 +106,30 @@ aph
 
 2904
 \f
-frv
+x86
+dir
+\f
+alpha
+dir
+\f
+m68k
 dir
 \f
 avr32
 dir
 \f
-s390
+frv
 dir
 \f
-pa
+s390
 dir
 \f
 cris
 dir
 \f
+pa
+dir
+\f
 ia64
 dir
 \f
index 48cb415..0b156e0 100644 (file)
    executable memory. */
 #  define FFI_MMAP_EXEC_WRIT 1
 # endif
-# if defined(X86_64) && defined(__sun__) && defined(__svr4__)
-/* The data segment on 64-bit Solaris/x86 isn't executable, so use mmap
-   instead.  */
-#  define FFI_MMAP_EXEC_WRIT 1
-# endif
 #endif
 
 #if FFI_MMAP_EXEC_WRIT && !defined FFI_MMAP_EXEC_SELINUX
index b281e72..4cf47e5 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/src/alpha
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index ecf1c54..db05f03 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/src/arm
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index 93bffc4..4fae01a 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/src/avr32
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index c4c7ea9..bc087d9 100644 (file)
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------
-   closures.c - Copyright (c) 2007  Red Hat, Inc.
+   closures.c - Copyright (c) 2007, 2009  Red Hat, Inc.
    Copyright (C) 2007, 2009 Free Software Foundation, Inc
 
    Code to allocate and deallocate memory for closures.
diff --git a/src/closures.c.rej b/src/closures.c.rej
new file mode 100644 (file)
index 0000000..1c53a03
--- /dev/null
@@ -0,0 +1,51 @@
+--- src/closures.c
++++ src/closures.c
+@@ -50,11 +50,6 @@
+    executable memory. */
+ #  define FFI_MMAP_EXEC_WRIT 1
+ # endif
+-# if defined(X86_64) && defined(__sun__) && defined(__svr4__)
+-/* The data segment on 64-bit Solaris/x86 isn't executable, so use mmap
+-   instead.  */
+-#  define FFI_MMAP_EXEC_WRIT 1
+-# endif
+ #endif
+ #if FFI_MMAP_EXEC_WRIT && !defined FFI_MMAP_EXEC_SELINUX
+@@ -214,6 +209,8 @@
+ #if !(defined(X86_WIN32) || defined(X86_WIN64)) || defined (__CYGWIN__)
++#if FFI_MMAP_EXEC_SELINUX
++
+ /* A mutex used to synchronize access to *exec* variables in this file.  */
+ static pthread_mutex_t open_temp_exec_file_mutex = PTHREAD_MUTEX_INITIALIZER;
+@@ -483,6 +480,27 @@
+   return dlmmap_locked (start, length, prot, flags, offset);
+ }
++#else
++
++static void *
++dlmmap (void *start, size_t length, int prot,
++      int flags, int fd, off_t offset)
++{
++  
++  assert (start == NULL && length % malloc_getpagesize == 0
++        && prot == (PROT_READ | PROT_WRITE)
++        && flags == (MAP_PRIVATE | MAP_ANONYMOUS)
++        && fd == -1 && offset == 0);
++  
++#if FFI_CLOSURE_TEST
++  printf ("mapping in %zi\n", length);
++#endif
++  
++  return mmap (start, length, prot | PROT_EXEC, flags, fd, offset);
++}
++
++#endif
++
+ /* Release memory at the given address, as well as the corresponding
+    executable page if it's separate.  */
+ static int
index 9c3fefa..e911bc4 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/src/cris
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index c1f8f47..bc9c85f 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/src/frv
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index c1f48d0..71f61d7 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/src/ia64
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index c1b1489..f7867cc 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/src/m32r
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index ca61271..dd6a413 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/src/m68k
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index 10692d9..c9d79c9 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/src/mips
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index c98c10c..ec1aec8 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/src/pa
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index 1f52202..d10b5a2 100644 (file)
@@ -1,14 +1,14 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/src/powerpc
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
 
 
-2009-12-08T00:41:10.883117Z
-155070
+2009-12-28T18:19:18.861565Z
+155492
 dje
 
 
@@ -202,11 +202,11 @@ file
 
 
 
-2009-12-20T06:01:53.730558Z
-5e33e72fe5ecabf0a89cf4d5227cb1ca
-2009-06-16T17:55:39.375944Z
-148543
-andreast
+2009-12-29T03:43:00.498236Z
+817f588a25206791e6c66eac1d0053ef
+2009-12-26T12:40:27.505316Z
+155473
+schwab
 
 
 
@@ -228,7 +228,7 @@ andreast
 
 
 
-39006
+39056
 \f
 sysv.S
 file
@@ -338,10 +338,10 @@ file
 
 
 
-2009-12-20T06:01:53.730558Z
-060e5d94c60a73470ae84eefddd59be0
-2009-12-04T15:36:50.057287Z
-154983
+2009-12-29T03:43:00.515985Z
+16f90a13659a11e0db8871d655b430f8
+2009-12-28T18:19:18.861565Z
+155492
 dje
 
 
@@ -364,7 +364,7 @@ dje
 
 
 
-24973
+26077
 \f
 linux64.S
 file
index fbbfbe2..75784a9 100644 (file)
@@ -185,6 +185,7 @@ ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack)
            {
              *next_arg.f = (float) double_tmp;
              next_arg.u += 1;
+             intarg_count++;
            }
          else
            *fpr_base.d++ = double_tmp;
@@ -1149,6 +1150,7 @@ ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue,
                pst++;
              avalue[i] = pst;
              pst += 2;
+             ng = 8;
            }
          break;
 
@@ -1222,6 +1224,7 @@ ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue,
                {
                  avalue[i] = pst;
                  pst += 4;
+                 ng = 8;
                }
              break;
            }
index def92a5..d84f1c3 100644 (file)
@@ -32,7 +32,7 @@
 
 #include <stdlib.h>
 
-extern void ffi_closure_ASM(void);
+extern void ffi_closure_ASM (void);
 
 enum {
   /* The assembly depends on these exact flags.  */
@@ -80,10 +80,13 @@ enum { ASM_NEEDS_REGISTERS = 4 };
 
    */
 
-void ffi_prep_args(extended_cif *ecif, unsigned long *const stack)
+void
+ffi_prep_args (extended_cif *ecif, unsigned long *const stack)
 {
   const unsigned bytes = ecif->cif->bytes;
   const unsigned flags = ecif->cif->flags;
+  const unsigned nargs = ecif->cif->nargs;
+  const ffi_abi abi = ecif->cif->abi;
 
   /* 'stacktop' points at the previous backchain pointer.  */
   unsigned long *const stacktop = stack + (bytes / sizeof(unsigned long));
@@ -118,7 +121,7 @@ void ffi_prep_args(extended_cif *ecif, unsigned long *const stack)
     *next_arg++ = (unsigned long) (char *) ecif->rvalue;
 
   /* Now for the arguments.  */
-  for (i = ecif->cif->nargs; i > 0; i--, ptr++, p_argv++)
+  for (i = nargs; i > 0; i--, ptr++, p_argv++)
     {
       switch ((*ptr)->type)
        {
@@ -213,7 +216,7 @@ void ffi_prep_args(extended_cif *ecif, unsigned long *const stack)
          size_al = (*ptr)->size;
          if ((*ptr)->elements[0]->type == 3)
            size_al = ALIGN((*ptr)->size, 8);
-         if (size_al < 3 && ecif->cif->abi == FFI_DARWIN)
+         if (size_al < 3 && abi == FFI_DARWIN)
            dest_cpy += 4 - size_al;
 
          memcpy ((char *) dest_cpy, (char *) *p_argv, size_al);
@@ -229,7 +232,7 @@ void ffi_prep_args(extended_cif *ecif, unsigned long *const stack)
             the struct to double-word.  */
          if ((*ptr)->elements[0]->type == FFI_TYPE_DOUBLE)
            size_al = ALIGN((*ptr)->size, 8);
-         if (size_al < 3 && ecif->cif->abi == FFI_DARWIN)
+         if (size_al < 3 && abi == FFI_DARWIN)
            dest_cpy += 4 - size_al;
 
          memcpy((char *) dest_cpy, (char *) *p_argv, size_al);
@@ -301,8 +304,44 @@ darwin_adjust_aggregate_sizes (ffi_type *s)
   /* Do not add additional tail padding.  */
 }
 
+/* Adjust the size of S to be correct for AIX.
+   Word-align double unless it is the first member of a structure.  */
+
+static void
+aix_adjust_aggregate_sizes (ffi_type *s)
+{
+  int i;
+
+  if (s->type != FFI_TYPE_STRUCT)
+    return;
+
+  s->size = 0;
+  for (i = 0; s->elements[i] != NULL; i++)
+    {
+      ffi_type *p;
+      int align;
+      
+      p = s->elements[i];
+      aix_adjust_aggregate_sizes (p);
+      align = p->alignment;
+      if (i != 0 && p->type == FFI_TYPE_DOUBLE)
+       align = 4;
+      s->size = ALIGN(s->size, align) + p->size;
+    }
+  
+  s->size = ALIGN(s->size, s->alignment);
+  
+  if (s->elements[0]->type == FFI_TYPE_UINT64
+      || s->elements[0]->type == FFI_TYPE_SINT64
+      || s->elements[0]->type == FFI_TYPE_DOUBLE
+      || s->elements[0]->alignment == 8)
+    s->alignment = s->alignment > 8 ? s->alignment : 8;
+  /* Do not add additional tail padding.  */
+}
+
 /* Perform machine dependent cif processing.  */
-ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
+ffi_status
+ffi_prep_cif_machdep (ffi_cif *cif)
 {
   /* All this is for the DARWIN ABI.  */
   int i;
@@ -323,6 +362,13 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
        darwin_adjust_aggregate_sizes (cif->arg_types[i]);
     }
 
+  if (cif->abi == FFI_AIX)
+    {
+      aix_adjust_aggregate_sizes (cif->rtype);
+      for (i = 0; i < cif->nargs; i++)
+       aix_adjust_aggregate_sizes (cif->arg_types[i]);
+    }
+
   /* Space for the frame pointer, callee's LR, CR, etc, and for
      the asm's temp regs.  */
 
@@ -473,7 +519,8 @@ extern void ffi_call_AIX(extended_cif *, long, unsigned, unsigned *,
 extern void ffi_call_DARWIN(extended_cif *, long, unsigned, unsigned *,
                            void (*fn)(void), void (*fn2)(void));
 
-void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
+void
+ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
 {
   extended_cif ecif;
 
@@ -486,7 +533,7 @@ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
   if ((rvalue == NULL) &&
       (cif->rtype->type == FFI_TYPE_STRUCT))
     {
-      ecif.rvalue = alloca(cif->rtype->size);
+      ecif.rvalue = alloca (cif->rtype->size);
     }
   else
     ecif.rvalue = rvalue;
@@ -661,8 +708,9 @@ typedef union
   double d;
 } ffi_dblfl;
 
-int ffi_closure_helper_DARWIN (ffi_closure*, void*,
-                              unsigned long*, ffi_dblfl*);
+int
+ffi_closure_helper_DARWIN (ffi_closure *, void *,
+                          unsigned long *, ffi_dblfl *);
 
 /* Basically the trampoline invokes ffi_closure_ASM, and on
    entry, r11 holds the address of the closure.
@@ -671,8 +719,9 @@ int ffi_closure_helper_DARWIN (ffi_closure*, void*,
    up space for a return value, ffi_closure_ASM invokes the
    following helper function to do most of the work.  */
 
-int ffi_closure_helper_DARWIN (ffi_closure* closure, void * rvalue,
-                              unsigned long * pgr, ffi_dblfl * pfr)
+int
+ffi_closure_helper_DARWIN (ffi_closure *closure, void *rvalue,
+                          unsigned long *pgr, ffi_dblfl *pfr)
 {
   /* rvalue is the pointer to space for return value in closure assembly
      pgr is the pointer to where r3-r10 are stored in ffi_closure_ASM
@@ -694,7 +743,7 @@ int ffi_closure_helper_DARWIN (ffi_closure* closure, void * rvalue,
   unsigned         size_al;
 
   cif = closure->cif;
-  avalue = alloca(cif->nargs * sizeof(void *));
+  avalue = alloca (cif->nargs * sizeof(void *));
 
   /* Copy the caller's structure return value address so that the closure
      returns the data directly to the caller.  */
index 7f27c3c..957a5d5 100644 (file)
@@ -1205,6 +1205,7 @@ ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue,
                pst++;
              avalue[i] = pst;
              pst += 2;
+             ng = 8;
            }
          break;
 
diff --git a/src/powerpc/ffi.c.rej b/src/powerpc/ffi.c.rej
new file mode 100644 (file)
index 0000000..20d3c3a
--- /dev/null
@@ -0,0 +1,18 @@
+--- src/powerpc/ffi.c
++++ src/powerpc/ffi.c
+@@ -186,6 +187,7 @@
+           {
+             *next_arg.f = (float) double_tmp;
+             next_arg.u += 1;
++            intarg_count++;
+           }
+         else
+           *fpr_base.d++ = double_tmp;
+@@ -1224,6 +1227,7 @@
+               {
+                 avalue[i] = pst;
+                 pst += 4;
++                ng = 8;
+               }
+             break;
+           }
index def92a5..d84f1c3 100644 (file)
@@ -32,7 +32,7 @@
 
 #include <stdlib.h>
 
-extern void ffi_closure_ASM(void);
+extern void ffi_closure_ASM (void);
 
 enum {
   /* The assembly depends on these exact flags.  */
@@ -80,10 +80,13 @@ enum { ASM_NEEDS_REGISTERS = 4 };
 
    */
 
-void ffi_prep_args(extended_cif *ecif, unsigned long *const stack)
+void
+ffi_prep_args (extended_cif *ecif, unsigned long *const stack)
 {
   const unsigned bytes = ecif->cif->bytes;
   const unsigned flags = ecif->cif->flags;
+  const unsigned nargs = ecif->cif->nargs;
+  const ffi_abi abi = ecif->cif->abi;
 
   /* 'stacktop' points at the previous backchain pointer.  */
   unsigned long *const stacktop = stack + (bytes / sizeof(unsigned long));
@@ -118,7 +121,7 @@ void ffi_prep_args(extended_cif *ecif, unsigned long *const stack)
     *next_arg++ = (unsigned long) (char *) ecif->rvalue;
 
   /* Now for the arguments.  */
-  for (i = ecif->cif->nargs; i > 0; i--, ptr++, p_argv++)
+  for (i = nargs; i > 0; i--, ptr++, p_argv++)
     {
       switch ((*ptr)->type)
        {
@@ -213,7 +216,7 @@ void ffi_prep_args(extended_cif *ecif, unsigned long *const stack)
          size_al = (*ptr)->size;
          if ((*ptr)->elements[0]->type == 3)
            size_al = ALIGN((*ptr)->size, 8);
-         if (size_al < 3 && ecif->cif->abi == FFI_DARWIN)
+         if (size_al < 3 && abi == FFI_DARWIN)
            dest_cpy += 4 - size_al;
 
          memcpy ((char *) dest_cpy, (char *) *p_argv, size_al);
@@ -229,7 +232,7 @@ void ffi_prep_args(extended_cif *ecif, unsigned long *const stack)
             the struct to double-word.  */
          if ((*ptr)->elements[0]->type == FFI_TYPE_DOUBLE)
            size_al = ALIGN((*ptr)->size, 8);
-         if (size_al < 3 && ecif->cif->abi == FFI_DARWIN)
+         if (size_al < 3 && abi == FFI_DARWIN)
            dest_cpy += 4 - size_al;
 
          memcpy((char *) dest_cpy, (char *) *p_argv, size_al);
@@ -301,8 +304,44 @@ darwin_adjust_aggregate_sizes (ffi_type *s)
   /* Do not add additional tail padding.  */
 }
 
+/* Adjust the size of S to be correct for AIX.
+   Word-align double unless it is the first member of a structure.  */
+
+static void
+aix_adjust_aggregate_sizes (ffi_type *s)
+{
+  int i;
+
+  if (s->type != FFI_TYPE_STRUCT)
+    return;
+
+  s->size = 0;
+  for (i = 0; s->elements[i] != NULL; i++)
+    {
+      ffi_type *p;
+      int align;
+      
+      p = s->elements[i];
+      aix_adjust_aggregate_sizes (p);
+      align = p->alignment;
+      if (i != 0 && p->type == FFI_TYPE_DOUBLE)
+       align = 4;
+      s->size = ALIGN(s->size, align) + p->size;
+    }
+  
+  s->size = ALIGN(s->size, s->alignment);
+  
+  if (s->elements[0]->type == FFI_TYPE_UINT64
+      || s->elements[0]->type == FFI_TYPE_SINT64
+      || s->elements[0]->type == FFI_TYPE_DOUBLE
+      || s->elements[0]->alignment == 8)
+    s->alignment = s->alignment > 8 ? s->alignment : 8;
+  /* Do not add additional tail padding.  */
+}
+
 /* Perform machine dependent cif processing.  */
-ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
+ffi_status
+ffi_prep_cif_machdep (ffi_cif *cif)
 {
   /* All this is for the DARWIN ABI.  */
   int i;
@@ -323,6 +362,13 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
        darwin_adjust_aggregate_sizes (cif->arg_types[i]);
     }
 
+  if (cif->abi == FFI_AIX)
+    {
+      aix_adjust_aggregate_sizes (cif->rtype);
+      for (i = 0; i < cif->nargs; i++)
+       aix_adjust_aggregate_sizes (cif->arg_types[i]);
+    }
+
   /* Space for the frame pointer, callee's LR, CR, etc, and for
      the asm's temp regs.  */
 
@@ -473,7 +519,8 @@ extern void ffi_call_AIX(extended_cif *, long, unsigned, unsigned *,
 extern void ffi_call_DARWIN(extended_cif *, long, unsigned, unsigned *,
                            void (*fn)(void), void (*fn2)(void));
 
-void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
+void
+ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
 {
   extended_cif ecif;
 
@@ -486,7 +533,7 @@ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
   if ((rvalue == NULL) &&
       (cif->rtype->type == FFI_TYPE_STRUCT))
     {
-      ecif.rvalue = alloca(cif->rtype->size);
+      ecif.rvalue = alloca (cif->rtype->size);
     }
   else
     ecif.rvalue = rvalue;
@@ -661,8 +708,9 @@ typedef union
   double d;
 } ffi_dblfl;
 
-int ffi_closure_helper_DARWIN (ffi_closure*, void*,
-                              unsigned long*, ffi_dblfl*);
+int
+ffi_closure_helper_DARWIN (ffi_closure *, void *,
+                          unsigned long *, ffi_dblfl *);
 
 /* Basically the trampoline invokes ffi_closure_ASM, and on
    entry, r11 holds the address of the closure.
@@ -671,8 +719,9 @@ int ffi_closure_helper_DARWIN (ffi_closure*, void*,
    up space for a return value, ffi_closure_ASM invokes the
    following helper function to do most of the work.  */
 
-int ffi_closure_helper_DARWIN (ffi_closure* closure, void * rvalue,
-                              unsigned long * pgr, ffi_dblfl * pfr)
+int
+ffi_closure_helper_DARWIN (ffi_closure *closure, void *rvalue,
+                          unsigned long *pgr, ffi_dblfl *pfr)
 {
   /* rvalue is the pointer to space for return value in closure assembly
      pgr is the pointer to where r3-r10 are stored in ffi_closure_ASM
@@ -694,7 +743,7 @@ int ffi_closure_helper_DARWIN (ffi_closure* closure, void * rvalue,
   unsigned         size_al;
 
   cif = closure->cif;
-  avalue = alloca(cif->nargs * sizeof(void *));
+  avalue = alloca (cif->nargs * sizeof(void *));
 
   /* Copy the caller's structure return value address so that the closure
      returns the data directly to the caller.  */
index 014d10c..765ce45 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/src/s390
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index 6ff1c7b..5d758eb 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/src/sh
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index b0be66c..2401c6a 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/src/sh64
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index 086bf61..30f1377 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/src/sparc
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index 1d986af..c06d4dc 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/src/x86
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index 1d3bf30..f87c78f 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/testsuite
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index 11125ab..8b28fd9 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/testsuite/config
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index acd42b9..f7c3897 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/testsuite/lib
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index b3073d8..63f4c32 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/testsuite/libffi.call
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
@@ -60,17 +60,17 @@ aph
 
 1707
 \f
-cls_align_uint16.c
+stret_medium.c
 file
 
 
 
 
-2009-12-20T06:01:57.924804Z
-8bd0cdf89201ff6da5eb8cc5af94ff4b
-2009-06-12T15:57:58.721771Z
-148433
-aph
+2009-12-20T06:01:57.923806Z
+767d8e6fbe073e9daae66e1b47a82a74
+2009-12-08T22:59:02.516289Z
+155093
+daney
 
 
 
@@ -92,19 +92,19 @@ aph
 
 
 
-2524
+3814
 \f
-stret_medium.c
+cls_align_uint16.c
 file
 
 
 
 
-2009-12-20T06:01:57.923806Z
-767d8e6fbe073e9daae66e1b47a82a74
-2009-12-08T22:59:02.516289Z
-155093
-daney
+2009-12-20T06:01:57.924804Z
+8bd0cdf89201ff6da5eb8cc5af94ff4b
+2009-06-12T15:57:58.721771Z
+148433
+aph
 
 
 
@@ -126,7 +126,7 @@ daney
 
 
 
-3814
+2524
 \f
 cls_align_longdouble_split2.c
 file
@@ -230,17 +230,17 @@ andreast
 
 745
 \f
-nested_struct1.c
+struct3.c
 file
 
 
 
 
-2009-12-20T06:01:57.927806Z
-a3904921ab13f98414c119e2e3884079
-2009-06-12T15:57:58.721771Z
-148433
-aph
+2009-12-20T06:01:57.926806Z
+ccda1a87fadf3cc0c31bbc75c4c92cef
+2004-01-24T16:13:48.000000Z
+76513
+andreast
 
 
 
@@ -262,19 +262,19 @@ aph
 
 
 
-5032
+1220
 \f
-struct3.c
+nested_struct1.c
 file
 
 
 
 
-2009-12-20T06:01:57.926806Z
-ccda1a87fadf3cc0c31bbc75c4c92cef
-2004-01-24T16:13:48.000000Z
-76513
-andreast
+2009-12-20T06:01:57.927806Z
+a3904921ab13f98414c119e2e3884079
+2009-06-12T15:57:58.721771Z
+148433
+aph
 
 
 
@@ -296,19 +296,19 @@ andreast
 
 
 
-1220
+5032
 \f
-err_bad_abi.c
+struct5.c
 file
 
 
 
 
-2009-12-20T06:01:57.928805Z
-6fd75fe5dd3edb057fdc1bf327edcd5a
-2009-06-15T17:14:53.377358Z
-148499
-aph
+2009-12-20T06:01:57.927806Z
+81535421410fd680f78b33f39cdcc580
+2003-09-04T14:49:22.000000Z
+71069
+andreast
 
 
 
@@ -330,7 +330,7 @@ aph
 
 
 
-828
+1398
 \f
 nested_struct3.c
 file
@@ -366,17 +366,17 @@ aph
 
 2780
 \f
-struct5.c
+err_bad_abi.c
 file
 
 
 
 
-2009-12-20T06:01:57.927806Z
-81535421410fd680f78b33f39cdcc580
-2003-09-04T14:49:22.000000Z
-71069
-andreast
+2009-12-20T06:01:57.928805Z
+6fd75fe5dd3edb057fdc1bf327edcd5a
+2009-06-15T17:14:53.377358Z
+148499
+aph
 
 
 
@@ -398,7 +398,7 @@ andreast
 
 
 
-1398
+828
 \f
 cls_7_1_byte.c
 file
@@ -434,17 +434,17 @@ aph
 
 3406
 \f
-cls_double.c
+struct7.c
 file
 
 
 
 
-2009-12-20T06:01:57.931805Z
-0bdb41c9d86c6676cf323baed9763580
-2009-06-12T15:57:58.721771Z
-148433
-aph
+2009-12-20T06:01:57.929805Z
+c596ddb985689ec61b12aaa3d22affa3
+2003-09-04T14:49:22.000000Z
+71069
+andreast
 
 
 
@@ -466,7 +466,7 @@ aph
 
 
 
-1081
+1605
 \f
 nested_struct5.c
 file
@@ -502,17 +502,17 @@ aph
 
 2785
 \f
-struct7.c
+cls_double.c
 file
 
 
 
 
-2009-12-20T06:01:57.929805Z
-c596ddb985689ec61b12aaa3d22affa3
-2003-09-04T14:49:22.000000Z
-71069
-andreast
+2009-12-20T06:01:57.931805Z
+0bdb41c9d86c6676cf323baed9763580
+2009-06-12T15:57:58.721771Z
+148433
+aph
 
 
 
@@ -534,7 +534,7 @@ andreast
 
 
 
-1605
+1081
 \f
 nested_struct7.c
 file
@@ -1046,17 +1046,17 @@ aph
 
 747
 \f
-stret_large.c
+cls_multi_schar.c
 file
 
 
 
 
 2009-12-20T06:01:57.939805Z
-7a756a4b99e8417f716d22e8f2339eb7
-2009-12-08T22:59:02.516289Z
-155093
-daney
+c710800140844efb82423cbf42ac7ae4
+2009-06-12T15:57:58.721771Z
+148433
+aph
 
 
 
@@ -1078,19 +1078,19 @@ daney
 
 
 
-4709
+1645
 \f
-cls_multi_schar.c
+stret_large.c
 file
 
 
 
 
 2009-12-20T06:01:57.939805Z
-c710800140844efb82423cbf42ac7ae4
-2009-06-12T15:57:58.721771Z
-148433
-aph
+7a756a4b99e8417f716d22e8f2339eb7
+2009-12-08T22:59:02.516289Z
+155093
+daney
 
 
 
@@ -1112,7 +1112,7 @@ aph
 
 
 
-1645
+4709
 \f
 cls_multi_uchar.c
 file
@@ -1148,16 +1148,16 @@ aph
 
 2279
 \f
-cls_9byte1.c
+err_bad_typedef.c
 file
 
 
 
 
 2009-12-20T06:01:57.940803Z
-40f4b4ad9bb66b5a7842f381dec87bae
-2009-06-12T15:57:58.721771Z
-148433
+3c916db09b26d1dadfaf1f83c9a4deae
+2009-06-15T17:14:53.377358Z
+148499
 aph
 
 
@@ -1180,7 +1180,7 @@ aph
 
 
 
-2447
+450
 \f
 cls_19byte.c
 file
@@ -1216,16 +1216,16 @@ aph
 
 2966
 \f
-err_bad_typedef.c
+cls_9byte1.c
 file
 
 
 
 
 2009-12-20T06:01:57.940803Z
-3c916db09b26d1dadfaf1f83c9a4deae
-2009-06-15T17:14:53.377358Z
-148499
+40f4b4ad9bb66b5a7842f381dec87bae
+2009-06-12T15:57:58.721771Z
+148433
 aph
 
 
@@ -1248,19 +1248,19 @@ aph
 
 
 
-450
+2447
 \f
-cls_align_longdouble_split.c
+closure_fn1.c
 file
 
 
 
 
-2009-12-20T06:01:57.941803Z
-c3b74391bcbacc226027a40d596e59ad
-2009-12-08T22:59:02.516289Z
-155093
-daney
+2009-12-20T06:01:57.940803Z
+af1c73f8927fd6ff7f3d0169d6a16bfa
+2009-06-12T15:57:58.721771Z
+148433
+aph
 
 
 
@@ -1282,7 +1282,7 @@ daney
 
 
 
-3758
+2873
 \f
 cls_align_float.c
 file
@@ -1318,17 +1318,17 @@ aph
 
 2553
 \f
-closure_fn1.c
+cls_align_longdouble_split.c
 file
 
 
 
 
-2009-12-20T06:01:57.940803Z
-af1c73f8927fd6ff7f3d0169d6a16bfa
-2009-06-12T15:57:58.721771Z
-148433
-aph
+2009-12-20T06:01:57.941803Z
+c3b74391bcbacc226027a40d596e59ad
+2009-12-08T22:59:02.516289Z
+155093
+daney
 
 
 
@@ -1350,19 +1350,19 @@ aph
 
 
 
-2873
+3758
 \f
-problem1.c
+return_fl1.c
 file
 
 
 
 
 2009-12-20T06:01:57.941803Z
-00c9e6412441f7bba3c5d8f863d11d2f
-2009-06-12T15:57:58.721771Z
-148433
-aph
+30f05c9246b15bd48f552bbd54d483b7
+2006-02-16T22:29:01.660175Z
+111156
+andreast
 
 
 
@@ -1384,19 +1384,19 @@ aph
 
 
 
-2326
+755
 \f
-return_fl1.c
+problem1.c
 file
 
 
 
 
 2009-12-20T06:01:57.941803Z
-30f05c9246b15bd48f552bbd54d483b7
-2006-02-16T22:29:01.660175Z
-111156
-andreast
+00c9e6412441f7bba3c5d8f863d11d2f
+2009-06-12T15:57:58.721771Z
+148433
+aph
 
 
 
@@ -1418,19 +1418,19 @@ andreast
 
 
 
-755
+2326
 \f
-closure_fn3.c
+return_dbl2.c
 file
 
 
 
 
 2009-12-20T06:01:57.941803Z
-80762a3d4a50c6d41904442445de79d0
-2009-06-12T15:57:58.721771Z
-148433
-aph
+56a258923c7b9c1aa0ab24bbde1ade56
+2007-08-09T02:02:37.303695Z
+127312
+daney
 
 
 
@@ -1452,19 +1452,19 @@ aph
 
 
 
-2911
+1005
 \f
-return_dbl2.c
+closure_fn3.c
 file
 
 
 
 
 2009-12-20T06:01:57.941803Z
-56a258923c7b9c1aa0ab24bbde1ade56
-2007-08-09T02:02:37.303695Z
-127312
-daney
+80762a3d4a50c6d41904442445de79d0
+2009-06-12T15:57:58.721771Z
+148433
+aph
 
 
 
@@ -1486,19 +1486,19 @@ daney
 
 
 
-1005
+2911
 \f
-cls_sshort.c
+return_fl3.c
 file
 
 
 
 
 2009-12-20T06:01:57.942803Z
-fa0415723a96a5c2da90b627c2ea7651
-2009-06-12T15:57:58.721771Z
-148433
-aph
+5e832fea7e1abc3e13210dd628c3ea6a
+2007-08-09T02:02:37.303695Z
+127312
+daney
 
 
 
@@ -1520,19 +1520,19 @@ aph
 
 
 
-1077
+967
 \f
-return_fl3.c
+cls_sshort.c
 file
 
 
 
 
 2009-12-20T06:01:57.942803Z
-5e832fea7e1abc3e13210dd628c3ea6a
-2007-08-09T02:02:37.303695Z
-127312
-daney
+fa0415723a96a5c2da90b627c2ea7651
+2009-06-12T15:57:58.721771Z
+148433
+aph
 
 
 
@@ -1554,7 +1554,7 @@ daney
 
 
 
-967
+1077
 \f
 closure_fn5.c
 file
@@ -1624,17 +1624,17 @@ aph
 
 2518
 \f
-cls_2byte.c
+promotion.c
 file
 
 
 
 
-2009-12-20T06:01:57.943803Z
-e9db163228cf54a3739f86c78fc7e39c
-2009-06-12T15:57:58.721771Z
-148433
-aph
+2009-12-20T06:01:57.942803Z
+09a387482b7ce131ae73efe275816fdd
+2006-04-22T21:17:35.201451Z
+113181
+andreast
 
 
 
@@ -1656,7 +1656,7 @@ aph
 
 
 
-2432
+1353
 \f
 nested_struct.c
 file
@@ -1692,17 +1692,17 @@ aph
 
 4695
 \f
-promotion.c
+cls_2byte.c
 file
 
 
 
 
-2009-12-20T06:01:57.942803Z
-09a387482b7ce131ae73efe275816fdd
-2006-04-22T21:17:35.201451Z
-113181
-andreast
+2009-12-20T06:01:57.943803Z
+e9db163228cf54a3739f86c78fc7e39c
+2009-06-12T15:57:58.721771Z
+148433
+aph
 
 
 
@@ -1724,18 +1724,18 @@ andreast
 
 
 
-1353
+2432
 \f
-float2.c
+return_ll1.c
 file
 
 
 
 
 2009-12-20T06:01:57.943803Z
-bccf0bee1af8844103b4fc6d20ac4a00
-2009-06-12T15:57:58.721771Z
-148433
+4464c6fa615810685c3fa04a8f9be7a3
+2009-06-16T10:15:31.432585Z
+148521
 aph
 
 
@@ -1758,7 +1758,7 @@ aph
 
 
 
-1479
+995
 \f
 nested_struct10.c
 file
@@ -1794,16 +1794,16 @@ aph
 
 3575
 \f
-return_ll1.c
+float2.c
 file
 
 
 
 
 2009-12-20T06:01:57.943803Z
-4464c6fa615810685c3fa04a8f9be7a3
-2009-06-16T10:15:31.432585Z
-148521
+bccf0bee1af8844103b4fc6d20ac4a00
+2009-06-12T15:57:58.721771Z
+148433
 aph
 
 
@@ -1826,7 +1826,7 @@ aph
 
 
 
-995
+1479
 \f
 cls_4byte.c
 file
@@ -2032,14 +2032,14 @@ aph
 
 1685
 \f
-cls_align_uint32.c
+cls_align_sint16.c
 file
 
 
 
 
 2009-12-20T06:01:57.945802Z
-3f3c1ce646a897c75eb58a91d34d2ffb
+5a795d6260706dd654ddd8eb3d1a0b4f
 2009-06-12T15:57:58.721771Z
 148433
 aph
@@ -2064,16 +2064,16 @@ aph
 
 
 
-2520
+2522
 \f
-cls_align_sint16.c
+cls_align_uint32.c
 file
 
 
 
 
 2009-12-20T06:01:57.945802Z
-5a795d6260706dd654ddd8eb3d1a0b4f
+3f3c1ce646a897c75eb58a91d34d2ffb
 2009-06-12T15:57:58.721771Z
 148433
 aph
@@ -2098,7 +2098,7 @@ aph
 
 
 
-2522
+2520
 \f
 cls_double_va.c
 file
index b0031c3..7b1c5ef 100644 (file)
@@ -52,9 +52,9 @@
 #endif
 
 /* MinGW kludge.  */
-#ifdef WIN64
-#define PRIdLL "PRId64"
-#define PRIuLL "PRIu64"
+#ifdef _WIN64
+#define PRIdLL "I64d"
+#define PRIuLL "I64u"
 #else
 #define PRIdLL "lld"
 #define PRIuLL "llu"
index 5bc62b3..9ac6438 100644 (file)
@@ -1,7 +1,7 @@
 10
 
 dir
-155472
+155499
 svn+ssh://green@gcc.gnu.org/svn/gcc/trunk/libffi/testsuite/libffi.special
 svn+ssh://green@gcc.gnu.org/svn/gcc
 
index 92fb656..e300cce 100644 (file)
@@ -45,9 +45,9 @@
 
 
 /* MinGW kludge.  */
-#ifdef WIN64
-#define PRIdLL "PRId64"
-#define PRIuLL "PRIu64"
+#ifdef _WIN64
+#define PRIdLL "I64d"
+#define PRIuLL "I64u"
 #else
 #define PRIdLL "lld"
 #define PRIuLL "llu"