Rebased from gcc

This commit is contained in:
Anthony Green
2012-02-10 13:06:46 -05:00
parent 4130e1972d
commit dee20f8e45
45 changed files with 1221 additions and 182 deletions

View File

@@ -1,3 +1,21 @@
2012-02-10 Kai Tietz <ktietz@redhat.com>
* configure.ac (AM_LTLDFLAGS): Add -no-undefine for x64
windows target.
* configure: Regenerated.
2012-02-08 Kai Tietz <ktietz@redhat.com>
* src/prep_cif.c (ffi_prep_cif): Allow for X86_WIN32
also FFI_THISCALL.
* src/x86/ffi.c (ffi_closure_THISCALL): Add prototype.
(FFI_INIT_TRAMPOLINE_THISCALL): New trampoline code.
(ffi_prep_closure_loc): Add FFI_THISCALL support.
* src/x86/ffitarget.h (FFI_TRAMPOLINE_SIZE): Adjust size.
* src/x86/win32.S (ffi_closure_THISCALL): New closure code
for thiscall-calling convention.
* testsuite/libffi.call/closure_thiscall.c: New test.
2012-01-28 Kai Tietz <ktietz@redhat.com>
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new

9
configure vendored
View File

@@ -13257,6 +13257,15 @@ case "$host" in
x86_64-*-cygwin* | x86_64-*-mingw*)
TARGET=X86_WIN64; TARGETDIR=x86
# All mingw/cygwin/win32 builds require -no-undefined for sharedlib.
# We must also check with_cross_host to decide if this is a native
# or cross-build and select where to install dlls appropriately.
if test -n "$with_cross_host" &&
test x"$with_cross_host" != x"no"; then
AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"';
else
AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"';
fi
;;
x86_64-*-*)

View File

@@ -189,6 +189,15 @@ case "$host" in
x86_64-*-cygwin* | x86_64-*-mingw*)
TARGET=X86_WIN64; TARGETDIR=x86
# All mingw/cygwin/win32 builds require -no-undefined for sharedlib.
# We must also check with_cross_host to decide if this is a native
# or cross-build and select where to install dlls appropriately.
if test -n "$with_cross_host" &&
test x"$with_cross_host" != x"no"; then
AM_LTLDFLAGS='-no-undefined -bindir "$(toolexeclibdir)"';
else
AM_LTLDFLAGS='-no-undefined -bindir "$(bindir)"';
fi
;;
x86_64-*-*)

View File

@@ -160,9 +160,6 @@
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Define if symbols are underscored. */
#undef SYMBOL_UNDERSCORE
/* Define this if you are using Purify and want to suppress spurious messages.
*/
#undef USING_PURIFY
@@ -182,9 +179,6 @@
# endif
#endif
/* Define to `unsigned int' if <sys/types.h> does not define. */
#undef size_t
#ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
#ifdef LIBFFI_ASM

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -93,6 +93,19 @@
@@ -111,6 +111,19 @@
* configure: Regenerate.
@@ -22,7 +22,7 @@ Index: libffi/ChangeLog
2011-02-09 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
PR libffi/46661
@@ -103,7 +116,7 @@
@@ -121,7 +134,7 @@
2011-02-08 Rafael Avila de Espindola <respindola@mozilla.com>
* configure.ac: Fix x86 test for pc related relocs.
@@ -178,7 +178,7 @@ Index: libffi/configure
===================================================================
--- libffi.orig/configure
+++ libffi/configure
@@ -13318,67 +13318,69 @@ $as_echo "#define HAVE_AS_X86_64_UNWIND_
@@ -13327,67 +13327,69 @@ $as_echo "#define HAVE_AS_X86_64_UNWIND_
fi
fi
@@ -277,7 +277,7 @@ Index: libffi/configure.ac
===================================================================
--- libffi.orig/configure.ac
+++ libffi/configure.ac
@@ -345,44 +345,46 @@ if test x$TARGET = xX86_64; then
@@ -354,44 +354,46 @@ if test x$TARGET = xX86_64; then
fi
fi

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -17,6 +17,10 @@
@@ -35,6 +35,10 @@
* testsuite/libffi.call/struct1_win32.c: New test.
* testsuite/libffi.call/struct2_win32.c: New test.

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -18,7 +18,12 @@
@@ -36,7 +36,12 @@
* testsuite/libffi.call/struct2_win32.c: New test.
2012-01-23 Anthony Green <green@moxielogic.com>

View File

@@ -2074,7 +2074,7 @@ Index: libffi/configure
TARGET=ALPHA; TARGETDIR=alpha;
# Support 128-bit long double, changeable via command-line switch.
HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)'
@@ -14358,6 +15434,14 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
@@ -14367,6 +15443,14 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
#
# INIT-COMMANDS
#
@@ -2089,7 +2089,7 @@ Index: libffi/configure
AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
@@ -14647,6 +15731,7 @@ for ac_config_target in $ac_config_targe
@@ -14656,6 +15740,7 @@ for ac_config_target in $ac_config_targe
do
case $ac_config_target in
"fficonfig.h") CONFIG_HEADERS="$CONFIG_HEADERS fficonfig.h" ;;
@@ -2097,7 +2097,7 @@ Index: libffi/configure
"depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
"libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
"include") CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;;
@@ -15285,6 +16370,150 @@ $as_echo "$as_me: executing $ac_file com
@@ -15294,6 +16379,150 @@ $as_echo "$as_me: executing $ac_file com
case $ac_file$ac_mode in
@@ -2266,7 +2266,7 @@ Index: libffi/include/Makefile.in
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
@@ -142,6 +149,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
@@ -141,6 +148,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
@@ -2274,7 +2274,7 @@ Index: libffi/include/Makefile.in
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -162,6 +170,7 @@ am__leading_dot = @am__leading_dot@
@@ -161,6 +169,7 @@ am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
@@ -2300,7 +2300,7 @@ Index: libffi/man/Makefile.in
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
@@ -140,6 +147,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
@@ -139,6 +146,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
@@ -2308,7 +2308,7 @@ Index: libffi/man/Makefile.in
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -160,6 +168,7 @@ am__leading_dot = @am__leading_dot@
@@ -159,6 +167,7 @@ am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
@@ -2334,7 +2334,7 @@ Index: libffi/testsuite/Makefile.in
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
@@ -117,6 +124,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
@@ -116,6 +123,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
@@ -2342,7 +2342,7 @@ Index: libffi/testsuite/Makefile.in
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -137,6 +145,7 @@ am__leading_dot = @am__leading_dot@
@@ -136,6 +144,7 @@ am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -93,6 +93,23 @@
@@ -111,6 +111,23 @@
* configure: Regenerate.

View File

@@ -28,7 +28,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -89,6 +89,11 @@
@@ -107,6 +107,11 @@
Use them to handle ELF vs. ECOFF differences.
[__osf__] (_GLOBAL__F_ffi_call_osf): Define.

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -41,6 +41,14 @@
@@ -59,6 +59,14 @@
* configure: Regenerate.
@@ -80,7 +80,7 @@ Index: libffi/configure
TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
;;
powerpc64-*-freebsd*)
@@ -13287,13 +13298,30 @@ $as_echo "#define SYMBOL_UNDERSCORE 1" >
@@ -13296,13 +13307,30 @@ $as_echo "#define SYMBOL_UNDERSCORE 1" >
fi
fi
@@ -112,7 +112,7 @@ Index: libffi/configure
if test x$TARGET = xX86_64; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports unwind section type" >&5
@@ -13721,6 +13749,10 @@ if test -z "${PA64_HPUX_TRUE}" && test -
@@ -13730,6 +13758,10 @@ if test -z "${PA64_HPUX_TRUE}" && test -
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
@@ -127,7 +127,7 @@ Index: libffi/configure.ac
===================================================================
--- libffi.orig/configure.ac
+++ libffi/configure.ac
@@ -339,7 +339,7 @@ case "$target" in
@@ -348,7 +348,7 @@ case "$target" in
[Cannot use PROT_EXEC on this target, so, we revert to
alternative means])
;;

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -225,6 +225,13 @@
@@ -243,6 +243,13 @@
* testsuite/libffi.call/cls_longdouble.c: Likewise.
* testsuite/libffi.call/huge_struct.c: Likewise.
@@ -54,7 +54,7 @@ Index: libffi/configure.ac
m4_undefine([_AC_ARG_VAR_PRECIOUS])
m4_rename([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
@@ -400,6 +404,7 @@ AC_ARG_ENABLE(debug,
@@ -409,6 +413,7 @@ AC_ARG_ENABLE(debug,
if test "$enable_debug" = "yes"; then
AC_DEFINE(FFI_DEBUG, 1, [Define this if you want extra debugging.])
fi)
@@ -66,27 +66,892 @@ Index: libffi/Makefile.in
===================================================================
--- libffi.orig/Makefile.in
+++ libffi/Makefile.in
@@ -62,6 +62,11 @@ target_triplet = @target@
@SH64_TRUE@am__append_24 = src/sh64/sysv.S src/sh64/ffi.c
@PA_LINUX_TRUE@am__append_25 = src/pa/linux.S src/pa/ffi.c
@PA_HPUX_TRUE@am__append_26 = src/pa/hpux32.S src/pa/ffi.c
@@ -15,6 +15,7 @@
@SET_MAKE@
+
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
@@ -54,36 +55,38 @@ target_triplet = @target@
@AVR32_TRUE@am__append_17 = src/avr32/sysv.S src/avr32/ffi.c
@LIBFFI_CRIS_TRUE@am__append_18 = src/cris/sysv.S src/cris/ffi.c
@FRV_TRUE@am__append_19 = src/frv/eabi.S src/frv/ffi.c
-@S390_TRUE@am__append_20 = src/s390/sysv.S src/s390/ffi.c
-@X86_64_TRUE@am__append_21 = src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S
-@SH_TRUE@am__append_22 = src/sh/sysv.S src/sh/ffi.c
-@SH64_TRUE@am__append_23 = src/sh64/sysv.S src/sh64/ffi.c
-@PA_LINUX_TRUE@am__append_24 = src/pa/linux.S src/pa/ffi.c
-@PA_HPUX_TRUE@am__append_25 = src/pa/hpux32.S src/pa/ffi.c
+@MOXIE_TRUE@am__append_20 = src/moxie/eabi.S src/moxie/ffi.c
+@S390_TRUE@am__append_21 = src/s390/sysv.S src/s390/ffi.c
+@X86_64_TRUE@am__append_22 = src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S
+@SH_TRUE@am__append_23 = src/sh/sysv.S src/sh/ffi.c
+@SH64_TRUE@am__append_24 = src/sh64/sysv.S src/sh64/ffi.c
+@PA_LINUX_TRUE@am__append_25 = src/pa/linux.S src/pa/ffi.c
+@PA_HPUX_TRUE@am__append_26 = src/pa/hpux32.S src/pa/ffi.c
+# Build debug. Define FFI_DEBUG on the commandline so that, when building with
+# MSVC, it can link against the debug CRT.
+@FFI_DEBUG_TRUE@am__append_27 = -DFFI_DEBUG
+# Build opt.
+@FFI_DEBUG_FALSE@am__append_28 = -O2
subdir = .
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/doc/stamp-vti \
@@ -489,7 +494,7 @@ nodist_libffi_la_SOURCES = $(am__append_
$(am__append_24) $(am__append_25) $(am__append_26)
-DIST_COMMON = README $(am__configure_deps) $(srcdir)/../compile \
- $(srcdir)/../config.guess $(srcdir)/../config.sub \
- $(srcdir)/../depcomp $(srcdir)/../install-sh \
- $(srcdir)/../ltmain.sh $(srcdir)/../missing \
- $(srcdir)/../mkinstalldirs $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(srcdir)/fficonfig.h.in \
- $(top_srcdir)/configure ChangeLog
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/doc/stamp-vti \
+ $(srcdir)/doc/version.texi $(srcdir)/fficonfig.h.in \
+ $(srcdir)/libffi.pc.in $(top_srcdir)/configure ChangeLog \
+ compile config.guess config.sub depcomp install-sh ltmain.sh \
+ mdate-sh missing texinfo.tex
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
- $(top_srcdir)/../config/lead-dot.m4 \
- $(top_srcdir)/../config/multi.m4 \
- $(top_srcdir)/../config/override.m4 \
- $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
- $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \
- $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \
+ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
-mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
+mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = fficonfig.h
-CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_FILES = libffi.pc
CONFIG_CLEAN_VPATH_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
@@ -106,8 +109,9 @@ am__nobase_list = $(am__nobase_strip_set
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(toolexeclibdir)"
-LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES)
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(infodir)" \
+ "$(DESTDIR)$(pkgconfigdir)"
+LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
libffi_la_LIBADD =
am__dirstamp = $(am__leading_dot)dirstamp
am_libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo src/types.lo \
@@ -143,13 +147,14 @@ am_libffi_la_OBJECTS = src/debug.lo src/
@AVR32_TRUE@am__objects_17 = src/avr32/sysv.lo src/avr32/ffi.lo
@LIBFFI_CRIS_TRUE@am__objects_18 = src/cris/sysv.lo src/cris/ffi.lo
@FRV_TRUE@am__objects_19 = src/frv/eabi.lo src/frv/ffi.lo
-@S390_TRUE@am__objects_20 = src/s390/sysv.lo src/s390/ffi.lo
-@X86_64_TRUE@am__objects_21 = src/x86/ffi64.lo src/x86/unix64.lo \
+@MOXIE_TRUE@am__objects_20 = src/moxie/eabi.lo src/moxie/ffi.lo
+@S390_TRUE@am__objects_21 = src/s390/sysv.lo src/s390/ffi.lo
+@X86_64_TRUE@am__objects_22 = src/x86/ffi64.lo src/x86/unix64.lo \
@X86_64_TRUE@ src/x86/ffi.lo src/x86/sysv.lo
-@SH_TRUE@am__objects_22 = src/sh/sysv.lo src/sh/ffi.lo
-@SH64_TRUE@am__objects_23 = src/sh64/sysv.lo src/sh64/ffi.lo
-@PA_LINUX_TRUE@am__objects_24 = src/pa/linux.lo src/pa/ffi.lo
-@PA_HPUX_TRUE@am__objects_25 = src/pa/hpux32.lo src/pa/ffi.lo
+@SH_TRUE@am__objects_23 = src/sh/sysv.lo src/sh/ffi.lo
+@SH64_TRUE@am__objects_24 = src/sh64/sysv.lo src/sh64/ffi.lo
+@PA_LINUX_TRUE@am__objects_25 = src/pa/linux.lo src/pa/ffi.lo
+@PA_HPUX_TRUE@am__objects_26 = src/pa/hpux32.lo src/pa/ffi.lo
nodist_libffi_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
$(am__objects_3) $(am__objects_4) $(am__objects_5) \
$(am__objects_6) $(am__objects_7) $(am__objects_8) \
@@ -158,17 +163,17 @@ nodist_libffi_la_OBJECTS = $(am__objects
$(am__objects_15) $(am__objects_16) $(am__objects_17) \
$(am__objects_18) $(am__objects_19) $(am__objects_20) \
$(am__objects_21) $(am__objects_22) $(am__objects_23) \
- $(am__objects_24) $(am__objects_25)
+ $(am__objects_24) $(am__objects_25) $(am__objects_26)
libffi_la_OBJECTS = $(am_libffi_la_OBJECTS) \
$(nodist_libffi_la_OBJECTS)
libffi_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(libffi_la_LDFLAGS) $(LDFLAGS) -o $@
libffi_convenience_la_LIBADD =
-am__objects_26 = src/debug.lo src/prep_cif.lo src/types.lo \
+am__objects_27 = src/debug.lo src/prep_cif.lo src/types.lo \
src/raw_api.lo src/java_raw_api.lo src/closures.lo
-am_libffi_convenience_la_OBJECTS = $(am__objects_26)
-am__objects_27 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
+am_libffi_convenience_la_OBJECTS = $(am__objects_27)
+am__objects_28 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
$(am__objects_4) $(am__objects_5) $(am__objects_6) \
$(am__objects_7) $(am__objects_8) $(am__objects_9) \
$(am__objects_10) $(am__objects_11) $(am__objects_12) \
@@ -176,12 +181,12 @@ am__objects_27 = $(am__objects_1) $(am__
$(am__objects_16) $(am__objects_17) $(am__objects_18) \
$(am__objects_19) $(am__objects_20) $(am__objects_21) \
$(am__objects_22) $(am__objects_23) $(am__objects_24) \
- $(am__objects_25)
-nodist_libffi_convenience_la_OBJECTS = $(am__objects_27)
+ $(am__objects_25) $(am__objects_26)
+nodist_libffi_convenience_la_OBJECTS = $(am__objects_28)
libffi_convenience_la_OBJECTS = $(am_libffi_convenience_la_OBJECTS) \
$(nodist_libffi_convenience_la_OBJECTS)
DEFAULT_INCLUDES = -I.@am__isrc@
-depcomp = $(SHELL) $(top_srcdir)/../depcomp
+depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
@@ -202,12 +207,18 @@ SOURCES = $(libffi_la_SOURCES) $(nodist_
$(libffi_convenience_la_SOURCES) \
$(nodist_libffi_convenience_la_SOURCES)
DIST_SOURCES = $(libffi_la_SOURCES) $(libffi_convenience_la_SOURCES)
-MULTISRCTOP =
-MULTIBUILDTOP =
-MULTIDIRS =
-MULTISUBDIR =
-MULTIDO = true
-MULTICLEAN = true
+INFO_DEPS = $(srcdir)/doc/libffi.info
+am__TEXINFO_TEX_DIR = $(srcdir)
+DVIS = doc/libffi.dvi
+PDFS = doc/libffi.pdf
+PSS = doc/libffi.ps
+HTMLS = doc/libffi.html
+TEXINFOS = doc/libffi.texi
+TEXI2DVI = texi2dvi
+TEXI2PDF = $(TEXI2DVI) --pdf --batch
+MAKEINFOHTML = $(MAKEINFO) --html
+AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
+DVIPS = dvips
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-dvi-recursive install-exec-recursive \
@@ -215,6 +226,7 @@ RECURSIVE_TARGETS = all-recursive check-
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
+DATA = $(pkgconfig_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
@@ -280,6 +292,7 @@ CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
@@ -305,6 +318,7 @@ LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
@@ -332,6 +346,7 @@ abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
@@ -366,7 +381,6 @@ localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
-multi_basedir = @multi_basedir@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -387,7 +401,6 @@ top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = foreign subdir-objects
-ACLOCAL_AMFLAGS = -I .. -I ../config
SUBDIRS = include testsuite man
EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj configure.host \
src/alpha/ffi.c src/alpha/osf.S src/alpha/ffitarget.h \
@@ -412,10 +425,16 @@ EXTRA_DIST = LICENSE ChangeLog.v1 Change
src/sparc/v8.S src/sparc/v9.S src/sparc/ffitarget.h \
src/sparc/ffi.c src/x86/darwin64.S \
src/x86/ffi.c src/x86/sysv.S src/x86/win32.S src/x86/darwin.S \
+ src/x86/win64.S src/x86/freebsd.S \
src/x86/ffi64.c src/x86/unix64.S src/x86/ffitarget.h \
src/pa/ffitarget.h src/pa/ffi.c src/pa/linux.S src/pa/hpux32.S \
- src/frv/ffi.c src/frv/eabi.S src/frv/ffitarget.h src/dlmalloc.c
+ src/frv/ffi.c src/frv/eabi.S src/frv/ffitarget.h \
+ src/dlmalloc.c \
+ src/moxie/ffi.c src/moxie/eabi.S \
+ libtool-version ChangeLog.libffi m4/libtool.m4 \
+ m4/lt~obsolete.m4 m4/ltoptions.m4 m4/ltsugar.m4 m4/ltversion.m4
+info_TEXINFOS = doc/libffi.texi
# Work around what appears to be a GNU make bug handling MAKEFLAGS
# values defined in terms of make variables, as is the case for CC and
@@ -456,11 +475,14 @@ AM_MAKEFLAGS = \
"DESTDIR=$(DESTDIR)"
MAKEOVERRIDES =
-toolexeclib_LTLIBRARIES = libffi.la
+ACLOCAL_AMFLAGS = $(ACLOCAL_AMFLAGS) -I m4
+lib_LTLIBRARIES = libffi.la
noinst_LTLIBRARIES = libffi_convenience.la
libffi_la_SOURCES = src/debug.c src/prep_cif.c src/types.c \
src/raw_api.c src/java_raw_api.c src/closures.c
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = libffi.pc
nodist_libffi_la_SOURCES = $(am__append_1) $(am__append_2) \
$(am__append_3) $(am__append_4) $(am__append_5) \
$(am__append_6) $(am__append_7) $(am__append_8) \
@@ -469,11 +491,10 @@ nodist_libffi_la_SOURCES = $(am__append_
$(am__append_15) $(am__append_16) $(am__append_17) \
$(am__append_18) $(am__append_19) $(am__append_20) \
$(am__append_21) $(am__append_22) $(am__append_23) \
- $(am__append_24) $(am__append_25)
+ $(am__append_24) $(am__append_25) $(am__append_26)
libffi_convenience_la_SOURCES = $(libffi_la_SOURCES)
nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES)
-AM_CFLAGS = -Wall -g -fexceptions
-LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
+AM_CFLAGS = -Wall -g -fexceptions $(am__append_27) $(am__append_28)
libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) $(AM_LTLDFLAGS)
AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src
AM_CCASFLAGS = $(AM_CPPFLAGS)
@@ -481,7 +502,7 @@ all: fficonfig.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
-.SUFFIXES: .S .c .lo .o .obj
+.SUFFIXES: .S .c .dvi .lo .o .obj .ps
am--refresh:
@:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@@ -533,41 +554,43 @@ $(srcdir)/fficonfig.h.in: @MAINTAINER_MO
distclean-hdr:
-rm -f fficonfig.h stamp-h1
-
-clean-noinstLTLIBRARIES:
- -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
- @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES)
+libffi.pc: $(top_builddir)/config.status $(srcdir)/libffi.pc.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@$(NORMAL_INSTALL)
- test -z "$(toolexeclibdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)"
- @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \
+ test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
+ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
list2=; for p in $$list; do \
if test -f $$p; then \
list2="$$list2 $$p"; \
else :; fi; \
done; \
test -z "$$list2" || { \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(toolexeclibdir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(toolexeclibdir)"; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
}
-uninstall-toolexeclibLTLIBRARIES:
+uninstall-libLTLIBRARIES:
@$(NORMAL_UNINSTALL)
- @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \
+ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
for p in $$list; do \
$(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(toolexeclibdir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(toolexeclibdir)/$$f"; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
done
-clean-toolexeclibLTLIBRARIES:
- -test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES)
- @list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
+clean-libLTLIBRARIES:
+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
test "$$dir" != "$$p" || dir=.; \
echo "rm -f \"$${dir}/so_locations\""; \
@@ -737,6 +760,16 @@ src/frv/eabi.lo: src/frv/$(am__dirstamp)
src/frv/$(DEPDIR)/$(am__dirstamp)
src/frv/ffi.lo: src/frv/$(am__dirstamp) \
src/frv/$(DEPDIR)/$(am__dirstamp)
+src/moxie/$(am__dirstamp):
+ @$(MKDIR_P) src/moxie
+ @: > src/moxie/$(am__dirstamp)
+src/moxie/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) src/moxie/$(DEPDIR)
+ @: > src/moxie/$(DEPDIR)/$(am__dirstamp)
+src/moxie/eabi.lo: src/moxie/$(am__dirstamp) \
+ src/moxie/$(DEPDIR)/$(am__dirstamp)
+src/moxie/ffi.lo: src/moxie/$(am__dirstamp) \
+ src/moxie/$(DEPDIR)/$(am__dirstamp)
src/s390/$(am__dirstamp):
@$(MKDIR_P) src/s390
@: > src/s390/$(am__dirstamp)
@@ -780,7 +813,7 @@ src/pa/ffi.lo: src/pa/$(am__dirstamp) sr
src/pa/hpux32.lo: src/pa/$(am__dirstamp) \
src/pa/$(DEPDIR)/$(am__dirstamp)
libffi.la: $(libffi_la_OBJECTS) $(libffi_la_DEPENDENCIES)
- $(libffi_la_LINK) -rpath $(toolexeclibdir) $(libffi_la_OBJECTS) $(libffi_la_LIBADD) $(LIBS)
+ $(libffi_la_LINK) -rpath $(libdir) $(libffi_la_OBJECTS) $(libffi_la_LIBADD) $(LIBS)
libffi_convenience.la: $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_DEPENDENCIES)
$(LINK) $(libffi_convenience_la_OBJECTS) $(libffi_convenience_la_LIBADD) $(LIBS)
@@ -830,6 +863,10 @@ mostlyclean-compile:
-rm -f src/mips/n32.lo
-rm -f src/mips/o32.$(OBJEXT)
-rm -f src/mips/o32.lo
+ -rm -f src/moxie/eabi.$(OBJEXT)
+ -rm -f src/moxie/eabi.lo
+ -rm -f src/moxie/ffi.$(OBJEXT)
+ -rm -f src/moxie/ffi.lo
-rm -f src/pa/ffi.$(OBJEXT)
-rm -f src/pa/ffi.lo
-rm -f src/pa/hpux32.$(OBJEXT)
@@ -927,6 +964,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/ffi.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/n32.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/mips/$(DEPDIR)/o32.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/moxie/$(DEPDIR)/eabi.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/moxie/$(DEPDIR)/ffi.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/ffi.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/hpux32.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/pa/$(DEPDIR)/linux.Plo@am__quote@
@@ -1022,6 +1061,7 @@ clean-libtool:
-rm -rf src/m32r/.libs src/m32r/_libs
-rm -rf src/m68k/.libs src/m68k/_libs
-rm -rf src/mips/.libs src/mips/_libs
+ -rm -rf src/moxie/.libs src/moxie/_libs
-rm -rf src/pa/.libs src/pa/_libs
-rm -rf src/powerpc/.libs src/powerpc/_libs
-rm -rf src/s390/.libs src/s390/_libs
@@ -1032,23 +1072,191 @@ clean-libtool:
distclean-libtool:
-rm -f libtool config.lt
+doc/$(am__dirstamp):
+ @$(MKDIR_P) doc
+ @: > doc/$(am__dirstamp)
+
+$(srcdir)/doc/libffi.info: doc/libffi.texi $(srcdir)/doc/version.texi
+ restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+ am__cwd=`pwd` && $(am__cd) $(srcdir) && \
+ rm -rf $$backupdir && mkdir $$backupdir && \
+ if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+ for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+ if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+ done; \
+ else :; fi && \
+ cd "$$am__cwd"; \
+ if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \
+ -o $@ $(srcdir)/doc/libffi.texi; \
+ then \
+ rc=0; \
+ $(am__cd) $(srcdir); \
+ else \
+ rc=$$?; \
+ $(am__cd) $(srcdir) && \
+ $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
+ fi; \
+ rm -rf $$backupdir; exit $$rc
+
+doc/libffi.dvi: doc/libffi.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \
+ $(TEXI2DVI) -o $@ `test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi
+
+doc/libffi.pdf: doc/libffi.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \
+ $(TEXI2PDF) -o $@ `test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi
+
+doc/libffi.html: doc/libffi.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
+ rm -rf $(@:.html=.htp)
+ if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \
+ -o $(@:.html=.htp) `test -f 'doc/libffi.texi' || echo '$(srcdir)/'`doc/libffi.texi; \
+ then \
+ rm -rf $@; \
+ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+ mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
+ else \
+ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+ rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
+ exit 1; \
+ fi
+$(srcdir)/doc/version.texi: @MAINTAINER_MODE_TRUE@ $(srcdir)/doc/stamp-vti
+$(srcdir)/doc/stamp-vti: doc/libffi.texi $(top_srcdir)/configure
+ test -f doc/$(am__dirstamp) || $(MAKE) $(AM_MAKEFLAGS) doc/$(am__dirstamp)
+ @(dir=.; test -f ./doc/libffi.texi || dir=$(srcdir); \
+ set `$(SHELL) $(srcdir)/mdate-sh $$dir/doc/libffi.texi`; \
+ echo "@set UPDATED $$1 $$2 $$3"; \
+ echo "@set UPDATED-MONTH $$2 $$3"; \
+ echo "@set EDITION $(VERSION)"; \
+ echo "@set VERSION $(VERSION)") > vti.tmp
+ @cmp -s vti.tmp $(srcdir)/doc/version.texi \
+ || (echo "Updating $(srcdir)/doc/version.texi"; \
+ cp vti.tmp $(srcdir)/doc/version.texi)
+ -@rm -f vti.tmp
+ @cp $(srcdir)/doc/version.texi $@
+
+mostlyclean-vti:
+ -rm -f vti.tmp
+
+maintainer-clean-vti:
+@MAINTAINER_MODE_TRUE@ -rm -f $(srcdir)/doc/stamp-vti $(srcdir)/doc/version.texi
+.dvi.ps:
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ $(DVIPS) -o $@ $<
+
+uninstall-dvi-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
+ rm -f "$(DESTDIR)$(dvidir)/$$f"; \
+ done
+
+uninstall-html-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
+ rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
+ done
-# GNU Make needs to see an explicit $(MAKE) variable in the command it
-# runs to enable its job server during parallel builds. Hence the
-# comments below.
-all-multi:
- $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE)
-install-multi:
- $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE)
-
-mostlyclean-multi:
- $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean # $(MAKE)
-clean-multi:
- $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean # $(MAKE)
-distclean-multi:
- $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE)
-maintainer-clean-multi:
- $(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean # $(MAKE)
+uninstall-info-am:
+ @$(PRE_UNINSTALL)
+ @if test -d '$(DESTDIR)$(infodir)' && \
+ (install-info --version && \
+ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+ list='$(INFO_DEPS)'; \
+ for file in $$list; do \
+ relfile=`echo "$$file" | sed 's|^.*/||'`; \
+ echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
+ if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
+ then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \
+ done; \
+ else :; fi
+ @$(NORMAL_UNINSTALL)
+ @list='$(INFO_DEPS)'; \
+ for file in $$list; do \
+ relfile=`echo "$$file" | sed 's|^.*/||'`; \
+ relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
+ (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \
+ echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
+ rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
+ else :; fi); \
+ done
+
+uninstall-pdf-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
+ done
+
+uninstall-ps-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(PSS)'; test -n "$(psdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(psdir)/$$f"; \
+ done
+
+dist-info: $(INFO_DEPS)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ list='$(INFO_DEPS)'; \
+ for base in $$list; do \
+ case $$base in \
+ $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
+ esac; \
+ if test -f $$base; then d=.; else d=$(srcdir); fi; \
+ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
+ for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
+ if test -f $$file; then \
+ relfile=`expr "$$file" : "$$d/\(.*\)"`; \
+ test -f "$(distdir)/$$relfile" || \
+ cp -p $$file "$(distdir)/$$relfile"; \
+ else :; fi; \
+ done; \
+ done
+
+mostlyclean-aminfo:
+ -rm -rf libffi.aux libffi.cp libffi.cps libffi.fn libffi.ky libffi.log \
+ libffi.pg libffi.tmp libffi.toc libffi.tp libffi.vr
+
+clean-aminfo:
+ -test -z "doc/libffi.dvi doc/libffi.pdf doc/libffi.ps doc/libffi.html" \
+ || rm -rf doc/libffi.dvi doc/libffi.pdf doc/libffi.ps doc/libffi.html
+
+maintainer-clean-aminfo:
+ @list='$(INFO_DEPS)'; for i in $$list; do \
+ i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
+ echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
+ rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
+ done
+install-pkgconfigDATA: $(pkgconfig_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
+ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
+ done
+
+uninstall-pkgconfigDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
@@ -1245,6 +1453,9 @@ distdir: $(DISTFILES)
|| exit 1; \
fi; \
done
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
+ dist-info
-test -n "$(am__skip_mode_fix)" \
|| find "$(distdir)" -type d ! -perm -755 \
-exec chmod u+rwx,go+rx {} \; -o \
@@ -1362,10 +1573,10 @@ distcleancheck: distclean
exit 1; } >&2
check-am: all-am
check: check-recursive
-all-am: Makefile $(LTLIBRARIES) all-multi fficonfig.h
+all-am: Makefile $(INFO_DEPS) $(LTLIBRARIES) $(DATA) fficonfig.h
installdirs: installdirs-recursive
installdirs-am:
- for dir in "$(DESTDIR)$(toolexeclibdir)"; do \
+ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(pkgconfigdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
@@ -1389,6 +1600,7 @@ clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -rm -f doc/$(am__dirstamp)
-rm -f src/$(DEPDIR)/$(am__dirstamp)
-rm -f src/$(am__dirstamp)
-rm -f src/alpha/$(DEPDIR)/$(am__dirstamp)
@@ -1409,6 +1621,8 @@ distclean-generic:
-rm -f src/m68k/$(am__dirstamp)
-rm -f src/mips/$(DEPDIR)/$(am__dirstamp)
-rm -f src/mips/$(am__dirstamp)
+ -rm -f src/moxie/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/moxie/$(am__dirstamp)
-rm -f src/pa/$(DEPDIR)/$(am__dirstamp)
-rm -f src/pa/$(am__dirstamp)
-rm -f src/powerpc/$(DEPDIR)/$(am__dirstamp)
@@ -1427,114 +1641,186 @@ distclean-generic:
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
-clean: clean-multi clean-recursive
+clean: clean-recursive
-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
- clean-toolexeclibLTLIBRARIES mostlyclean-am
+clean-am: clean-aminfo clean-generic clean-libLTLIBRARIES \
+ clean-libtool clean-noinstLTLIBRARIES mostlyclean-am
-distclean: distclean-multi distclean-recursive
+distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -rf src/$(DEPDIR) src/alpha/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/mips/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/x86/$(DEPDIR)
+ -rm -rf src/$(DEPDIR) src/alpha/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/x86/$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-hdr distclean-libtool distclean-tags
dvi: dvi-recursive
-dvi-am:
+dvi-am: $(DVIS)
html: html-recursive
-html-am:
+html-am: $(HTMLS)
info: info-recursive
-info-am:
+info-am: $(INFO_DEPS)
-install-data-am:
+install-data-am: install-info-am install-pkgconfigDATA
install-dvi: install-dvi-recursive
-install-dvi-am:
-
-install-exec-am: install-multi install-toolexeclibLTLIBRARIES
-
-install-html: install-html-recursive
-
-install-html-am:
+install-dvi-am: $(DVIS)
+ @$(NORMAL_INSTALL)
+ test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)"
+ @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \
+ done
+install-exec-am: install-libLTLIBRARIES
+install-html-am: $(HTMLS)
+ @$(NORMAL_INSTALL)
+ test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
+ @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ $(am__strip_dir) \
+ if test -d "$$d$$p"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
+ $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
+ echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
+ else \
+ list2="$$list2 $$d$$p"; \
+ fi; \
+ done; \
+ test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
+ done; }
install-info: install-info-recursive
-install-info-am:
-
+install-info-am: $(INFO_DEPS)
+ @$(NORMAL_INSTALL)
+ test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+ for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ esac; \
+ if test -f $$file; then d=.; else d=$(srcdir); fi; \
+ file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
+ for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
+ $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
+ if test -f $$ifile; then \
+ echo "$$ifile"; \
+ else : ; fi; \
+ done; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
+ @$(POST_INSTALL)
+ @if (install-info --version && \
+ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+ for file in $$list; do \
+ relfile=`echo "$$file" | sed 's|^.*/||'`; \
+ echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
+ install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
+ done; \
+ else : ; fi
install-man:
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
+install-pdf-am: $(PDFS)
+ @$(NORMAL_INSTALL)
+ test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)"
+ @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done
install-ps: install-ps-recursive
-install-ps-am:
-
+install-ps-am: $(PSS)
+ @$(NORMAL_INSTALL)
+ test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
+ @list='$(PSS)'; test -n "$(psdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done
installcheck-am:
-maintainer-clean: maintainer-clean-multi maintainer-clean-recursive
+maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
- -rm -rf src/$(DEPDIR) src/alpha/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/mips/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/x86/$(DEPDIR)
+ -rm -rf src/$(DEPDIR) src/alpha/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/x86/$(DEPDIR)
-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
+maintainer-clean-am: distclean-am maintainer-clean-aminfo \
+ maintainer-clean-generic maintainer-clean-vti
-mostlyclean: mostlyclean-multi mostlyclean-recursive
+mostlyclean: mostlyclean-recursive
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
+mostlyclean-am: mostlyclean-aminfo mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool mostlyclean-vti
pdf: pdf-recursive
-pdf-am:
+pdf-am: $(PDFS)
ps: ps-recursive
-ps-am:
+ps-am: $(PSS)
-uninstall-am: uninstall-toolexeclibLTLIBRARIES
+uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
+ uninstall-libLTLIBRARIES uninstall-pdf-am \
+ uninstall-pkgconfigDATA uninstall-ps-am
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all all-multi \
- clean-multi ctags-recursive distclean-multi install-am \
- install-multi install-strip maintainer-clean-multi \
- mostlyclean-multi tags-recursive
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
+ ctags-recursive install-am install-strip tags-recursive
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
- all all-am all-multi am--refresh check check-am clean \
- clean-generic clean-libtool clean-multi \
- clean-noinstLTLIBRARIES clean-toolexeclibLTLIBRARIES ctags \
- ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-lzma \
- dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \
- distclean-compile distclean-generic distclean-hdr \
- distclean-libtool distclean-multi distclean-tags \
- distcleancheck distdir distuninstallcheck dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-multi install-pdf \
- install-pdf-am install-ps install-ps-am install-strip \
- install-toolexeclibLTLIBRARIES installcheck installcheck-am \
- installdirs installdirs-am maintainer-clean \
- maintainer-clean-generic maintainer-clean-multi mostlyclean \
+ all all-am am--refresh check check-am clean clean-aminfo \
+ clean-generic clean-libLTLIBRARIES clean-libtool \
+ clean-noinstLTLIBRARIES ctags ctags-recursive dist dist-all \
+ dist-bzip2 dist-gzip dist-info dist-lzma dist-shar dist-tarZ \
+ dist-xz dist-zip distcheck distclean distclean-compile \
+ distclean-generic distclean-hdr distclean-libtool \
+ distclean-tags distcleancheck distdir distuninstallcheck dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-libLTLIBRARIES \
+ install-man install-pdf install-pdf-am install-pkgconfigDATA \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-aminfo maintainer-clean-generic \
+ maintainer-clean-vti mostlyclean mostlyclean-aminfo \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
- mostlyclean-multi pdf pdf-am ps ps-am tags tags-recursive \
- uninstall uninstall-am uninstall-toolexeclibLTLIBRARIES
+ mostlyclean-vti pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am uninstall-dvi-am uninstall-html-am \
+ uninstall-info-am uninstall-libLTLIBRARIES uninstall-pdf-am \
+ uninstall-pkgconfigDATA uninstall-ps-am
-# Multilib support. Automake should provide these on its own.
-all-recursive: all-multi
-install-recursive: install-multi
-mostlyclean-recursive: mostlyclean-multi
-clean-recursive: clean-multi
-distclean-recursive: distclean-multi
-maintainer-clean-recursive: maintainer-clean-multi
+# No install-html or install-pdf support in automake yet
+.PHONY: install-html install-pdf
+install-html:
+install-pdf:
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
Index: libffi/configure
===================================================================
--- libffi.orig/configure
@@ -121,7 +986,7 @@ Index: libffi/configure
@@ -13335,6 +13341,14 @@ $as_echo "#define FFI_DEBUG 1" >>confdef
@@ -13344,6 +13350,14 @@ $as_echo "#define FFI_DEBUG 1" >>confdef
fi
fi
@@ -136,7 +1001,7 @@ Index: libffi/configure
# Check whether --enable-structs was given.
if test "${enable_structs+set}" = set; then :
@@ -13649,6 +13663,10 @@ if test -z "${PA64_HPUX_TRUE}" && test -
@@ -13658,6 +13672,10 @@ if test -z "${PA64_HPUX_TRUE}" && test -
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -225,6 +225,12 @@
@@ -243,6 +243,12 @@
* testsuite/libffi.call/cls_longdouble.c: Likewise.
* testsuite/libffi.call/huge_struct.c: Likewise.
@@ -221,15 +221,23 @@ Index: libffi/src/prep_cif.c
===================================================================
--- libffi.orig/src/prep_cif.c
+++ libffi/src/prep_cif.c
@@ -93,7 +93,7 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
ffi_type **ptr;
@@ -1,5 +1,6 @@
/* -----------------------------------------------------------------------
- prep_cif.c - Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
+ prep_cif.c - Copyright (c) 2012 Anthony Green
+ Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
FFI_ASSERT(cif != NULL);
- FFI_ASSERT((abi > FFI_FIRST_ABI) && (abi <= FFI_DEFAULT_ABI));
+ FFI_ASSERT(abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI);
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -96,7 +97,7 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
#ifndef X86_WIN32
FFI_ASSERT((abi > FFI_FIRST_ABI) && (abi <= FFI_DEFAULT_ABI));
#else
- FFI_ASSERT(abi > FFI_FIRST_ABI && abi <= FFI_DEFAULT_ABI
+ FFI_ASSERT(abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI
|| abi == FFI_THISCALL);
#endif
cif->abi = abi;
cif->arg_types = atypes;
Index: libffi/src/s390/ffitarget.h
===================================================================
--- libffi.orig/src/s390/ffitarget.h

View File

@@ -15,7 +15,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -102,6 +102,10 @@
@@ -120,6 +120,10 @@
instructions.
* src/powerpc/aix_closure.S: Declare .ffi_closure_helper_DARWIN.

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -89,6 +89,11 @@
@@ -107,6 +107,11 @@
Use them to handle ELF vs. ECOFF differences.
[__osf__] (_GLOBAL__F_ffi_call_osf): Define.

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -95,7 +95,12 @@
@@ -113,7 +113,12 @@
2011-02-09 Anthony Green <green@moxielogic.com>
@@ -16,7 +16,7 @@ Index: libffi/ChangeLog
2011-02-09 Landon Fuller <landonf@macports.org>
@@ -115,6 +120,7 @@
@@ -133,6 +138,7 @@
* src/closures.c: Handle FFI_EXEC_TRAMPOLINE_TABLE case.
* build-ios.sh: New file.
* fficonfig.h.in, configure, Makefile.in: Rebuilt.
@@ -28,15 +28,14 @@ Index: libffi/src/prep_cif.c
===================================================================
--- libffi.orig/src/prep_cif.c
+++ libffi/src/prep_cif.c
@@ -1,5 +1,6 @@
@@ -1,5 +1,5 @@
/* -----------------------------------------------------------------------
- prep_cif.c - Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
+ prep_cif.c - Copyright (c) 2011 Anthony Green
+ Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
- prep_cif.c - Copyright (c) 2012 Anthony Green
+ prep_cif.c - Copyright (c) 2011, 2012 Anthony Green
Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -26,6 +27,12 @@
@@ -27,6 +27,12 @@
#include <ffi_common.h>
#include <stdlib.h>
@@ -49,7 +48,7 @@ Index: libffi/src/prep_cif.c
/* Round up to FFI_SIZEOF_ARG. */
#define STACK_ARG_SIZE(x) ALIGN(x, FFI_SIZEOF_ARG)
@@ -45,9 +52,13 @@ static ffi_status initialize_aggregate(f
@@ -46,9 +52,13 @@ static ffi_status initialize_aggregate(f
ptr = &(arg->elements[0]);
@@ -64,16 +63,21 @@ Index: libffi/src/prep_cif.c
return FFI_BAD_TYPEDEF;
/* Perform a sanity check on the argument type */
@@ -93,7 +104,8 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
ffi_type **ptr;
@@ -95,10 +105,11 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
FFI_ASSERT(cif != NULL);
- FFI_ASSERT(abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI);
+ if (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI))
#ifndef X86_WIN32
- FFI_ASSERT((abi > FFI_FIRST_ABI) && (abi <= FFI_DEFAULT_ABI));
+ if ((abi > FFI_FIRST_ABI) && (abi <= FFI_DEFAULT_ABI))
+ return FFI_BAD_ABI;
#else
- FFI_ASSERT(abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI
- || abi == FFI_THISCALL);
+ if (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI || abi == FFI_THISCALL)
+ return FFI_BAD_ABI;
#endif
cif->abi = abi;
cif->arg_types = atypes;
Index: libffi/src/x86/ffi64.c
===================================================================
--- libffi.orig/src/x86/ffi64.c

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -89,6 +89,11 @@
@@ -107,6 +107,11 @@
Use them to handle ELF vs. ECOFF differences.
[__osf__] (_GLOBAL__F_ffi_call_osf): Define.

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -93,6 +93,11 @@
@@ -111,6 +111,11 @@
* configure: Regenerate.

View File

@@ -64,7 +64,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -95,6 +95,17 @@
@@ -113,6 +113,17 @@
2011-02-09 Anthony Green <green@moxielogic.com>

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -93,6 +93,29 @@
@@ -111,6 +111,29 @@
* configure: Regenerate.
@@ -311,7 +311,7 @@ Index: libffi/configure.ac
===================================================================
--- libffi.orig/configure.ac
+++ libffi/configure.ac
@@ -322,13 +322,23 @@ if test x$TARGET = xX86_WIN64; then
@@ -331,13 +331,23 @@ if test x$TARGET = xX86_WIN64; then
fi
fi

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -130,7 +130,7 @@
@@ -148,7 +148,7 @@
* src/prep_cif.c (UNLIKELY, LIKELY): Define.
(initialize_aggregate): Check for bad types.

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -93,6 +93,14 @@
@@ -111,6 +111,14 @@
* configure: Regenerate.

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -41,6 +41,11 @@
@@ -59,6 +59,11 @@
* configure: Regenerate.
@@ -18,7 +18,7 @@ Index: libffi/configure.ac
===================================================================
--- libffi.orig/configure.ac
+++ libffi/configure.ac
@@ -339,7 +339,7 @@ case "$target" in
@@ -348,7 +348,7 @@ case "$target" in
[Cannot use PROT_EXEC on this target, so, we revert to
alternative means])
;;

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -233,6 +233,10 @@
@@ -251,6 +251,10 @@
* src/prep_cif.c: Push stack space computation into src/x86/ffi.c
for X86_ANY so return value space doesn't get added twice.

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -832,6 +832,11 @@
@@ -850,6 +850,11 @@
* man/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.

View File

@@ -55,7 +55,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -291,6 +291,11 @@
@@ -309,6 +309,11 @@
* man/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -41,6 +41,12 @@
@@ -59,6 +59,12 @@
* configure: Regenerate.

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -41,6 +41,12 @@
@@ -59,6 +59,12 @@
* configure: Regenerate.

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -93,6 +93,10 @@
@@ -111,6 +111,10 @@
* configure: Regenerate.

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -65,6 +65,26 @@
@@ -83,6 +83,26 @@
X 10.7.
* configure: Rebuilt.

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -93,6 +93,11 @@
@@ -111,6 +111,11 @@
* configure: Regenerate.

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -93,6 +93,12 @@
@@ -111,6 +111,12 @@
* configure: Regenerate.

View File

@@ -4094,7 +4094,7 @@ Index: libffi/configure
;;
avr32*-*-*)
@@ -11450,7 +12171,7 @@ esac
@@ -11459,7 +12180,7 @@ esac
if test $TARGETDIR = unknown; then
@@ -4103,7 +4103,7 @@ Index: libffi/configure
fi
if test x$TARGET = xMIPS; then
@@ -11541,6 +12262,14 @@ else
@@ -11550,6 +12271,14 @@ else
M68K_FALSE=
fi
@@ -4118,7 +4118,7 @@ Index: libffi/configure
if test x$TARGET = xPOWERPC; then
POWERPC_TRUE=
POWERPC_FALSE='#'
@@ -11664,7 +12393,7 @@ fi
@@ -11673,7 +12402,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
$as_echo_n "checking for ANSI C header files... " >&6; }
@@ -4127,7 +4127,7 @@ Index: libffi/configure
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -11777,7 +12506,7 @@ fi
@@ -11786,7 +12515,7 @@ fi
for ac_func in memcpy
do :
ac_fn_c_check_func "$LINENO" "memcpy" "ac_cv_func_memcpy"
@@ -4136,7 +4136,7 @@ Index: libffi/configure
cat >>confdefs.h <<_ACEOF
#define HAVE_MEMCPY 1
_ACEOF
@@ -11785,11 +12514,22 @@ _ACEOF
@@ -11794,11 +12523,22 @@ _ACEOF
fi
done
@@ -4160,7 +4160,7 @@ Index: libffi/configure
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -11822,7 +12562,7 @@ fi
@@ -11831,7 +12571,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
$as_echo_n "checking for alloca... " >&6; }
@@ -4169,7 +4169,7 @@ Index: libffi/configure
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -11841,7 +12581,7 @@ else
@@ -11850,7 +12590,7 @@ else
#pragma alloca
# else
# ifndef alloca /* predefined by HP cc +Olibcalls */
@@ -4178,7 +4178,7 @@ Index: libffi/configure
# endif
# endif
# endif
@@ -11885,7 +12625,7 @@ $as_echo "#define C_ALLOCA 1" >>confdefs
@@ -11894,7 +12634,7 @@ $as_echo "#define C_ALLOCA 1" >>confdefs
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
@@ -4187,7 +4187,7 @@ Index: libffi/configure
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -11912,8 +12652,7 @@ if test $ac_cv_os_cray = yes; then
@@ -11921,8 +12661,7 @@ if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -4197,7 +4197,7 @@ Index: libffi/configure
cat >>confdefs.h <<_ACEOF
#define CRAY_STACKSEG_END $ac_func
@@ -11927,7 +12666,7 @@ fi
@@ -11936,7 +12675,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
$as_echo_n "checking stack direction for C alloca... " >&6; }
@@ -4206,7 +4206,7 @@ Index: libffi/configure
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then :
@@ -11982,7 +12721,7 @@ fi
@@ -11991,7 +12730,7 @@ fi
# This bug is HP SR number 8606223364.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5
$as_echo_n "checking size of double... " >&6; }
@@ -4215,7 +4215,7 @@ Index: libffi/configure
$as_echo_n "(cached) " >&6
else
if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default"; then :
@@ -11991,9 +12730,8 @@ else
@@ -12000,9 +12739,8 @@ else
if test "$ac_cv_type_double" = yes; then
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -4227,7 +4227,7 @@ Index: libffi/configure
else
ac_cv_sizeof_double=0
fi
@@ -12016,7 +12754,7 @@ _ACEOF
@@ -12025,7 +12763,7 @@ _ACEOF
# This bug is HP SR number 8606223364.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long double" >&5
$as_echo_n "checking size of long double... " >&6; }
@@ -4236,7 +4236,7 @@ Index: libffi/configure
$as_echo_n "(cached) " >&6
else
if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long double))" "ac_cv_sizeof_long_double" "$ac_includes_default"; then :
@@ -12025,9 +12763,8 @@ else
@@ -12034,9 +12772,8 @@ else
if test "$ac_cv_type_long_double" = yes; then
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -4248,7 +4248,7 @@ Index: libffi/configure
else
ac_cv_sizeof_long_double=0
fi
@@ -12061,7 +12798,7 @@ fi
@@ -12070,7 +12807,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
@@ -4257,7 +4257,7 @@ Index: libffi/configure
$as_echo_n "(cached) " >&6
else
ac_cv_c_bigendian=unknown
@@ -12279,14 +13016,14 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUI
@@ -12288,14 +13025,14 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUI
;; #(
*)
@@ -4274,7 +4274,7 @@ Index: libffi/configure
$as_echo_n "(cached) " >&6
else
@@ -12322,7 +13059,7 @@ $as_echo "#define HAVE_AS_CFI_PSEUDO_OP
@@ -12331,7 +13068,7 @@ $as_echo "#define HAVE_AS_CFI_PSEUDO_OP
if test x$TARGET = xSPARC; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler and linker support unaligned pc related relocs" >&5
$as_echo_n "checking assembler and linker support unaligned pc related relocs... " >&6; }
@@ -4283,7 +4283,7 @@ Index: libffi/configure
$as_echo_n "(cached) " >&6
else
@@ -12361,7 +13098,7 @@ $as_echo "#define HAVE_AS_SPARC_UA_PCREL
@@ -12370,7 +13107,7 @@ $as_echo "#define HAVE_AS_SPARC_UA_PCREL
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .register pseudo-op support" >&5
$as_echo_n "checking assembler .register pseudo-op support... " >&6; }
@@ -4292,7 +4292,7 @@ Index: libffi/configure
$as_echo_n "(cached) " >&6
else
@@ -12398,7 +13135,7 @@ fi
@@ -12407,7 +13144,7 @@ fi
if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports pc related relocs" >&5
$as_echo_n "checking assembler supports pc related relocs... " >&6; }
@@ -4301,7 +4301,7 @@ Index: libffi/configure
$as_echo_n "(cached) " >&6
else
@@ -12419,7 +13156,7 @@ $as_echo "#define HAVE_AS_X86_PCREL 1" >
@@ -12428,7 +13165,7 @@ $as_echo "#define HAVE_AS_X86_PCREL 1" >
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .ascii pseudo-op support" >&5
$as_echo_n "checking assembler .ascii pseudo-op support... " >&6; }
@@ -4310,7 +4310,7 @@ Index: libffi/configure
$as_echo_n "(cached) " >&6
else
@@ -12454,7 +13191,7 @@ $as_echo "#define HAVE_AS_ASCII_PSEUDO_O
@@ -12463,7 +13200,7 @@ $as_echo "#define HAVE_AS_ASCII_PSEUDO_O
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .string pseudo-op support" >&5
$as_echo_n "checking assembler .string pseudo-op support... " >&6; }
@@ -4319,7 +4319,7 @@ Index: libffi/configure
$as_echo_n "(cached) " >&6
else
@@ -12499,7 +13236,7 @@ esac
@@ -12508,7 +13245,7 @@ esac
if test x$TARGET = xX86_64; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports unwind section type" >&5
$as_echo_n "checking assembler supports unwind section type... " >&6; }
@@ -4328,7 +4328,7 @@ Index: libffi/configure
$as_echo_n "(cached) " >&6
else
@@ -12521,7 +13258,7 @@ fi
@@ -12530,7 +13267,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether .eh_frame section should be read-only" >&5
$as_echo_n "checking whether .eh_frame section should be read-only... " >&6; }
@@ -4337,7 +4337,7 @@ Index: libffi/configure
$as_echo_n "(cached) " >&6
else
@@ -12555,7 +13292,7 @@ fi
@@ -12564,7 +13301,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5
$as_echo_n "checking for __attribute__((visibility(\"hidden\")))... " >&6; }
@@ -4346,7 +4346,7 @@ Index: libffi/configure
$as_echo_n "(cached) " >&6
else
@@ -12629,21 +13366,25 @@ $as_echo "#define USING_PURIFY 1" >>conf
@@ -12638,21 +13375,25 @@ $as_echo "#define USING_PURIFY 1" >>conf
fi
@@ -4385,7 +4385,7 @@ Index: libffi/configure
if test "${multilib}" = "yes"; then
multilib_arg="--enable-multilib"
@@ -12659,7 +13400,7 @@ ac_config_commands="$ac_config_commands
@@ -12668,7 +13409,7 @@ ac_config_commands="$ac_config_commands
ac_config_links="$ac_config_links include/ffitarget.h:src/$TARGETDIR/ffitarget.h"
@@ -4394,7 +4394,7 @@ Index: libffi/configure
cat >confcache <<\_ACEOF
@@ -12726,10 +13467,21 @@ $as_echo "$as_me: WARNING: cache variabl
@@ -12735,10 +13476,21 @@ $as_echo "$as_me: WARNING: cache variabl
:end' >>confcache
if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
if test -w "$cache_file"; then
@@ -4418,7 +4418,7 @@ Index: libffi/configure
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
@@ -12745,6 +13497,7 @@ DEFS=-DHAVE_CONFIG_H
@@ -12754,6 +13506,7 @@ DEFS=-DHAVE_CONFIG_H
ac_libobjs=
ac_ltlibobjs=
@@ -4426,7 +4426,7 @@ Index: libffi/configure
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
@@ -12768,132 +13521,136 @@ else
@@ -12777,132 +13530,136 @@ else
fi
if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
@@ -4595,7 +4595,7 @@ Index: libffi/configure
ac_write_fail=0
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
@@ -12994,6 +13751,7 @@ fi
@@ -13003,6 +13760,7 @@ fi
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
@@ -4603,7 +4603,7 @@ Index: libffi/configure
case $0 in #((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -13039,19 +13797,19 @@ export LANGUAGE
@@ -13048,19 +13806,19 @@ export LANGUAGE
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
@@ -4631,7 +4631,7 @@ Index: libffi/configure
as_fn_exit $as_status
} # as_fn_error
@@ -13247,7 +14005,7 @@ $as_echo X"$as_dir" |
@@ -13256,7 +14014,7 @@ $as_echo X"$as_dir" |
test -d "$as_dir" && break
done
test -z "$as_dirs" || eval "mkdir $as_dirs"
@@ -4640,7 +4640,7 @@ Index: libffi/configure
} # as_fn_mkdir_p
@@ -13300,8 +14058,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
@@ -13309,8 +14067,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
@@ -4651,7 +4651,7 @@ Index: libffi/configure
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -13342,6 +14100,7 @@ Usage: $0 [OPTION]... [TAG]...
@@ -13351,6 +14109,7 @@ Usage: $0 [OPTION]... [TAG]...
-h, --help print this help, then exit
-V, --version print version number and configuration settings, then exit
@@ -4659,7 +4659,7 @@ Index: libffi/configure
-q, --quiet, --silent
do not print progress messages
-d, --debug don't remove temporary files
@@ -13363,16 +14122,17 @@ $config_links
@@ -13372,16 +14131,17 @@ $config_links
Configuration commands:
$config_commands
@@ -4682,7 +4682,7 @@ Index: libffi/configure
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -13390,11 +14150,16 @@ ac_need_defaults=:
@@ -13399,11 +14159,16 @@ ac_need_defaults=:
while test $# != 0
do
case $1 in
@@ -4700,7 +4700,7 @@ Index: libffi/configure
*)
ac_option=$1
ac_optarg=$2
@@ -13408,12 +14173,15 @@ do
@@ -13417,12 +14182,15 @@ do
ac_cs_recheck=: ;;
--version | --versio | --versi | --vers | --ver | --ve | --v | -V )
$as_echo "$ac_cs_version"; exit ;;
@@ -4716,7 +4716,7 @@ Index: libffi/configure
esac
as_fn_append CONFIG_FILES " '$ac_optarg'"
ac_need_defaults=false;;
@@ -13426,7 +14194,7 @@ do
@@ -13435,7 +14203,7 @@ do
ac_need_defaults=false;;
--he | --h)
# Conflict between --help and --header
@@ -4725,7 +4725,7 @@ Index: libffi/configure
Try \`$0 --help' for more information.";;
--help | --hel | -h )
$as_echo "$ac_cs_usage"; exit ;;
@@ -13435,7 +14203,7 @@ Try \`$0 --help' for more information.";
@@ -13444,7 +14212,7 @@ Try \`$0 --help' for more information.";
ac_cs_silent=: ;;
# This is an error.
@@ -4734,7 +4734,7 @@ Index: libffi/configure
Try \`$0 --help' for more information." ;;
*) as_fn_append ac_config_targets " $1"
@@ -13479,20 +14247,6 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
@@ -13488,20 +14256,6 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
#
# INIT-COMMANDS
#
@@ -4755,7 +4755,7 @@ Index: libffi/configure
AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
@@ -13531,13 +14285,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_
@@ -13540,13 +14294,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_
lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
@@ -4776,7 +4776,7 @@ Index: libffi/configure
STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
@@ -13552,14 +14313,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$l
@@ -13561,14 +14322,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$l
lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
@@ -4795,7 +4795,7 @@ Index: libffi/configure
DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
@@ -13592,12 +14356,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcod
@@ -13601,12 +14365,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcod
hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
@@ -4809,7 +4809,7 @@ Index: libffi/configure
file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
@@ -13652,8 +14416,13 @@ reload_flag \
@@ -13661,8 +14425,13 @@ reload_flag \
OBJDUMP \
deplibs_check_method \
file_magic_cmd \
@@ -4823,7 +4823,7 @@ Index: libffi/configure
STRIP \
RANLIB \
CC \
@@ -13663,12 +14432,14 @@ lt_cv_sys_global_symbol_pipe \
@@ -13672,12 +14441,14 @@ lt_cv_sys_global_symbol_pipe \
lt_cv_sys_global_symbol_to_cdecl \
lt_cv_sys_global_symbol_to_c_name_address \
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
@@ -4839,7 +4839,7 @@ Index: libffi/configure
DSYMUTIL \
NMEDIT \
LIPO \
@@ -13684,7 +14455,6 @@ no_undefined_flag \
@@ -13693,7 +14464,6 @@ no_undefined_flag \
hardcode_libdir_flag_spec \
hardcode_libdir_flag_spec_ld \
hardcode_libdir_separator \
@@ -4847,7 +4847,7 @@ Index: libffi/configure
exclude_expsyms \
include_expsyms \
file_list_spec \
@@ -13720,6 +14490,7 @@ module_cmds \
@@ -13729,6 +14499,7 @@ module_cmds \
module_expsym_cmds \
export_symbols_cmds \
prelink_cmds \
@@ -4855,7 +4855,7 @@ Index: libffi/configure
postinstall_cmds \
postuninstall_cmds \
finish_cmds \
@@ -13765,7 +14536,6 @@ for ac_config_target in $ac_config_targe
@@ -13774,7 +14545,6 @@ for ac_config_target in $ac_config_targe
do
case $ac_config_target in
"fficonfig.h") CONFIG_HEADERS="$CONFIG_HEADERS fficonfig.h" ;;
@@ -4863,7 +4863,7 @@ Index: libffi/configure
"depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
"libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
"include") CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;;
@@ -13776,8 +14546,9 @@ do
@@ -13785,8 +14555,9 @@ do
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"testsuite/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/Makefile" ;;
"man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;;
@@ -4874,7 +4874,7 @@ Index: libffi/configure
esac
done
@@ -13801,9 +14572,10 @@ fi
@@ -13810,9 +14581,10 @@ fi
# after its creation but before its name has been assigned to `$tmp'.
$debug ||
{
@@ -4887,7 +4887,7 @@ Index: libffi/configure
' 0
trap 'as_fn_exit 1' 1 2 13 15
}
@@ -13811,12 +14583,13 @@ $debug ||
@@ -13820,12 +14592,13 @@ $debug ||
{
tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
@@ -4903,7 +4903,7 @@ Index: libffi/configure
# Set up the scripts for CONFIG_FILES section.
# No need to generate them if there are no CONFIG_FILES.
@@ -13833,12 +14606,12 @@ if test "x$ac_cr" = x; then
@@ -13842,12 +14615,12 @@ if test "x$ac_cr" = x; then
fi
ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
@@ -4918,7 +4918,7 @@ Index: libffi/configure
_ACEOF
@@ -13847,18 +14620,18 @@ _ACEOF
@@ -13856,18 +14629,18 @@ _ACEOF
echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
echo "_ACEOF"
} >conf$$subs.sh ||
@@ -4941,7 +4941,7 @@ Index: libffi/configure
else
ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
fi
@@ -13866,7 +14639,7 @@ done
@@ -13875,7 +14648,7 @@ done
rm -f conf$$subs.sh
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
@@ -4950,7 +4950,7 @@ Index: libffi/configure
_ACEOF
sed -n '
h
@@ -13880,7 +14653,7 @@ s/'"$ac_delim"'$//
@@ -13889,7 +14662,7 @@ s/'"$ac_delim"'$//
t delim
:nl
h
@@ -4959,7 +4959,7 @@ Index: libffi/configure
t more1
s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
p
@@ -13894,7 +14667,7 @@ s/.\{148\}//
@@ -13903,7 +14676,7 @@ s/.\{148\}//
t nl
:delim
h
@@ -4968,7 +4968,7 @@ Index: libffi/configure
t more2
s/["\\]/\\&/g; s/^/"/; s/$/"/
p
@@ -13914,7 +14687,7 @@ t delim
@@ -13923,7 +14696,7 @@ t delim
rm -f conf$$subs.awk
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
_ACAWK
@@ -4977,7 +4977,7 @@ Index: libffi/configure
for (key in S) S_is_set[key] = 1
FS = ""
@@ -13946,21 +14719,29 @@ if sed "s/$ac_cr//" < /dev/null > /dev/n
@@ -13955,21 +14728,29 @@ if sed "s/$ac_cr//" < /dev/null > /dev/n
sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
else
cat
@@ -5016,7 +5016,7 @@ Index: libffi/configure
s/^[^=]*=[ ]*$//
}'
fi
@@ -13972,7 +14753,7 @@ fi # test -n "$CONFIG_FILES"
@@ -13981,7 +14762,7 @@ fi # test -n "$CONFIG_FILES"
# No need to generate them if there are no CONFIG_HEADERS.
# This happens for instance with `./config.status Makefile'.
if test -n "$CONFIG_HEADERS"; then
@@ -5025,7 +5025,7 @@ Index: libffi/configure
BEGIN {
_ACEOF
@@ -13984,11 +14765,11 @@ _ACEOF
@@ -13993,11 +14774,11 @@ _ACEOF
# handling of long lines.
ac_delim='%!_!# '
for ac_last_try in false false :; do
@@ -5040,7 +5040,7 @@ Index: libffi/configure
else
ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
fi
@@ -14073,7 +14854,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
@@ -14082,7 +14863,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
_ACAWK
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
@@ -5049,7 +5049,7 @@ Index: libffi/configure
fi # test -n "$CONFIG_HEADERS"
@@ -14086,7 +14867,7 @@ do
@@ -14095,7 +14876,7 @@ do
esac
case $ac_mode$ac_tag in
:[FHL]*:*);;
@@ -5058,7 +5058,7 @@ Index: libffi/configure
:[FH]-) ac_tag=-:-;;
:[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
esac
@@ -14105,7 +14886,7 @@ do
@@ -14114,7 +14895,7 @@ do
for ac_f
do
case $ac_f in
@@ -5067,7 +5067,7 @@ Index: libffi/configure
*) # Look for the file first in the build tree, then in the source tree
# (if the path is not absolute). The absolute path cannot be DOS-style,
# because $ac_f cannot contain `:'.
@@ -14114,7 +14895,7 @@ do
@@ -14123,7 +14904,7 @@ do
[\\/$]*) false;;
*) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
esac ||
@@ -5076,7 +5076,7 @@ Index: libffi/configure
esac
case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
as_fn_append ac_file_inputs " '$ac_f'"
@@ -14140,8 +14921,8 @@ $as_echo "$as_me: creating $ac_file" >&6
@@ -14149,8 +14930,8 @@ $as_echo "$as_me: creating $ac_file" >&6
esac
case $ac_tag in
@@ -5087,7 +5087,7 @@ Index: libffi/configure
esac
;;
esac
@@ -14277,23 +15058,24 @@ s&@INSTALL@&$ac_INSTALL&;t t
@@ -14286,23 +15067,24 @@ s&@INSTALL@&$ac_INSTALL&;t t
s&@MKDIR_P@&$ac_MKDIR_P&;t t
$ac_datarootdir_hack
"
@@ -5122,7 +5122,7 @@ Index: libffi/configure
;;
:H)
#
@@ -14302,21 +15084,21 @@ which seems to be undefined. Please mak
@@ -14311,21 +15093,21 @@ which seems to be undefined. Please mak
if test x"$ac_file" != x-; then
{
$as_echo "/* $configure_input */" \
@@ -5152,7 +5152,7 @@ Index: libffi/configure
fi
# Compute "$ac_file"'s index in $config_headers.
_am_arg="$ac_file"
@@ -14370,19 +15152,19 @@ $as_echo X"$_am_arg" |
@@ -14379,19 +15161,19 @@ $as_echo X"$_am_arg" |
$as_echo "$as_me: linking $ac_source to $ac_file" >&6;}
if test ! -r "$ac_source"; then
@@ -5175,7 +5175,7 @@ Index: libffi/configure
fi
;;
:C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
@@ -14392,14 +15174,6 @@ $as_echo "$as_me: executing $ac_file com
@@ -14401,14 +15183,6 @@ $as_echo "$as_me: executing $ac_file com
case $ac_file$ac_mode in
@@ -5190,7 +5190,7 @@ Index: libffi/configure
"depfiles":C) test x"$AMDEP_TRUE" != x"" || {
# Autoconf 2.62 quotes --file arguments for eval, but not when files
# are listed without --file. Let's play safe and only enable the eval
@@ -14516,7 +15290,8 @@ $as_echo X"$file" |
@@ -14525,7 +15299,8 @@ $as_echo X"$file" |
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
@@ -5200,7 +5200,7 @@ Index: libffi/configure
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
@@ -14619,19 +15394,42 @@ SP2NL=$lt_lt_SP2NL
@@ -14628,19 +15403,42 @@ SP2NL=$lt_lt_SP2NL
# turn newlines into spaces.
NL2SP=$lt_lt_NL2SP
@@ -5244,7 +5244,7 @@ Index: libffi/configure
# A symbol stripping program.
STRIP=$lt_STRIP
@@ -14661,6 +15459,12 @@ global_symbol_to_c_name_address=$lt_lt_c
@@ -14670,6 +15468,12 @@ global_symbol_to_c_name_address=$lt_lt_c
# Transform the output of nm in a C name address pair when lib prefix is needed.
global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
@@ -5257,7 +5257,7 @@ Index: libffi/configure
# The name of the directory that contains temporary libtool files.
objdir=$objdir
@@ -14670,6 +15474,9 @@ MAGIC_CMD=$MAGIC_CMD
@@ -14679,6 +15483,9 @@ MAGIC_CMD=$MAGIC_CMD
# Must we lock files when doing compilation?
need_locks=$lt_need_locks
@@ -5267,7 +5267,7 @@ Index: libffi/configure
# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
DSYMUTIL=$lt_DSYMUTIL
@@ -14784,12 +15591,12 @@ with_gcc=$GCC
@@ -14793,12 +15600,12 @@ with_gcc=$GCC
# Compiler flag to turn off builtin functions.
no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
@@ -5283,7 +5283,7 @@ Index: libffi/configure
# Compiler flag to prevent dynamic linking.
link_static_flag=$lt_lt_prog_compiler_static
@@ -14876,9 +15683,6 @@ inherit_rpath=$inherit_rpath
@@ -14885,9 +15692,6 @@ inherit_rpath=$inherit_rpath
# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=$link_all_deplibs
@@ -5293,7 +5293,7 @@ Index: libffi/configure
# Set to "yes" if exported symbols are required.
always_export_symbols=$always_export_symbols
@@ -14894,6 +15698,9 @@ include_expsyms=$lt_include_expsyms
@@ -14903,6 +15707,9 @@ include_expsyms=$lt_include_expsyms
# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=$lt_prelink_cmds
@@ -5303,7 +5303,7 @@ Index: libffi/configure
# Specify filename containing input files.
file_list_spec=$lt_file_list_spec
@@ -14926,210 +15733,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
@@ -14935,210 +15742,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
# if finds mixed CR/LF and LF-only lines. Since sed operates in
# text mode, it properly converts lines to CR/LF. This bash problem
# is reportedly fixed, but why not run on old versions too?
@@ -5674,7 +5674,7 @@ Index: libffi/configure
(rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
chmod +x "$ofile"
@@ -15149,7 +15915,7 @@ _ACEOF
@@ -15158,7 +15924,7 @@ _ACEOF
ac_clean_files=$ac_clean_files_save
test $ac_write_fail = 0 ||
@@ -5683,7 +5683,7 @@ Index: libffi/configure
# configure is writing to config.log, and then calls config.status.
@@ -15170,7 +15936,7 @@ if test "$no_create" != yes; then
@@ -15179,7 +15945,7 @@ if test "$no_create" != yes; then
exec 5>>config.log
# Use ||, not &&, to avoid exiting from the if with $? = 1, which
# would make configure fail if this is the last instruction.
@@ -5739,7 +5739,7 @@ Index: libffi/configure.ac
;;
avr32*-*-*)
@@ -195,6 +199,7 @@ AM_CONDITIONAL(ALPHA, test x$TARGET = xA
@@ -204,6 +208,7 @@ AM_CONDITIONAL(ALPHA, test x$TARGET = xA
AM_CONDITIONAL(IA64, test x$TARGET = xIA64)
AM_CONDITIONAL(M32R, test x$TARGET = xM32R)
AM_CONDITIONAL(M68K, test x$TARGET = xM68K)
@@ -5747,7 +5747,7 @@ Index: libffi/configure.ac
AM_CONDITIONAL(POWERPC, test x$TARGET = xPOWERPC)
AM_CONDITIONAL(POWERPC_AIX, test x$TARGET = xPOWERPC_AIX)
AM_CONDITIONAL(POWERPC_DARWIN, test x$TARGET = xPOWERPC_DARWIN)
@@ -414,21 +419,25 @@ AC_ARG_ENABLE(purify-safety,
@@ -423,21 +428,25 @@ AC_ARG_ENABLE(purify-safety,
AC_DEFINE(USING_PURIFY, 1, [Define this if you are using Purify and want to suppress spurious messages.])
fi)
@@ -5787,7 +5787,7 @@ Index: libffi/configure.ac
if test "${multilib}" = "yes"; then
multilib_arg="--enable-multilib"
@@ -444,6 +453,6 @@ test -d src/$TARGETDIR || mkdir src/$TAR
@@ -453,6 +462,6 @@ test -d src/$TARGETDIR || mkdir src/$TAR
AC_CONFIG_LINKS(include/ffitarget.h:src/$TARGETDIR/ffitarget.h)

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -225,6 +225,14 @@
@@ -243,6 +243,14 @@
* testsuite/libffi.call/cls_longdouble.c: Likewise.
* testsuite/libffi.call/huge_struct.c: Likewise.
@@ -21,7 +21,7 @@ Index: libffi/src/prep_cif.c
===================================================================
--- libffi.orig/src/prep_cif.c
+++ libffi/src/prep_cif.c
@@ -110,7 +110,7 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
@@ -116,7 +116,7 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
FFI_ASSERT_VALID_TYPE(cif->rtype);
/* x86, x86-64 and s390 stack space allocation is handled in prep_machdep. */
@@ -30,7 +30,7 @@ Index: libffi/src/prep_cif.c
/* Make space for the return structure pointer */
if (cif->rtype->type == FFI_TYPE_STRUCT
#ifdef SPARC
@@ -131,7 +131,7 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
@@ -137,7 +137,7 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
check after the initialization. */
FFI_ASSERT_VALID_TYPE(*ptr);

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -17,6 +17,11 @@
@@ -35,6 +35,11 @@
* testsuite/libffi.call/struct1_win32.c: New test.
* testsuite/libffi.call/struct2_win32.c: New test.

View File

@@ -265,7 +265,7 @@ Index: libffi/src/prep_cif.c
===================================================================
--- libffi.orig/src/prep_cif.c
+++ libffi/src/prep_cif.c
@@ -90,20 +90,33 @@ static ffi_status initialize_aggregate(f
@@ -90,14 +90,27 @@ static ffi_status initialize_aggregate(f
/* Perform machine independent ffi_cif preparation, then call
machine dependent routine. */
@@ -292,8 +292,10 @@ Index: libffi/src/prep_cif.c
+ FFI_ASSERT((!isvariadic) || (nfixedargs >= 1));
+ FFI_ASSERT(nfixedargs <= ntotalargs);
+
if (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI))
#ifndef X86_WIN32
if ((abi > FFI_FIRST_ABI) && (abi <= FFI_DEFAULT_ABI))
return FFI_BAD_ABI;
@@ -108,7 +121,7 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
cif->abi = abi;
cif->arg_types = atypes;
@@ -302,7 +304,7 @@ Index: libffi/src/prep_cif.c
cif->rtype = rtype;
cif->flags = 0;
@@ -159,10 +172,31 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
@@ -164,10 +177,31 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
cif->bytes = bytes;
/* Perform machine dependent cif processing */
@@ -572,7 +574,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -41,6 +41,17 @@
@@ -59,6 +59,17 @@
* configure: Regenerate.

View File

@@ -51,7 +51,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -262,6 +262,14 @@
@@ -280,6 +280,14 @@
* fficonfig.h.in: Regenerate.
* src/x86/sysv.S (.eh_frame): Use .ascii, .string or error.

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -158,6 +158,13 @@
@@ -176,6 +176,13 @@
(.eh_frame): Use FDE_ENCODING.
(.LASFDE1, .LASFDE2, LASFDE3): Simplify with FDE_ENCODE.
@@ -20,7 +20,7 @@ Index: libffi/configure.ac
===================================================================
--- libffi.orig/configure.ac
+++ libffi/configure.ac
@@ -315,6 +315,13 @@ if test x$TARGET = xX86 || test x$TARGET
@@ -324,6 +324,13 @@ if test x$TARGET = xX86 || test x$TARGET
fi
fi
@@ -924,7 +924,7 @@ Index: libffi/configure
HAVE_LONG_DOUBLE
ALLOCA
PA64_HPUX_FALSE
@@ -13230,6 +13231,61 @@ $as_echo "#define HAVE_AS_STRING_PSEUDO_
@@ -13239,6 +13240,61 @@ $as_echo "#define HAVE_AS_STRING_PSEUDO_
fi
fi

View File

@@ -50,7 +50,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -41,6 +41,11 @@
@@ -59,6 +59,11 @@
* configure: Regenerate.

View File

@@ -2,7 +2,7 @@ Index: libffi/ChangeLog
===================================================================
--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
@@ -100,6 +100,11 @@
@@ -118,6 +118,11 @@
uintptr_t first.
* testsuite/libffi.call/cls_pointer_stack.c (main): Likewise.
@@ -18,7 +18,7 @@ Index: libffi/configure
===================================================================
--- libffi.orig/configure
+++ libffi/configure
@@ -13146,10 +13146,10 @@ if ${libffi_cv_as_x86_pcrel+:} false; th
@@ -13155,10 +13155,10 @@ if ${libffi_cv_as_x86_pcrel+:} false; th
$as_echo_n "(cached) " >&6
else
@@ -36,7 +36,7 @@ Index: libffi/configure.ac
===================================================================
--- libffi.orig/configure.ac
+++ libffi/configure.ac
@@ -277,10 +277,10 @@ fi
@@ -286,10 +286,10 @@ fi
if test x$TARGET = xX86 || test x$TARGET = xX86_WIN32 || test x$TARGET = xX86_64; then
AC_CACHE_CHECK([assembler supports pc related relocs],
libffi_cv_as_x86_pcrel, [

View File

@@ -1,5 +1,5 @@
/* -----------------------------------------------------------------------
prep_cif.c - Copyright (c) 2011 Anthony Green
prep_cif.c - Copyright (c) 2011, 2012 Anthony Green
Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
Permission is hereby granted, free of charge, to any person obtaining
@@ -111,8 +111,13 @@ ffi_status FFI_HIDDEN ffi_prep_cif_core(ffi_cif *cif, ffi_abi abi,
FFI_ASSERT((!isvariadic) || (nfixedargs >= 1));
FFI_ASSERT(nfixedargs <= ntotalargs);
if (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI))
#ifndef X86_WIN32
if ((abi > FFI_FIRST_ABI) && (abi <= FFI_DEFAULT_ABI))
return FFI_BAD_ABI;
#else
if (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI || abi == FFI_THISCALL)
return FFI_BAD_ABI;
#endif
cif->abi = abi;
cif->arg_types = atypes;

View File

@@ -428,6 +428,8 @@ void FFI_HIDDEN ffi_closure_raw_SYSV (ffi_raw_closure *)
#ifdef X86_WIN32
void FFI_HIDDEN ffi_closure_STDCALL (ffi_closure *)
__attribute__ ((regparm(1)));
void FFI_HIDDEN ffi_closure_THISCALL (ffi_closure *)
__attribute__ ((regparm(1)));
#endif
#ifdef X86_WIN64
void FFI_HIDDEN ffi_closure_win64 (ffi_closure *);
@@ -587,6 +589,33 @@ ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, void **avalue,
*(unsigned int*) &__tramp[6] = __dis; /* jmp __fun */ \
}
#define FFI_INIT_TRAMPOLINE_THISCALL(TRAMP,FUN,CTX,SIZE) \
{ unsigned char *__tramp = (unsigned char*)(TRAMP); \
unsigned int __fun = (unsigned int)(FUN); \
unsigned int __ctx = (unsigned int)(CTX); \
unsigned int __dis = __fun - (__ctx + 22); \
unsigned short __size = (unsigned short)(SIZE); \
*(unsigned int *) &__tramp[0] = 0x8324048b; /* mov (%esp), %eax */ \
*(unsigned int *) &__tramp[4] = 0x4c890cec; /* sub $12, %esp */ \
*(unsigned int *) &__tramp[8] = 0x04890424; /* mov %ecx, 4(%esp) */ \
*(unsigned char*) &__tramp[12] = 0x24; /* mov %eax, (%esp) */ \
*(unsigned char*) &__tramp[13] = 0xb8; \
*(unsigned int *) &__tramp[14] = __size; /* mov __size, %eax */ \
*(unsigned int *) &__tramp[18] = 0x08244c8d; /* lea 8(%esp), %ecx */ \
*(unsigned int *) &__tramp[22] = 0x4802e8c1; /* shr $2, %eax ; dec %eax */ \
*(unsigned short*) &__tramp[26] = 0x0b74; /* jz 1f */ \
*(unsigned int *) &__tramp[28] = 0x8908518b; /* 2b: mov 8(%ecx), %edx */ \
*(unsigned int *) &__tramp[32] = 0x04c18311; /* mov %edx, (%ecx) ; add $4, %ecx */ \
*(unsigned char*) &__tramp[36] = 0x48; /* dec %eax */ \
*(unsigned short*) &__tramp[37] = 0xf575; /* jnz 2b ; 1f: */ \
*(unsigned char*) &__tramp[39] = 0xb8; \
*(unsigned int*) &__tramp[40] = __ctx; /* movl __ctx, %eax */ \
*(unsigned char *) &__tramp[44] = 0xe8; \
*(unsigned int*) &__tramp[45] = __dis; /* call __fun */ \
*(unsigned char*) &__tramp[49] = 0xc2; /* ret */ \
*(unsigned short*) &__tramp[50] = (__size + 8); /* ret (__size + 8) */ \
}
#define FFI_INIT_TRAMPOLINE_STDCALL(TRAMP,FUN,CTX,SIZE) \
{ unsigned char *__tramp = (unsigned char*)(TRAMP); \
unsigned int __fun = (unsigned int)(FUN); \
@@ -629,6 +658,13 @@ ffi_prep_closure_loc (ffi_closure* closure,
(void*)codeloc);
}
#ifdef X86_WIN32
else if (cif->abi == FFI_THISCALL)
{
FFI_INIT_TRAMPOLINE_THISCALL (&closure->tramp[0],
&ffi_closure_THISCALL,
(void*)codeloc,
cif->bytes);
}
else if (cif->abi == FFI_STDCALL)
{
FFI_INIT_TRAMPOLINE_STDCALL (&closure->tramp[0],

View File

@@ -105,7 +105,7 @@ typedef enum ffi_abi {
#define FFI_NATIVE_RAW_API 0
#else
#ifdef X86_WIN32
#define FFI_TRAMPOLINE_SIZE 13
#define FFI_TRAMPOLINE_SIZE 52
#else
#ifdef X86_WIN64
#define FFI_TRAMPOLINE_SIZE 29

View File

@@ -170,6 +170,16 @@ ca_epilogue:
ret
ffi_call_win32 ENDP
ffi_closure_THISCALL PROC NEAR FORCEFRAME
push ebp
mov ebp, esp
sub esp, 40
lea edx, [ebp -24]
mov [ebp - 12], edx /* resp */
lea edx, [ebp + 12] /* account for stub return address on stack */
jmp stub
ffi_closure_THISCALL ENDP
ffi_closure_SYSV PROC NEAR FORCEFRAME
;; the ffi_closure ctx is passed in eax by the trampoline.
@@ -177,6 +187,7 @@ ffi_closure_SYSV PROC NEAR FORCEFRAME
lea edx, [ebp - 24]
mov [ebp - 12], edx ;; resp
lea edx, [ebp + 8]
stub:
mov [esp + 8], edx ;; args
lea edx, [ebp - 12]
mov [esp + 4], edx ;; &resp
@@ -573,6 +584,19 @@ _ffi_call_win32:
popl %ebp
ret
.ffi_call_win32_end:
.balign 16
.globl _ffi_closure_THISCALL
#ifndef __OS2__
.def _ffi_closure_THISCALL; .scl 2; .type 32; .endef
#endif
_ffi_closure_THISCALL:
pushl %ebp
movl %esp, %ebp
subl $40, %esp
leal -24(%ebp), %edx
movl %edx, -12(%ebp) /* resp */
leal 12(%ebp), %edx /* account for stub return address on stack */
jmp .stub
.LFE1:
# This assumes we are using gas.
@@ -591,6 +615,7 @@ _ffi_closure_SYSV:
leal -24(%ebp), %edx
movl %edx, -12(%ebp) /* resp */
leal 8(%ebp), %edx
.stub:
movl %edx, 4(%esp) /* args = __builtin_dwarf_cfa () */
leal -12(%ebp), %edx
movl %edx, (%esp) /* &resp */

View File

@@ -0,0 +1,64 @@
/* Area: closure_call (thiscall convention)
Purpose: Check handling when caller expects thiscall callee
Limitations: none.
PR: none.
Originator: <ktietz@redhat.com> */
/* { dg-do run { target i?86-*-cygwin* i?86-*-mingw* } } */
#include "ffitest.h"
static void
closure_test_thiscall(ffi_cif* cif __UNUSED__, void* resp, void** args,
void* userdata)
{
*(ffi_arg*)resp =
(int)*(int *)args[0] + (int)(*(int *)args[1])
+ (int)(*(int *)args[2]) + (int)(*(int *)args[3])
+ (int)(intptr_t)userdata;
printf("%d %d %d %d: %d\n",
(int)*(int *)args[0], (int)(*(int *)args[1]),
(int)(*(int *)args[2]), (int)(*(int *)args[3]),
(int)*(ffi_arg *)resp);
}
typedef int (__thiscall *closure_test_type0)(int, int, int, int);
int main (void)
{
ffi_cif cif;
void *code;
ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
ffi_type * cl_arg_types[17];
int res;
void* sp_pre;
void* sp_post;
char buf[1024];
cl_arg_types[0] = &ffi_type_uint;
cl_arg_types[1] = &ffi_type_uint;
cl_arg_types[2] = &ffi_type_uint;
cl_arg_types[3] = &ffi_type_uint;
cl_arg_types[4] = NULL;
/* Initialize the cif */
CHECK(ffi_prep_cif(&cif, FFI_THISCALL, 4,
&ffi_type_sint, cl_arg_types) == FFI_OK);
CHECK(ffi_prep_closure_loc(pcl, &cif, closure_test_thiscall,
(void *) 3 /* userdata */, code) == FFI_OK);
asm volatile (" movl %%esp,%0" : "=g" (sp_pre));
res = (*(closure_test_type0)code)(0, 1, 2, 3);
asm volatile (" movl %%esp,%0" : "=g" (sp_post));
/* { dg-output "0 1 2 3: 9" } */
printf("res: %d\n",res);
/* { dg-output "\nres: 9" } */
sprintf(buf, "mismatch: pre=%p vs post=%p", sp_pre, sp_post);
printf("stack pointer %s\n", (sp_pre == sp_post ? "match" : buf));
/* { dg-output "\nstack pointer match" } */
exit(0);
}