OSDN Git Service

2006-10-10 Paolo Bonzini <bonzini@gnu.org>
authorbonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 10 Oct 2006 14:21:05 +0000 (14:21 +0000)
committerbonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 10 Oct 2006 14:21:05 +0000 (14:21 +0000)
    Sandro Tolaini  <tolaini@libero.it>

* configure.ac [i*86-*-darwin*]: Set X86_DARWIN symbol and
conditional.
* configure: Regenerated.
* Makefile.am (nodist_libffi_la_SOURCES) [X86_DARWIN]: New case.
(EXTRA_DIST): Add src/x86/darwin.S.
* Makefile.in: Regenerated.
* include/Makefile.in: Regenerated.
* testsuite/Makefile.in: Regenerated.

* src/x86/ffi.c (ffi_prep_cif_machdep) [X86_DARWIN]: Treat like
X86_WIN32, and additionally align stack to 16 bytes.
* src/x86/darwin.S: New, based on sysv.S.
* src/prep_cif.c (ffi_prep_cif) [X86_DARWIN]: Align > 8-byte structs.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117602 138bc75d-0d04-0410-961f-82ee72b054a4

libffi/ChangeLog
libffi/Makefile.am
libffi/Makefile.in
libffi/configure
libffi/configure.ac
libffi/include/Makefile.in
libffi/src/prep_cif.c
libffi/src/x86/darwin.S [new file with mode: 0644]
libffi/src/x86/ffi.c
libffi/testsuite/Makefile.in

index 51323c0..1ab0902 100644 (file)
@@ -1,3 +1,20 @@
+2006-10-10  Paolo Bonzini  <bonzini@gnu.org>
+           Sandro Tolaini  <tolaini@libero.it>
+
+       * configure.ac [i*86-*-darwin*]: Set X86_DARWIN symbol and 
+       conditional.
+       * configure: Regenerated.
+       * Makefile.am (nodist_libffi_la_SOURCES) [X86_DARWIN]: New case.
+       (EXTRA_DIST): Add src/x86/darwin.S.
+       * Makefile.in: Regenerated.
+       * include/Makefile.in: Regenerated.
+       * testsuite/Makefile.in: Regenerated.
+
+       * src/x86/ffi.c (ffi_prep_cif_machdep) [X86_DARWIN]: Treat like
+       X86_WIN32, and additionally align stack to 16 bytes.
+       * src/x86/darwin.S: New, based on sysv.S.
+       * src/prep_cif.c (ffi_prep_cif) [X86_DARWIN]: Align > 8-byte structs.
+
 2006-09-12  David Daney  <ddaney@avtrex.com>
 
        PR libffi/23935
index c1b23a2..dc8f26e 100644 (file)
@@ -24,7 +24,7 @@ EXTRA_DIST = LICENSE ChangeLog.v1 \
        src/sh64/ffi.c src/sh64/sysv.S src/sh64/ffitarget.h \
        src/sparc/v8.S src/sparc/v9.S src/sparc/ffitarget.h \
        src/sparc/ffi.c \
-       src/x86/ffi.c src/x86/sysv.S src/x86/win32.S \
+       src/x86/ffi.c src/x86/sysv.S src/x86/win32.S src/x86/darwin.S \
        src/x86/ffi64.c src/x86/unix64.S src/x86/ffitarget.h \
        src/pa/ffi.c src/pa/linux.S src/pa/hpux32.S \
        src/frv/eabi.S src/frv/ffitarget.h
@@ -94,6 +94,9 @@ endif
 if X86_WIN32
 nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/win32.S
 endif
+if X86_DARWIN
+nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/darwin.S
+endif
 if SPARC
 nodist_libffi_la_SOURCES += src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S
 endif
index 1a8524b..a4810e6 100644 (file)
@@ -41,24 +41,25 @@ target_triplet = @target@
 @MIPS_LINUX_TRUE@am__append_2 = src/mips/ffi.c src/mips/o32.S
 @X86_TRUE@am__append_3 = src/x86/ffi.c src/x86/sysv.S
 @X86_WIN32_TRUE@am__append_4 = src/x86/ffi.c src/x86/win32.S
-@SPARC_TRUE@am__append_5 = src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S
-@ALPHA_TRUE@am__append_6 = src/alpha/ffi.c src/alpha/osf.S
-@IA64_TRUE@am__append_7 = src/ia64/ffi.c src/ia64/unix.S
-@M32R_TRUE@am__append_8 = src/m32r/sysv.S src/m32r/ffi.c
-@M68K_TRUE@am__append_9 = src/m68k/ffi.c src/m68k/sysv.S
-@POWERPC_TRUE@am__append_10 = src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S src/powerpc/linux64.S src/powerpc/linux64_closure.S
-@POWERPC_AIX_TRUE@am__append_11 = src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closure.S
-@POWERPC_DARWIN_TRUE@am__append_12 = src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S
-@POWERPC_FREEBSD_TRUE@am__append_13 = src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S
-@ARM_TRUE@am__append_14 = src/arm/sysv.S src/arm/ffi.c
-@LIBFFI_CRIS_TRUE@am__append_15 = src/cris/sysv.S src/cris/ffi.c
-@FRV_TRUE@am__append_16 = src/frv/eabi.S src/frv/ffi.c
-@S390_TRUE@am__append_17 = src/s390/sysv.S src/s390/ffi.c
-@X86_64_TRUE@am__append_18 = src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S
-@SH_TRUE@am__append_19 = src/sh/sysv.S src/sh/ffi.c
-@SH64_TRUE@am__append_20 = src/sh64/sysv.S src/sh64/ffi.c
-@PA_LINUX_TRUE@am__append_21 = src/pa/linux.S src/pa/ffi.c
-@PA_HPUX_TRUE@am__append_22 = src/pa/hpux32.S src/pa/ffi.c
+@X86_DARWIN_TRUE@am__append_5 = src/x86/ffi.c src/x86/darwin.S
+@SPARC_TRUE@am__append_6 = src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S
+@ALPHA_TRUE@am__append_7 = src/alpha/ffi.c src/alpha/osf.S
+@IA64_TRUE@am__append_8 = src/ia64/ffi.c src/ia64/unix.S
+@M32R_TRUE@am__append_9 = src/m32r/sysv.S src/m32r/ffi.c
+@M68K_TRUE@am__append_10 = src/m68k/ffi.c src/m68k/sysv.S
+@POWERPC_TRUE@am__append_11 = src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S src/powerpc/linux64.S src/powerpc/linux64_closure.S
+@POWERPC_AIX_TRUE@am__append_12 = src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closure.S
+@POWERPC_DARWIN_TRUE@am__append_13 = src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S
+@POWERPC_FREEBSD_TRUE@am__append_14 = src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S
+@ARM_TRUE@am__append_15 = src/arm/sysv.S src/arm/ffi.c
+@LIBFFI_CRIS_TRUE@am__append_16 = src/cris/sysv.S src/cris/ffi.c
+@FRV_TRUE@am__append_17 = src/frv/eabi.S src/frv/ffi.c
+@S390_TRUE@am__append_18 = src/s390/sysv.S src/s390/ffi.c
+@X86_64_TRUE@am__append_19 = src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S
+@SH_TRUE@am__append_20 = src/sh/sysv.S src/sh/ffi.c
+@SH64_TRUE@am__append_21 = src/sh64/sysv.S src/sh64/ffi.c
+@PA_LINUX_TRUE@am__append_22 = src/pa/linux.S src/pa/ffi.c
+@PA_HPUX_TRUE@am__append_23 = src/pa/hpux32.S src/pa/ffi.c
 DIST_COMMON = README $(am__configure_deps) $(srcdir)/../compile \
        $(srcdir)/../config.guess $(srcdir)/../config.sub \
        $(srcdir)/../depcomp $(srcdir)/../install-sh \
@@ -95,35 +96,36 @@ am_libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo src/types.lo \
 @MIPS_LINUX_TRUE@am__objects_2 = src/mips/ffi.lo src/mips/o32.lo
 @X86_TRUE@am__objects_3 = src/x86/ffi.lo src/x86/sysv.lo
 @X86_WIN32_TRUE@am__objects_4 = src/x86/ffi.lo src/x86/win32.lo
-@SPARC_TRUE@am__objects_5 = src/sparc/ffi.lo src/sparc/v8.lo \
+@X86_DARWIN_TRUE@am__objects_5 = src/x86/ffi.lo src/x86/darwin.lo
+@SPARC_TRUE@am__objects_6 = src/sparc/ffi.lo src/sparc/v8.lo \
 @SPARC_TRUE@   src/sparc/v9.lo
-@ALPHA_TRUE@am__objects_6 = src/alpha/ffi.lo src/alpha/osf.lo
-@IA64_TRUE@am__objects_7 = src/ia64/ffi.lo src/ia64/unix.lo
-@M32R_TRUE@am__objects_8 = src/m32r/sysv.lo src/m32r/ffi.lo
-@M68K_TRUE@am__objects_9 = src/m68k/ffi.lo src/m68k/sysv.lo
-@POWERPC_TRUE@am__objects_10 = src/powerpc/ffi.lo src/powerpc/sysv.lo \
+@ALPHA_TRUE@am__objects_7 = src/alpha/ffi.lo src/alpha/osf.lo
+@IA64_TRUE@am__objects_8 = src/ia64/ffi.lo src/ia64/unix.lo
+@M32R_TRUE@am__objects_9 = src/m32r/sysv.lo src/m32r/ffi.lo
+@M68K_TRUE@am__objects_10 = src/m68k/ffi.lo src/m68k/sysv.lo
+@POWERPC_TRUE@am__objects_11 = src/powerpc/ffi.lo src/powerpc/sysv.lo \
 @POWERPC_TRUE@ src/powerpc/ppc_closure.lo \
 @POWERPC_TRUE@ src/powerpc/linux64.lo \
 @POWERPC_TRUE@ src/powerpc/linux64_closure.lo
-@POWERPC_AIX_TRUE@am__objects_11 = src/powerpc/ffi_darwin.lo \
+@POWERPC_AIX_TRUE@am__objects_12 = src/powerpc/ffi_darwin.lo \
 @POWERPC_AIX_TRUE@     src/powerpc/aix.lo \
 @POWERPC_AIX_TRUE@     src/powerpc/aix_closure.lo
-@POWERPC_DARWIN_TRUE@am__objects_12 = src/powerpc/ffi_darwin.lo \
+@POWERPC_DARWIN_TRUE@am__objects_13 = src/powerpc/ffi_darwin.lo \
 @POWERPC_DARWIN_TRUE@  src/powerpc/darwin.lo \
 @POWERPC_DARWIN_TRUE@  src/powerpc/darwin_closure.lo
-@POWERPC_FREEBSD_TRUE@am__objects_13 = src/powerpc/ffi.lo \
+@POWERPC_FREEBSD_TRUE@am__objects_14 = src/powerpc/ffi.lo \
 @POWERPC_FREEBSD_TRUE@ src/powerpc/sysv.lo \
 @POWERPC_FREEBSD_TRUE@ src/powerpc/ppc_closure.lo
-@ARM_TRUE@am__objects_14 = src/arm/sysv.lo src/arm/ffi.lo
-@LIBFFI_CRIS_TRUE@am__objects_15 = src/cris/sysv.lo src/cris/ffi.lo
-@FRV_TRUE@am__objects_16 = src/frv/eabi.lo src/frv/ffi.lo
-@S390_TRUE@am__objects_17 = src/s390/sysv.lo src/s390/ffi.lo
-@X86_64_TRUE@am__objects_18 = src/x86/ffi64.lo src/x86/unix64.lo \
+@ARM_TRUE@am__objects_15 = src/arm/sysv.lo src/arm/ffi.lo
+@LIBFFI_CRIS_TRUE@am__objects_16 = src/cris/sysv.lo src/cris/ffi.lo
+@FRV_TRUE@am__objects_17 = src/frv/eabi.lo src/frv/ffi.lo
+@S390_TRUE@am__objects_18 = src/s390/sysv.lo src/s390/ffi.lo
+@X86_64_TRUE@am__objects_19 = src/x86/ffi64.lo src/x86/unix64.lo \
 @X86_64_TRUE@  src/x86/ffi.lo src/x86/sysv.lo
-@SH_TRUE@am__objects_19 = src/sh/sysv.lo src/sh/ffi.lo
-@SH64_TRUE@am__objects_20 = src/sh64/sysv.lo src/sh64/ffi.lo
-@PA_LINUX_TRUE@am__objects_21 = src/pa/linux.lo src/pa/ffi.lo
-@PA_HPUX_TRUE@am__objects_22 = src/pa/hpux32.lo src/pa/ffi.lo
+@SH_TRUE@am__objects_20 = src/sh/sysv.lo src/sh/ffi.lo
+@SH64_TRUE@am__objects_21 = src/sh64/sysv.lo src/sh64/ffi.lo
+@PA_LINUX_TRUE@am__objects_22 = src/pa/linux.lo src/pa/ffi.lo
+@PA_HPUX_TRUE@am__objects_23 = src/pa/hpux32.lo src/pa/ffi.lo
 nodist_libffi_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
        $(am__objects_3) $(am__objects_4) $(am__objects_5) \
        $(am__objects_6) $(am__objects_7) $(am__objects_8) \
@@ -131,22 +133,22 @@ nodist_libffi_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
        $(am__objects_12) $(am__objects_13) $(am__objects_14) \
        $(am__objects_15) $(am__objects_16) $(am__objects_17) \
        $(am__objects_18) $(am__objects_19) $(am__objects_20) \
-       $(am__objects_21) $(am__objects_22)
+       $(am__objects_21) $(am__objects_22) $(am__objects_23)
 libffi_la_OBJECTS = $(am_libffi_la_OBJECTS) \
        $(nodist_libffi_la_OBJECTS)
 libffi_convenience_la_LIBADD =
-am__objects_23 = src/debug.lo src/prep_cif.lo src/types.lo \
+am__objects_24 = src/debug.lo src/prep_cif.lo src/types.lo \
        src/raw_api.lo src/java_raw_api.lo
-am_libffi_convenience_la_OBJECTS = $(am__objects_23)
-am__objects_24 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
+am_libffi_convenience_la_OBJECTS = $(am__objects_24)
+am__objects_25 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
        $(am__objects_4) $(am__objects_5) $(am__objects_6) \
        $(am__objects_7) $(am__objects_8) $(am__objects_9) \
        $(am__objects_10) $(am__objects_11) $(am__objects_12) \
        $(am__objects_13) $(am__objects_14) $(am__objects_15) \
        $(am__objects_16) $(am__objects_17) $(am__objects_18) \
        $(am__objects_19) $(am__objects_20) $(am__objects_21) \
-       $(am__objects_22)
-nodist_libffi_convenience_la_OBJECTS = $(am__objects_24)
+       $(am__objects_22) $(am__objects_23)
+nodist_libffi_convenience_la_OBJECTS = $(am__objects_25)
 libffi_convenience_la_OBJECTS = $(am_libffi_convenience_la_OBJECTS) \
        $(nodist_libffi_convenience_la_OBJECTS)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I.
@@ -232,6 +234,7 @@ F77 = @F77@
 FFLAGS = @FFLAGS@
 FRV_FALSE = @FRV_FALSE@
 FRV_TRUE = @FRV_TRUE@
+GREP = @GREP@
 HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@
 IA64_FALSE = @IA64_FALSE@
 IA64_TRUE = @IA64_TRUE@
@@ -300,16 +303,15 @@ TESTSUBDIR_TRUE = @TESTSUBDIR_TRUE@
 VERSION = @VERSION@
 X86_64_FALSE = @X86_64_FALSE@
 X86_64_TRUE = @X86_64_TRUE@
+X86_DARWIN_FALSE = @X86_DARWIN_FALSE@
+X86_DARWIN_TRUE = @X86_DARWIN_TRUE@
 X86_FALSE = @X86_FALSE@
 X86_TRUE = @X86_TRUE@
 X86_WIN32_FALSE = @X86_WIN32_FALSE@
 X86_WIN32_TRUE = @X86_WIN32_TRUE@
-ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_F77 = @ac_ct_F77@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
 am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
 am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
@@ -326,24 +328,31 @@ build_cpu = @build_cpu@
 build_os = @build_os@
 build_vendor = @build_vendor@
 datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
 host_os = @host_os@
 host_vendor = @host_vendor@
+htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
 libdir = @libdir@
 libexecdir = @libexecdir@
+localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 multi_basedir = @multi_basedir@
 oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
+psdir = @psdir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 sysconfdir = @sysconfdir@
@@ -376,7 +385,7 @@ EXTRA_DIST = LICENSE ChangeLog.v1 \
        src/sh64/ffi.c src/sh64/sysv.S src/sh64/ffitarget.h \
        src/sparc/v8.S src/sparc/v9.S src/sparc/ffitarget.h \
        src/sparc/ffi.c \
-       src/x86/ffi.c src/x86/sysv.S src/x86/win32.S \
+       src/x86/ffi.c src/x86/sysv.S src/x86/win32.S src/x86/darwin.S \
        src/x86/ffi64.c src/x86/unix64.S src/x86/ffitarget.h \
        src/pa/ffi.c src/pa/linux.S src/pa/hpux32.S \
        src/frv/eabi.S src/frv/ffitarget.h
@@ -432,7 +441,7 @@ nodist_libffi_la_SOURCES = $(am__append_1) $(am__append_2) \
        $(am__append_12) $(am__append_13) $(am__append_14) \
        $(am__append_15) $(am__append_16) $(am__append_17) \
        $(am__append_18) $(am__append_19) $(am__append_20) \
-       $(am__append_21) $(am__append_22)
+       $(am__append_21) $(am__append_22) $(am__append_23)
 libffi_convenience_la_SOURCES = $(libffi_la_SOURCES)
 nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES)
 AM_CFLAGS = -Wall -g -fexceptions
@@ -565,6 +574,8 @@ src/x86/sysv.lo: src/x86/$(am__dirstamp) \
        src/x86/$(DEPDIR)/$(am__dirstamp)
 src/x86/win32.lo: src/x86/$(am__dirstamp) \
        src/x86/$(DEPDIR)/$(am__dirstamp)
+src/x86/darwin.lo: src/x86/$(am__dirstamp) \
+       src/x86/$(DEPDIR)/$(am__dirstamp)
 src/sparc/$(am__dirstamp):
        @$(mkdir_p) src/sparc
        @: > src/sparc/$(am__dirstamp)
@@ -812,6 +823,8 @@ mostlyclean-compile:
        -rm -f src/sparc/v9.lo
        -rm -f src/types.$(OBJEXT)
        -rm -f src/types.lo
+       -rm -f src/x86/darwin.$(OBJEXT)
+       -rm -f src/x86/darwin.lo
        -rm -f src/x86/ffi.$(OBJEXT)
        -rm -f src/x86/ffi.lo
        -rm -f src/x86/ffi64.$(OBJEXT)
index 0c32170..fb53fa4 100755 (executable)
@@ -310,7 +310,7 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS multi_basedir build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CFLAGS CCAS CCASFLAGS LN_S RANLIB ac_ct_RANLIB LIBTOOL MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CPP CPPFLAGS EGREP TESTSUBDIR_TRUE TESTSUBDIR_FALSE AM_RUNTESTFLAGS MIPS_IRIX_TRUE MIPS_IRIX_FALSE MIPS_LINUX_TRUE MIPS_LINUX_FALSE SPARC_TRUE SPARC_FALSE X86_TRUE X86_FALSE X86_WIN32_TRUE X86_WIN32_FALSE ALPHA_TRUE ALPHA_FALSE IA64_TRUE IA64_FALSE M32R_TRUE M32R_FALSE M68K_TRUE M68K_FALSE POWERPC_TRUE POWERPC_FALSE POWERPC_AIX_TRUE POWERPC_AIX_FALSE POWERPC_DARWIN_TRUE POWERPC_DARWIN_FALSE POWERPC_FREEBSD_TRUE POWERPC_FREEBSD_FALSE ARM_TRUE ARM_FALSE LIBFFI_CRIS_TRUE LIBFFI_CRIS_FALSE FRV_TRUE FRV_FALSE S390_TRUE S390_FALSE X86_64_TRUE X86_64_FALSE SH_TRUE SH_FALSE SH64_TRUE SH64_FALSE PA_LINUX_TRUE PA_LINUX_FALSE PA_HPUX_TRUE PA_HPUX_FALSE PA64_HPUX_TRUE PA64_HPUX_FALSE ALLOCA HAVE_LONG_DOUBLE TARGET TARGETDIR toolexecdir toolexeclibdir LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS multi_basedir build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CFLAGS CCAS CCASFLAGS LN_S RANLIB ac_ct_RANLIB LIBTOOL MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CPP CPPFLAGS EGREP TESTSUBDIR_TRUE TESTSUBDIR_FALSE AM_RUNTESTFLAGS MIPS_IRIX_TRUE MIPS_IRIX_FALSE MIPS_LINUX_TRUE MIPS_LINUX_FALSE SPARC_TRUE SPARC_FALSE X86_TRUE X86_FALSE X86_WIN32_TRUE X86_WIN32_FALSE X86_DARWIN_TRUE X86_DARWIN_FALSE ALPHA_TRUE ALPHA_FALSE IA64_TRUE IA64_FALSE M32R_TRUE M32R_FALSE M68K_TRUE M68K_FALSE POWERPC_TRUE POWERPC_FALSE POWERPC_AIX_TRUE POWERPC_AIX_FALSE POWERPC_DARWIN_TRUE POWERPC_DARWIN_FALSE POWERPC_FREEBSD_TRUE POWERPC_FREEBSD_FALSE ARM_TRUE ARM_FALSE LIBFFI_CRIS_TRUE LIBFFI_CRIS_FALSE FRV_TRUE FRV_FALSE S390_TRUE S390_FALSE X86_64_TRUE X86_64_FALSE SH_TRUE SH_FALSE SH64_TRUE SH64_FALSE PA_LINUX_TRUE PA_LINUX_FALSE PA_HPUX_TRUE PA_HPUX_FALSE PA64_HPUX_TRUE PA64_HPUX_FALSE ALLOCA HAVE_LONG_DOUBLE TARGET TARGETDIR toolexecdir toolexeclibdir LIBOBJS LTLIBOBJS'
 ac_subst_files=''
 
 # Initialize some variables set by options.
@@ -5381,6 +5381,7 @@ i*86-*-gnu*) TARGET=X86; TARGETDIR=x86;;
 i*86-*-solaris2.1[0-9]*) TARGET=X86_64; TARGETDIR=x86;;
 i*86-*-solaris*) TARGET=X86; TARGETDIR=x86;;
 i*86-*-beos*) TARGET=X86; TARGETDIR=x86;;
+i*86-*-darwin*) TARGET=X86_DARWIN; TARGETDIR=x86;;
 i*86-*-freebsd* | i*86-*-kfreebsd*-gnu) TARGET=X86; TARGETDIR=x86;;
 i*86-*-netbsdelf* | i*86-*-knetbsd*-gnu) TARGET=X86; TARGETDIR=x86;;
 i*86-*-rtems*) TARGET=X86; TARGETDIR=x86;;
@@ -5482,6 +5483,16 @@ fi
 
 
 
+if test x$TARGET = xX86_DARWIN; then
+  X86_DARWIN_TRUE=
+  X86_DARWIN_FALSE='#'
+else
+  X86_DARWIN_TRUE='#'
+  X86_DARWIN_FALSE=
+fi
+
+
+
 if test x$TARGET = xALPHA; then
   ALPHA_TRUE=
   ALPHA_FALSE='#'
@@ -7818,6 +7829,13 @@ echo "$as_me: error: conditional \"X86_WIN32\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${X86_DARWIN_TRUE}" && test -z "${X86_DARWIN_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"X86_DARWIN\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"X86_DARWIN\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 if test -z "${ALPHA_TRUE}" && test -z "${ALPHA_FALSE}"; then
   { { echo "$as_me:$LINENO: error: conditional \"ALPHA\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
@@ -8573,6 +8591,8 @@ s,@X86_TRUE@,$X86_TRUE,;t t
 s,@X86_FALSE@,$X86_FALSE,;t t
 s,@X86_WIN32_TRUE@,$X86_WIN32_TRUE,;t t
 s,@X86_WIN32_FALSE@,$X86_WIN32_FALSE,;t t
+s,@X86_DARWIN_TRUE@,$X86_DARWIN_TRUE,;t t
+s,@X86_DARWIN_FALSE@,$X86_DARWIN_FALSE,;t t
 s,@ALPHA_TRUE@,$ALPHA_TRUE,;t t
 s,@ALPHA_FALSE@,$ALPHA_FALSE,;t t
 s,@IA64_TRUE@,$IA64_TRUE,;t t
index e80c262..9d04cf5 100644 (file)
@@ -46,6 +46,7 @@ i*86-*-gnu*) TARGET=X86; TARGETDIR=x86;;
 i*86-*-solaris2.1[[0-9]]*) TARGET=X86_64; TARGETDIR=x86;;
 i*86-*-solaris*) TARGET=X86; TARGETDIR=x86;;
 i*86-*-beos*) TARGET=X86; TARGETDIR=x86;;
+i*86-*-darwin*) TARGET=X86_DARWIN; TARGETDIR=x86;;
 i*86-*-freebsd* | i*86-*-kfreebsd*-gnu) TARGET=X86; TARGETDIR=x86;;
 i*86-*-netbsdelf* | i*86-*-knetbsd*-gnu) TARGET=X86; TARGETDIR=x86;;
 i*86-*-rtems*) TARGET=X86; TARGETDIR=x86;;
@@ -98,6 +99,7 @@ AM_CONDITIONAL(MIPS_LINUX, test x$TARGET = xMIPS_LINUX)
 AM_CONDITIONAL(SPARC, test x$TARGET = xSPARC)
 AM_CONDITIONAL(X86, test x$TARGET = xX86)
 AM_CONDITIONAL(X86_WIN32, test x$TARGET = xX86_WIN32)
+AM_CONDITIONAL(X86_DARWIN, test x$TARGET = xX86_DARWIN)
 AM_CONDITIONAL(ALPHA, test x$TARGET = xALPHA)
 AM_CONDITIONAL(IA64, test x$TARGET = xIA64)
 AM_CONDITIONAL(M32R, test x$TARGET = xM32R)
index 0131919..ed2fd59 100644 (file)
@@ -101,6 +101,7 @@ F77 = @F77@
 FFLAGS = @FFLAGS@
 FRV_FALSE = @FRV_FALSE@
 FRV_TRUE = @FRV_TRUE@
+GREP = @GREP@
 HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@
 IA64_FALSE = @IA64_FALSE@
 IA64_TRUE = @IA64_TRUE@
@@ -169,16 +170,15 @@ TESTSUBDIR_TRUE = @TESTSUBDIR_TRUE@
 VERSION = @VERSION@
 X86_64_FALSE = @X86_64_FALSE@
 X86_64_TRUE = @X86_64_TRUE@
+X86_DARWIN_FALSE = @X86_DARWIN_FALSE@
+X86_DARWIN_TRUE = @X86_DARWIN_TRUE@
 X86_FALSE = @X86_FALSE@
 X86_TRUE = @X86_TRUE@
 X86_WIN32_FALSE = @X86_WIN32_FALSE@
 X86_WIN32_TRUE = @X86_WIN32_TRUE@
-ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_F77 = @ac_ct_F77@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
 am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
 am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
@@ -195,24 +195,31 @@ build_cpu = @build_cpu@
 build_os = @build_os@
 build_vendor = @build_vendor@
 datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
 host_os = @host_os@
 host_vendor = @host_vendor@
+htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
 libdir = @libdir@
 libexecdir = @libexecdir@
+localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 multi_basedir = @multi_basedir@
 oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
+psdir = @psdir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 sysconfdir = @sysconfdir@
index 6e69a0b..0e202cf 100644 (file)
@@ -115,7 +115,10 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs,
 #ifdef SPARC
       && (cif->abi != FFI_V9 || cif->rtype->size > 32)
 #endif
-      )
+#ifdef X86_DARWIN
+      && (cif->rtype->size > 8)
+#endif
+     )
     bytes = STACK_ARG_SIZE(sizeof(void*));
 #endif
 
diff --git a/libffi/src/x86/darwin.S b/libffi/src/x86/darwin.S
new file mode 100644 (file)
index 0000000..aec9b82
--- /dev/null
@@ -0,0 +1,403 @@
+/* -----------------------------------------------------------------------
+   sysv.S - Copyright (c) 1996, 1998, 2001, 2002, 2003, 2005  Red Hat, Inc.
+   
+   X86 Foreign Function Interface 
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   ``Software''), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
+   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+   IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+   OTHER DEALINGS IN THE SOFTWARE.
+   ----------------------------------------------------------------------- */
+
+#ifndef __x86_64__
+
+#define LIBFFI_ASM     
+#include <fficonfig.h>
+#include <ffi.h>
+
+.text
+
+.globl _ffi_prep_args
+
+       .align 4
+.globl _ffi_call_SYSV
+
+_ffi_call_SYSV:
+.LFB1:
+        pushl %ebp
+.LCFI0:
+        movl  %esp,%ebp
+.LCFI1:
+        subl $8,%esp
+       /* Make room for all of the new args.  */
+       movl  16(%ebp),%ecx
+       subl  %ecx,%esp
+
+       movl  %esp,%eax
+
+       /* Place all of the ffi_prep_args in position  */
+       subl  $8,%esp
+       pushl 12(%ebp)
+       pushl %eax
+       call  *8(%ebp)
+
+       /* Return stack to previous state and call the function  */
+       addl  $16,%esp  
+
+       call  *28(%ebp)
+
+       /* Remove the space we pushed for the args  */
+       movl  16(%ebp),%ecx
+       addl  %ecx,%esp
+
+       /* Load %ecx with the return type code  */
+       movl  20(%ebp),%ecx     
+
+       /* If the return value pointer is NULL, assume no return value.  */
+       cmpl  $0,24(%ebp)
+       jne   retint
+
+       /* Even if there is no space for the return value, we are 
+          obliged to handle floating-point values.  */
+       cmpl  $FFI_TYPE_FLOAT,%ecx
+       jne   noretval
+       fstp  %st(0)
+
+        jmp   epilogue
+
+retint:
+       cmpl  $FFI_TYPE_INT,%ecx
+       jne   retfloat
+       /* Load %ecx with the pointer to storage for the return value  */
+       movl  24(%ebp),%ecx     
+       movl  %eax,0(%ecx)
+       jmp   epilogue
+
+retfloat:
+       cmpl  $FFI_TYPE_FLOAT,%ecx
+       jne   retdouble
+       /* Load %ecx with the pointer to storage for the return value  */
+       movl  24(%ebp),%ecx     
+       fstps (%ecx)
+       jmp   epilogue
+
+retdouble:
+       cmpl  $FFI_TYPE_DOUBLE,%ecx
+       jne   retlongdouble
+       /* Load %ecx with the pointer to storage for the return value  */
+       movl  24(%ebp),%ecx     
+       fstpl (%ecx)
+       jmp   epilogue
+
+retlongdouble:
+       cmpl  $FFI_TYPE_LONGDOUBLE,%ecx
+       jne   retint64
+       /* Load %ecx with the pointer to storage for the return value  */
+       movl  24(%ebp),%ecx     
+       fstpt (%ecx)
+       jmp   epilogue
+       
+retint64:      
+       cmpl  $FFI_TYPE_SINT64,%ecx
+        jne   retstruct1b
+       /* Load %ecx with the pointer to storage for the return value  */
+       movl  24(%ebp),%ecx     
+       movl  %eax,0(%ecx)
+       movl  %edx,4(%ecx)
+       jmp   epilogue
+       
+retstruct1b:   
+       cmpl  $FFI_TYPE_SINT8,%ecx
+        jne   retstruct2b
+       /* Load %ecx with the pointer to storage for the return value  */
+       movl  24(%ebp),%ecx     
+       movb  %al,0(%ecx)
+       jmp   epilogue
+
+retstruct2b:   
+       cmpl  $FFI_TYPE_SINT16,%ecx
+        jne   retstruct
+       /* Load %ecx with the pointer to storage for the return value  */
+       movl  24(%ebp),%ecx     
+       movw  %ax,0(%ecx)
+       jmp   epilogue
+
+retstruct:
+       cmpl  $FFI_TYPE_STRUCT,%ecx
+        jne   noretval
+       /* Nothing to do!  */
+        addl $4,%esp
+        popl %ebp
+        ret
+
+noretval:
+epilogue:
+        addl $8,%esp
+        movl %ebp,%esp
+        popl %ebp
+        ret
+.LFE1:
+.ffi_call_SYSV_end:
+
+       .align  4
+FFI_HIDDEN (ffi_closure_SYSV)
+.globl _ffi_closure_SYSV
+
+_ffi_closure_SYSV:
+.LFB2:
+       pushl   %ebp
+.LCFI2:
+       movl    %esp, %ebp
+.LCFI3:
+       subl    $40, %esp
+       leal    -24(%ebp), %edx
+       movl    %edx, -12(%ebp) /* resp */
+       leal    8(%ebp), %edx
+       movl    %edx, 4(%esp)   /* args = __builtin_dwarf_cfa () */
+       leal    -12(%ebp), %edx
+       movl    %edx, (%esp)    /* &resp */
+       movl    %ebx, 8(%esp)
+.LCFI7:
+       call    L_ffi_closure_SYSV_inner$stub
+       movl    8(%esp), %ebx
+       movl    -12(%ebp), %ecx
+       cmpl    $FFI_TYPE_INT, %eax
+       je      .Lcls_retint
+       cmpl    $FFI_TYPE_FLOAT, %eax
+       je      .Lcls_retfloat
+       cmpl    $FFI_TYPE_DOUBLE, %eax
+       je      .Lcls_retdouble
+       cmpl    $FFI_TYPE_LONGDOUBLE, %eax
+       je      .Lcls_retldouble
+       cmpl    $FFI_TYPE_SINT64, %eax
+       je      .Lcls_retllong
+       cmpl    $FFI_TYPE_SINT8, %eax
+       je      .Lcls_retstruct1
+       cmpl    $FFI_TYPE_SINT16, %eax
+       je      .Lcls_retstruct2
+       cmpl    $FFI_TYPE_STRUCT, %eax
+       je      .Lcls_retstruct
+.Lcls_epilogue:
+       movl    %ebp, %esp
+       popl    %ebp
+       ret
+.Lcls_retint:
+       movl    (%ecx), %eax
+       jmp     .Lcls_epilogue
+.Lcls_retfloat:
+       flds    (%ecx)
+       jmp     .Lcls_epilogue
+.Lcls_retdouble:
+       fldl    (%ecx)
+       jmp     .Lcls_epilogue
+.Lcls_retldouble:
+       fldt    (%ecx)
+       jmp     .Lcls_epilogue
+.Lcls_retllong:
+       movl    (%ecx), %eax
+       movl    4(%ecx), %edx
+       jmp     .Lcls_epilogue
+.Lcls_retstruct1:
+       movsbl  (%ecx), %eax
+       jmp     .Lcls_epilogue
+.Lcls_retstruct2:
+       movswl  (%ecx), %eax
+       jmp     .Lcls_epilogue
+.Lcls_retstruct:
+       lea -8(%ebp),%esp
+       movl    %ebp, %esp
+       popl    %ebp
+       ret $4
+.LFE2:
+
+#if !FFI_NO_RAW_API
+
+#define RAW_CLOSURE_CIF_OFFSET ((FFI_TRAMPOLINE_SIZE + 3) & ~3)
+#define RAW_CLOSURE_FUN_OFFSET (RAW_CLOSURE_CIF_OFFSET + 4)
+#define RAW_CLOSURE_USER_DATA_OFFSET (RAW_CLOSURE_FUN_OFFSET + 4)
+#define CIF_FLAGS_OFFSET 20
+
+       .align  4
+FFI_HIDDEN (ffi_closure_raw_SYSV)
+.globl _ffi_closure_raw_SYSV
+
+_ffi_closure_raw_SYSV:
+.LFB3:
+       pushl   %ebp
+.LCFI4:
+       movl    %esp, %ebp
+.LCFI5:
+       pushl   %esi
+.LCFI6:
+       subl    $36, %esp
+       movl    RAW_CLOSURE_CIF_OFFSET(%eax), %esi       /* closure->cif */
+       movl    RAW_CLOSURE_USER_DATA_OFFSET(%eax), %edx /* closure->user_data */
+       movl    %edx, 12(%esp)  /* user_data */
+       leal    8(%ebp), %edx   /* __builtin_dwarf_cfa () */
+       movl    %edx, 8(%esp)   /* raw_args */
+       leal    -24(%ebp), %edx
+       movl    %edx, 4(%esp)   /* &res */
+       movl    %esi, (%esp)    /* cif */
+       call    *RAW_CLOSURE_FUN_OFFSET(%eax)            /* closure->fun */
+       movl    CIF_FLAGS_OFFSET(%esi), %eax             /* rtype */
+       cmpl    $FFI_TYPE_INT, %eax
+       je      .Lrcls_retint
+       cmpl    $FFI_TYPE_FLOAT, %eax
+       je      .Lrcls_retfloat
+       cmpl    $FFI_TYPE_DOUBLE, %eax
+       je      .Lrcls_retdouble
+       cmpl    $FFI_TYPE_LONGDOUBLE, %eax
+       je      .Lrcls_retldouble
+       cmpl    $FFI_TYPE_SINT64, %eax
+       je      .Lrcls_retllong
+.Lrcls_epilogue:
+       addl    $36, %esp
+       popl    %esi
+       popl    %ebp
+       ret
+.Lrcls_retint:
+       movl    -24(%ebp), %eax
+       jmp     .Lrcls_epilogue
+.Lrcls_retfloat:
+       flds    -24(%ebp)
+       jmp     .Lrcls_epilogue
+.Lrcls_retdouble:
+       fldl    -24(%ebp)
+       jmp     .Lrcls_epilogue
+.Lrcls_retldouble:
+       fldt    -24(%ebp)
+       jmp     .Lrcls_epilogue
+.Lrcls_retllong:
+       movl    -24(%ebp), %eax
+       movl    -20(%ebp), %edx
+       jmp     .Lrcls_epilogue
+.LFE3:
+#endif
+
+.section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5
+L_ffi_closure_SYSV_inner$stub:
+       .indirect_symbol _ffi_closure_SYSV_inner
+       hlt ; hlt ; hlt ; hlt ; hlt
+
+
+.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
+EH_frame1:
+       .set    L$set$0,LECIE1-LSCIE1
+       .long   L$set$0
+LSCIE1:
+       .long   0x0
+       .byte   0x1
+       .ascii "zR\0"
+       .byte   0x1
+       .byte   0x7c
+       .byte   0x8
+       .byte   0x1
+       .byte   0x10
+       .byte   0xc
+       .byte   0x5
+       .byte   0x4
+       .byte   0x88
+       .byte   0x1
+       .align 2
+LECIE1:
+.globl _ffi_call_SYSV.eh
+_ffi_call_SYSV.eh:
+LSFDE1:
+       .set    L$set$1,LEFDE1-LASFDE1
+       .long   L$set$1
+LASFDE1:
+       .long   LASFDE1-EH_frame1
+       .long   .LFB1-.
+       .set L$set$2,.LFE1-.LFB1
+       .long L$set$2
+       .byte   0x0
+       .byte   0x4
+       .set L$set$3,.LCFI0-.LFB1
+       .long L$set$3
+       .byte   0xe
+       .byte   0x8
+       .byte   0x84
+       .byte   0x2
+       .byte   0x4
+       .set L$set$4,.LCFI1-.LCFI0
+       .long L$set$4
+       .byte   0xd
+       .byte   0x4
+       .align 2
+LEFDE1:
+.globl _ffi_closure_SYSV.eh
+_ffi_closure_SYSV.eh:
+LSFDE2:
+       .set    L$set$5,LEFDE2-LASFDE2
+       .long   L$set$5
+LASFDE2:
+       .long   LASFDE2-EH_frame1
+       .long   .LFB2-.
+       .set L$set$6,.LFE2-.LFB2
+       .long L$set$6
+       .byte   0x0
+       .byte   0x4
+       .set L$set$7,.LCFI2-.LFB2
+       .long L$set$7
+       .byte   0xe
+       .byte   0x8
+       .byte   0x84
+       .byte   0x2
+       .byte   0x4
+       .set L$set$8,.LCFI3-.LCFI2
+       .long L$set$8
+       .byte   0xd
+       .byte   0x4
+       .align 2
+LEFDE2:
+
+#if !FFI_NO_RAW_API
+
+.globl _ffi_closure_raw_SYSV.eh
+_ffi_closure_raw_SYSV.eh:
+LSFDE3:
+       .set    L$set$10,LEFDE3-LASFDE3
+       .long   L$set$10
+LASFDE3:
+       .long   LASFDE3-EH_frame1
+       .long   .LFB3-.
+       .set L$set$11,.LFE3-.LFB3
+       .long L$set$11
+       .byte   0x0
+       .byte   0x4
+       .set L$set$12,.LCFI4-.LFB3
+       .long L$set$12
+       .byte   0xe
+       .byte   0x8
+       .byte   0x84
+       .byte   0x2
+       .byte   0x4
+       .set L$set$13,.LCFI5-.LCFI4
+       .long L$set$13
+       .byte   0xd
+       .byte   0x4
+       .byte   0x4
+       .set L$set$14,.LCFI6-.LCFI5
+       .long L$set$14
+       .byte   0x85
+       .byte   0x3
+       .align 2
+LEFDE3:
+
+#endif
+
+#endif /* ifndef __x86_64__ */
index e19902a..55921b6 100644 (file)
@@ -119,7 +119,7 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
   switch (cif->rtype->type)
     {
     case FFI_TYPE_VOID:
-#ifndef X86_WIN32
+#ifdef X86
     case FFI_TYPE_STRUCT:
 #endif
     case FFI_TYPE_SINT64:
@@ -133,7 +133,7 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
       cif->flags = FFI_TYPE_SINT64;
       break;
 
-#ifdef X86_WIN32
+#ifndef X86
     case FFI_TYPE_STRUCT:
       if (cif->rtype->size == 1)
         {
@@ -163,6 +163,10 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
       break;
     }
 
+#ifdef X86_DARWIN
+  cif->bytes = (cif->bytes + 15) & ~0xF;
+#endif
+
   return FFI_OK;
 }
 
index a324f05..e5a7e42 100644 (file)
@@ -90,6 +90,7 @@ F77 = @F77@
 FFLAGS = @FFLAGS@
 FRV_FALSE = @FRV_FALSE@
 FRV_TRUE = @FRV_TRUE@
+GREP = @GREP@
 HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@
 IA64_FALSE = @IA64_FALSE@
 IA64_TRUE = @IA64_TRUE@
@@ -158,16 +159,15 @@ TESTSUBDIR_TRUE = @TESTSUBDIR_TRUE@
 VERSION = @VERSION@
 X86_64_FALSE = @X86_64_FALSE@
 X86_64_TRUE = @X86_64_TRUE@
+X86_DARWIN_FALSE = @X86_DARWIN_FALSE@
+X86_DARWIN_TRUE = @X86_DARWIN_TRUE@
 X86_FALSE = @X86_FALSE@
 X86_TRUE = @X86_TRUE@
 X86_WIN32_FALSE = @X86_WIN32_FALSE@
 X86_WIN32_TRUE = @X86_WIN32_TRUE@
-ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
 ac_ct_F77 = @ac_ct_F77@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
 am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
 am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
@@ -184,24 +184,31 @@ build_cpu = @build_cpu@
 build_os = @build_os@
 build_vendor = @build_vendor@
 datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
 host_os = @host_os@
 host_vendor = @host_vendor@
+htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
 libdir = @libdir@
 libexecdir = @libexecdir@
+localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 multi_basedir = @multi_basedir@
 oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
+psdir = @psdir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 sysconfdir = @sysconfdir@