#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for libffi 3.0.10rc6.
+# Generated by GNU Autoconf 2.68 for libffi 3.0.10rc7.
#
# Report bugs to <http://sourceware.org/libffi.html>.
#
# Identity of this package.
PACKAGE_NAME='libffi'
PACKAGE_TARNAME='libffi'
-PACKAGE_VERSION='3.0.10rc6'
-PACKAGE_STRING='libffi 3.0.10rc6'
+PACKAGE_VERSION='3.0.10rc7'
+PACKAGE_STRING='libffi 3.0.10rc7'
PACKAGE_BUGREPORT='http://sourceware.org/libffi.html'
PACKAGE_URL=''
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures libffi 3.0.10rc6 to adapt to many kinds of systems.
+\`configure' configures libffi 3.0.10rc7 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libffi 3.0.10rc6:";;
+ short | recursive ) echo "Configuration of libffi 3.0.10rc7:";;
esac
cat <<\_ACEOF
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libffi configure 3.0.10rc6
+libffi configure 3.0.10rc7
generated by GNU Autoconf 2.68
Copyright (C) 2010 Free Software Foundation, Inc.
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by libffi $as_me 3.0.10rc6, which was
+It was created by libffi $as_me 3.0.10rc7, which was
generated by GNU Autoconf 2.68. Invocation command line was
$ $0 $@
# Define the identity of the package.
PACKAGE='libffi'
- VERSION='3.0.10rc6'
+ VERSION='3.0.10rc7'
cat >>confdefs.h <<_ACEOF
i?86-*-freebsd* | i?86-*-openbsd*)
TARGET=X86_FREEBSD; TARGETDIR=x86
;;
- i?86-win32* | i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2* | i?86-*-interix*)
+ i?86-win32* | i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2*)
TARGET=X86_WIN32; 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
powerpc-*-beos*)
TARGET=POWERPC; TARGETDIR=powerpc
;;
- powerpc-*-darwin* | powerpc64-*-darwin*)
+ powerpc-*-darwin*)
TARGET=POWERPC_DARWIN; TARGETDIR=powerpc
;;
powerpc-*-aix* | rs6000-*-aix*)
powerpc-*-freebsd*)
TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
;;
- powerpc64-*-freebsd*)
+ powerpc64-*-freebsd*)
TARGET=POWERPC; TARGETDIR=powerpc
;;
powerpc*-*-rtems*)
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libffi $as_me 3.0.10rc6, which was
+This file was extended by libffi $as_me 3.0.10rc7, which was
generated by GNU Autoconf 2.68. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-libffi config.status 3.0.10rc6
+libffi config.status 3.0.10rc7
configured by $0, generated by GNU Autoconf 2.68,
with options \\"\$ac_cs_config\\"
--- /dev/null
+dnl Process this with autoconf to create configure
+
+AC_PREREQ(2.63)
+
+AC_INIT([libffi], [3.0.10rc7], [http://sourceware.org/libffi.html])
+AC_CONFIG_HEADERS([fficonfig.h])
+
+AC_CANONICAL_SYSTEM
+target_alias=${target_alias-$host_alias}
+
+. ${srcdir}/configure.host
+
+AM_INIT_AUTOMAKE
+
+# The same as in boehm-gc and libstdc++. Have to borrow it from there.
+# We must force CC to /not/ be precious variables; otherwise
+# the wrong, non-multilib-adjusted value will be used in multilibs.
+# As a side effect, we have to subst CFLAGS ourselves.
+# Also save and restore CFLAGS, since AC_PROG_CC will come up with
+# defaults of its own if none are provided.
+
+m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS])
+m4_define([_AC_ARG_VAR_PRECIOUS],[])
+save_CFLAGS=$CFLAGS
+AC_PROG_CC
+CFLAGS=$save_CFLAGS
+m4_undefine([_AC_ARG_VAR_PRECIOUS])
+m4_rename([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
+
+AC_SUBST(CFLAGS)
+
+AM_PROG_AS
+AM_PROG_CC_C_O
+AC_PROG_LIBTOOL
+AC_CONFIG_MACRO_DIR([m4])
+
+AM_MAINTAINER_MODE
+
+AC_CHECK_HEADERS(sys/mman.h)
+AC_CHECK_FUNCS(mmap)
+AC_FUNC_MMAP_BLACKLIST
+
+dnl The -no-testsuite modules omit the test subdir.
+AM_CONDITIONAL(TESTSUBDIR, test -d $srcdir/testsuite)
+
+TARGETDIR="unknown"
+case "$host" in
+ alpha*-*-*)
+ TARGET=ALPHA; TARGETDIR=alpha;
+ # Support 128-bit long double, changeable via command-line switch.
+ HAVE_LONG_DOUBLE='defined(__LONG_DOUBLE_128__)'
+ ;;
+
+ arm*-*-*)
+ TARGET=ARM; TARGETDIR=arm
+ ;;
+
+ amd64-*-freebsd* | amd64-*-openbsd*)
+ TARGET=X86_64; TARGETDIR=x86
+ ;;
+
+ amd64-*-freebsd*)
+ TARGET=X86_64; TARGETDIR=x86
+ ;;
+
+ avr32*-*-*)
+ TARGET=AVR32; TARGETDIR=avr32
+ ;;
+
+ cris-*-*)
+ TARGET=LIBFFI_CRIS; TARGETDIR=cris
+ ;;
+
+ frv-*-*)
+ TARGET=FRV; TARGETDIR=frv
+ ;;
+
+ hppa*-*-linux* | parisc*-*-linux*)
+ TARGET=PA_LINUX; TARGETDIR=pa
+ ;;
+ hppa*64-*-hpux*)
+ TARGET=PA64_HPUX; TARGETDIR=pa
+ ;;
+ hppa*-*-hpux*)
+ TARGET=PA_HPUX; TARGETDIR=pa
+ ;;
+
+ i?86-*-freebsd* | i?86-*-openbsd*)
+ TARGET=X86_FREEBSD; TARGETDIR=x86
+ ;;
+ i?86-win32* | i?86-*-cygwin* | i?86-*-mingw* | i?86-*-os2*)
+ TARGET=X86_WIN32; 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
+ ;;
+ i?86-*-darwin*)
+ TARGET=X86_DARWIN; TARGETDIR=x86
+ ;;
+ i?86-*-solaris2.1[[0-9]]*)
+ TARGET=X86_64; TARGETDIR=x86
+ ;;
+ i?86-*-*)
+ TARGET=X86; TARGETDIR=x86
+ ;;
+
+ ia64*-*-*)
+ TARGET=IA64; TARGETDIR=ia64
+ ;;
+
+ m32r*-*-*)
+ TARGET=M32R; TARGETDIR=m32r
+ ;;
+
+ m68k-*-*)
+ TARGET=M68K; TARGETDIR=m68k
+ ;;
+
+ mips-sgi-irix5.* | mips-sgi-irix6.* | mips*-*-rtems*)
+ TARGET=MIPS; TARGETDIR=mips
+ ;;
+ mips*-*-linux*)
+ # Support 128-bit long double for NewABI.
+ HAVE_LONG_DOUBLE='defined(__mips64)'
+ TARGET=MIPS; TARGETDIR=mips
+ ;;
+
+ powerpc*-*-linux* | powerpc-*-sysv*)
+ TARGET=POWERPC; TARGETDIR=powerpc
+ ;;
+ powerpc-*-beos*)
+ TARGET=POWERPC; TARGETDIR=powerpc
+ ;;
+ powerpc-*-darwin*)
+ TARGET=POWERPC_DARWIN; TARGETDIR=powerpc
+ ;;
+ powerpc-*-aix* | rs6000-*-aix*)
+ TARGET=POWERPC_AIX; TARGETDIR=powerpc
+ ;;
+ powerpc-*-freebsd*)
+ TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc
+ ;;
+ powerpc64-*-freebsd*)
+ TARGET=POWERPC; TARGETDIR=powerpc
+ ;;
+ powerpc*-*-rtems*)
+ TARGET=POWERPC; TARGETDIR=powerpc
+ ;;
+
+ s390-*-* | s390x-*-*)
+ TARGET=S390; TARGETDIR=s390
+ ;;
+
+ sh-*-* | sh[[34]]*-*-*)
+ TARGET=SH; TARGETDIR=sh
+ ;;
+ sh64-*-* | sh5*-*-*)
+ TARGET=SH64; TARGETDIR=sh64
+ ;;
+
+ sparc*-*-*)
+ TARGET=SPARC; TARGETDIR=sparc
+ ;;
+
+ x86_64-*-darwin*)
+ TARGET=X86_DARWIN; TARGETDIR=x86
+ ;;
+
+ x86_64-*-cygwin* | x86_64-*-mingw*)
+ TARGET=X86_WIN64; TARGETDIR=x86
+ ;;
+
+ x86_64-*-*)
+ TARGET=X86_64; TARGETDIR=x86
+ ;;
+esac
+
+AC_SUBST(AM_RUNTESTFLAGS)
+AC_SUBST(AM_LTLDFLAGS)
+
+if test $TARGETDIR = unknown; then
+ AC_MSG_ERROR(["libffi has not been ported to $host."])
+fi
+
+AM_CONDITIONAL(MIPS, test x$TARGET = xMIPS)
+AM_CONDITIONAL(SPARC, test x$TARGET = xSPARC)
+AM_CONDITIONAL(X86, test x$TARGET = xX86)
+AM_CONDITIONAL(X86_FREEBSD, test x$TARGET = xX86_FREEBSD)
+AM_CONDITIONAL(X86_WIN32, test x$TARGET = xX86_WIN32)
+AM_CONDITIONAL(X86_WIN64, test x$TARGET = xX86_WIN64)
+AM_CONDITIONAL(X86_DARWIN, test x$TARGET = xX86_DARWIN)
+AM_CONDITIONAL(ALPHA, test x$TARGET = xALPHA)
+AM_CONDITIONAL(IA64, test x$TARGET = xIA64)
+AM_CONDITIONAL(M32R, test x$TARGET = xM32R)
+AM_CONDITIONAL(M68K, test x$TARGET = xM68K)
+AM_CONDITIONAL(MOXIE, test x$TARGET = xMOXIE)
+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)
+AM_CONDITIONAL(POWERPC_FREEBSD, test x$TARGET = xPOWERPC_FREEBSD)
+AM_CONDITIONAL(ARM, test x$TARGET = xARM)
+AM_CONDITIONAL(AVR32, test x$TARGET = xAVR32)
+AM_CONDITIONAL(LIBFFI_CRIS, test x$TARGET = xLIBFFI_CRIS)
+AM_CONDITIONAL(FRV, test x$TARGET = xFRV)
+AM_CONDITIONAL(S390, test x$TARGET = xS390)
+AM_CONDITIONAL(X86_64, test x$TARGET = xX86_64)
+AM_CONDITIONAL(SH, test x$TARGET = xSH)
+AM_CONDITIONAL(SH64, test x$TARGET = xSH64)
+AM_CONDITIONAL(PA_LINUX, test x$TARGET = xPA_LINUX)
+AM_CONDITIONAL(PA_HPUX, test x$TARGET = xPA_HPUX)
+AM_CONDITIONAL(PA64_HPUX, test x$TARGET = xPA64_HPUX)
+
+AC_HEADER_STDC
+AC_CHECK_FUNCS(memcpy)
+AC_FUNC_ALLOCA
+
+AC_CHECK_SIZEOF(double)
+AC_CHECK_SIZEOF(long double)
+
+# Also AC_SUBST this variable for ffi.h.
+if test -z "$HAVE_LONG_DOUBLE"; then
+ HAVE_LONG_DOUBLE=0
+ if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then
+ if test $ac_cv_sizeof_long_double != 0; then
+ HAVE_LONG_DOUBLE=1
+ AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the long double type and it is bigger than a double])
+ fi
+ fi
+fi
+AC_SUBST(HAVE_LONG_DOUBLE)
+
+AC_C_BIGENDIAN
+
+AC_CACHE_CHECK([assembler .cfi pseudo-op support],
+ libffi_cv_as_cfi_pseudo_op, [
+ libffi_cv_as_cfi_pseudo_op=unknown
+ AC_TRY_COMPILE([asm (".cfi_startproc\n\t.cfi_endproc");],,
+ [libffi_cv_as_cfi_pseudo_op=yes],
+ [libffi_cv_as_cfi_pseudo_op=no])
+])
+if test "x$libffi_cv_as_cfi_pseudo_op" = xyes; then
+ AC_DEFINE(HAVE_AS_CFI_PSEUDO_OP, 1,
+ [Define if your assembler supports .cfi_* directives.])
+fi
+
+if test x$TARGET = xSPARC; then
+ AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs],
+ libffi_cv_as_sparc_ua_pcrel, [
+ save_CFLAGS="$CFLAGS"
+ save_LDFLAGS="$LDFLAGS"
+ CFLAGS="$CFLAGS -fpic"
+ LDFLAGS="$LDFLAGS -shared"
+ AC_TRY_LINK([asm (".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo); .text");],,
+ [libffi_cv_as_sparc_ua_pcrel=yes],
+ [libffi_cv_as_sparc_ua_pcrel=no])
+ CFLAGS="$save_CFLAGS"
+ LDFLAGS="$save_LDFLAGS"])
+ if test "x$libffi_cv_as_sparc_ua_pcrel" = xyes; then
+ AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
+ [Define if your assembler and linker support unaligned PC relative relocs.])
+ fi
+
+ AC_CACHE_CHECK([assembler .register pseudo-op support],
+ libffi_cv_as_register_pseudo_op, [
+ libffi_cv_as_register_pseudo_op=unknown
+ # Check if we have .register
+ AC_TRY_COMPILE([asm (".register %g2, #scratch");],,
+ [libffi_cv_as_register_pseudo_op=yes],
+ [libffi_cv_as_register_pseudo_op=no])
+ ])
+ if test "x$libffi_cv_as_register_pseudo_op" = xyes; then
+ AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
+ [Define if your assembler supports .register.])
+ fi
+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, [
+ libffi_cv_as_x86_pcrel=no
+ echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s
+ if $CC $CFLAGS -c conftest.s > /dev/null; then
+ libffi_cv_as_x86_pcrel=yes
+ fi
+ ])
+ if test "x$libffi_cv_as_x86_pcrel" = xyes; then
+ AC_DEFINE(HAVE_AS_X86_PCREL, 1,
+ [Define if your assembler supports PC relative relocs.])
+ fi
+
+ AC_CACHE_CHECK([assembler .ascii pseudo-op support],
+ libffi_cv_as_ascii_pseudo_op, [
+ libffi_cv_as_ascii_pseudo_op=unknown
+ # Check if we have .ascii
+ AC_TRY_COMPILE([asm (".ascii \\"string\\"");],,
+ [libffi_cv_as_ascii_pseudo_op=yes],
+ [libffi_cv_as_ascii_pseudo_op=no])
+ ])
+ if test "x$libffi_cv_as_ascii_pseudo_op" = xyes; then
+ AC_DEFINE(HAVE_AS_ASCII_PSEUDO_OP, 1,
+ [Define if your assembler supports .ascii.])
+ fi
+
+ AC_CACHE_CHECK([assembler .string pseudo-op support],
+ libffi_cv_as_string_pseudo_op, [
+ libffi_cv_as_string_pseudo_op=unknown
+ # Check if we have .string
+ AC_TRY_COMPILE([asm (".string \\"string\\"");],,
+ [libffi_cv_as_string_pseudo_op=yes],
+ [libffi_cv_as_string_pseudo_op=no])
+ ])
+ if test "x$libffi_cv_as_string_pseudo_op" = xyes; then
+ AC_DEFINE(HAVE_AS_STRING_PSEUDO_OP, 1,
+ [Define if your assembler supports .string.])
+ fi
+fi
+
+if test x$TARGET = xX86_WIN64; then
+ LT_SYS_SYMBOL_USCORE
+ if test "x$sys_symbol_underscore" = xyes; then
+ AC_DEFINE(SYMBOL_UNDERSCORE, 1, [Define if symbols are underscored.])
+ fi
+fi
+
+case "$target" in
+ *-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
+ AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1,
+ [Cannot use malloc on this target, so, we revert to
+ alternative means])
+ ;;
+esac
+
+if test x$TARGET = xX86_64; then
+ AC_CACHE_CHECK([assembler supports unwind section type],
+ libffi_cv_as_x86_64_unwind_section_type, [
+ libffi_cv_as_x86_64_unwind_section_type=yes
+ echo '.section .eh_frame,"a",@unwind' > conftest.s
+ if $CC $CFLAGS -c conftest.s 2>&1 | grep -i warning > /dev/null; then
+ libffi_cv_as_x86_64_unwind_section_type=no
+ fi
+ ])
+ if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then
+ AC_DEFINE(HAVE_AS_X86_64_UNWIND_SECTION_TYPE, 1,
+ [Define if your assembler supports unwind section type.])
+ fi
+fi
+
+AC_CACHE_CHECK([whether .eh_frame section should be read-only],
+ libffi_cv_ro_eh_frame, [
+ libffi_cv_ro_eh_frame=no
+ echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
+ if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
+ if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
+ libffi_cv_ro_eh_frame=yes
+ elif grep '.section.*eh_frame.*#alloc' conftest.c \
+ | grep -v '#write' > /dev/null; then
+ libffi_cv_ro_eh_frame=yes
+ fi
+ fi
+ rm -f conftest.*
+ ])
+if test "x$libffi_cv_ro_eh_frame" = xyes; then
+ AC_DEFINE(HAVE_RO_EH_FRAME, 1,
+ [Define if .eh_frame sections should be read-only.])
+ AC_DEFINE(EH_FRAME_FLAGS, "a",
+ [Define to the flags needed for the .section .eh_frame directive.])
+else
+ AC_DEFINE(EH_FRAME_FLAGS, "aw",
+ [Define to the flags needed for the .section .eh_frame directive.])
+fi
+
+AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
+ libffi_cv_hidden_visibility_attribute, [
+ echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
+ libffi_cv_hidden_visibility_attribute=no
+ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ if grep '\.hidden.*foo' conftest.s >/dev/null; then
+ libffi_cv_hidden_visibility_attribute=yes
+ fi
+ fi
+ rm -f conftest.*
+ ])
+if test $libffi_cv_hidden_visibility_attribute = yes; then
+ AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
+ [Define if __attribute__((visibility("hidden"))) is supported.])
+fi
+
+AH_BOTTOM([
+#ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
+#ifdef LIBFFI_ASM
+#define FFI_HIDDEN(name) .hidden name
+#else
+#define FFI_HIDDEN __attribute__ ((visibility ("hidden")))
+#endif
+#else
+#ifdef LIBFFI_ASM
+#define FFI_HIDDEN(name)
+#else
+#define FFI_HIDDEN
+#endif
+#endif
+])
+
+AC_SUBST(TARGET)
+AC_SUBST(TARGETDIR)
+
+AC_SUBST(SHELL)
+
+AC_ARG_ENABLE(debug,
+[ --enable-debug debugging mode],
+ if test "$enable_debug" = "yes"; then
+ AC_DEFINE(FFI_DEBUG, 1, [Define this if you want extra debugging.])
+ fi)
+AM_CONDITIONAL(FFI_DEBUG, test "$enable_debug" = "yes")
+
+AC_ARG_ENABLE(structs,
+[ --disable-structs omit code for struct support],
+ if test "$enable_structs" = "no"; then
+ AC_DEFINE(FFI_NO_STRUCTS, 1, [Define this is you do not want support for aggregate types.])
+ fi)
+
+AC_ARG_ENABLE(raw-api,
+[ --disable-raw-api make the raw api unavailable],
+ if test "$enable_raw_api" = "no"; then
+ AC_DEFINE(FFI_NO_RAW_API, 1, [Define this is you do not want support for the raw API.])
+ fi)
+
+AC_ARG_ENABLE(purify-safety,
+[ --enable-purify-safety purify-safe mode],
+ if test "$enable_purify_safety" = "yes"; then
+ AC_DEFINE(USING_PURIFY, 1, [Define this if you are using Purify and want to suppress spurious messages.])
+ fi)
+
+# These variables are only ever used when we cross-build to X86_WIN32.
+# And we only support this with GCC, so...
+if test x"$GCC" != x"no"; then
+ if test -n "$with_cross_host" &&
+ test x"$with_cross_host" != x"no"; then
+ toolexecdir='$(exec_prefix)/$(target_alias)'
+ toolexeclibdir='$(toolexecdir)/lib'
+ else
+ toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+ toolexeclibdir='$(libdir)'
+ fi
+ multi_os_directory=`$CC -print-multi-os-directory`
+ case $multi_os_directory in
+ .) ;; # Avoid trailing /.
+ *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
+ esac
+ AC_SUBST(toolexecdir)
+ AC_SUBST(toolexeclibdir)
+fi
+
+if test "${multilib}" = "yes"; then
+ multilib_arg="--enable-multilib"
+else
+ multilib_arg=
+fi
+
+AC_CONFIG_COMMANDS(include, [test -d include || mkdir include])
+AC_CONFIG_COMMANDS(src, [
+test -d src || mkdir src
+test -d src/$TARGETDIR || mkdir src/$TARGETDIR
+], [TARGETDIR="$TARGETDIR"])
+
+AC_CONFIG_LINKS(include/ffitarget.h:src/$TARGETDIR/ffitarget.h)
+
+AC_CONFIG_FILES(include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile libffi.pc)
+
+AC_OUTPUT
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for libffi 3.0.10rc6.
+# Generated by GNU Autoconf 2.68 for libffi 3.0.10rc7.
#
# Report bugs to <http://sourceware.org/libffi.html>.
#
# Identity of this package.
PACKAGE_NAME='libffi'
PACKAGE_TARNAME='libffi'
-PACKAGE_VERSION='3.0.10rc6'
-PACKAGE_STRING='libffi 3.0.10rc6'
+PACKAGE_VERSION='3.0.10rc7'
+PACKAGE_STRING='libffi 3.0.10rc7'
PACKAGE_BUGREPORT='http://sourceware.org/libffi.html'
PACKAGE_URL=''
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures libffi 3.0.10rc6 to adapt to many kinds of systems.
+\`configure' configures libffi 3.0.10rc7 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libffi 3.0.10rc6:";;
+ short | recursive ) echo "Configuration of libffi 3.0.10rc7:";;
esac
cat <<\_ACEOF
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libffi configure 3.0.10rc6
+libffi configure 3.0.10rc7
generated by GNU Autoconf 2.68
Copyright (C) 2010 Free Software Foundation, Inc.
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by libffi $as_me 3.0.10rc6, which was
+It was created by libffi $as_me 3.0.10rc7, which was
generated by GNU Autoconf 2.68. Invocation command line was
$ $0 $@
# Define the identity of the package.
PACKAGE='libffi'
- VERSION='3.0.10rc6'
+ VERSION='3.0.10rc7'
cat >>confdefs.h <<_ACEOF
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libffi $as_me 3.0.10rc6, which was
+This file was extended by libffi $as_me 3.0.10rc7, which was
generated by GNU Autoconf 2.68. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-libffi config.status 3.0.10rc6
+libffi config.status 3.0.10rc7
configured by $0, generated by GNU Autoconf 2.68,
with options \\"\$ac_cs_config\\"
AC_PREREQ(2.63)
-AC_INIT([libffi], [3.0.10rc6], [http://sourceware.org/libffi.html])
+AC_INIT([libffi], [3.0.10rc7], [http://sourceware.org/libffi.html])
AC_CONFIG_HEADERS([fficonfig.h])
AC_CANONICAL_SYSTEM
+2011-02-15 Anthony Green <green@moxielogic.com>
+
+ * m4/ax_cc_maxopt.m4: Don't -malign-double or use -ffast-math.
+ * configure: Rebuilt.
+
+2011-02-13 Anthony Green <green@moxielogic.com>
+
+ * include/ffi_common.h (UNLIKELY, LIKELY): Define.
+ * src/x86/ffi64.c (UNLIKELY, LIKELY): Remove definition.
+ * src/prep_cif.c (UNLIKELY, LIKELY): Remove definition.
+
+ * src/prep_cif.c (initialize_aggregate): Convert assertion into
+ FFI_BAD_TYPEDEF return. Initialize arg size and alignment to 0.
+
+ * src/pa/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test,
+ just return FFI_BAD_ABI when things are wrong.
+ * src/arm/ffi.c (ffi_prep_closure_loc): Ditto.
+ * src/powerpc/ffi.c (ffi_prep_closure_loc): Ditto.
+ * src/mips/ffi.c (ffi_prep_closure_loc): Ditto.
+ * src/ia64/ffi.c (ffi_prep_closure_loc): Ditto.
+ * src/avr32/ffi.c (ffi_prep_closure_loc): Ditto.
+
+2011-02-11 Anthony Green <green@moxielogic.com>
+
+ * libtool-version: Update.
+ * Makefile.am (nodist_libffi_la_SOURCES): Add src/debug.c if
+ FFI_DEBUG.
+ (libffi_la_SOURCES): Remove src/debug.c
+ (EXTRA_DIST): Add src/debug.c
+ * Makefile.in: Rebuilt.
+
+2011-02-11 Anthony Green <green@moxielogic.com>
+
+ * src/sparc/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test,
+ just return FFI_BAD_ABI when things are wrong.
+
+2011-02-09 Stuart Shelton <srcshelton@gmail.com>
+
+ http://bugs.gentoo.org/show_bug.cgi?id=286911
+ * src/mips/ffitarget.h: Clean up error messages.
+ * src/java_raw_api.c (ffi_java_translate_args): Cast raw arg to
+ ffi_raw*.
+ * include/ffi.h.in: Add pragma for SGI compiler.
+
+2011-02-09 Anthony Green <green@moxielogic.com>
+
+ * configure.ac: Add powerpc64-*-darwin* support.
+
+2011-02-09 Anthony Green <green@moxielogic.com>
+
+ * README: Mention Interix.
+
+2011-02-09 Jonathan Callen <abcd@gentoo.org>
+
+ * configure.ac: Add Interix to win32/cygwin/mingw case.
+ * configure: Ditto.
+ * src/closures.c: Treat Interix like Cygwin, instead of as a
+ generic win32.
+
+2011-02-09 Anthony Green <green@moxielogic.com>
+
+ * testsuite/libffi.call/err_bad_typedef.c: Remove xfail.
+ * testsuite/libffi.call/err_bad_abi.c: Remove xfail.
+ * src/x86/ffi64.c (UNLIKELY, LIKELY): Define.
+ (ffi_prep_closure_loc): Check for bad ABI.
+ * src/prep_cif.c (UNLIKELY, LIKELY): Define.
+ (initialize_aggregate): Check for bad types.
+
+2011-02-09 Landon Fuller <landonf@plausible.coop>
+
+ * Makefile.am (EXTRA_DIST): Add build-ios.sh, src/arm/gentramp.sh,
+ src/arm/trampoline.S.
+ (nodist_libffi_la_SOURCES): Add src/arc/trampoline.S.
+ * configure.ac (FFI_EXEC_TRAMPOLINE_TABLE): Define.
+ * src/arm/ffi.c (ffi_trampoline_table)
+ (ffi_closure_trampoline_table_page, ffi_trampoline_table_entry)
+ (FFI_TRAMPOLINE_CODELOC_CONFIG, FFI_TRAMPOLINE_CONFIG_PAGE_OFFSET)
+ (FFI_TRAMPOLINE_COUNT, ffi_trampoline_lock, ffi_trampoline_tables)
+ (ffi_trampoline_table_alloc, ffi_closure_alloc, ffi_closure_free):
+ Define for FFI_EXEC_TRAMPOLINE_TABLE case (iOS).
+ (ffi_prep_closure_loc): Handl FFI_EXEC_TRAMPOLINE_TABLE case
+ separately.
+ * src/arm/sysv.S: Handle Apple iOS host.
+ * src/closures.c: Handle FFI_EXEC_TRAMPOLINE_TABLE case.
+ * build-ios.sh: New file.
+ * fficonfig.h.in, configure, Makefile.in: Rebuilt.
+ * README: Mention ARM iOS.
+
+2011-02-08 Oren Held <orenhe@il.ibm.com>
+
+ * src/dlmalloc.c (_STRUCT_MALLINFO): Define in order to avoid
+ redefinition of mallinfo on HP-UX.
+
+2011-02-08 Ginn Chen <ginn.chen@oracle.com>
+
+ * src/sparc/ffi.c (ffi_call): Make compatible with Solaris Studio
+ aggregate return ABI.
+
+2011-02-08 Ed <ed@kdtc.net>
+
+ * src/powerpc/asm.h: Fix grammar nit in comment.
+
+2011-02-11 Anthony Green <green@moxielogic.com>
+
+ From Tom Honermann <tom.honermann@oracle.com>:
+ * src/powerpc/aix.S (ffi_call_AIX): Support for xlc toolchain on
+ AIX. Declare .ffi_prep_args. Insert nops after branch
+ instructions so that the AIX linker can insert TOC reload
+ instructions.
+ * src/powerpc/aix_closure.S: Declare .ffi_closure_helper_DARWIN.
+
+2011-02-08 Uli Link <ul.mcamafia@linkitup.de>
+
+ * include/ffi.h.in (FFI_64_BIT_MAX): Define and use.
+
+2011-02-08 Rafael Avila de Espindola <respindola@mozilla.com>
+
+ * configure.ac: Fix x86 test for pc related relocs.
+ * confifure: Rebuilt.
+
+2011-02-07 Joel Sherrill <joel.sherrill@oarcorp.com>
+
+ * libffi/src/m68k/ffi.c: Add RTEMS support for cache flushing.
+ Handle case when CPU variant does not have long double support.
+ * libffi/src/m68k/sysv.S: Add support for mc68000, Coldfire,
+ and cores with soft floating point.
+
+2011-02-07 Joel Sherrill <joel.sherrill@oarcorp.com>
+
+ * configure.ac: Add mips*-*-rtems* support.
+ * configure: Regenerate.
+ * src/mips/ffitarget.h: Ensure needed constants are available
+ for targets which do not have sgidefs.h.
+
+2011-01-26 Dave Korn <dave.korn.cygwin@gmail.com>
+
+ PR target/40125
+ * configure.ac (AM_LTLDFLAGS): Add -bindir option for windows DLLs.
+ * configure: Regenerate.
+
+2010-12-18 Iain Sandoe <iains@gcc.gnu.org>
+
+ PR libffi/29152
+ PR libffi/42378
+ * src/powerpc/darwin_closure.S: Provide Darwin64 implementation,
+ update comments.
+ * src/powerpc/ffitarget.h (POWERPC_DARWIN64): New,
+ (FFI_TRAMPOLINE_SIZE): Update for Darwin64.
+ * src/powerpc/darwin.S: Provide Darwin64 implementation,
+ update comments.
+ * src/powerpc/ffi_darwin.c: Likewise.
+
+2010-12-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * configure.ac (libffi_cv_as_ascii_pseudo_op): Use double
+ backslashes.
+ (libffi_cv_as_string_pseudo_op): Likewise.
+ * configure: Regenerate.
+
+2010-12-03 Chung-Lin Tang <cltang@codesourcery.com>
+
+ * src/arm/sysv.S (ffi_closure_SYSV): Add UNWIND to .pad directive.
+ (ffi_closure_VFP): Same.
+ (ffi_call_VFP): Move down to before ffi_closure_VFP. Add '.fpu vfp'
+ directive.
+
+2010-12-01 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * testsuite/libffi.call/ffitest.h [__sgi] (PRId64, PRIu64): Define.
+ (PRIuPTR): Define.
+
+2010-11-29 Richard Henderson <rth@redhat.com>
+ Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * src/x86/sysv.S (FDE_ENCODING, FDE_ENCODE): Define.
+ (.eh_frame): Use FDE_ENCODING.
+ (.LASFDE1, .LASFDE2, LASFDE3): Simplify with FDE_ENCODE.
+
+2010-11-22 Jacek Caban <jacek@codeweavers.com>
+
+ * configure.ac: Check for symbol underscores on mingw-w64.
+ * configure: Rebuilt.
+ * src/x86/win64.S: Correctly access extern symbols in respect to
+ underscores.
+
+2010-11-15 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * testsuite/lib/libffi-dg.exp: Rename ...
+ * testsuite/lib/libffi.exp: ... to this.
+ * libffi/testsuite/libffi.call/call.exp: Don't load libffi-dg.exp.
+ * libffi/testsuite/libffi.special/special.exp: Likewise.
+
+2010-10-28 Chung-Lin Tang <cltang@codesourcery.com>
+
+ * src/arm/ffi.c (ffi_prep_args): Add VFP register argument handling
+ code, new parameter, and return value. Update comments.
+ (ffi_prep_cif_machdep): Add case for VFP struct return values. Add
+ call to layout_vfp_args().
+ (ffi_call_SYSV): Update declaration.
+ (ffi_call_VFP): New declaration.
+ (ffi_call): Add VFP struct return conditions. Call ffi_call_VFP()
+ when ABI is FFI_VFP.
+ (ffi_closure_VFP): New declaration.
+ (ffi_closure_SYSV_inner): Add new vfp_args parameter, update call to
+ ffi_prep_incoming_args_SYSV().
+ (ffi_prep_incoming_args_SYSV): Update parameters. Add VFP argument
+ case handling.
+ (ffi_prep_closure_loc): Pass ffi_closure_VFP to trampoline
+ construction under VFP hard-float.
+ (rec_vfp_type_p): New function.
+ (vfp_type_p): Same.
+ (place_vfp_arg): Same.
+ (layout_vfp_args): Same.
+ * src/arm/ffitarget.h (ffi_abi): Add FFI_VFP. Define FFI_DEFAULT_ABI
+ based on __ARM_PCS_VFP.
+ (FFI_EXTRA_CIF_FIELDS): Define for adding VFP hard-float specific
+ fields.
+ (FFI_TYPE_STRUCT_VFP_FLOAT): Define internally used type code.
+ (FFI_TYPE_STRUCT_VFP_DOUBLE): Same.
+ * src/arm/sysv.S (ffi_call_SYSV): Change call of ffi_prep_args() to
+ direct call. Move function pointer load upwards.
+ (ffi_call_VFP): New function.
+ (ffi_closure_VFP): Same.
+
+ * testsuite/lib/libffi-dg.exp (check-flags): New function.
+ (dg-skip-if): New function.
+ * testsuite/libffi.call/cls_double_va.c: Skip if target is arm*-*-*
+ and compiler options include -mfloat-abi=hard.
+ * testsuite/libffi.call/cls_longdouble_va.c: Same.
+
+2010-10-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR libffi/45677
+ * src/x86/ffi64.c (ffi_prep_cif_machdep): Ensure cif->bytes is
+ a multiple of 8.
+ * testsuite/libffi.call/many2.c: New test.
+
+2010-08-20 Mark Wielaard <mjw@redhat.com>
+
+ * src/closures.c (open_temp_exec_file_mnt): Check if getmntent_r
+ returns NULL.
+
+2010-08-09 Andreas Tobler <andreast@fgznet.ch>
+
+ * configure.ac: Add target powerpc64-*-freebsd*.
+ * configure: Regenerate.
+ * testsuite/libffi.call/cls_align_longdouble_split.c: Pass
+ -mlong-double-128 only to linux targets.
+ * testsuite/libffi.call/cls_align_longdouble_split2.c: Likewise.
+ * testsuite/libffi.call/cls_longdouble.c: Likewise.
+ * testsuite/libffi.call/huge_struct.c: Likewise.
+
+2010-08-05 Dan Witte <dwitte@mozilla.com>
+
+ * Makefile.am: Pass FFI_DEBUG define to msvcc.sh for linking to the
+ debug CRT when --enable-debug is given.
+ * configure.ac: Define it.
+ * msvcc.sh: Translate -g and -DFFI_DEBUG appropriately.
+
+2010-08-04 Dan Witte <dwitte@mozilla.com>
+
+ * src/x86/ffitarget.h: Add X86_ANY define for all x86/x86_64
+ platforms.
+ * src/x86/ffi.c: Remove redundant ifdef checks.
+ * 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.
+
+2010-08-03 Neil Rashbrooke <neil@parkwaycc.co.uk>
+
+ * msvcc.sh: Don't pass -safeseh to ml64 because behavior is buggy.
+
+2010-07-22 Dan Witte <dwitte@mozilla.com>
+
+ * src/*/ffitarget.h: Make FFI_LAST_ABI one past the last valid ABI.
+ * src/prep_cif.c: Fix ABI assertion.
+ * src/cris/ffi.c: Ditto.
+
+2010-07-10 Evan Phoenix <evan@fallingsnow.net>
+
+ * src/closures.c (selinux_enabled_check): Fix strncmp usage bug.
+
+2010-07-07 Dan Horák <dan@danny.cz>
+
+ * include/ffi.h.in: Protect #define with #ifndef.
+ * src/powerpc/ffitarget.h: Ditto.
+ * src/s390/ffitarget.h: Ditto.
+ * src/sparc/ffitarget.h: Ditto.
+
+2010-07-07 Neil Roberts <neil@linux.intel.com>
+
+ * src/x86/sysv.S (ffi_call_SYSV): Align the stack pointer to
+ 16-bytes.
+
+2010-07-02 Jakub Jelinek <jakub@redhat.com>
+
+ * Makefile.am (AM_MAKEFLAGS): Pass also mandir to submakes.
+ * Makefile.in: Regenerated.
+
+2010-05-19 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * configure.ac (libffi_cv_as_x86_pcrel): Check for illegal in as
+ output, too.
+ (libffi_cv_as_ascii_pseudo_op): Check for .ascii.
+ (libffi_cv_as_string_pseudo_op): Check for .string.
+ * configure: Regenerate.
+ * fficonfig.h.in: Regenerate.
+ * src/x86/sysv.S (.eh_frame): Use .ascii, .string or error.
+
+2010-05-11 Dan Witte <dwitte@mozilla.com>
+
+ * doc/libffi.tex: Document previous change.
+
+2010-05-11 Makoto Kato <m_kato@ga2.so-net.ne.jp>
+
+ * src/x86/ffi.c (ffi_call): Don't copy structs passed by value.
+
+2010-05-05 Michael Kohler <michaelkohler@live.com>
+
+ * src/dlmalloc.c (dlfree): Fix spelling.
+ * src/ia64/ffi.c (ffi_prep_cif_machdep): Ditto.
+ * configure.ac: Ditto.
+ * configure: Rebuilt.
+
+2010-04-13 Dan Witte <dwitte@mozilla.com>
+
+ * msvcc.sh: Build with -W3 instead of -Wall.
+ * src/powerpc/ffi_darwin.c: Remove build warnings.
+ * src/x86/ffi.c: Ditto.
+ * src/x86/ffitarget.h: Ditto.
+
+2010-04-12 Dan Witte <dwitte@mozilla.com>
+ Walter Meinl <wuno@lsvw.de>
+
+ * configure.ac: Add OS/2 support.
+ * configure: Rebuilt.
+ * src/closures.c: Ditto.
+ * src/dlmalloc.c: Ditto.
+ * src/x86/win32.S: Ditto.
+
+2010-04-07 Jakub Jelinek <jakub@redhat.com>
+
+ * testsuite/libffi.call/err_bad_abi.c: Remove unused args variable.
+
+2010-04-02 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * Makefile.in: Regenerate.
+ * aclocal.m4: Regenerate.
+ * include/Makefile.in: Regenerate.
+ * man/Makefile.in: Regenerate.
+ * testsuite/Makefile.in: Regenerate.
+
+2010-03-30 Dan Witte <dwitte@mozilla.com>
+
+ * msvcc.sh: Disable build warnings.
+ * README (tested): Clarify windows build procedure.
+
+2010-03-15 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * configure.ac (libffi_cv_as_x86_64_unwind_section_type): New test.
+ * configure: Regenerate.
+ * fficonfig.h.in: Regenerate.
+ * libffi/src/x86/unix64.S (.eh_frame)
+ [HAVE_AS_X86_64_UNWIND_SECTION_TYPE]: Use @unwind section type.
+
+2010-03-14 Matthias Klose <doko@ubuntu.com>
+
+ * src/x86/ffi64.c: Fix typo in comment.
+ * src/x86/ffi.c: Use /* ... */ comment style.
+
+2010-02-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * doc/libffi.texi (The Closure API): Fix typo.
+ * doc/libffi.info: Remove.
+
+2010-02-15 Matthias Klose <doko@ubuntu.com>
+
+ * src/arm/sysv.S (__ARM_ARCH__): Define for processor
+ __ARM_ARCH_7EM__.
+
+2010-01-15 Anthony Green <green@redhat.com>
+
+ * README: Add notes on building with Microsoft Visual C++.
+
+2010-01-15 Daniel Witte <dwitte@mozilla.com>
+
+ * msvcc.sh: New file.
+
+ * src/x86/win32.S: Port assembly routines to MSVC and #ifdef.
+ * src/x86/ffi.c: Tweak function declaration and remove excess
+ parens.
+ * include/ffi.h.in: Add __declspec(align(8)) to typedef struct
+ ffi_closure.
+
+ * src/x86/ffi.c: Merge ffi_call_SYSV and ffi_call_STDCALL into new
+ function ffi_call_win32 on X86_WIN32.
+ * src/x86/win32.S (ffi_call_SYSV): Rename to ffi_call_win32.
+ (ffi_call_STDCALL): Remove.
+
+ * src/prep_cif.c (ffi_prep_cif): Move stack space allocation code
+ to ffi_prep_cif_machdep for x86.
+ * src/x86/ffi.c (ffi_prep_cif_machdep): To here.
+
+2010-01-15 Oliver Kiddle <okiddle@yahoo.co.uk>
+
+ * src/x86/ffitarget.h (ffi_abi): Check for __i386 and __amd64 for
+ Sun Studio compiler compatibility.
+
+2010-01-12 Conrad Irwin <conrad.irwin@gmail.com>
+
+ * doc/libffi.texi: Add closure example.
+
+2010-01-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR libffi/40701
+ * testsuite/libffi.call/ffitest.h [__alpha__ && __osf__] (PRIdLL,
+ PRIuLL, PRId64, PRIu64, PRIuPTR): Define.
+ * testsuite/libffi.call/cls_align_sint64.c: Add -Wno-format on
+ alpha*-dec-osf*.
+ * testsuite/libffi.call/cls_align_uint64.c: Likewise.
+ * testsuite/libffi.call/cls_ulonglong.c: Likewise.
+ * testsuite/libffi.call/return_ll1.c: Likewise.
+ * testsuite/libffi.call/stret_medium2.c: Likewise.
+ * testsuite/libffi.special/ffitestcxx.h (allocate_mmap): Cast
+ MAP_FAILED to char *.
+
+2010-01-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * src/mips/n32.S: Use .abicalls and .eh_frame with __GNUC__.
+
+2009-12-31 Anthony Green <green@redhat.com>
+
+ * README: Update for libffi 3.0.9.
+
+2009-12-27 Matthias Klose <doko@ubuntu.com>
+
+ * configure.ac (HAVE_LONG_DOUBLE): Define for mips when
+ appropriate.
+ * configure: Rebuilt.
+
+2009-12-26 Anthony Green <green@redhat.com>
+
+ * testsuite/libffi.call/cls_longdouble_va.c: Mark as xfail for
+ avr32*-*-*.
+ * testsuite/libffi.call/cls_double_va.c: Ditto.
+
+2009-12-26 Andreas Tobler <a.tobler@schweiz.org>
+
+ * testsuite/libffi.call/ffitest.h: Conditionally include stdint.h
+ and inttypes.h.
+ * testsuite/libffi.special/unwindtest.cc: Ditto.
+
+2009-12-26 Andreas Tobler <a.tobler@schweiz.org>
+
+ * configure.ac: Add amd64-*-openbsd*.
+ * configure: Rebuilt.
+ * testsuite/lib/libffi-dg.exp (libffi_target_compile): Link
+ openbsd programs with -lpthread.
+
+2009-12-26 Anthony Green <green@redhat.com>
+
+ * testsuite/libffi.call/cls_double_va.c,
+ testsuite/libffi.call/cls_longdouble.c,
+ testsuite/libffi.call/cls_longdouble_va.c,
+ testsuite/libffi.call/cls_pointer.c,
+ testsuite/libffi.call/cls_pointer_stack.c: Remove xfail for
+ mips*-*-* and arm*-*-*.
+ * testsuite/libffi.call/cls_align_longdouble_split.c,
+ testsuite/libffi.call/cls_align_longdouble_split2.c,
+ testsuite/libffi.call/stret_medium2.c,
+ testsuite/libffi.call/stret_medium.c,
+ testsuite/libffi.call/stret_large.c,
+ testsuite/libffi.call/stret_large2.c: Remove xfail for arm*-*-*.
+
+2009-12-31 Kay Tietz <ktietz70@googlemail.com>
+
+ * testsuite/libffi.call/ffitest.h,
+ testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRuLL): Fix
+ definitions.
+
+2009-12-31 Carlo Bramini <carlo.bramix@libero.it>
+
+ * configure.ac (AM_LTLDFLAGS): Define for windows hosts.
+ * Makefile.am (libffi_la_LDFLAGS): Add AM_LTLDFLAGS.
+ * configure: Rebuilt.
+ * Makefile.in: Rebuilt.
+
+2009-12-31 Anthony Green <green@redhat.com>
+ Blake Chaffin.
+
+ * testsuite/libffi.call/huge_struct.c: New test case from Blake
+ Chaffin @ Apple.
+
+2009-12-28 David Edelsohn <edelsohn@gnu.org>
+
+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Copy abi and nargs to
+ local variables.
+ (aix_adjust_aggregate_sizes): New function.
+ (ffi_prep_cif_machdep): Call it.
+
+2009-12-26 Andreas Tobler <a.tobler@schweiz.org>
+
+ * configure.ac: Define FFI_MMAP_EXEC_WRIT for the given targets.
+ * configure: Regenerate.
+ * fficonfig.h.in: Likewise.
+ * src/closures.c: Remove the FFI_MMAP_EXEC_WRIT definition for
+ Solaris/x86.
+
+2009-12-26 Andreas Schwab <schwab@linux-m68k.org>
+
+ * src/powerpc/ffi.c (ffi_prep_args_SYSV): Advance intarg_count
+ when a float arguments is passed in memory.
+ (ffi_closure_helper_SYSV): Mark general registers as used up when
+ a 64bit or soft-float long double argument is passed in memory.
+
+2009-12-25 Matthias Klose <doko@ubuntu.com>
+
+ * man/ffi_call.3: Fix #include in examples.
+ * doc/libffi.texi: Add dircategory.
+
+2009-12-25 Frank Everdij <f.p.x.everdij@tudelft.nl>
+
+ * include/ffi.h.in: Placed '__GNUC__' ifdef around
+ '__attribute__((aligned(8)))' in ffi_closure, fixes compile for
+ IRIX MIPSPro c99.
+ * include/ffi_common.h: Added '__sgi' define to non
+ '__attribute__((__mode__()))' integer typedefs.
+ * src/mips/ffi.c (ffi_call, ffi_closure_mips_inner_O32,
+ ffi_closure_mips_inner_N32): Added 'defined(_MIPSEB)' to BE check.
+ (ffi_closure_mips_inner_O32, ffi_closure_mips_inner_N32): Added
+ FFI_LONGDOUBLE support and alignment(N32 only).
+ * src/mips/ffitarget.h: Corrected '#include <sgidefs.h>' for IRIX and
+ fixed non '__attribute__((__mode__()))' integer typedefs.
+ * src/mips/n32.S: Put '#ifdef linux' around '.abicalls' and '.eh_frame'
+ since they are Linux/GNU Assembler specific.
+
+2009-12-25 Bradley Smith <brad@brad-smith.co.uk>
+
+ * configure.ac, Makefile.am, src/avr32/ffi.c,
+ src/avr32/ffitarget.h,
+ src/avr32/sysv.S: Add AVR32 port.
+ * configure, Makefile.in: Rebuilt.
+
+2009-12-21 Andreas Tobler <a.tobler@schweiz.org>
+
+ * configure.ac: Make i?86 build on FreeBSD and OpenBSD.
+ * configure: Regenerate.
+
+2009-12-15 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * testsuite/libffi.call/ffitest.h: Define PRIuPTR on PA HP-UX.
+
+2009-12-13 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * src/pa/ffi.c (ffi_closure_inner_pa32): Handle FFI_TYPE_LONGDOUBLE
+ type on HP-UX.
+
+2009-12-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long
+ double' arguments.
+
+2009-12-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * testsuite/libffi.call/ffitest.h: Define PRIuPTR on Solaris < 10.
+
+2009-12-10 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR libffi/40700
+ * src/closures.c [X86_64 && __sun__ && __svr4__]
+ (FFI_MMAP_EXEC_WRIT): Define.
+
+2009-12-08 David Daney <ddaney@caviumnetworks.com>
+
+ * testsuite/libffi.call/stret_medium.c: Remove xfail for mips*-*-*
+ * testsuite/libffi.call/cls_align_longdouble_split2.c: Same.
+ * testsuite/libffi.call/stret_large.c: Same.
+ * testsuite/libffi.call/cls_align_longdouble_split.c: Same.
+ * testsuite/libffi.call/stret_large2.c: Same.
+ * testsuite/libffi.call/stret_medium2.c: Same.
+
+2009-12-07 David Edelsohn <edelsohn@gnu.org>
+
+ * src/powerpc/aix_closure.S (libffi_closure_ASM): Fix tablejump
+ typo.
+
+2009-12-05 David Edelsohn <edelsohn@gnu.org>
+
+ * src/powerpc/aix.S: Update AIX32 code to be consistent with AIX64
+ code.
+ * src/powerpc/aix_closure.S: Same.
+
+2009-12-05 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * Makefile.in: Regenerate.
+ * configure: Regenerate.
+ * include/Makefile.in: Regenerate.
+ * man/Makefile.in: Regenerate.
+ * testsuite/Makefile.in: Regenerate.
+
+2009-12-04 David Edelsohn <edelsohn@gnu.org>
+
+ * src/powerpc/aix_closure.S: Reorganize 64-bit code to match
+ linux64_closure.S.
+
+2009-12-04 Uros Bizjak <ubizjak@gmail.com>
+
+ PR libffi/41908
+ * src/x86/ffi64.c (classify_argument): Update from
+ gcc/config/i386/i386.c.
+ (ffi_closure_unix64_inner): Do not use the address of two consecutive
+ SSE registers directly.
+ * testsuite/libffi.call/cls_dbls_struct.c (main): Remove xfail
+ for x86_64 linux targets.
+
+2009-12-04 David Edelsohn <edelsohn@gnu.org>
+
+ * src/powerpc/ffi_darwin.c (ffi_closure_helper_DARWIN): Increment
+ pfr for long double split between fpr13 and stack.
+
+2009-12-03 David Edelsohn <edelsohn@gnu.org>
+
+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Increment next_arg and
+ fparg_count twice for long double.
+
+2009-12-03 David Edelsohn <edelsohn@gnu.org>
+
+ PR libffi/42243
+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Remove extra parentheses.
+
+2009-12-03 Uros Bizjak <ubizjak@gmail.com>
+
+ * testsuite/libffi.call/cls_longdouble_va.c (main): Fix format string.
+ Remove xfails for x86 linux targets.
+
+2009-12-02 David Edelsohn <edelsohn@gnu.org>
+
+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Fix typo in INT64
+ case.
+
+2009-12-01 David Edelsohn <edelsohn@gnu.org>
+
+ * src/powerpc/aix.S (ffi_call_AIX): Convert to more standard
+ register usage. Call ffi_prep_args directly. Add long double
+ return value support.
+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Double arg increment
+ applies to FFI_TYPE_DOUBLE. Correct fpr_base increment typo.
+ Separate FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases.
+ (ffi_prep_cif_machdep): Only 16 byte stack alignment in 64 bit
+ mode.
+ (ffi_closure_helper_DARWIN): Remove nf and ng counters. Move temp
+ into case.
+ * src/powerpc/aix_closure.S: Maintain 16 byte stack alignment.
+ Allocate result area between params and FPRs.
+
+2009-11-30 David Edelsohn <edelsohn@gnu.org>
+
+ PR target/35484
+ * src/powerpc/ffitarget.h (POWERPC64): Define for PPC64 Linux and
+ AIX64.
+ * src/powerpc/aix.S: Implement AIX64 version.
+ * src/powerpc/aix_closure.S: Implement AIX64 version.
+ (ffi_closure_ASM): Use extsb, lha and displament addresses.
+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Implement AIX64
+ support.
+ (ffi_prep_cif_machdep): Same.
+ (ffi_call): Same.
+ (ffi_closure_helper_DARWIN): Same.
+
+2009-11-02 Andreas Tobler <a.tobler@schweiz.org>
+
+ PR libffi/41908
+ * testsuite/libffi.call/testclosure.c: New test.
+
+2009-09-28 Kai Tietz <kai.tietz@onevision.com>
+
+ * src/x86/win64.S (_ffi_call_win64 stack): Remove for gnu
+ assembly version use of ___chkstk.
+
+2009-09-23 Matthias Klose <doko@ubuntu.com>
+
+ PR libffi/40242, PR libffi/41443
+ * src/arm/sysv.S (__ARM_ARCH__): Define for processors
+ __ARM_ARCH_6T2__, __ARM_ARCH_6M__, __ARM_ARCH_7__,
+ __ARM_ARCH_7A__, __ARM_ARCH_7R__, __ARM_ARCH_7M__.
+ Change the conditionals to __SOFTFP__ || __ARM_EABI__
+ for -mfloat-abi=softfp to work.
+
+2009-09-17 Loren J. Rittle <ljrittle@acm.org>
+
+ PR testsuite/32843 (strikes again)
+ * src/x86/ffi.c (ffi_prep_cif_machdep): Add X86_FREEBSD to
+ enable proper extension on char and short.
+
+2009-09-15 David Daney <ddaney@caviumnetworks.com>
+
+ * src/java_raw_api.c (ffi_java_raw_to_rvalue): Remove special
+ handling for FFI_TYPE_POINTER.
+ * src/mips/ffitarget.h (FFI_TYPE_STRUCT_D_SOFT,
+ FFI_TYPE_STRUCT_F_SOFT, FFI_TYPE_STRUCT_DD_SOFT,
+ FFI_TYPE_STRUCT_FF_SOFT, FFI_TYPE_STRUCT_FD_SOFT,
+ FFI_TYPE_STRUCT_DF_SOFT, FFI_TYPE_STRUCT_SOFT): New defines.
+ (FFI_N32_SOFT_FLOAT, FFI_N64_SOFT_FLOAT): New ffi_abi enumerations.
+ (enum ffi_abi): Set FFI_DEFAULT_ABI for soft-float.
+ * src/mips/n32.S (ffi_call_N32): Add handling for soft-float
+ structure and pointer returns.
+ (ffi_closure_N32): Add handling for pointer returns.
+ * src/mips/ffi.c (ffi_prep_args, calc_n32_struct_flags,
+ calc_n32_return_struct_flags): Handle soft-float.
+ (ffi_prep_cif_machdep): Handle soft-float, fix pointer handling.
+ (ffi_call_N32): Declare proper argument types.
+ (ffi_call, copy_struct_N32, ffi_closure_mips_inner_N32): Handle
+ soft-float.
+
+2009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * configure.ac (AC_PREREQ): Bump to 2.64.
+
+2009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * Makefile.am (install-html, install-pdf): Remove.
+ * Makefile.in: Regenerate.
+
+ * Makefile.in: Regenerate.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+ * fficonfig.h.in: Regenerate.
+ * include/Makefile.in: Regenerate.
+ * man/Makefile.in: Regenerate.
+ * testsuite/Makefile.in: Regenerate.
+
+2009-07-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * configure.ac (_AC_ARG_VAR_PRECIOUS): Use m4_rename_force.
+
+2009-07-24 Dave Korn <dave.korn.cygwin@gmail.com>
+
+ PR libffi/40807
+ * src/x86/ffi.c (ffi_prep_cif_machdep): Also use sign/zero-extending
+ return types for X86_WIN32.
+ * src/x86/win32.S (_ffi_call_SYSV): Handle omitted return types.
+ (_ffi_call_STDCALL, _ffi_closure_SYSV, _ffi_closure_raw_SYSV,
+ _ffi_closure_STDCALL): Likewise.
+
+ * src/closures.c (is_selinux_enabled): Define to const 0 for Cygwin.
+ (dlmmap, dlmunmap): Also use these functions on Cygwin.
+
+2009-07-11 Richard Sandiford <rdsandiford@googlemail.com>
+
+ PR testsuite/40699
+ PR testsuite/40707
+ PR testsuite/40709
+ * testsuite/lib/libffi-dg.exp: Revert 2009-07-02, 2009-07-01 and
+ 2009-06-30 commits.
+
+2009-07-01 Richard Sandiford <r.sandiford@uk.ibm.com>
+
+ * testsuite/lib/libffi-dg.exp (libffi-init): Set ld_library_path
+ to "" before adding paths. (This reinstates an assignment that
+ was removed by my 2009-06-30 commit, but changes the initial
+ value from "." to "".)
+
+2009-07-01 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR testsuite/40601
+ * testsuite/lib/libffi-dg.exp (libffi-init): Properly set
+ gccdir. Adjust ld_library_path for gcc only if gccdir isn't
+ empty.
+
+2009-06-30 Richard Sandiford <r.sandiford@uk.ibm.com>
+
+ * testsuite/lib/libffi-dg.exp (libffi-init): Don't add "."
+ to ld_library_path. Use add_path. Add just find_libgcc_s
+ to ld_library_path, not every libgcc multilib directory.
+
+2009-06-16 Wim Lewis <wiml@hhhh.org>
+
+ * src/powerpc/ffi.c: Avoid clobbering cr3 and cr4, which are
+ supposed to be callee-saved.
+ * src/powerpc/sysv.S (small_struct_return_value): Fix overrun of
+ return buffer for odd-size structs.
+
+2009-06-16 Andreas Tobler <a.tobler@schweiz.org>
+
+ PR libffi/40444
+ * testsuite/lib/libffi-dg.exp (libffi_target_compile): Add
+ allow_stack_execute for Darwin.
+
+2009-06-16 Andrew Haley <aph@redhat.com>
+
+ * configure.ac (TARGETDIR): Add missing blank lines.
+ * configure: Regenerate.
+
+2009-06-16 Andrew Haley <aph@redhat.com>
+
+ * testsuite/libffi.call/cls_align_sint64.c,
+ testsuite/libffi.call/cls_align_uint64.c,
+ testsuite/libffi.call/cls_longdouble_va.c,
+ testsuite/libffi.call/cls_ulonglong.c,
+ testsuite/libffi.call/return_ll1.c,
+ testsuite/libffi.call/stret_medium2.c: Fix printf format
+ specifiers.
+ * testsuite/libffi.call/ffitest.h,
+ testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRIuLL): Define.
+
+2009-06-15 Andrew Haley <aph@redhat.com>
+
+ * testsuite/libffi.call/err_bad_typedef.c: xfail everywhere.
+ * testsuite/libffi.call/err_bad_abi.c: Likewise.
+
+2009-06-12 Andrew Haley <aph@redhat.com>
+
+ * Makefile.am: Remove info_TEXINFOS.
+
+2009-06-12 Andrew Haley <aph@redhat.com>
+
+ * ChangeLog.libffi: testsuite/libffi.call/cls_align_sint64.c,
+ testsuite/libffi.call/cls_align_uint64.c,
+ testsuite/libffi.call/cls_ulonglong.c,
+ testsuite/libffi.call/return_ll1.c,
+ testsuite/libffi.call/stret_medium2.c: Fix printf format
+ specifiers.
+ testsuite/libffi.special/unwindtest.cc: include stdint.h.
+
+2009-06-11 Timothy Wall <twall@users.sf.net>
+
+ * Makefile.am,
+ configure.ac,
+ include/ffi.h.in,
+ include/ffi_common.h,
+ src/closures.c,
+ src/dlmalloc.c,
+ src/x86/ffi.c,
+ src/x86/ffitarget.h,
+ src/x86/win64.S (new),
+ README: Added win64 support (mingw or MSVC)
+ * Makefile.in,
+ include/Makefile.in,
+ man/Makefile.in,
+ testsuite/Makefile.in,
+ configure,
+ aclocal.m4: Regenerated
+ * ltcf-c.sh: properly escape cygwin/w32 path
+ * man/ffi_call.3: Clarify size requirements for return value.
+ * src/x86/ffi64.c: Fix filename in comment.
+ * src/x86/win32.S: Remove unused extern.
+
+ * testsuite/libffi.call/closure_fn0.c,
+ testsuite/libffi.call/closure_fn1.c,
+ testsuite/libffi.call/closure_fn2.c,
+ testsuite/libffi.call/closure_fn3.c,
+ testsuite/libffi.call/closure_fn4.c,
+ testsuite/libffi.call/closure_fn5.c,
+ testsuite/libffi.call/closure_fn6.c,
+ testsuite/libffi.call/closure_stdcall.c,
+ testsuite/libffi.call/cls_12byte.c,
+ testsuite/libffi.call/cls_16byte.c,
+ testsuite/libffi.call/cls_18byte.c,
+ testsuite/libffi.call/cls_19byte.c,
+ testsuite/libffi.call/cls_1_1byte.c,
+ testsuite/libffi.call/cls_20byte.c,
+ testsuite/libffi.call/cls_20byte1.c,
+ testsuite/libffi.call/cls_24byte.c,
+ testsuite/libffi.call/cls_2byte.c,
+ testsuite/libffi.call/cls_3_1byte.c,
+ testsuite/libffi.call/cls_3byte1.c,
+ testsuite/libffi.call/cls_3byte2.c,
+ testsuite/libffi.call/cls_4_1byte.c,
+ testsuite/libffi.call/cls_4byte.c,
+ testsuite/libffi.call/cls_5_1_byte.c,
+ testsuite/libffi.call/cls_5byte.c,
+ testsuite/libffi.call/cls_64byte.c,
+ testsuite/libffi.call/cls_6_1_byte.c,
+ testsuite/libffi.call/cls_6byte.c,
+ testsuite/libffi.call/cls_7_1_byte.c,
+ testsuite/libffi.call/cls_7byte.c,
+ testsuite/libffi.call/cls_8byte.c,
+ testsuite/libffi.call/cls_9byte1.c,
+ testsuite/libffi.call/cls_9byte2.c,
+ testsuite/libffi.call/cls_align_double.c,
+ testsuite/libffi.call/cls_align_float.c,
+ testsuite/libffi.call/cls_align_longdouble.c,
+ testsuite/libffi.call/cls_align_longdouble_split.c,
+ testsuite/libffi.call/cls_align_longdouble_split2.c,
+ testsuite/libffi.call/cls_align_pointer.c,
+ testsuite/libffi.call/cls_align_sint16.c,
+ testsuite/libffi.call/cls_align_sint32.c,
+ testsuite/libffi.call/cls_align_sint64.c,
+ testsuite/libffi.call/cls_align_uint16.c,
+ testsuite/libffi.call/cls_align_uint32.c,
+ testsuite/libffi.call/cls_align_uint64.c,
+ testsuite/libffi.call/cls_dbls_struct.c,
+ testsuite/libffi.call/cls_double.c,
+ testsuite/libffi.call/cls_double_va.c,
+ testsuite/libffi.call/cls_float.c,
+ testsuite/libffi.call/cls_longdouble.c,
+ testsuite/libffi.call/cls_longdouble_va.c,
+ testsuite/libffi.call/cls_multi_schar.c,
+ testsuite/libffi.call/cls_multi_sshort.c,
+ testsuite/libffi.call/cls_multi_sshortchar.c,
+ testsuite/libffi.call/cls_multi_uchar.c,
+ testsuite/libffi.call/cls_multi_ushort.c,
+ testsuite/libffi.call/cls_multi_ushortchar.c,
+ testsuite/libffi.call/cls_pointer.c,
+ testsuite/libffi.call/cls_pointer_stack.c,
+ testsuite/libffi.call/cls_schar.c,
+ testsuite/libffi.call/cls_sint.c,
+ testsuite/libffi.call/cls_sshort.c,
+ testsuite/libffi.call/cls_uchar.c,
+ testsuite/libffi.call/cls_uint.c,
+ testsuite/libffi.call/cls_ulonglong.c,
+ testsuite/libffi.call/cls_ushort.c,
+ testsuite/libffi.call/err_bad_abi.c,
+ testsuite/libffi.call/err_bad_typedef.c,
+ testsuite/libffi.call/float2.c,
+ testsuite/libffi.call/huge_struct.c,
+ testsuite/libffi.call/nested_struct.c,
+ testsuite/libffi.call/nested_struct1.c,
+ testsuite/libffi.call/nested_struct10.c,
+ testsuite/libffi.call/nested_struct2.c,
+ testsuite/libffi.call/nested_struct3.c,
+ testsuite/libffi.call/nested_struct4.c,
+ testsuite/libffi.call/nested_struct5.c,
+ testsuite/libffi.call/nested_struct6.c,
+ testsuite/libffi.call/nested_struct7.c,
+ testsuite/libffi.call/nested_struct8.c,
+ testsuite/libffi.call/nested_struct9.c,
+ testsuite/libffi.call/problem1.c,
+ testsuite/libffi.call/return_ldl.c,
+ testsuite/libffi.call/return_ll1.c,
+ testsuite/libffi.call/stret_large.c,
+ testsuite/libffi.call/stret_large2.c,
+ testsuite/libffi.call/stret_medium.c,
+ testsuite/libffi.call/stret_medium2.c,
+ testsuite/libffi.special/unwindtest.cc: use ffi_closure_alloc instead
+ of checking for MMAP. Use intptr_t instead of long casts.
+
+2009-06-11 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * testsuite/libffi.call/cls_longdouble_va.c: Add xfail sh*-*-linux-*.
+ * testsuite/libffi.call/err_bad_abi.c: Add xfail sh*-*-*.
+ * testsuite/libffi.call/err_bad_typedef.c: Likewise.
+
+2009-06-09 Andrew Haley <aph@redhat.com>
+
+ * src/x86/freebsd.S: Add missing file.
+
+2009-06-08 Andrew Haley <aph@redhat.com>
+
+ Import from libffi 3.0.8:
+
+ * doc/libffi.texi: New file.
+ * doc/libffi.info: Likewise.
+ * doc/stamp-vti: Likewise.
+ * man/Makefile.am: New file.
+ * man/ffi_call.3: New file.
+
+ * Makefile.am (EXTRA_DIST): Add src/x86/darwin64.S,
+ src/dlmalloc.c.
+ (nodist_libffi_la_SOURCES): Add X86_FREEBSD.
+
+ * configure.ac: Bump version to 3.0.8.
+ parisc*-*-linux*: Add.
+ i386-*-freebsd* | i386-*-openbsd*: Add.
+ powerpc-*-beos*: Add.
+ AM_CONDITIONAL X86_FREEBSD: Add.
+ AC_CONFIG_FILES: Add man/Makefile.
+
+ * include/ffi.h.in (FFI_FN): Change void (*)() to void (*)(void).
+
+2009-06-08 Andrew Haley <aph@redhat.com>
+
+ * README: Import from libffi 3.0.8.
+
+2009-06-08 Andrew Haley <aph@redhat.com>
+
+ * testsuite/libffi.call/err_bad_abi.c: Add xfails.
+ * testsuite/libffi.call/cls_longdouble_va.c: Add xfails.
+ * testsuite/libffi.call/cls_dbls_struct.c: Add xfail x86_64-*-linux-*.
+ * testsuite/libffi.call/err_bad_typedef.c: Add xfails.
+
+ * testsuite/libffi.call/stret_medium2.c: Add __UNUSED__ to args.
+ * testsuite/libffi.call/stret_medium.c: Likewise.
+ * testsuite/libffi.call/stret_large2.c: Likewise.
+ * testsuite/libffi.call/stret_large.c: Likewise.
+
+2008-12-26 Timothy Wall <twall@users.sf.net>
+
+ * testsuite/libffi.call/cls_longdouble.c,
+ testsuite/libffi.call/cls_longdouble_va.c,
+ testsuite/libffi.call/cls_align_longdouble.c,
+ testsuite/libffi.call/cls_align_longdouble_split.c,
+ testsuite/libffi.call/cls_align_longdouble_split2.c: mark expected
+ failures on x86_64 cygwin/mingw.
+
+2008-12-22 Timothy Wall <twall@users.sf.net>
+
+ * testsuite/libffi.call/closure_fn0.c,
+ testsuite/libffi.call/closure_fn1.c,
+ testsuite/libffi.call/closure_fn2.c,
+ testsuite/libffi.call/closure_fn3.c,
+ testsuite/libffi.call/closure_fn4.c,
+ testsuite/libffi.call/closure_fn5.c,
+ testsuite/libffi.call/closure_fn6.c,
+ testsuite/libffi.call/closure_loc_fn0.c,
+ testsuite/libffi.call/closure_stdcall.c,
+ testsuite/libffi.call/cls_align_pointer.c,
+ testsuite/libffi.call/cls_pointer.c,
+ testsuite/libffi.call/cls_pointer_stack.c: use portable cast from
+ pointer to integer (intptr_t).
+ * testsuite/libffi.call/cls_longdouble.c: disable for win64.
+
+2008-07-24 Anthony Green <green@redhat.com>
+
+ * testsuite/libffi.call/cls_dbls_struct.c,
+ testsuite/libffi.call/cls_double_va.c,
+ testsuite/libffi.call/cls_longdouble.c,
+ testsuite/libffi.call/cls_longdouble_va.c,
+ testsuite/libffi.call/cls_pointer.c,
+ testsuite/libffi.call/cls_pointer_stack.c,
+ testsuite/libffi.call/err_bad_abi.c: Clean up failures from
+ compiler warnings.
+
+2008-03-04 Anthony Green <green@redhat.com>
+ Blake Chaffin
+ hos@tamanegi.org
+
+ * testsuite/libffi.call/cls_align_longdouble_split2.c
+ testsuite/libffi.call/cls_align_longdouble_split.c
+ testsuite/libffi.call/cls_dbls_struct.c
+ testsuite/libffi.call/cls_double_va.c
+ testsuite/libffi.call/cls_longdouble.c
+ testsuite/libffi.call/cls_longdouble_va.c
+ testsuite/libffi.call/cls_pointer.c
+ testsuite/libffi.call/cls_pointer_stack.c
+ testsuite/libffi.call/err_bad_abi.c
+ testsuite/libffi.call/err_bad_typedef.c
+ testsuite/libffi.call/stret_large2.c
+ testsuite/libffi.call/stret_large.c
+ testsuite/libffi.call/stret_medium2.c
+ testsuite/libffi.call/stret_medium.c: New tests from Apple.
+
+2009-06-05 Andrew Haley <aph@redhat.com>
+
+ * src/x86/ffitarget.h, src/x86/ffi.c: Merge stdcall changes from
+ libffi.
+
+2009-06-04 Andrew Haley <aph@redhat.com>
+
+ * src/x86/ffitarget.h, src/x86/win32.S, src/x86/ffi.c: Back out
+ stdcall changes.
+
+2008-02-26 Anthony Green <green@redhat.com>
+ Thomas Heller <theller@ctypes.org>
+
+ * src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C
+ comment.
+
+2008-02-03 Timothy Wall <twall@users.sf.net>
+
+ * src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL): Calculate jump return
+ offset based on code pointer, not data pointer.
+
+2008-01-31 Timothy Wall <twall@users.sf.net>
+
+ * testsuite/libffi.call/closure_stdcall.c: Add test for stdcall
+ closures.
+ * src/x86/ffitarget.h: Increase size of trampoline for stdcall
+ closures.
+ * src/x86/win32.S: Add assembly for stdcall closure.
+ * src/x86/ffi.c: Initialize stdcall closure trampoline.
+
+2009-06-04 Andrew Haley <aph@redhat.com>
+
+ * include/ffi.h.in: Change void (*)() to void (*)(void).
+ * src/x86/ffi.c: Likewise.
+
+2009-06-04 Andrew Haley <aph@redhat.com>
+
+ * src/powerpc/ppc_closure.S: Insert licence header.
+ * src/powerpc/linux64_closure.S: Likewise.
+ * src/m68k/sysv.S: Likewise.
+
+ * src/sh64/ffi.c: Change void (*)() to void (*)(void).
+ * src/powerpc/ffi.c: Likewise.
+ * src/powerpc/ffi_darwin.c: Likewise.
+ * src/m32r/ffi.c: Likewise.
+ * src/sh64/ffi.c: Likewise.
+ * src/x86/ffi64.c: Likewise.
+ * src/alpha/ffi.c: Likewise.
+ * src/alpha/osf.S: Likewise.
+ * src/frv/ffi.c: Likewise.
+ * src/s390/ffi.c: Likewise.
+ * src/pa/ffi.c: Likewise.
+ * src/pa/hpux32.S: Likewise.
+ * src/ia64/unix.S: Likewise.
+ * src/ia64/ffi.c: Likewise.
+ * src/sparc/ffi.c: Likewise.
+ * src/mips/ffi.c: Likewise.
+ * src/sh/ffi.c: Likewise.
+
+2008-02-15 David Daney <ddaney@avtrex.com>
+
+ * src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE):
+ Define (conditionally), and use it to include cachectl.h.
+ (ffi_prep_closure_loc): Fix cache flushing.
+ * src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define.
+
+2009-06-04 Andrew Haley <aph@redhat.com>
+
+ include/ffi.h.in,
+ src/arm/ffitarget.h,
+ src/arm/ffi.c,
+ src/arm/sysv.S,
+ src/powerpc/ffitarget.h,
+ src/closures.c,
+ src/sh64/ffitarget.h,
+ src/sh64/ffi.c,
+ src/sh64/sysv.S,
+ src/types.c,
+ src/x86/ffi64.c,
+ src/x86/ffitarget.h,
+ src/x86/win32.S,
+ src/x86/darwin.S,
+ src/x86/ffi.c,
+ src/x86/sysv.S,
+ src/x86/unix64.S,
+ src/alpha/ffitarget.h,
+ src/alpha/ffi.c,
+ src/alpha/osf.S,
+ src/m68k/ffitarget.h,
+ src/frv/ffitarget.h,
+ src/frv/ffi.c,
+ src/s390/ffitarget.h,
+ src/s390/sysv.S,
+ src/cris/ffitarget.h,
+ src/pa/linux.S,
+ src/pa/ffitarget.h,
+ src/pa/ffi.c,
+ src/raw_api.c,
+ src/ia64/ffitarget.h,
+ src/ia64/unix.S,
+ src/ia64/ffi.c,
+ src/ia64/ia64_flags.h,
+ src/java_raw_api.c,
+ src/debug.c,
+ src/sparc/v9.S,
+ src/sparc/ffitarget.h,
+ src/sparc/ffi.c,
+ src/sparc/v8.S,
+ src/mips/ffitarget.h,
+ src/mips/n32.S,
+ src/mips/o32.S,
+ src/mips/ffi.c,
+ src/prep_cif.c,
+ src/sh/ffitarget.h,
+ src/sh/ffi.c,
+ src/sh/sysv.S: Update license text.
+
+2009-05-22 Dave Korn <dave.korn.cygwin@gmail.com>
+
+ * src/x86/win32.S (_ffi_closure_STDCALL): New function.
+ (.eh_frame): Add FDE for it.
+
+2009-05-22 Dave Korn <dave.korn.cygwin@gmail.com>
+
+ * configure.ac: Also check if assembler supports pc-relative
+ relocs on X86_WIN32 targets.
+ * configure: Regenerate.
+ * src/x86/win32.S (ffi_prep_args): Declare extern, not global.
+ (_ffi_call_SYSV): Add missing function type symbol .def and
+ add EH markup labels.
+ (_ffi_call_STDCALL): Likewise.
+ (_ffi_closure_SYSV): Likewise.
+ (_ffi_closure_raw_SYSV): Likewise.
+ (.eh_frame): Add hand-crafted EH data.
+
+2009-04-09 Jakub Jelinek <jakub@redhat.com>
+
+ * testsuite/lib/libffi-dg.exp: Change copyright header to refer to
+ version 3 of the GNU General Public License and to point readers
+ at the COPYING3 file and the FSF's license web page.
+ * testsuite/libffi.call/call.exp: Likewise.
+ * testsuite/libffi.special/special.exp: Likewise.
+
+2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * configure: Regenerate.
+
+2008-12-18 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ PR libffi/26048
+ * configure.ac (HAVE_AS_X86_PCREL): New test.
+ * configure: Regenerate.
+ * fficonfig.h.in: Regenerate.
+ * src/x86/sysv.S [!FFI_NO_RAW_API]: Precalculate
+ RAW_CLOSURE_CIF_OFFSET, RAW_CLOSURE_FUN_OFFSET,
+ RAW_CLOSURE_USER_DATA_OFFSET for the Solaris 10/x86 assembler.
+ (.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL.
+ * src/x86/unix64.S (.Lstore_table): Move to .text section.
+ (.Lload_table): Likewise.
+ (.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL.
+
+2008-12-18 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * configure: Regenerate.
+
+2008-11-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * src/sparc/ffi.c (ffi_prep_cif_machdep): Add support for
+ signed/unsigned int8/16 return values.
+ * src/sparc/v8.S (ffi_call_v8): Likewise.
+ (ffi_closure_v8): Likewise.
+
+2008-09-26 Peter O'Gorman <pogma@thewrittenword.com>
+ Steve Ellcey <sje@cup.hp.com>
+
+ * configure: Regenerate for new libtool.
+ * Makefile.in: Ditto.
+ * include/Makefile.in: Ditto.
+ * aclocal.m4: Ditto.
+
+2008-08-25 Andreas Tobler <a.tobler@schweiz.org>
+
+ * src/powerpc/ffitarget.h (ffi_abi): Add FFI_LINUX and
+ FFI_LINUX_SOFT_FLOAT to the POWERPC_FREEBSD enum.
+ Add note about flag bits used for FFI_SYSV_TYPE_SMALL_STRUCT.
+ Adjust copyright notice.
+ * src/powerpc/ffi.c: Add two new flags to indicate if we have one
+ register or two register to use for FFI_SYSV structs.
+ (ffi_prep_cif_machdep): Pass the right register flag introduced above.
+ (ffi_closure_helper_SYSV): Fix the return type for
+ FFI_SYSV_TYPE_SMALL_STRUCT. Comment.
+ Adjust copyright notice.
+
+2008-07-16 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * src/sh/ffi.c (ffi_prep_closure_loc): Turn INSN into an unsigned
+ int.
+
+2008-06-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * configure: Regenerate.
+ * include/Makefile.in: Regenerate.
+ * testsuite/Makefile.in: Regenerate.
+
+2008-06-07 Joseph Myers <joseph@codesourcery.com>
+
+ * configure.ac (parisc*-*-linux*, powerpc-*-sysv*,
+ powerpc-*-beos*): Remove.
+ * configure: Regenerate.
+
+2008-05-09 Julian Brown <julian@codesourcery.com>
+
+ * Makefile.am (LTLDFLAGS): New.
+ (libffi_la_LDFLAGS): Use above.
+ * Makefile.in: Regenerate.
+
+2008-04-18 Paolo Bonzini <bonzini@gnu.org>
+
+ PR bootstrap/35457
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
+2008-03-26 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * src/sh/sysv.S: Add .note.GNU-stack on Linux.
+ * src/sh64/sysv.S: Likewise.
+
+2008-03-26 Daniel Jacobowitz <dan@debian.org>
+
+ * src/arm/sysv.S: Fix ARM comment marker.
+
+2008-03-26 Jakub Jelinek <jakub@redhat.com>
+
+ * src/alpha/osf.S: Add .note.GNU-stack on Linux.
+ * src/s390/sysv.S: Likewise.
+ * src/powerpc/ppc_closure.S: Likewise.
+ * src/powerpc/sysv.S: Likewise.
+ * src/x86/unix64.S: Likewise.
+ * src/x86/sysv.S: Likewise.
+ * src/sparc/v8.S: Likewise.
+ * src/sparc/v9.S: Likewise.
+ * src/m68k/sysv.S: Likewise.
+ * src/arm/sysv.S: Likewise.
+
+2008-03-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * aclocal.m4: Regenerate.
+ * configure: Likewise.
+ * Makefile.in: Likewise.
+ * include/Makefile.in: Likewise.
+ * testsuite/Makefile.in: Likewise.
+
+2008-02-12 Bjoern Koenig <bkoenig@alpha-tierchen.de>
+ Andreas Tobler <a.tobler@schweiz.org>
+
+ * configure.ac: Add amd64-*-freebsd* target.
+ * configure: Regenerate.
+
+2008-01-30 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR libffi/34612
+ * src/x86/sysv.S (ffi_closure_SYSV): Pop 4 byte from stack when
+ returning struct.
+
+ * testsuite/libffi.call/call.exp: Add "-O2 -fomit-frame-pointer"
+ tests.
+
+2008-01-24 David Edelsohn <edelsohn@gnu.org>
+
+ * configure: Regenerate.
+
+2008-01-06 Andreas Tobler <a.tobler@schweiz.org>
+
+ * src/x86/ffi.c (ffi_prep_cif_machdep): Fix thinko.
+
+2008-01-05 Andreas Tobler <a.tobler@schweiz.org>
+
+ PR testsuite/32843
+ * src/x86/ffi.c (ffi_prep_cif_machdep): Add code for
+ signed/unsigned int8/16 for X86_DARWIN.
+ Updated copyright info.
+ Handle one and two byte structs with special cif->flags.
+ * src/x86/ffitarget.h: Add special types for one and two byte structs.
+ Updated copyright info.
+ * src/x86/darwin.S (ffi_call_SYSV): Rewrite to use a jump table like
+ sysv.S
+ Remove code to pop args from the stack after call.
+ Special-case signed/unsigned for int8/16, one and two byte structs.
+ (ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8,
+ FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32,
+ FFI_TYPE_SINT32.
+ Updated copyright info.
+
+2007-12-08 David Daney <ddaney@avtrex.com>
+
+ * src/mips/n32.S (ffi_call_N32): Replace dadd with ADDU, dsub with
+ SUBU, add with ADDU and use smaller code sequences.
+
+2007-12-07 David Daney <ddaney@avtrex.com>
+
+ * src/mips/ffi.c (ffi_prep_cif_machdep): Handle long double return
+ type.
+
+2007-12-06 David Daney <ddaney@avtrex.com>
+
+ * include/ffi.h.in (FFI_SIZEOF_JAVA_RAW): Define if not already
+ defined.
+ (ffi_java_raw): New typedef.
+ (ffi_java_raw_call, ffi_java_ptrarray_to_raw,
+ ffi_java_raw_to_ptrarray): Change parameter types from ffi_raw to
+ ffi_java_raw.
+ (ffi_java_raw_closure) : Same.
+ (ffi_prep_java_raw_closure, ffi_prep_java_raw_closure_loc): Change
+ parameter types.
+ * src/java_raw_api.c (ffi_java_raw_size): Replace FFI_SIZEOF_ARG with
+ FFI_SIZEOF_JAVA_RAW.
+ (ffi_java_raw_to_ptrarray): Change type of raw to ffi_java_raw.
+ Replace FFI_SIZEOF_ARG with FFI_SIZEOF_JAVA_RAW. Use
+ sizeof(ffi_java_raw) for alignment calculations.
+ (ffi_java_ptrarray_to_raw): Same.
+ (ffi_java_rvalue_to_raw): Add special handling for FFI_TYPE_POINTER
+ if FFI_SIZEOF_JAVA_RAW == 4.
+ (ffi_java_raw_to_rvalue): Same.
+ (ffi_java_raw_call): Change type of raw to ffi_java_raw.
+ (ffi_java_translate_args): Same.
+ (ffi_prep_java_raw_closure_loc, ffi_prep_java_raw_closure): Change
+ parameter types.
+ * src/mips/ffitarget.h (FFI_SIZEOF_JAVA_RAW): Define for N32 ABI.
+
+2007-12-06 David Daney <ddaney@avtrex.com>
+
+ * src/mips/n32.S (ffi_closure_N32): Use 64-bit add instruction on
+ pointer values.
+
+2007-12-01 Andreas Tobler <a.tobler@schweiz.org>
+
+ PR libffi/31937
+ * src/powerpc/ffitarget.h: Introduce new ABI FFI_LINUX_SOFT_FLOAT.
+ Add local FFI_TYPE_UINT128 to handle soft-float long-double-128.
+ * src/powerpc/ffi.c: Distinguish between __NO_FPRS__ and not and
+ set the NUM_FPR_ARG_REGISTERS according to.
+ Add support for potential soft-float support under hard-float
+ architecture.
+ (ffi_prep_args_SYSV): Set NUM_FPR_ARG_REGISTERS to 0 in case of
+ FFI_LINUX_SOFT_FLOAT, handle float, doubles and long-doubles according
+ to the FFI_LINUX_SOFT_FLOAT ABI.
+ (ffi_prep_cif_machdep): Likewise.
+ (ffi_closure_helper_SYSV): Likewise.
+ * src/powerpc/ppc_closure.S: Make sure not to store float/double
+ on archs where __NO_FPRS__ is true.
+ Add FFI_TYPE_UINT128 support.
+ * src/powerpc/sysv.S: Add support for soft-float long-double-128.
+ Adjust copyright notice.
+
+2007-11-25 Andreas Tobler <a.tobler@schweiz.org>
+
+ * src/closures.c: Move defintion of MAYBE_UNUSED from here to ...
+ * include/ffi_common.h: ... here.
+ Update copyright.
+
+2007-11-17 Andreas Tobler <a.tobler@schweiz.org>
+
+ * src/powerpc/sysv.S: Load correct cr to compare if we have long double.
+ * src/powerpc/linux64.S: Likewise.
+ * src/powerpc/ffi.c: Add a comment to show which part goes into cr6.
+ * testsuite/libffi.call/return_ldl.c: New test.
+
+2007-09-04 <aph@redhat.com>
+
+ * src/arm/sysv.S (UNWIND): New.
+ (Whole file): Conditionally compile unwinder directives.
+ * src/arm/sysv.S: Add unwinder directives.
+
+ * src/arm/ffi.c (ffi_prep_args): Align structs by at least 4 bytes.
+ Only treat r0 as a struct address if we're actually returning a
+ struct by address.
+ Only copy the bytes that are actually within a struct.
+ (ffi_prep_cif_machdep): A Composite Type not larger than 4 bytes
+ is returned in r0, not passed by address.
+ (ffi_call): Allocate a word-sized temporary for the case where
+ a composite is returned in r0.
+ (ffi_prep_incoming_args_SYSV): Align as necessary.
+
+2007-08-05 Steven Newbury <s_j_newbury@yahoo.co.uk>
+
+ * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Use __clear_cache instead of
+ directly using the sys_cacheflush syscall.
+
+2007-07-27 Andrew Haley <aph@redhat.com>
+
+ * src/arm/sysv.S (ffi_closure_SYSV): Add soft-float.
+
+2007-09-03 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * Makefile.am: Unify MIPS_IRIX and MIPS_LINUX into MIPS.
+ * configure.ac: Likewise.
+ * Makefile.in: Regenerate.
+ * include/Makefile.in: Likewise.
+ * testsuite/Makefile.in: Likewise.
+ * configure: Likewise.
+
+2007-08-24 David Daney <ddaney@avtrex.com>
+
+ * testsuite/libffi.call/return_sl.c: New test.
+
+2007-08-10 David Daney <ddaney@avtrex.com>
+
+ * testsuite/libffi.call/cls_multi_ushort.c,
+ testsuite/libffi.call/cls_align_uint16.c,
+ testsuite/libffi.call/nested_struct1.c,
+ testsuite/libffi.call/nested_struct3.c,
+ testsuite/libffi.call/cls_7_1_byte.c,
+ testsuite/libffi.call/nested_struct5.c,
+ testsuite/libffi.call/cls_double.c,
+ testsuite/libffi.call/nested_struct7.c,
+ testsuite/libffi.call/cls_sint.c,
+ testsuite/libffi.call/nested_struct9.c,
+ testsuite/libffi.call/cls_20byte1.c,
+ testsuite/libffi.call/cls_multi_sshortchar.c,
+ testsuite/libffi.call/cls_align_sint64.c,
+ testsuite/libffi.call/cls_3byte2.c,
+ testsuite/libffi.call/cls_multi_schar.c,
+ testsuite/libffi.call/cls_multi_uchar.c,
+ testsuite/libffi.call/cls_19byte.c,
+ testsuite/libffi.call/cls_9byte1.c,
+ testsuite/libffi.call/cls_align_float.c,
+ testsuite/libffi.call/closure_fn1.c,
+ testsuite/libffi.call/problem1.c,
+ testsuite/libffi.call/closure_fn3.c,
+ testsuite/libffi.call/cls_sshort.c,
+ testsuite/libffi.call/closure_fn5.c,
+ testsuite/libffi.call/cls_align_double.c,
+ testsuite/libffi.call/nested_struct.c,
+ testsuite/libffi.call/cls_2byte.c,
+ testsuite/libffi.call/nested_struct10.c,
+ testsuite/libffi.call/cls_4byte.c,
+ testsuite/libffi.call/cls_6byte.c,
+ testsuite/libffi.call/cls_8byte.c,
+ testsuite/libffi.call/cls_multi_sshort.c,
+ testsuite/libffi.call/cls_align_sint16.c,
+ testsuite/libffi.call/cls_align_uint32.c,
+ testsuite/libffi.call/cls_20byte.c,
+ testsuite/libffi.call/cls_float.c,
+ testsuite/libffi.call/nested_struct2.c,
+ testsuite/libffi.call/cls_5_1_byte.c,
+ testsuite/libffi.call/nested_struct4.c,
+ testsuite/libffi.call/cls_24byte.c,
+ testsuite/libffi.call/nested_struct6.c,
+ testsuite/libffi.call/cls_64byte.c,
+ testsuite/libffi.call/nested_struct8.c,
+ testsuite/libffi.call/cls_uint.c,
+ testsuite/libffi.call/cls_multi_ushortchar.c,
+ testsuite/libffi.call/cls_schar.c,
+ testsuite/libffi.call/cls_uchar.c,
+ testsuite/libffi.call/cls_align_uint64.c,
+ testsuite/libffi.call/cls_ulonglong.c,
+ testsuite/libffi.call/cls_align_longdouble.c,
+ testsuite/libffi.call/cls_1_1byte.c,
+ testsuite/libffi.call/cls_12byte.c,
+ testsuite/libffi.call/cls_3_1byte.c,
+ testsuite/libffi.call/cls_3byte1.c,
+ testsuite/libffi.call/cls_4_1byte.c,
+ testsuite/libffi.call/cls_6_1_byte.c,
+ testsuite/libffi.call/cls_16byte.c,
+ testsuite/libffi.call/cls_18byte.c,
+ testsuite/libffi.call/closure_fn0.c,
+ testsuite/libffi.call/cls_9byte2.c,
+ testsuite/libffi.call/closure_fn2.c,
+ testsuite/libffi.call/closure_fn4.c,
+ testsuite/libffi.call/cls_ushort.c,
+ testsuite/libffi.call/closure_fn6.c,
+ testsuite/libffi.call/cls_5byte.c,
+ testsuite/libffi.call/cls_align_pointer.c,
+ testsuite/libffi.call/cls_7byte.c,
+ testsuite/libffi.call/cls_align_sint32.c,
+ testsuite/libffi.special/unwindtest_ffi_call.cc,
+ testsuite/libffi.special/unwindtest.cc: Remove xfail for mips64*-*-*.
+
+2007-08-10 David Daney <ddaney@avtrex.com>
+
+ PR libffi/28313
+ * configure.ac: Don't treat mips64 as a special case.
+ * Makefile.am (nodist_libffi_la_SOURCES): Add n32.S.
+ * configure: Regenerate
+ * Makefile.in: Ditto.
+ * fficonfig.h.in: Ditto.
+ * src/mips/ffitarget.h (REG_L, REG_S, SUBU, ADDU, SRL, LI): Indent.
+ (LA, EH_FRAME_ALIGN, FDE_ADDR_BYTES): New preprocessor macros.
+ (FFI_DEFAULT_ABI): Set for n64 case.
+ (FFI_CLOSURES, FFI_TRAMPOLINE_SIZE): Define for n32 and n64 cases.
+ * src/mips/n32.S (ffi_call_N32): Add debug macros and labels for FDE.
+ (ffi_closure_N32): New function.
+ (.eh_frame): New section
+ * src/mips/o32.S: Clean up comments.
+ (ffi_closure_O32): Pass ffi_closure parameter in $12.
+ * src/mips/ffi.c: Use FFI_MIPS_N32 instead of
+ _MIPS_SIM == _ABIN32 throughout.
+ (FFI_MIPS_STOP_HERE): New, use in place of
+ ffi_stop_here.
+ (ffi_prep_args): Use unsigned long to hold pointer values. Rewrite
+ to support n32/n64 ABIs.
+ (calc_n32_struct_flags): Rewrite.
+ (calc_n32_return_struct_flags): Remove unused variable. Reverse
+ position of flag bits.
+ (ffi_prep_cif_machdep): Rewrite n32 portion.
+ (ffi_call): Enable for n64. Add special handling for small structure
+ return values.
+ (ffi_prep_closure_loc): Add n32 and n64 support.
+ (ffi_closure_mips_inner_O32): Add cast to silence warning.
+ (copy_struct_N32, ffi_closure_mips_inner_N32): New functions.
+
+2007-08-08 David Daney <ddaney@avtrex.com>
+
+ * testsuite/libffi.call/ffitest.h (ffi_type_mylong): Remove definition.
+ * testsuite/libffi.call/cls_align_uint16.c (main): Use correct type
+ specifiers.
+ * testsuite/libffi.call/nested_struct1.c (main): Ditto.
+ * testsuite/libffi.call/cls_sint.c (main): Ditto.
+ * testsuite/libffi.call/nested_struct9.c (main): Ditto.
+ * testsuite/libffi.call/cls_20byte1.c (main): Ditto.
+ * testsuite/libffi.call/cls_9byte1.c (main): Ditto.
+ * testsuite/libffi.call/closure_fn1.c (main): Ditto.
+ * testsuite/libffi.call/closure_fn3.c (main): Ditto.
+ * testsuite/libffi.call/return_dbl2.c (main): Ditto.
+ * testsuite/libffi.call/cls_sshort.c (main): Ditto.
+ * testsuite/libffi.call/return_fl3.c (main): Ditto.
+ * testsuite/libffi.call/closure_fn5.c (main): Ditto.
+ * testsuite/libffi.call/nested_struct.c (main): Ditto.
+ * testsuite/libffi.call/nested_struct10.c (main): Ditto.
+ * testsuite/libffi.call/return_ll1.c (main): Ditto.
+ * testsuite/libffi.call/cls_8byte.c (main): Ditto.
+ * testsuite/libffi.call/cls_align_uint32.c (main): Ditto.
+ * testsuite/libffi.call/cls_align_sint16.c (main): Ditto.
+ * testsuite/libffi.call/cls_20byte.c (main): Ditto.
+ * testsuite/libffi.call/nested_struct2.c (main): Ditto.
+ * testsuite/libffi.call/cls_24byte.c (main): Ditto.
+ * testsuite/libffi.call/nested_struct6.c (main): Ditto.
+ * testsuite/libffi.call/cls_uint.c (main): Ditto.
+ * testsuite/libffi.call/cls_12byte.c (main): Ditto.
+ * testsuite/libffi.call/cls_16byte.c (main): Ditto.
+ * testsuite/libffi.call/closure_fn0.c (main): Ditto.
+ * testsuite/libffi.call/cls_9byte2.c (main): Ditto.
+ * testsuite/libffi.call/closure_fn2.c (main): Ditto.
+ * testsuite/libffi.call/return_dbl1.c (main): Ditto.
+ * testsuite/libffi.call/closure_fn4.c (main): Ditto.
+ * testsuite/libffi.call/closure_fn6.c (main): Ditto.
+ * testsuite/libffi.call/cls_align_sint32.c (main): Ditto.
+
+2007-08-07 Andrew Haley <aph@redhat.com>
+
+ * src/x86/sysv.S (ffi_closure_raw_SYSV): Fix typo in previous
+ checkin.
+
+2007-08-06 Andrew Haley <aph@redhat.com>
+
+ PR testsuite/32843
+ * src/x86/sysv.S (ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8,
+ FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32,
+ FFI_TYPE_SINT32.
+
+2007-08-02 David Daney <ddaney@avtrex.com>
+
+ * testsuite/libffi.call/return_ul.c (main): Define return type as
+ ffi_arg. Use proper printf conversion specifier.
+
+2007-07-30 Andrew Haley <aph@redhat.com>
+
+ PR testsuite/32843
+ * src/x86/ffi.c (ffi_prep_cif_machdep): in x86 case, add code for
+ signed/unsigned int8/16.
+ * src/x86/sysv.S (ffi_call_SYSV): Rewrite to:
+ Use a jump table.
+ Remove code to pop args from the stack after call.
+ Special-case signed/unsigned int8/16.
+ * testsuite/libffi.call/return_sc.c (main): Revert.
+
+2007-07-26 Richard Guenther <rguenther@suse.de>
+
+ PR testsuite/32843
+ * testsuite/libffi.call/return_sc.c (main): Verify call
+ result as signed char, not ffi_arg.
+
+2007-07-16 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * configure.ac (i?86-*-solaris2.1[0-9]): Set TARGET to X86_64.
+ * configure: Regenerate.
+
+2007-07-11 David Daney <ddaney@avtrex.com>
+
+ * src/mips/ffi.c: Don't include sys/cachectl.h.
+ (ffi_prep_closure_loc): Use __builtin___clear_cache() instead of
+ cacheflush().
+
+2007-05-18 Aurelien Jarno <aurelien@aurel32.net>
+
+ * src/arm/ffi.c (ffi_prep_closure_loc): Renamed and ajusted
+ from (ffi_prep_closure): ... this.
+ (FFI_INIT_TRAMPOLINE): Adjust.
+
+2005-12-31 Phil Blundell <pb@reciva.com>
+
+ * src/arm/ffi.c (ffi_prep_incoming_args_SYSV,
+ ffi_closure_SYSV_inner, ffi_prep_closure): New, add closure support.
+ * src/arm/sysv.S(ffi_closure_SYSV): Likewise.
+ * src/arm/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise.
+ (FFI_CLOSURES): Enable closure support.
+
+2007-07-03 Andrew Haley <aph@hedges.billgatliff.com>
+
+ * testsuite/libffi.call/cls_multi_ushort.c,
+ testsuite/libffi.call/cls_align_uint16.c,
+ testsuite/libffi.call/nested_struct1.c,
+ testsuite/libffi.call/nested_struct3.c,
+ testsuite/libffi.call/cls_7_1_byte.c,
+ testsuite/libffi.call/cls_double.c,
+ testsuite/libffi.call/nested_struct5.c,
+ testsuite/libffi.call/nested_struct7.c,
+ testsuite/libffi.call/cls_sint.c,
+ testsuite/libffi.call/nested_struct9.c,
+ testsuite/libffi.call/cls_20byte1.c,
+ testsuite/libffi.call/cls_multi_sshortchar.c,
+ testsuite/libffi.call/cls_align_sint64.c,
+ testsuite/libffi.call/cls_3byte2.c,
+ testsuite/libffi.call/cls_multi_schar.c,
+ testsuite/libffi.call/cls_multi_uchar.c,
+ testsuite/libffi.call/cls_19byte.c,
+ testsuite/libffi.call/cls_9byte1.c,
+ testsuite/libffi.call/cls_align_float.c,
+ testsuite/libffi.call/closure_fn1.c,
+ testsuite/libffi.call/problem1.c,
+ testsuite/libffi.call/closure_fn3.c,
+ testsuite/libffi.call/cls_sshort.c,
+ testsuite/libffi.call/closure_fn5.c,
+ testsuite/libffi.call/cls_align_double.c,
+ testsuite/libffi.call/cls_2byte.c,
+ testsuite/libffi.call/nested_struct.c,
+ testsuite/libffi.call/nested_struct10.c,
+ testsuite/libffi.call/cls_4byte.c,
+ testsuite/libffi.call/cls_6byte.c,
+ testsuite/libffi.call/cls_8byte.c,
+ testsuite/libffi.call/cls_multi_sshort.c,
+ testsuite/libffi.call/cls_align_uint32.c,
+ testsuite/libffi.call/cls_align_sint16.c,
+ testsuite/libffi.call/cls_float.c,
+ testsuite/libffi.call/cls_20byte.c,
+ testsuite/libffi.call/cls_5_1_byte.c,
+ testsuite/libffi.call/nested_struct2.c,
+ testsuite/libffi.call/cls_24byte.c,
+ testsuite/libffi.call/nested_struct4.c,
+ testsuite/libffi.call/nested_struct6.c,
+ testsuite/libffi.call/cls_64byte.c,
+ testsuite/libffi.call/nested_struct8.c,
+ testsuite/libffi.call/cls_uint.c,
+ testsuite/libffi.call/cls_multi_ushortchar.c,
+ testsuite/libffi.call/cls_schar.c,
+ testsuite/libffi.call/cls_uchar.c,
+ testsuite/libffi.call/cls_align_uint64.c,
+ testsuite/libffi.call/cls_ulonglong.c,
+ testsuite/libffi.call/cls_align_longdouble.c,
+ testsuite/libffi.call/cls_1_1byte.c,
+ testsuite/libffi.call/cls_12byte.c,
+ testsuite/libffi.call/cls_3_1byte.c,
+ testsuite/libffi.call/cls_3byte1.c,
+ testsuite/libffi.call/cls_4_1byte.c,
+ testsuite/libffi.call/cls_6_1_byte.c,
+ testsuite/libffi.call/cls_16byte.c,
+ testsuite/libffi.call/cls_18byte.c,
+ testsuite/libffi.call/closure_fn0.c,
+ testsuite/libffi.call/cls_9byte2.c,
+ testsuite/libffi.call/closure_fn2.c,
+ testsuite/libffi.call/closure_fn4.c,
+ testsuite/libffi.call/cls_ushort.c,
+ testsuite/libffi.call/closure_fn6.c,
+ testsuite/libffi.call/cls_5byte.c,
+ testsuite/libffi.call/cls_align_pointer.c,
+ testsuite/libffi.call/cls_7byte.c,
+ testsuite/libffi.call/cls_align_sint32.c,
+ testsuite/libffi.special/unwindtest_ffi_call.cc,
+ testsuite/libffi.special/unwindtest.cc: Enable for ARM.
+
+2007-07-05 H.J. Lu <hongjiu.lu@intel.com>
+
+ * aclocal.m4: Regenerated.
+
+2007-06-02 Paolo Bonzini <bonzini@gnu.org>
+
+ * configure: Regenerate.
+
+2007-05-23 Steve Ellcey <sje@cup.hp.com>
+
+ * Makefile.in: Regenerate.
+ * configure: Regenerate.
+ * aclocal.m4: Regenerate.
+ * include/Makefile.in: Regenerate.
+ * testsuite/Makefile.in: Regenerate.
+
+2007-05-10 Roman Zippel <zippel@linux-m68k.org>
+
+ * src/m68k/ffi.c (ffi_prep_incoming_args_SYSV,
+ ffi_closure_SYSV_inner,ffi_prep_closure): New, add closure support.
+ * src/m68k/sysv.S(ffi_closure_SYSV,ffi_closure_struct_SYSV): Likewise.
+ * src/m68k/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise.
+ (FFI_CLOSURES): Enable closure support.
+
+2007-05-10 Roman Zippel <zippel@linux-m68k.org>
+
+ * configure.ac (HAVE_AS_CFI_PSEUDO_OP): New test.
+ * configure: Regenerate.
+ * fficonfig.h.in: Regenerate.
+ * src/m68k/sysv.S (CFI_STARTPROC,CFI_ENDPROC,
+ CFI_OFFSET,CFI_DEF_CFA): New macros.
+ (ffi_call_SYSV): Add callframe annotation.
+
+2007-05-10 Roman Zippel <zippel@linux-m68k.org>
+
+ * src/m68k/ffi.c (ffi_prep_args,ffi_prep_cif_machdep): Fix
+ numerous test suite failures.
+ * src/m68k/sysv.S (ffi_call_SYSV): Likewise.
+
+2007-04-11 Paolo Bonzini <bonzini@gnu.org>
+
+ * Makefile.am (EXTRA_DIST): Bring up to date.
+ * Makefile.in: Regenerate.
+ * src/frv/eabi.S: Remove RCS keyword.
+
+2007-04-06 Richard Henderson <rth@redhat.com>
+
+ * configure.ac: Tidy target case.
+ (HAVE_LONG_DOUBLE): Allow the target to override.
+ * configure: Regenerate.
+ * include/ffi.h.in: Don't define ffi_type_foo if
+ LIBFFI_HIDE_BASIC_TYPES is defined.
+ (ffi_type_longdouble): If not HAVE_LONG_DOUBLE, define
+ to ffi_type_double.
+ * types.c (LIBFFI_HIDE_BASIC_TYPES): Define.
+ (FFI_TYPEDEF, ffi_type_void): Mark the data const.
+ (ffi_type_longdouble): Special case for Alpha. Don't define
+ if long double == double.
+
+ * src/alpha/ffi.c (FFI_TYPE_LONGDOUBLE): Assert unique value.
+ (ffi_prep_cif_machdep): Handle it as the 128-bit type.
+ (ffi_call, ffi_closure_osf_inner): Likewise.
+ (ffi_closure_osf_inner): Likewise. Mark hidden.
+ (ffi_call_osf, ffi_closure_osf): Mark hidden.
+ * src/alpha/ffitarget.h (FFI_LAST_ABI): Tidy definition.
+ * src/alpha/osf.S (ffi_call_osf, ffi_closure_osf): Mark hidden.
+ (load_table): Handle 128-bit long double.
+
+ * testsuite/libffi.call/float4.c: Add -mieee for alpha.
+
+2007-04-06 Tom Tromey <tromey@redhat.com>
+
+ PR libffi/31491:
+ * README: Fixed bug in example.
+
+2007-04-03 Jakub Jelinek <jakub@redhat.com>
+
+ * src/closures.c: Include sys/statfs.h.
+ (_GNU_SOURCE): Define on Linux.
+ (FFI_MMAP_EXEC_SELINUX): Define.
+ (selinux_enabled): New variable.
+ (selinux_enabled_check): New function.
+ (is_selinux_enabled): Define.
+ (dlmmap): Use it.
+
+2007-03-24 Uros Bizjak <ubizjak@gmail.com>
+
+ * testsuite/libffi.call/return_fl2.c (return_fl): Mark as static.
+ Use 'volatile float sum' to create sum of floats to avoid false
+ negative due to excess precision on ix86 targets.
+ (main): Ditto.
+
+2007-03-08 Alexandre Oliva <aoliva@redhat.com>
+
+ * src/powerpc/ffi.c (flush_icache): Fix left-over from previous
+ patch.
+ (ffi_prep_closure_loc): Remove unneeded casts. Add needed ones.
+
+2007-03-07 Alexandre Oliva <aoliva@redhat.com>
+
+ * include/ffi.h.in (ffi_closure_alloc, ffi_closure_free): New.
+ (ffi_prep_closure_loc): New.
+ (ffi_prep_raw_closure_loc): New.
+ (ffi_prep_java_raw_closure_loc): New.
+ * src/closures.c: New file.
+ * src/dlmalloc.c [FFI_MMAP_EXEC_WRIT] (struct malloc_segment):
+ Replace sflags with exec_offset.
+ [FFI_MMAP_EXEC_WRIT] (mmap_exec_offset, add_segment_exec_offset,
+ sub_segment_exec_offset): New macros.
+ (get_segment_flags, set_segment_flags, check_segment_merge): New
+ macros.
+ (is_mmapped_segment, is_extern_segment): Use get_segment_flags.
+ (add_segment, sys_alloc, create_mspace, create_mspace_with_base,
+ destroy_mspace): Use new macros.
+ (sys_alloc): Silence warning.
+ * Makefile.am (libffi_la_SOURCES): Add src/closures.c.
+ * Makefile.in: Rebuilt.
+ * src/prep_cif [FFI_CLOSURES] (ffi_prep_closure): Implement in
+ terms of ffi_prep_closure_loc.
+ * src/raw_api.c (ffi_prep_raw_closure_loc): Renamed and adjusted
+ from...
+ (ffi_prep_raw_closure): ... this. Re-implement in terms of the
+ renamed version.
+ * src/java_raw_api (ffi_prep_java_raw_closure_loc): Renamed and
+ adjusted from...
+ (ffi_prep_java_raw_closure): ... this. Re-implement in terms of
+ the renamed version.
+ * src/alpha/ffi.c (ffi_prep_closure_loc): Renamed from
+ (ffi_prep_closure): ... this.
+ * src/pa/ffi.c: Likewise.
+ * src/cris/ffi.c: Likewise. Adjust.
+ * src/frv/ffi.c: Likewise.
+ * src/ia64/ffi.c: Likewise.
+ * src/mips/ffi.c: Likewise.
+ * src/powerpc/ffi_darwin.c: Likewise.
+ * src/s390/ffi.c: Likewise.
+ * src/sh/ffi.c: Likewise.
+ * src/sh64/ffi.c: Likewise.
+ * src/sparc/ffi.c: Likewise.
+ * src/x86/ffi64.c: Likewise.
+ * src/x86/ffi.c: Likewise.
+ (FFI_INIT_TRAMPOLINE): Adjust.
+ (ffi_prep_raw_closure_loc): Renamed and adjusted from...
+ (ffi_prep_raw_closure): ... this.
+ * src/powerpc/ffi.c (ffi_prep_closure_loc): Renamed from
+ (ffi_prep_closure): ... this.
+ (flush_icache): Adjust.
+
+2007-03-07 Alexandre Oliva <aoliva@redhat.com>
+
+ * src/dlmalloc.c: New file, imported version 2.8.3 of Doug
+ Lea's malloc.
+
+2007-03-01 Brooks Moses <brooks.moses@codesourcery.com>
+
+ * Makefile.am: Add dummy install-pdf target.
+ * Makefile.in: Regenerate
+
+2007-02-13 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ * src/s390/ffi.c (ffi_prep_args, ffi_prep_cif_machdep,
+ ffi_closure_helper_SYSV): Add long double handling.
+
+2007-02-02 Jakub Jelinek <jakub@redhat.com>
+
+ * src/powerpc/linux64.S (ffi_call_LINUX64): Move restore of r2
+ immediately after bctrl instruction.
+
+2007-01-18 Alexandre Oliva <aoliva@redhat.com>
+
+ * Makefile.am (all-recursive, install-recursive,
+ mostlyclean-recursive, clean-recursive, distclean-recursive,
+ maintainer-clean-recursive): Add missing targets.
+ * Makefile.in: Rebuilt.
+
+2006-12-14 Andreas Tobler <a.tobler@schweiz.org>
+
+ * configure.ac: Add TARGET for x86_64-*-darwin*.
+ * Makefile.am (nodist_libffi_la_SOURCES): Add rules for 64-bit sources
+ for X86_DARWIN.
+ * src/x86/ffitarget.h: Set trampoline size for x86_64-*-darwin*.
+ * src/x86/darwin64.S: New file for x86_64-*-darwin* support.
+ * configure: Regenerate.
+ * Makefile.in: Regenerate.
+ * include/Makefile.in: Regenerate.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/libffi.special/unwindtest_ffi_call.cc: New test case for
+ ffi_call only.
+
+2006-12-13 Andreas Tobler <a.tobler@schweiz.org>
+
+ * aclocal.m4: Regenerate with aclocal -I .. as written in the
+ Makefile.am.
+
+2006-10-31 Geoffrey Keating <geoffk@apple.com>
+
+ * src/powerpc/ffi_darwin.c (darwin_adjust_aggregate_sizes): New.
+ (ffi_prep_cif_machdep): Call darwin_adjust_aggregate_sizes for
+ Darwin.
+ * testsuite/libffi.call/nested_struct4.c: Remove Darwin XFAIL.
+ * testsuite/libffi.call/nested_struct6.c: Remove Darwin XFAIL.
+
+2006-10-10 Paolo Bonzini <bonzini@gnu.org>
+ Sandro Tolaini <tolaini@libero.it>
+
+ * configure.ac [i*86-*-darwin*]: Set X86_DARWIN symbol and
+ conditional.
+ * configure: Regenerated.
+ * Makefile.am (nodist_libffi_la_SOURCES) [X86_DARWIN]: New case.
+ (EXTRA_DIST): Add src/x86/darwin.S.
+ * Makefile.in: Regenerated.
+ * include/Makefile.in: Regenerated.
+ * testsuite/Makefile.in: Regenerated.
+
+ * src/x86/ffi.c (ffi_prep_cif_machdep) [X86_DARWIN]: Treat like
+ X86_WIN32, and additionally align stack to 16 bytes.
+ * src/x86/darwin.S: New, based on sysv.S.
+ * src/prep_cif.c (ffi_prep_cif) [X86_DARWIN]: Align > 8-byte structs.
+
+2006-09-12 David Daney <ddaney@avtrex.com>
+
+ PR libffi/23935
+ * include/Makefile.am: Install both ffi.h and ffitarget.h in
+ $(libdir)/gcc/$(target_alias)/$(gcc_version)/include.
+ * aclocal.m4: Regenerated for automake 1.9.6.
+ * Makefile.in: Regenerated.
+ * include/Makefile.in: Regenerated.
+ * testsuite/Makefile.in: Regenerated.
+
+2006-08-17 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * include/ffi_common.h (struct): Revert accidental commit.
+
+2006-08-15 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * include/ffi_common.h: Remove lint directives.
+ * include/ffi.h.in: Likewise.
+
+2006-07-25 Torsten Schoenfeld <kaffeetisch@gmx.de>
+
+ * include/ffi.h.in (ffi_type_ulong, ffi_type_slong): Define correctly
+ for 32-bit architectures.
+ * testsuite/libffi.call/return_ul.c: New test case.
+
+2006-07-19 David Daney <ddaney@avtrex.com>
+
+ * testsuite/libffi.call/closure_fn6.c: Remove xfail for mips,
+ xfail remains for mips64.
+
+2006-05-23 Carlos O'Donell <carlos@codesourcery.com>
+
+ * Makefile.am: Add install-html target. Add install-html to .PHONY
+ * Makefile.in: Regenerate.
+ * aclocal.m4: Regenerate.
+ * include/Makefile.in: Regenerate.
+ * testsuite/Makefile.in: Regenerate.
+
+2006-05-18 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * pa/ffi.c (ffi_prep_args_pa32): Load floating point arguments from
+ stack slot.
+
+2006-04-22 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * README: Remove notice about 'Crazy Comments'.
+ * src/debug.c: Remove lint directives. Cleanup white spaces.
+ * src/java_raw_api.c: Likewise.
+ * src/prep_cif.c: Likewise.
+ * src/raw_api.c: Likewise.
+ * src/ffitest.c: Delete. No longer needed, all test cases migrated
+ to the testsuite.
+ * src/arm/ffi.c: Remove lint directives.
+ * src/m32r/ffi.c: Likewise.
+ * src/pa/ffi.c: Likewise.
+ * src/powerpc/ffi.c: Likewise.
+ * src/powerpc/ffi_darwin.c: Likewise.
+ * src/sh/ffi.c: Likewise.
+ * src/sh64/ffi.c: Likewise.
+ * src/x86/ffi.c: Likewise.
+ * testsuite/libffi.call/float2.c: Likewise.
+ * testsuite/libffi.call/promotion.c: Likewise.
+ * testsuite/libffi.call/struct1.c: Likewise.
+
+2006-04-13 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * src/pa/hpux32.S: Correct unwind offset calculation for
+ ffi_closure_pa32.
+ * src/pa/linux.S: Likewise.
+
+2006-04-12 James E Wilson <wilson@specifix.com>
+
+ PR libgcj/26483
+ * src/ia64/ffi.c (stf_spill, ldf_fill): Rewrite as macros.
+ (hfa_type_load): Call stf_spill.
+ (hfa_type_store): Call ldf_fill.
+ (ffi_call): Adjust calls to above routines. Add local temps for
+ macro result.
+
+2006-04-10 Matthias Klose <doko@debian.org>
+
+ * testsuite/lib/libffi-dg.exp (libffi-init): Recognize multilib
+ directory names containing underscores.
+
+2006-04-07 James E Wilson <wilson@specifix.com>
+
+ * testsuite/libffi.call/float4.c: New testcase.
+
+2006-04-05 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+ Andreas Tobler <a.tobler@schweiz.ch>
+
+ * Makefile.am: Add PA_HPUX port.
+ * Makefile.in: Regenerate.
+ * include/Makefile.in: Likewise.
+ * testsuite/Makefile.in: Likewise.
+ * configure.ac: Add PA_HPUX rules.
+ * configure: Regenerate.
+ * src/pa/ffitarget.h: Rename linux target to PA_LINUX.
+ Add PA_HPUX and PA64_HPUX.
+ Rename FFI_LINUX ABI to FFI_PA32 ABI.
+ (FFI_TRAMPOLINE_SIZE): Define for 32-bit HP-UX targets.
+ (FFI_TYPE_SMALL_STRUCT2): Define.
+ (FFI_TYPE_SMALL_STRUCT4): Likewise.
+ (FFI_TYPE_SMALL_STRUCT8): Likewise.
+ (FFI_TYPE_SMALL_STRUCT3): Redefine.
+ (FFI_TYPE_SMALL_STRUCT5): Likewise.
+ (FFI_TYPE_SMALL_STRUCT6): Likewise.
+ (FFI_TYPE_SMALL_STRUCT7): Likewise.
+ * src/pa/ffi.c (ROUND_DOWN): Delete.
+ (fldw, fstw, fldd, fstd): Use '__asm__'.
+ (ffi_struct_type): Add support for FFI_TYPE_SMALL_STRUCT2,
+ FFI_TYPE_SMALL_STRUCT4 and FFI_TYPE_SMALL_STRUCT8.
+ (ffi_prep_args_LINUX): Rename to ffi_prep_args_pa32. Update comment.
+ Simplify incrementing of stack slot variable. Change type of local
+ 'n' to unsigned int.
+ (ffi_size_stack_LINUX): Rename to ffi_size_stack_pa32. Handle long
+ double on PA_HPUX.
+ (ffi_prep_cif_machdep): Likewise.
+ (ffi_call): Likewise.
+ (ffi_closure_inner_LINUX): Rename to ffi_closure_inner_pa32. Change
+ return type to ffi_status. Simplify incrementing of stack slot
+ variable. Only copy floating point argument registers when PA_LINUX
+ is true. Reformat debug statement.
+ Add support for FFI_TYPE_SMALL_STRUCT2, FFI_TYPE_SMALL_STRUCT4 and
+ FFI_TYPE_SMALL_STRUCT8.
+ (ffi_closure_LINUX): Rename to ffi_closure_pa32. Add 'extern' to
+ declaration.
+ (ffi_prep_closure): Make linux trampoline conditional on PA_LINUX.
+ Add nops to cache flush. Add trampoline for PA_HPUX.
+ * src/pa/hpux32.S: New file.
+ * src/pa/linux.S (ffi_call_LINUX): Rename to ffi_call_pa32. Rename
+ ffi_prep_args_LINUX to ffi_prep_args_pa32.
+ Localize labels. Add support for 2, 4 and 8-byte small structs. Handle
+ unaligned destinations in 3, 5, 6 and 7-byte small structs. Order
+ argument type checks so that common argument types appear first.
+ (ffi_closure_LINUX): Rename to ffi_closure_pa32. Rename
+ ffi_closure_inner_LINUX to ffi_closure_inner_pa32.
+
+2006-03-24 Alan Modra <amodra@bigpond.net.au>
+
+ * src/powerpc/ffitarget.h (enum ffi_abi): Add FFI_LINUX. Default
+ for 32-bit using IBM extended double format. Fix FFI_LAST_ABI.
+ * src/powerpc/ffi.c (ffi_prep_args_SYSV): Handle linux variant of
+ FFI_TYPE_LONGDOUBLE.
+ (ffi_prep_args64): Assert using IBM extended double.
+ (ffi_prep_cif_machdep): Don't munge FFI_TYPE_LONGDOUBLE type.
+ Handle FFI_LINUX FFI_TYPE_LONGDOUBLE return and args.
+ (ffi_call): Handle FFI_LINUX.
+ (ffi_closure_helper_SYSV): Non FFI_LINUX long double return needs
+ gpr3 return pointer as for struct return. Handle FFI_LINUX
+ FFI_TYPE_LONGDOUBLE return and args. Don't increment "nf"
+ unnecessarily.
+ * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Load both f1 and f2
+ for FFI_TYPE_LONGDOUBLE. Move epilogue insns into case table.
+ Don't use r6 as pointer to results, instead use sp offset. Don't
+ make a special call to load lr with case table address, instead
+ use offset from previous call.
+ * src/powerpc/sysv.S (ffi_call_SYSV): Save long double return.
+ * src/powerpc/linux64.S (ffi_call_LINUX64): Simplify long double
+ return.
+
+2006-03-15 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * src/sh64/ffi.c (ffi_prep_cif_machdep): Handle float arguments
+ passed with FP registers correctly.
+ (ffi_closure_helper_SYSV): Likewise.
+ * src/sh64/sysv.S: Likewise.
+
+2006-03-01 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/libffi.special/unwindtest.cc (closure_test_fn): Mark cif,
+ args and userdata unused.
+ (closure_test_fn1): Mark cif and userdata unused.
+ (main): Remove unused res.
+
+2006-02-28 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/libffi.call/call.exp: Adjust FSF address. Add test runs for
+ -O2, -O3, -Os and the warning flags -W -Wall.
+ * testsuite/libffi.special/special.exp: Likewise.
+ * testsuite/libffi.call/ffitest.h: Add an __UNUSED__ macro to mark
+ unused parameter unused for gcc or else do nothing.
+ * testsuite/libffi.special/ffitestcxx.h: Likewise.
+ * testsuite/libffi.call/cls_12byte.c (cls_struct_12byte_gn): Mark cif
+ and userdata unused.
+ * testsuite/libffi.call/cls_16byte.c (cls_struct_16byte_gn): Likewise.
+ * testsuite/libffi.call/cls_18byte.c (cls_struct_18byte_gn): Likewise.
+ * testsuite/libffi.call/cls_19byte.c (cls_struct_19byte_gn): Likewise.
+ * testsuite/libffi.call/cls_1_1byte.c (cls_struct_1_1byte_gn): Likewise.
+ * testsuite/libffi.call/cls_20byte.c (cls_struct_20byte_gn): Likewise.
+ * testsuite/libffi.call/cls_20byte1.c (cls_struct_20byte_gn): Likewise.
+ * testsuite/libffi.call/cls_24byte.c (cls_struct_24byte_gn): Likewise.
+ * testsuite/libffi.call/cls_2byte.c (cls_struct_2byte_gn): Likewise.
+ * testsuite/libffi.call/cls_3_1byte.c (cls_struct_3_1byte_gn): Likewise.
+ * testsuite/libffi.call/cls_3byte1.c (cls_struct_3byte_gn): Likewise.
+ * testsuite/libffi.call/cls_3byte2.c (cls_struct_3byte_gn1): Likewise.
+ * testsuite/libffi.call/cls_4_1byte.c (cls_struct_4_1byte_gn): Likewise.
+ * testsuite/libffi.call/cls_4byte.c (cls_struct_4byte_gn): Likewise.
+ * testsuite/libffi.call/cls_5_1_byte.c (cls_struct_5byte_gn): Likewise.
+ * testsuite/libffi.call/cls_5byte.c (cls_struct_5byte_gn): Likewise.
+ * testsuite/libffi.call/cls_64byte.c (cls_struct_64byte_gn): Likewise.
+ * testsuite/libffi.call/cls_6_1_byte.c (cls_struct_6byte_gn): Likewise.
+ * testsuite/libffi.call/cls_6byte.c (cls_struct_6byte_gn): Likewise.
+ * testsuite/libffi.call/cls_7_1_byte.c (cls_struct_7byte_gn): Likewise.
+ * testsuite/libffi.call/cls_7byte.c (cls_struct_7byte_gn): Likewise.
+ * testsuite/libffi.call/cls_8byte.c (cls_struct_8byte_gn): Likewise.
+ * testsuite/libffi.call/cls_9byte1.c (cls_struct_9byte_gn): Likewise.
+ * testsuite/libffi.call/cls_9byte2.c (cls_struct_9byte_gn): Likewise.
+ * testsuite/libffi.call/cls_align_double.c (cls_struct_align_gn):
+ Likewise.
+ * testsuite/libffi.call/cls_align_float.c (cls_struct_align_gn):
+ Likewise.
+ * testsuite/libffi.call/cls_align_longdouble.c (cls_struct_align_gn):
+ Likewise.
+ * testsuite/libffi.call/cls_align_pointer.c (cls_struct_align_fn): Cast
+ void* to avoid compiler warning.
+ (main): Likewise.
+ (cls_struct_align_gn): Mark cif and userdata unused.
+ * testsuite/libffi.call/cls_align_sint16.c (cls_struct_align_gn):
+ Likewise.
+ * testsuite/libffi.call/cls_align_sint32.c (cls_struct_align_gn):
+ Likewise.
+ * testsuite/libffi.call/cls_align_sint64.c (cls_struct_align_gn):
+ Likewise.
+ * testsuite/libffi.call/cls_align_uint16.c (cls_struct_align_gn):
+ Likewise.
+ * testsuite/libffi.call/cls_align_uint32.c (cls_struct_align_gn):
+ Likewise.
+ * testsuite/libffi.call/cls_double.c (cls_ret_double_fn): Likewise.
+ * testsuite/libffi.call/cls_float.c (cls_ret_float_fn): Likewise.
+ * testsuite/libffi.call/cls_multi_schar.c (test_func_gn): Mark cif and
+ data unused.
+ (main): Cast res_call to silence gcc.
+ * testsuite/libffi.call/cls_multi_sshort.c (test_func_gn): Mark cif and
+ data unused.
+ (main): Cast res_call to silence gcc.
+ * testsuite/libffi.call/cls_multi_sshortchar.c (test_func_gn): Mark cif
+ and data unused.
+ (main): Cast res_call to silence gcc.
+ * testsuite/libffi.call/cls_multi_uchar.c (test_func_gn): Mark cif and
+ data unused.
+ (main): Cast res_call to silence gcc.
+ * testsuite/libffi.call/cls_multi_ushort.c (test_func_gn): Mark cif and
+ data unused.
+ (main): Cast res_call to silence gcc.
+ * testsuite/libffi.call/cls_multi_ushortchar.c (test_func_gn): Mark cif
+ and data unused.
+ (main): Cast res_call to silence gcc.
+ * testsuite/libffi.call/cls_schar.c (cls_ret_schar_fn): Mark cif and
+ userdata unused.
+ (cls_ret_schar_fn): Cast printf parameter to silence gcc.
+ * testsuite/libffi.call/cls_sint.c (cls_ret_sint_fn): Mark cif and
+ userdata unused.
+ (cls_ret_sint_fn): Cast printf parameter to silence gcc.
+ * testsuite/libffi.call/cls_sshort.c (cls_ret_sshort_fn): Mark cif and
+ userdata unused.
+ (cls_ret_sshort_fn): Cast printf parameter to silence gcc.
+ * testsuite/libffi.call/cls_uchar.c (cls_ret_uchar_fn): Mark cif and
+ userdata unused.
+ (cls_ret_uchar_fn): Cast printf parameter to silence gcc.
+ * testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Mark cif and
+ userdata unused.
+ (cls_ret_uint_fn): Cast printf parameter to silence gcc.
+ * testsuite/libffi.call/cls_ulonglong.c (cls_ret_ulonglong_fn): Mark cif
+ and userdata unused.
+ * testsuite/libffi.call/cls_ushort.c (cls_ret_ushort_fn): Mark cif and
+ userdata unused.
+ (cls_ret_ushort_fn): Cast printf parameter to silence gcc.
+ * testsuite/libffi.call/float.c (floating): Remove unused parameter e.
+ * testsuite/libffi.call/float1.c (main): Remove unused variable i.
+ Cleanup white spaces.
+ * testsuite/libffi.call/negint.c (checking): Remove unused variable i.
+ * testsuite/libffi.call/nested_struct.c (cls_struct_combined_gn): Mark
+ cif and userdata unused.
+ * testsuite/libffi.call/nested_struct1.c (cls_struct_combined_gn):
+ Likewise.
+ * testsuite/libffi.call/nested_struct10.c (B_gn): Likewise.
+ * testsuite/libffi.call/nested_struct2.c (B_fn): Adjust printf
+ formatters to silence gcc.
+ (B_gn): Mark cif and userdata unused.
+ * testsuite/libffi.call/nested_struct3.c (B_gn): Mark cif and userdata
+ unused.
+ * testsuite/libffi.call/nested_struct4.c: Mention related PR.
+ (B_gn): Mark cif and userdata unused.
+ * testsuite/libffi.call/nested_struct5.c (B_gn): Mark cif and userdata
+ unused.
+ * testsuite/libffi.call/nested_struct6.c: Mention related PR.
+ (B_gn): Mark cif and userdata unused.
+ * testsuite/libffi.call/nested_struct7.c (B_gn): Mark cif and userdata
+ unused.
+ * testsuite/libffi.call/nested_struct8.c (B_gn): Likewise.
+ * testsuite/libffi.call/nested_struct9.c (B_gn): Likewise.
+ * testsuite/libffi.call/problem1.c (stub): Likewise.
+ * testsuite/libffi.call/pyobjc-tc.c (main): Cast the result to silence
+ gcc.
+ * testsuite/libffi.call/return_fl2.c (return_fl): Add the note mentioned
+ in the last commit for this test case in the test case itself.
+ * testsuite/libffi.call/closure_fn0.c (closure_test_fn0): Mark cif as
+ unused.
+ * testsuite/libffi.call/closure_fn1.c (closure_test_fn1): Likewise.
+ * testsuite/libffi.call/closure_fn2.c (closure_test_fn2): Likewise.
+ * testsuite/libffi.call/closure_fn3.c (closure_test_fn3): Likewise.
+ * testsuite/libffi.call/closure_fn4.c (closure_test_fn0): Likewise.
+ * testsuite/libffi.call/closure_fn5.c (closure_test_fn5): Likewise.
+ * testsuite/libffi.call/closure_fn6.c (closure_test_fn0): Likewise.
+
+2006-02-22 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * src/sh/sysv.S: Fix register numbers in the FDE for
+ ffi_closure_SYSV.
+
+2006-02-20 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/libffi.call/return_fl2.c (return_fl): Remove static
+ declaration to avoid a false negative on ix86. See PR323.
+
+2006-02-18 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * src/sh/ffi.c (ffi_closure_helper_SYSV): Remove unused variable
+ and cast integer to void * if needed. Update the pointer to
+ the FP register saved area correctly.
+
+2006-02-17 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/libffi.call/nested_struct6.c: XFAIL this test until PR25630
+ is fixed.
+ * testsuite/libffi.call/nested_struct4.c: Likewise.
+
+2006-02-16 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/libffi.call/return_dbl.c: New test case.
+ * testsuite/libffi.call/return_dbl1.c: Likewise.
+ * testsuite/libffi.call/return_dbl2.c: Likewise.
+ * testsuite/libffi.call/return_fl.c: Likewise.
+ * testsuite/libffi.call/return_fl1.c: Likewise.
+ * testsuite/libffi.call/return_fl2.c: Likewise.
+ * testsuite/libffi.call/return_fl3.c: Likewise.
+ * testsuite/libffi.call/closure_fn6.c: Likewise.
+
+ * testsuite/libffi.call/nested_struct2.c: Remove ffi_type_mylong
+ definition.
+ * testsuite/libffi.call/ffitest.h: Add ffi_type_mylong definition
+ here to be used by other test cases too.
+
+ * testsuite/libffi.call/nested_struct10.c: New test case.
+ * testsuite/libffi.call/nested_struct9.c: Likewise.
+ * testsuite/libffi.call/nested_struct8.c: Likewise.
+ * testsuite/libffi.call/nested_struct7.c: Likewise.
+ * testsuite/libffi.call/nested_struct6.c: Likewise.
+ * testsuite/libffi.call/nested_struct5.c: Likewise.
+ * testsuite/libffi.call/nested_struct4.c: Likewise.
+
+2006-01-21 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * configure.ac: Enable libffi for sparc64-*-freebsd*.
+ * configure: Rebuilt.
+
+2006-01-18 Jakub Jelinek <jakub@redhat.com>
+
+ * src/powerpc/sysv.S (smst_two_register): Don't call __ashldi3,
+ instead do the shifting inline.
+ * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't compute %r5
+ shift count unconditionally. Simplify load sequences for 1, 2, 3, 4
+ and 8 byte structs, for the remaining struct sizes don't call
+ __lshrdi3, instead do the shifting inline.
+
+2005-12-07 Thiemo Seufer <ths@networkno.de>
+
+ * src/mips/ffitarget.h: Remove obsolete sgidefs.h include. Add
+ missing parentheses.
+ * src/mips/o32.S (ffi_call_O32): Code formatting. Define
+ and use A3_OFF, FP_OFF, RA_OFF. Micro-optimizations.
+ (ffi_closure_O32): Likewise, but with newly defined A3_OFF2,
+ A2_OFF2, A1_OFF2, A0_OFF2, RA_OFF2, FP_OFF2, S0_OFF2, GP_OFF2,
+ V1_OFF2, V0_OFF2, FA_1_1_OFF2, FA_1_0_OFF2, FA_0_1_OFF2,
+ FA_0_0_OFF2.
+ * src/mips/ffi.c (ffi_prep_args): Code formatting. Fix
+ endianness bugs.
+ (ffi_prep_closure): Improve trampoline instruction scheduling.
+ (ffi_closure_mips_inner_O32): Fix endianness bugs.
+
+2005-12-03 Alan Modra <amodra@bigpond.net.au>
+
+ * src/powerpc/ffi.c: Formatting.
+ (ffi_prep_args_SYSV): Avoid possible aliasing problems by using unions.
+ (ffi_prep_args64): Likewise.
+
+2005-09-30 Geoffrey Keating <geoffk@apple.com>
+
+ * testsuite/lib/libffi-dg.exp (libffi_target_compile): For
+ darwin, use -shared-libgcc not -lgcc_s, and explain why.
+
+2005-09-26 Tom Tromey <tromey@redhat.com>
+
+ * testsuite/libffi.call/float1.c (value_type): New typedef.
+ (CANARY): New define.
+ (main): Check for result buffer overflow.
+ * src/powerpc/linux64.S: Handle linux64 long double returns.
+ * src/powerpc/ffi.c (FLAG_RETURNS_128BITS): New constant.
+ (ffi_prep_cif_machdep): Handle linux64 long double returns.
+
+2005-08-25 Alan Modra <amodra@bigpond.net.au>
+
+ PR target/23404
+ * src/powerpc/ffi.c (ffi_prep_args_SYSV): Correct placement of stack
+ homed fp args.
+ (ffi_status ffi_prep_cif_machdep): Correct stack sizing for same.
+
+2005-08-11 Jakub Jelinek <jakub@redhat.com>
+
+ * configure.ac (HAVE_HIDDEN_VISIBILITY_ATTRIBUTE): New test.
+ (AH_BOTTOM): Add FFI_HIDDEN definition.
+ * configure: Rebuilt.
+ * fficonfig.h.in: Rebuilt.
+ * src/powerpc/ffi.c (hidden): Remove.
+ (ffi_closure_LINUX64, ffi_prep_args64, ffi_call_LINUX64,
+ ffi_closure_helper_LINUX64): Use FFI_HIDDEN instead of hidden.
+ * src/powerpc/linux64_closure.S (ffi_closure_LINUX64,
+ .ffi_closure_LINUX64): Use FFI_HIDDEN instead of .hidden.
+ * src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV): Remove,
+ add FFI_HIDDEN to its prototype.
+ (ffi_closure_SYSV_inner): New.
+ * src/x86/sysv.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New.
+ * src/x86/win32.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New.
+
+2005-08-10 Alfred M. Szmidt <ams@gnu.org>
+
+ PR libffi/21819:
+ * configure: Rebuilt.
+ * configure.ac: Handle i*86-*-gnu*.
+
+2005-08-09 Jakub Jelinek <jakub@redhat.com>
+
+ * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Use
+ DW_CFA_offset_extended_sf rather than
+ DW_CFA_GNU_negative_offset_extended.
+ * src/powerpc/sysv.S (ffi_call_SYSV): Likewise.
+
+2005-07-22 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
+
+ * src/sh/sysv.S (ffi_call_SYSV): Stop argument popping correctly
+ on sh3.
+ (ffi_closure_SYSV): Change the stack layout for sh3 struct argument.
+ * src/sh/ffi.c (ffi_prep_args): Fix sh3 argument copy, when it is
+ partially on register.
+ (ffi_closure_helper_SYSV): Likewise.
+ (ffi_prep_cif_machdep): Don't set too many cif->flags.
+
+2005-07-20 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * src/sh/ffi.c (ffi_call): Handle small structures correctly.
+ Remove empty line.
+ * src/sh64/ffi.c (simple_type): Remove.
+ (return_type): Handle small structures correctly.
+ (ffi_prep_args): Likewise.
+ (ffi_call): Likewise.
+ (ffi_closure_helper_SYSV): Likewise.
+ * src/sh64/sysv.S (ffi_call_SYSV): Handle 1, 2 and 4-byte return.
+ Emit position independent code if PIC and remove wrong datalabel
+ prefixes from EH data.
+
+2005-07-19 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * Makefile.am (nodist_libffi_la_SOURCES): Add POWERPC_FREEBSD.
+ * Makefile.in: Regenerate.
+ * include/Makefile.in: Likewise.
+ * testsuite/Makefile.in: Likewise.
+ * configure.ac: Add POWERPC_FREEBSD rules.
+ * configure: Regenerate.
+ * src/powerpc/ffitarget.h: Add POWERPC_FREEBSD rules.
+ (FFI_SYSV_TYPE_SMALL_STRUCT): Define.
+ * src/powerpc/ffi.c: Add flags to handle small structure returns
+ in ffi_call_SYSV.
+ (ffi_prep_cif_machdep): Handle small structures for SYSV 4 ABI.
+ Aka FFI_SYSV.
+ (ffi_closure_helper_SYSV): Likewise.
+ * src/powerpc/ppc_closure.S: Add return types for small structures.
+ * src/powerpc/sysv.S: Add bits to handle small structures for
+ final SYSV 4 ABI.
+
+2005-07-10 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/libffi.call/cls_5_1_byte.c: New test file.
+ * testsuite/libffi.call/cls_6_1_byte.c: Likewise.
+ * testsuite/libffi.call/cls_7_1_byte.c: Likewise.
+
+2005-07-05 Randolph Chung <tausq@debian.org>
+
+ * src/pa/ffi.c (ffi_struct_type): Rename FFI_TYPE_SMALL_STRUCT1
+ as FFI_TYPE_SMALL_STRUCT3. Break out handling for 5-7 byte
+ structures. Kill compilation warnings.
+ (ffi_closure_inner_LINUX): Print return values as hex in debug
+ message. Rename FFI_TYPE_SMALL_STRUCT1 as FFI_TYPE_SMALL_STRUCT3.
+ Properly handle 5-7 byte structure returns.
+ * src/pa/ffitarget.h (FFI_TYPE_SMALL_STRUCT1)
+ (FFI_TYPE_SMALL_STRUCT2): Remove.
+ (FFI_TYPE_SMALL_STRUCT3, FFI_TYPE_SMALL_STRUCT5)
+ (FFI_TYPE_SMALL_STRUCT6, FFI_TYPE_SMALL_STRUCT7): Define.
+ * src/pa/linux.S: Mark source file as using PA1.1 assembly.
+ (checksmst1, checksmst2): Remove.
+ (checksmst3): Optimize handling of 3-byte struct returns.
+ (checksmst567): Properly handle 5-7 byte struct returns.
+
+2005-06-15 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ PR libgcj/21943
+ * src/mips/n32.S: Enforce PIC code.
+ * src/mips/o32.S: Likewise.
+
+2005-06-15 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * configure.ac: Treat i*86-*-solaris2.10 and up as X86_64.
+ * configure: Regenerate.
+
+2005-06-01 Alan Modra <amodra@bigpond.net.au>
+
+ * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't use JUMPTARGET
+ to call ffi_closure_helper_SYSV. Append @local instead.
+ * src/powerpc/sysv.S (ffi_call_SYSV): Likewise for ffi_prep_args_SYSV.
+
+2005-05-17 Kelley Cook <kcook@gcc.gnu.org>
+
+ * configure.ac: Use AC_C_BIGENDIAN instead of AC_C_BIGENDIAN_CROSS.
+ Use AC_CHECK_SIZEOF instead of AC_COMPILE_CHECK_SIZEOF.
+ * Makefile.am (ACLOCAL_AMFLAGS): Remove -I ../config.
+ * aclocal.m4, configure, fficonfig.h.in, Makefile.in,
+ include/Makefile.in, testsuite/Makefile.in: Regenerate.
+
+2005-05-09 Mike Stump <mrs@apple.com>
+
+ * configure: Regenerate.
+
+2005-05-08 Richard Henderson <rth@redhat.com>
+
+ PR libffi/21285
+ * src/alpha/osf.S: Update unwind into to match code.
+
+2005-05-04 Andreas Degert <ad@papyrus-gmbh.de>
+ Richard Henderson <rth@redhat.com>
+
+ * src/x86/ffi64.c (ffi_prep_cif_machdep): Save sse-used flag in
+ bit 11 of flags.
+ (ffi_call): Mask return type field. Pass ssecount to ffi_call_unix64.
+ (ffi_prep_closure): Set carry bit if sse-used flag set.
+ * src/x86/unix64.S (ffi_call_unix64): Add ssecount argument.
+ Only load sse registers if ssecount non-zero.
+ (ffi_closure_unix64): Only save sse registers if carry set on entry.
+
+2005-04-29 Ralf Corsepius <ralf.corsepius@rtems.org>
+
+ * configure.ac: Add i*86-*-rtems*, sparc*-*-rtems*,
+ powerpc-*rtems*, arm*-*-rtems*, sh-*-rtems*.
+ * configure: Regenerate.
+
+2005-04-20 Hans-Peter Nilsson <hp@axis.com>
+
+ * testsuite/lib/libffi-dg.exp (libffi-dg-test-1): In regsub use,
+ have Tcl8.3-compatible intermediate variable.
+
+2005-04-18 Simon Posnjak <simon.posnjak@siol.net>
+ Hans-Peter Nilsson <hp@axis.com>
+
+ * Makefile.am: Add CRIS support.
+ * configure.ac: Likewise.
+ * Makefile.in, configure, testsuite/Makefile.in,
+ include/Makefile.in: Regenerate.
+ * src/cris: New directory.
+ * src/cris/ffi.c, src/cris/sysv.S, src/cris/ffitarget.h: New files.
+ * src/prep_cif.c (ffi_prep_cif): Wrap in #ifndef __CRIS__.
+
+ * testsuite/lib/libffi-dg.exp (libffi-dg-test-1): Replace \n with
+ \r?\n in output tests.
+
+2005-04-12 Mike Stump <mrs@apple.com>
+
+ * configure: Regenerate.
+
+2005-03-30 Hans Boehm <Hans.Boehm@hp.com>
+
+ * src/ia64/ffitarget.h (ffi_arg): Use long long instead of DI.
+
+2005-03-30 Steve Ellcey <sje@cup.hp.com>
+
+ * src/ia64/ffitarget.h (ffi_arg) ADD DI attribute.
+ (ffi_sarg) Ditto.
+ * src/ia64/unix.S (ffi_closure_unix): Extend gp
+ to 64 bits in ILP32 mode.
+ Load 64 bits even for short data.
+
+2005-03-23 Mike Stump <mrs@apple.com>
+
+ * src/powerpc/darwin.S: Update for -m64 multilib.
+ * src/powerpc/darwin_closure.S: Likewise.
+
+2005-03-21 Zack Weinberg <zack@codesourcery.com>
+
+ * configure.ac: Do not invoke TL_AC_GCC_VERSION.
+ Do not set tool_include_dir.
+ * aclocal.m4, configure, Makefile.in, testsuite/Makefile.in:
+ Regenerate.
+ * include/Makefile.am: Set gcc_version and toollibffidir.
+ * include/Makefile.in: Regenerate.
+
+2005-02-22 Andrew Haley <aph@redhat.com>
+
+ * src/powerpc/ffi.c (ffi_prep_cif_machdep): Bump alignment to
+ odd-numbered register pairs for 64-bit integer types.
+
+2005-02-23 Andreas Tobler <a.tobler@schweiz.ch>
+
+ PR libffi/20104
+ * testsuite/libffi.call/return_ll1.c: New test case.
+
+2005-02-11 Janis Johnson <janis187@us.ibm.com>
+
+ * testsuite/libffi.call/cls_align_longdouble.c: Remove dg-options.
+ * testsuite/libffi.call/float.c: Ditto.
+ * testsuite/libffi.call/float2.c: Ditto.
+ * testsuite/libffi.call/float3.c: Ditto.
+
+2005-02-08 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * src/frv/ffitarget.h: Remove PPC stuff which does not belong to frv.
+
+2005-01-12 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * testsuite/libffi.special/special.exp (cxx_options): Add
+ -shared-libgcc.
+
+2004-12-31 Richard Henderson <rth@redhat.com>
+
+ * src/types.c (FFI_AGGREGATE_TYPEDEF): Remove.
+ (FFI_TYPEDEF): Rename from FFI_INTEGRAL_TYPEDEF. Replace size and
+ offset parameters with a type parameter; deduce size and structure
+ alignment. Update all users.
+
+2004-12-31 Richard Henderson <rth@redhat.com>
+
+ * src/types.c (FFI_TYPE_POINTER): Define with sizeof.
+ (FFI_TYPE_LONGDOUBLE): Fix for ia64.
+ * src/ia64/ffitarget.h (struct ffi_ia64_trampoline_struct): Move
+ into ffi_prep_closure.
+ * src/ia64/ia64_flags.h, src/ia64/ffi.c, src/ia64/unix.S: Rewrite
+ from scratch.
+
+2004-12-27 Richard Henderson <rth@redhat.com>
+
+ * src/x86/unix64.S: Fix typo in unwind info.
+
+2004-12-25 Richard Henderson <rth@redhat.com>
+
+ * src/x86/ffi64.c (struct register_args): Rename from stackLayout.
+ (enum x86_64_reg_class): Add X86_64_COMPLEX_X87_CLASS.
+ (merge_classes): Check for it.
+ (SSE_CLASS_P): New.
+ (classify_argument): Pass byte_offset by value; perform all updates
+ inside struct case.
+ (examine_argument): Add classes argument; handle
+ X86_64_COMPLEX_X87_CLASS.
+ (ffi_prep_args): Merge into ...
+ (ffi_call): ... here. Share stack frame with ffi_call_unix64.
+ (ffi_prep_cif_machdep): Setup cif->flags for proper structure return.
+ (ffi_fill_return_value): Remove.
+ (ffi_prep_closure): Remove dead assert.
+ (ffi_closure_unix64_inner): Rename from ffi_closure_UNIX64_inner.
+ Rewrite to use struct register_args instead of va_list. Create
+ flags for handling structure returns.
+ * src/x86/unix64.S: Remove dead strings.
+ (ffi_call_unix64): Rename from ffi_call_UNIX64. Rewrite to share
+ stack frame with ffi_call. Handle structure returns properly.
+ (float2sse, floatfloat2sse, double2sse): Remove.
+ (sse2float, sse2double, sse2floatfloat): Remove.
+ (ffi_closure_unix64): Rename from ffi_closure_UNIX64. Rewrite
+ to handle structure returns properly.
+
+2004-12-08 David Edelsohn <edelsohn@gnu.org>
+
+ * Makefile.am (AM_MAKEFLAGS): Remove duplicate LIBCFLAGS and
+ PICFLAG.
+ * Makefile.in: Regenerated.
+
+2004-12-02 Richard Sandiford <rsandifo@redhat.com>
+
+ * configure.ac: Use TL_AC_GCC_VERSION to set gcc_version.
+ * configure, aclocal.m4, Makefile.in: Regenerate.
+ * include/Makefile.in, testsuite/Makefile.in: Regenerate.
+
+2004-11-29 Kelley Cook <kcook@gcc.gnu.org>
+
+ * configure: Regenerate for libtool change.
+
+2004-11-25 Kelley Cook <kcook@gcc.gnu.org>
+
+ * configure: Regenerate for libtool reversion.
+
+2004-11-24 Kelley Cook <kcook@gcc.gnu.org>
+
+ * configure: Regenerate for libtool change.
+
+2004-11-23 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * testsuite/lib/libffi-dg.exp: Use new procs in target-libpath.exp.
+
+2004-11-23 Richard Sandiford <rsandifo@redhat.com>
+
+ * src/mips/o32.S (ffi_call_O32, ffi_closure_O32): Use jalr instead
+ of jal. Use an absolute encoding for the frame information.
+
+2004-11-23 Kelley Cook <kcook@gcc.gnu.org>
+
+ * Makefile.am: Remove no-dependencies. Add ACLOCAL_AMFLAGS.
+ * acinclude.m4: Delete logic for sincludes.
+ * aclocal.m4, Makefile.in, configure: Regenerate.
+ * include/Makefile: Likewise.
+ * testsuite/Makefile: Likewise.
+
+2004-11-22 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * src/sparc/ffi.c (ffi_prep_closure): Align doubles and 64-bit integers
+ on a 8-byte boundary.
+ * src/sparc/v8.S (ffi_closure_v8): Reserve frame space for arguments.
+
+2004-10-27 Richard Earnshaw <rearnsha@arm.com>
+
+ * src/arm/ffi.c (ffi_prep_cif_machdep): Handle functions that return
+ long long values. Round stack allocation to a multiple of 8 bytes
+ for ATPCS compatibility.
+ * src/arm/sysv.S (ffi_call_SYSV): Rework to avoid use of APCS register
+ names. Handle returning long long types. Add Thumb and interworking
+ support. Improve soft-float code.
+
+2004-10-27 Richard Earnshaw <rearnsha@arm.com>
+
+ * testsuite/lib/libffi-db.exp (load_gcc_lib): New function.
+ (libffi_exit): New function.
+ (libffi_init): Build the testglue wrapper if needed.
+
+2004-10-25 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR other/18138
+ * testsuite/lib/libffi-dg.exp: Accept more than one multilib libgcc.
+
+2004-10-25 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
+
+ * src/m32r/libffitarget.h (FFI_CLOSURES): Set to 0.
+
+2004-10-20 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * src/sh/sysv.S (ffi_call_SYSV): Don't align for double data.
+ * testsuite/libffi.call/float3.c: New test case.
+
+2004-10-18 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * src/sh/ffi.c (ffi_prep_closure): Set T bit in trampoline for
+ the function returning a structure pointed with R2.
+ * src/sh/sysv.S (ffi_closure_SYSV): Use R2 as the pointer to
+ the structure return value if T bit set. Emit position
+ independent code and EH data if PIC.
+
+2004-10-13 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
+
+ * Makefile.am: Add m32r support.
+ * configure.ac: Likewise.
+ * Makefile.in: Regenerate.
+ * confiugre: Regenerate.
+ * src/types.c: Add m32r port to FFI_INTERNAL_TYPEDEF
+ (uint64, sint64, double, longdouble)
+ * src/m32r: New directory.
+ * src/m32r/ffi.c: New file.
+ * src/m32r/sysv.S: Likewise.
+ * src/m32r/ffitarget.h: Likewise.
+
+2004-10-02 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * testsuite/libffi.call/negint.c: New test case.
+
+2004-09-14 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR libgcj/17465
+ * testsuite/lib/libffi-dg.exp: Don't use global ld_library_path.
+ Set up LD_LIBRARY_PATH, SHLIB_PATH, LD_LIBRARYN32_PATH,
+ LD_LIBRARY64_PATH, LD_LIBRARY_PATH_32, LD_LIBRARY_PATH_64 and
+ DYLD_LIBRARY_PATH.
+
+2004-09-05 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/libffi.call/many_win32.c: Remove whitespaces.
+ * testsuite/libffi.call/promotion.c: Likewise.
+ * testsuite/libffi.call/return_ll.c: Remove unused var. Cleanup
+ whitespaces.
+ * testsuite/libffi.call/return_sc.c: Likewise.
+ * testsuite/libffi.call/return_uc.c: Likewise.
+
+2004-09-05 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * src/powerpc/darwin.S: Fix comments and identation.
+ * src/powerpc/darwin_closure.S: Likewise.
+
+2004-09-02 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * src/powerpc/ffi_darwin.c: Add flag for longdouble return values.
+ (ffi_prep_args): Handle longdouble arguments.
+ (ffi_prep_cif_machdep): Set flags for longdouble. Calculate space for
+ longdouble.
+ (ffi_closure_helper_DARWIN): Add closure handling for longdouble.
+ * src/powerpc/darwin.S (_ffi_call_DARWIN): Add handling of longdouble
+ values.
+ * src/powerpc/darwin_closure.S (_ffi_closure_ASM): Likewise.
+ * src/types.c: Defined longdouble size and alignment for darwin.
+
+2004-09-02 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * src/powerpc/aix.S: Remove whitespaces.
+ * src/powerpc/aix_closure.S: Likewise.
+ * src/powerpc/asm.h: Likewise.
+ * src/powerpc/ffi.c: Likewise.
+ * src/powerpc/ffitarget.h: Likewise.
+ * src/powerpc/linux64.S: Likewise.
+ * src/powerpc/linux64_closure.S: Likewise.
+ * src/powerpc/ppc_closure.S: Likewise.
+ * src/powerpc/sysv.S: Likewise.
+
+2004-08-30 Anthony Green <green@redhat.com>
+
+ * Makefile.am: Add frv support.
+ * Makefile.in, testsuite/Makefile.in: Rebuilt.
+ * configure.ac: Read configure.host.
+ * configure.in: Read configure.host.
+ * configure.host: New file. frv-elf needs libgloss.
+ * include/ffi.h.in: Force ffi_closure to have a nice big (8)
+ alignment. This is needed to frv and shouldn't harm the others.
+ * include/ffi_common.h (ALIGN_DOWN): New macro.
+ * src/frv/ffi.c, src/frv/ffitarget.h, src/frv/eabi.S: New files.
+
+2004-08-24 David Daney <daney@avtrex.com>
+
+ * testsuite/libffi.call/closure_fn0.c: Xfail mips64* instead of mips*.
+ * testsuite/libffi.call/closure_fn1.c: Likewise.
+ * testsuite/libffi.call/closure_fn2.c Likewise.
+ * testsuite/libffi.call/closure_fn3.c: Likewise.
+ * testsuite/libffi.call/closure_fn4.c: Likewise.
+ * testsuite/libffi.call/closure_fn5.c: Likewise.
+ * testsuite/libffi.call/cls_18byte.c: Likewise.
+ * testsuite/libffi.call/cls_19byte.c: Likewise.
+ * testsuite/libffi.call/cls_1_1byte.c: Likewise.
+ * testsuite/libffi.call/cls_20byte.c: Likewise.
+ * testsuite/libffi.call/cls_20byte1.c: Likewise.
+ * testsuite/libffi.call/cls_24byte.c: Likewise.
+ * testsuite/libffi.call/cls_2byte.c: Likewise.
+ * testsuite/libffi.call/cls_3_1byte.c: Likewise.
+ * testsuite/libffi.call/cls_3byte1.c: Likewise.
+ * testsuite/libffi.call/cls_3byte2.c: Likewise.
+ * testsuite/libffi.call/cls_4_1byte.c: Likewise.
+ * testsuite/libffi.call/cls_4byte.c: Likewise.
+ * testsuite/libffi.call/cls_64byte.c: Likewise.
+ * testsuite/libffi.call/cls_6byte.c: Likewise.
+ * testsuite/libffi.call/cls_7byte.c: Likewise.
+ * testsuite/libffi.call/cls_8byte.c: Likewise.
+ * testsuite/libffi.call/cls_9byte1.c: Likewise.
+ * testsuite/libffi.call/cls_9byte2.c: Likewise.
+ * testsuite/libffi.call/cls_align_double.c: Likewise.
+ * testsuite/libffi.call/cls_align_float.c: Likewise.
+ * testsuite/libffi.call/cls_align_longdouble.c: Likewise.
+ * testsuite/libffi.call/cls_align_pointer.c: Likewise.
+ * testsuite/libffi.call/cls_align_sint16.c: Likewise.
+ * testsuite/libffi.call/cls_align_sint32.c: Likewise.
+ * testsuite/libffi.call/cls_align_sint64.c: Likewise.
+ * testsuite/libffi.call/cls_align_uint16.c: Likewise.
+ * testsuite/libffi.call/cls_align_uint32.c: Likewise.
+ * testsuite/libffi.call/cls_align_uint64.c: Likewise.
+ * testsuite/libffi.call/cls_double.c: Likewise.
+ * testsuite/libffi.call/cls_float.c: Likewise.
+ * testsuite/libffi.call/cls_multi_schar.c: Likewise.
+ * testsuite/libffi.call/cls_multi_sshort.c: Likewise.
+ * testsuite/libffi.call/cls_multi_sshortchar.c: Likewise.
+ * testsuite/libffi.call/cls_multi_uchar.c: Likewise.
+ * testsuite/libffi.call/cls_multi_ushort.c: Likewise.
+ * testsuite/libffi.call/cls_multi_ushortchar.c: Likewise.
+ * testsuite/libffi.call/cls_schar.c: Likewise.
+ * testsuite/libffi.call/cls_sint.c: Likewise.
+ * testsuite/libffi.call/cls_sshort.c: Likewise.
+ * testsuite/libffi.call/cls_uchar.c: Likewise.
+ * testsuite/libffi.call/cls_uint.c: Likewise.
+ * testsuite/libffi.call/cls_ulonglong.c: Likewise.
+ * testsuite/libffi.call/cls_ushort.c: Likewise.
+ * testsuite/libffi.call/nested_struct.c: Likewise.
+ * testsuite/libffi.call/nested_struct1.c: Likewise.
+ * testsuite/libffi.call/nested_struct2.c: Likewise.
+ * testsuite/libffi.call/nested_struct3.c: Likewise.
+ * testsuite/libffi.call/problem1.c: Likewise.
+ * testsuite/libffi.special/unwindtest.cc: Likewise.
+ * testsuite/libffi.call/cls_12byte.c: Likewise and set return value
+ to zero.
+ * testsuite/libffi.call/cls_16byte.c: Likewise.
+ * testsuite/libffi.call/cls_5byte.c: Likewise.
+
+2004-08-23 David Daney <daney@avtrex.com>
+
+ PR libgcj/13141
+ * src/mips/ffitarget.h (FFI_O32_SOFT_FLOAT): New ABI.
+ * src/mips/ffi.c (ffi_prep_args): Fix alignment calculation.
+ (ffi_prep_cif_machdep): Handle FFI_O32_SOFT_FLOAT floating point
+ parameters and return types.
+ (ffi_call): Handle FFI_O32_SOFT_FLOAT ABI.
+ (ffi_prep_closure): Ditto.
+ (ffi_closure_mips_inner_O32): Handle FFI_O32_SOFT_FLOAT ABI, fix
+ alignment calculations.
+ * src/mips/o32.S (ffi_closure_O32): Don't use floating point
+ instructions if FFI_O32_SOFT_FLOAT, make stack frame ABI compliant.
+
+2004-08-14 Casey Marshall <csm@gnu.org>
+
+ * src/mips/ffi.c (ffi_pref_cif_machdep): set `cif->flags' to
+ contain `FFI_TYPE_UINT64' as return type for any 64-bit
+ integer (O32 ABI only).
+ (ffi_prep_closure): new function.
+ (ffi_closure_mips_inner_O32): new function.
+ * src/mips/ffitarget.h: Define `FFI_CLOSURES' and
+ `FFI_TRAMPOLINE_SIZE' appropriately if the ABI is o32.
+ * src/mips/o32.S (ffi_call_O32): add labels for .eh_frame. Return
+ 64 bit integers correctly.
+ (ffi_closure_O32): new function.
+ Added DWARF-2 unwind info for both functions.
+
+2004-08-10 Andrew Haley <aph@redhat.com>
+
+ * src/x86/ffi64.c (ffi_prep_args ): 8-align all stack arguments.
+
+2004-08-01 Robert Millan <robertmh@gnu.org>
+
+ * configure.ac: Detect knetbsd-gnu and kfreebsd-gnu.
+ * configure: Regenerate.
+
+2004-07-30 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * acinclude.m4 (AC_FUNC_MMAP_BLACKLIST): Check for <sys/mman.h>
+ and mmap() explicitly instead of relying on preset autoconf cache
+ variables.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
+2004-07-11 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * src/s390/ffi.c (ffi_prep_args): Fix C aliasing violation.
+ (ffi_check_float_struct): Remove unused prototype.
+
+2004-06-30 Geoffrey Keating <geoffk@apple.com>
+
+ * src/powerpc/ffi_darwin.c (flush_icache): ';' is a comment
+ character on Darwin, use '\n\t' instead.
+
+2004-06-26 Matthias Klose <doko@debian.org>
+
+ * libtool-version: Fix typo in revision/age.
+
+2004-06-17 Matthias Klose <doko@debian.org>
+
+ * libtool-version: New.
+ * Makefile.am (libffi_la_LDFLAGS): Use -version-info for soname.
+ * Makefile.in: Regenerate.
+
+2004-06-15 Paolo Bonzini <bonzini@gnu.org>
+
+ * Makefile.am: Remove useless multilib rules.
+ * Makefile.in: Regenerate.
+ * aclocal.m4: Regenerate with automake 1.8.5.
+ * configure.ac: Remove useless multilib configury.
+ * configure: Regenerate.
+
+2004-06-15 Paolo Bonzini <bonzini@gnu.org>
+
+ * .cvsignore: New file.
+
+2004-06-10 Jakub Jelinek <jakub@redhat.com>
+
+ * src/ia64/unix.S (ffi_call_unix): Insert group barrier break
+ fp_done.
+ (ffi_closure_UNIX): Fix f14/f15 adjustment if FLOAT_SZ is ever
+ changed from 8.
+
+2004-06-06 Sean McNeil <sean@mcneil.com>
+
+ * configure.ac: Add x86_64-*-freebsd* support.
+ * configure: Regenerate.
+
+2004-04-26 Joe Buck <jbuck@welsh-buck.org>
+
+ Bug 15093
+ * configure.ac: Test for existence of mmap and sys/mman.h before
+ checking blacklist. Fix suggested by Jim Wilson.
+ * configure: Regenerate.
+
+2004-04-26 Matt Austern <austern@apple.com>
+
+ * src/powerpc/darwin.S: Go through a non-lazy pointer for initial
+ FDE location.
+ * src/powerpc/darwin_closure.S: Likewise.
+
+2004-04-24 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/libffi.call/cls_multi_schar.c (main): Fix initialization
+ error. Reported by Thomas Heller <theller@python.net>.
+ * testsuite/libffi.call/cls_multi_sshort.c (main): Likewise.
+ * testsuite/libffi.call/cls_multi_ushort.c (main): Likewise.
+
+2004-03-20 Matthias Klose <doko@debian.org>
+
+ * src/pa/linux.S: Fix typo.
+
+2004-03-19 Matthias Klose <doko@debian.org>
+
+ * Makefile.am: Update.
+ * Makefile.in: Regenerate.
+ * src/pa/ffi.h.in: Remove.
+ * src/pa/ffitarget.h: New file.
+
+2004-02-10 Randolph Chung <tausq@debian.org>
+
+ * Makefile.am: Add PA support.
+ * Makefile.in: Regenerate.
+ * include/Makefile.in: Regenerate.
+ * configure.ac: Add PA target.
+ * configure: Regenerate.
+ * src/pa/ffi.c: New file.
+ * src/pa/ffi.h.in: Add PA support.
+ * src/pa/linux.S: New file.
+ * prep_cif.c: Add PA support.
+
+2004-03-16 Hosaka Yuji <hos@tamanegi.org>
+
+ * src/types.c: Fix alignment size of X86_WIN32 case int64 and
+ double.
+ * src/x86/ffi.c (ffi_prep_args): Replace ecif->cif->rtype->type
+ with ecif->cif->flags.
+ (ffi_call, ffi_prep_incoming_args_SYSV): Replace cif->rtype->type
+ with cif->flags.
+ (ffi_prep_cif_machdep): Add X86_WIN32 struct case.
+ (ffi_closure_SYSV): Add 1 or 2-bytes struct case for X86_WIN32.
+ * src/x86/win32.S (retstruct1b, retstruct2b, sc_retstruct1b,
+ sc_retstruct2b): Add for 1 or 2-bytes struct case.
+
+2004-03-15 Kelley Cook <kcook@gcc.gnu.org>
+
+ * configure.in: Rename file to ...
+ * configure.ac: ... this.
+ * fficonfig.h.in: Regenerate.
+ * Makefile.in: Regenerate.
+ * include/Makefile.in: Regenerate.
+ * testsuite/Makefile.in: Regenerate.
+
+2004-03-12 Matt Austern <austern@apple.com>
+
+ * src/powerpc/darwin.S: Fix EH information so it corresponds to
+ changes in EH format resulting from addition of linkonce support.
+ * src/powerpc/darwin_closure.S: Likewise.
+
+2004-03-11 Andreas Tobler <a.tobler@schweiz.ch>
+ Paolo Bonzini <bonzini@gnu.org>
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Set them.
+ Remove VPATH. Remove rules for object files. Remove multilib support.
+ (AM_CCASFLAGS): Add.
+ * configure.in (AC_CONFIG_HEADERS): Relace AM_CONFIG_HEADER.
+ (AC_PREREQ): Bump version to 2.59.
+ (AC_INIT): Fill with version info and bug address.
+ (ORIGINAL_LD_FOR_MULTILIBS): Remove.
+ (AM_ENABLE_MULTILIB): Use this instead of AC_ARG_ENABLE.
+ De-precious CC so that the right flags are passed down to multilibs.
+ (AC_MSG_ERROR): Replace obsolete macro AC_ERROR.
+ (AC_CONFIG_FILES): Replace obsolete macro AC_LINK_FILES.
+ (AC_OUTPUT): Reorganize the output with AC_CONFIG_COMMANDS.
+ * configure: Rebuilt.
+ * aclocal.m4: Likewise.
+ * Makefile.in, include/Makefile.in, testsuite/Makefile.in: Likewise.
+ * fficonfig.h.in: Likewise.
+
+2004-03-11 Andreas Schwab <schwab@suse.de>
+
+ * src/ia64/ffi.c (ffi_prep_incoming_args_UNIX): Get floating point
+ arguments from fp registers only for the first 8 parameter slots.
+ Don't convert a float parameter when passed in memory.
+
+2004-03-09 Hans-Peter Nilsson <hp@axis.com>
+
+ * configure: Regenerate for config/accross.m4 correction.
+
+2004-02-25 Matt Kraai <kraai@alumni.cmu.edu>
+
+ * src/powerpc/ffi.c (ffi_prep_args_SYSV): Change
+ ecif->cif->bytes to bytes.
+ (ffi_prep_cif_machdep): Add braces around nested if statement.
+
+2004-02-09 Alan Modra <amodra@bigpond.net.au>
+
+ * src/types.c (pointer): POWERPC64 has 8 byte pointers.
+
+ * src/powerpc/ffi.c (ffi_prep_args64): Correct long double handling.
+ (ffi_closure_helper_LINUX64): Fix typo.
+ * testsuite/libffi.call/cls_align_longdouble.c: Pass -mlong-double-128
+ for powerpc64-*-*.
+ * testsuite/libffi.call/float.c: Likewise.
+ * testsuite/libffi.call/float2.c: Likewise.
+
+2004-02-08 Alan Modra <amodra@bigpond.net.au>
+
+ * src/powerpc/ffi.c (ffi_prep_cif_machdep <FFI_LINUX64>): Correct
+ long double function return and long double arg handling.
+ (ffi_closure_helper_LINUX64): Formatting. Delete unused "ng" var.
+ Use "end_pfr" instead of "nf". Correct long double handling.
+ Localise "temp".
+ * src/powerpc/linux64.S (ffi_call_LINUX64): Save f2 long double
+ return value.
+ * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Allocate
+ space for long double return value. Adjust stack frame and offsets.
+ Load f2 long double return.
+
+2004-02-07 Alan Modra <amodra@bigpond.net.au>
+
+ * src/types.c: Use 16 byte long double for POWERPC64.
+
+2004-01-25 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * src/sparc/ffi.c (ffi_prep_args_v9): Shift the parameter array
+ when the structure return address is passed in %o0.
+ (ffi_V9_return_struct): Rename into ffi_v9_layout_struct.
+ (ffi_v9_layout_struct): Align the field following a nested structure
+ on a word boundary. Use memmove instead of memcpy.
+ (ffi_call): Update call to ffi_V9_return_struct.
+ (ffi_prep_closure): Define 'ctx' only for V8.
+ (ffi_closure_sparc_inner): Clone into ffi_closure_sparc_inner_v8
+ and ffi_closure_sparc_inner_v9.
+ (ffi_closure_sparc_inner_v8): Return long doubles by reference.
+ Always skip the structure return address. For structures and long
+ doubles, copy the argument directly.
+ (ffi_closure_sparc_inner_v9): Skip the structure return address only
+ if required. Shift the maximum floating-point slot accordingly. For
+ big structures, copy the argument directly; otherwise, left-justify the
+ argument and call ffi_v9_layout_struct to lay out the structure on
+ the stack.
+ * src/sparc/v8.S: Undef STACKFRAME before defining it.
+ (ffi_closure_v8): Pass the structure return address. Update call to
+ ffi_closure_sparc_inner_v8. Short-circuit FFI_TYPE_INT handling.
+ Skip the 'unimp' insn when returning long doubles and structures.
+ * src/sparc/v9.S: Undef STACKFRAME before defining it.
+ (ffi_closure_v9): Increase the frame size by 2 words. Short-circuit
+ FFI_TYPE_INT handling. Load structures both in integers and
+ floating-point registers on return.
+ * README: Update status of the SPARC port.
+
+2004-01-24 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/libffi.call/pyobjc-tc.c (main): Treat result value
+ as of type ffi_arg.
+ * testsuite/libffi.call/struct3.c (main): Fix CHECK.
+
+2004-01-22 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Treat result
+ value as of type ffi_arg, not unsigned int.
+
+2004-01-21 Michael Ritzert <ritzert@t-online.de>
+
+ * ffi64.c (ffi_prep_args): Cast the RHS of an assignment instead
+ of the LHS.
+
+2004-01-12 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_32 for
+ Solaris.
+
+2004-01-08 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * testsuite/libffi.call/ffitest.h (allocate_mmap): Cast MAP_FAILED
+ to void *.
+
+2003-12-10 Richard Henderson <rth@redhat.com>
+
+ * testsuite/libffi.call/cls_align_pointer.c: Cast pointers to
+ size_t instead of int.
+
+2003-12-04 Hosaka Yuji <hos@tamanegi.org>
+
+ * testsuite/libffi.call/many_win32.c: Include <float.h>.
+ * testsuite/libffi.call/many_win32.c (main): Replace variable
+ int i with unsigned long ul.
+
+ * testsuite/libffi.call/cls_align_uint64.c: New test case.
+ * testsuite/libffi.call/cls_align_sint64.c: Likewise.
+ * testsuite/libffi.call/cls_align_uint32.c: Likewise.
+ * testsuite/libffi.call/cls_align_sint32.c: Likewise.
+ * testsuite/libffi.call/cls_align_uint16.c: Likewise.
+ * testsuite/libffi.call/cls_align_sint16.c: Likewise.
+ * testsuite/libffi.call/cls_align_float.c: Likewise.
+ * testsuite/libffi.call/cls_align_double.c: Likewise.
+ * testsuite/libffi.call/cls_align_longdouble.c: Likewise.
+ * testsuite/libffi.call/cls_align_pointer.c: Likewise.
+
+2003-12-02 Hosaka Yuji <hos@tamanegi.org>
+
+ PR other/13221
+ * src/x86/ffi.c (ffi_prep_args, ffi_prep_incoming_args_SYSV):
+ Align arguments to 32 bits.
+
+2003-12-01 Andreas Tobler <a.tobler@schweiz.ch>
+
+ PR other/13221
+ * testsuite/libffi.call/cls_multi_sshort.c: New test case.
+ * testsuite/libffi.call/cls_multi_sshortchar.c: Likewise.
+ * testsuite/libffi.call/cls_multi_uchar.c: Likewise.
+ * testsuite/libffi.call/cls_multi_schar.c: Likewise.
+ * testsuite/libffi.call/cls_multi_ushortchar.c: Likewise.
+ * testsuite/libffi.call/cls_multi_ushort.c: Likewise.
+
+ * testsuite/libffi.special/unwindtest.cc: Cosmetics.
+
+2003-11-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * testsuite/libffi.call/ffitest.h: Include <fcntl.h>.
+ * testsuite/libffi.special/ffitestcxx.h: Likewise.
+
+2003-11-22 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * Makefile.in: Rebuilt.
+ * configure: Likewise.
+ * testsuite/libffi.special/unwindtest.cc: Convert the mmap to
+ the right type.
+
+2003-11-21 Andreas Jaeger <aj@suse.de>
+ Andreas Tobler <a.tobler@schweiz.ch>
+
+ * acinclude.m4: Add AC_FUNC_MMAP_BLACKLIST.
+ * configure.in: Call AC_FUNC_MMAP_BLACKLIST.
+ * Makefile.in: Rebuilt.
+ * aclocal.m4: Likewise.
+ * configure: Likewise.
+ * fficonfig.h.in: Likewise.
+ * testsuite/lib/libffi-dg.exp: Add include dir.
+ * testsuite/libffi.call/ffitest.h: Add MMAP definitions.
+ * testsuite/libffi.special/ffitestcxx.h: Likewise.
+ * testsuite/libffi.call/closure_fn0.c: Use MMAP functionality
+ for ffi_closure if available.
+ * testsuite/libffi.call/closure_fn1.c: Likewise.
+ * testsuite/libffi.call/closure_fn2.c: Likewise.
+ * testsuite/libffi.call/closure_fn3.c: Likewise.
+ * testsuite/libffi.call/closure_fn4.c: Likewise.
+ * testsuite/libffi.call/closure_fn5.c: Likewise.
+ * testsuite/libffi.call/cls_12byte.c: Likewise.
+ * testsuite/libffi.call/cls_16byte.c: Likewise.
+ * testsuite/libffi.call/cls_18byte.c: Likewise.
+ * testsuite/libffi.call/cls_19byte.c: Likewise.
+ * testsuite/libffi.call/cls_1_1byte.c: Likewise.
+ * testsuite/libffi.call/cls_20byte.c: Likewise.
+ * testsuite/libffi.call/cls_20byte1.c: Likewise.
+ * testsuite/libffi.call/cls_24byte.c: Likewise.
+ * testsuite/libffi.call/cls_2byte.c: Likewise.
+ * testsuite/libffi.call/cls_3_1byte.c: Likewise.
+ * testsuite/libffi.call/cls_3byte1.c: Likewise.
+ * testsuite/libffi.call/cls_3byte2.c: Likewise.
+ * testsuite/libffi.call/cls_4_1byte.c: Likewise.
+ * testsuite/libffi.call/cls_4byte.c: Likewise.
+ * testsuite/libffi.call/cls_5byte.c: Likewise.
+ * testsuite/libffi.call/cls_64byte.c: Likewise.
+ * testsuite/libffi.call/cls_6byte.c: Likewise.
+ * testsuite/libffi.call/cls_7byte.c: Likewise.
+ * testsuite/libffi.call/cls_8byte.c: Likewise.
+ * testsuite/libffi.call/cls_9byte1.c: Likewise.
+ * testsuite/libffi.call/cls_9byte2.c: Likewise.
+ * testsuite/libffi.call/cls_double.c: Likewise.
+ * testsuite/libffi.call/cls_float.c: Likewise.
+ * testsuite/libffi.call/cls_schar.c: Likewise.
+ * testsuite/libffi.call/cls_sint.c: Likewise.
+ * testsuite/libffi.call/cls_sshort.c: Likewise.
+ * testsuite/libffi.call/cls_uchar.c: Likewise.
+ * testsuite/libffi.call/cls_uint.c: Likewise.
+ * testsuite/libffi.call/cls_ulonglong.c: Likewise.
+ * testsuite/libffi.call/cls_ushort.c: Likewise.
+ * testsuite/libffi.call/nested_struct.c: Likewise.
+ * testsuite/libffi.call/nested_struct1.c: Likewise.
+ * testsuite/libffi.call/nested_struct2.c: Likewise.
+ * testsuite/libffi.call/nested_struct3.c: Likewise.
+ * testsuite/libffi.call/problem1.c: Likewise.
+ * testsuite/libffi.special/unwindtest.cc: Likewise.
+
+2003-11-20 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/lib/libffi-dg.exp: Make the -lgcc_s conditional.
+
+2003-11-19 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/lib/libffi-dg.exp: Add DYLD_LIBRARY_PATH for darwin.
+ Add -lgcc_s to additional flags.
+
+2003-11-12 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * configure.in, include/Makefile.am: PR libgcj/11147, install
+ the ffitarget.h header file in a gcc versioned and target
+ dependent place.
+ * configure: Regenerated.
+ * Makefile.in, include/Makefile.in: Likewise.
+ * testsuite/Makefile.in: Likewise.
+
+2003-11-09 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/libffi.call/closure_fn0.c: Print result and check
+ with dg-output to make debugging easier.
+ * testsuite/libffi.call/closure_fn1.c: Likewise.
+ * testsuite/libffi.call/closure_fn2.c: Likewise.
+ * testsuite/libffi.call/closure_fn3.c: Likewise.
+ * testsuite/libffi.call/closure_fn4.c: Likewise.
+ * testsuite/libffi.call/closure_fn5.c: Likewise.
+ * testsuite/libffi.call/cls_12byte.c: Likewise.
+ * testsuite/libffi.call/cls_16byte.c: Likewise.
+ * testsuite/libffi.call/cls_18byte.c: Likewise.
+ * testsuite/libffi.call/cls_19byte.c: Likewise.
+ * testsuite/libffi.call/cls_1_1byte.c: Likewise.
+ * testsuite/libffi.call/cls_20byte.c: Likewise.
+ * testsuite/libffi.call/cls_20byte1.c: Likewise.
+ * testsuite/libffi.call/cls_24byte.c: Likewise.
+ * testsuite/libffi.call/cls_2byte.c: Likewise.
+ * testsuite/libffi.call/cls_3_1byte.c: Likewise.
+ * testsuite/libffi.call/cls_3byte1.c: Likewise.
+ * testsuite/libffi.call/cls_3byte2.c: Likewise.
+ * testsuite/libffi.call/cls_4_1byte.c: Likewise.
+ * testsuite/libffi.call/cls_4byte.c: Likewise.
+ * testsuite/libffi.call/cls_5byte.c: Likewise.
+ * testsuite/libffi.call/cls_64byte.c: Likewise.
+ * testsuite/libffi.call/cls_6byte.c: Likewise.
+ * testsuite/libffi.call/cls_7byte.c: Likewise.
+ * testsuite/libffi.call/cls_8byte.c: Likewise.
+ * testsuite/libffi.call/cls_9byte1.c: Likewise.
+ * testsuite/libffi.call/cls_9byte2.c: Likewise.
+ * testsuite/libffi.call/cls_double.c: Likewise.
+ * testsuite/libffi.call/cls_float.c: Likewise.
+ * testsuite/libffi.call/cls_schar.c: Likewise.
+ * testsuite/libffi.call/cls_sint.c: Likewise.
+ * testsuite/libffi.call/cls_sshort.c: Likewise.
+ * testsuite/libffi.call/cls_uchar.c: Likewise.
+ * testsuite/libffi.call/cls_uint.c: Likewise.
+ * testsuite/libffi.call/cls_ulonglong.c: Likewise.
+ * testsuite/libffi.call/cls_ushort.c: Likewise.
+ * testsuite/libffi.call/problem1.c: Likewise.
+
+ * testsuite/libffi.special/unwindtest.cc: Make ffi_closure
+ static.
+
+2003-11-08 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/libffi.call/cls_9byte2.c: New test case.
+ * testsuite/libffi.call/cls_9byte1.c: Likewise.
+ * testsuite/libffi.call/cls_64byte.c: Likewise.
+ * testsuite/libffi.call/cls_20byte1.c: Likewise.
+ * testsuite/libffi.call/cls_19byte.c: Likewise.
+ * testsuite/libffi.call/cls_18byte.c: Likewise.
+ * testsuite/libffi.call/closure_fn4.c: Likewise.
+ * testsuite/libffi.call/closure_fn5.c: Likewise.
+ * testsuite/libffi.call/cls_schar.c: Likewise.
+ * testsuite/libffi.call/cls_sint.c: Likewise.
+ * testsuite/libffi.call/cls_sshort.c: Likewise.
+ * testsuite/libffi.call/nested_struct2.c: Likewise.
+ * testsuite/libffi.call/nested_struct3.c: Likewise.
+
+2003-11-08 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/libffi.call/cls_double.c: Do a check on the result.
+ * testsuite/libffi.call/cls_uchar.c: Likewise.
+ * testsuite/libffi.call/cls_uint.c: Likewise.
+ * testsuite/libffi.call/cls_ulonglong.c: Likewise.
+ * testsuite/libffi.call/cls_ushort.c: Likewise.
+ * testsuite/libffi.call/return_sc.c: Cleanup whitespaces.
+
+2003-11-06 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * src/prep_cif.c (ffi_prep_cif): Move the validity check after
+ the initialization.
+
+2003-10-23 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * src/java_raw_api.c (ffi_java_ptrarray_to_raw): Replace
+ FFI_ASSERT(FALSE) with FFI_ASSERT(0).
+
+2003-10-22 David Daney <ddaney@avtrex.com>
+
+ * src/mips/ffitarget.h: Replace undefined UINT32 and friends with
+ __attribute__((__mode__(__SI__))) and friends.
+
+2003-10-22 Andreas Schwab <schwab@suse.de>
+
+ * src/ia64/ffi.c: Replace FALSE/TRUE with false/true.
+
+2003-10-21 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * configure.in: AC_LINK_FILES(ffitarget.h).
+ * configure: Regenerate.
+ * Makefile.in: Likewise.
+ * include/Makefile.in: Likewise.
+ * testsuite/Makefile.in: Likewise.
+ * fficonfig.h.in: Likewise.
+
+2003-10-21 Paolo Bonzini <bonzini@gnu.org>
+ Richard Henderson <rth@redhat.com>
+
+ Avoid that ffi.h includes fficonfig.h.
+
+ * Makefile.am (EXTRA_DIST): Include ffitarget.h files
+ (TARGET_SRC_MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX.
+ (TARGET_SRC_MIPS_SGI): Removed.
+ (MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX.
+ (MIPS_SGI): Removed.
+ (CLEANFILES): Removed.
+ (mostlyclean-am, clean-am, mostlyclean-sub, clean-sub): New
+ targets.
+ * acconfig.h: Removed.
+ * configure.in: Compute sizeofs only for double and long double.
+ Use them to define and subst HAVE_LONG_DOUBLE. Include comments
+ into AC_DEFINE instead of using acconfig.h. Create
+ include/ffitarget.h instead of include/fficonfig.h. Rename
+ MIPS_GCC to MIPS_IRIX, drop MIPS_SGI since we are in gcc's tree.
+ AC_DEFINE EH_FRAME_FLAGS.
+ * include/Makefile.am (DISTCLEANFILES): New automake macro.
+ (hack_DATA): Add ffitarget.h.
+ * include/ffi.h.in: Remove all system specific definitions.
+ Declare raw API even if it is not installed, why bother?
+ Use limits.h instead of SIZEOF_* to define ffi_type_*. Do
+ not define EH_FRAME_FLAGS, it is in fficonfig.h now. Include
+ ffitarget.h instead of fficonfig.h. Remove ALIGN macro.
+ (UINT_ARG, INT_ARG): Removed, use ffi_arg and ffi_sarg instead.
+ * include/ffi_common.h (bool): Do not define.
+ (ffi_assert): Accept failed assertion.
+ (ffi_type_test): Return void and accept file/line.
+ (FFI_ASSERT): Pass stringized failed assertion.
+ (FFI_ASSERT_AT): New macro.
+ (FFI_ASSERT_VALID_TYPE): New macro.
+ (UINT8, SINT8, UINT16, SINT16, UINT32, SINT32,
+ UINT64, SINT64): Define here with gcc's __attribute__ macro
+ instead of in ffi.h
+ (FLOAT32, ALIGN): Define here instead of in ffi.h
+ * include/ffi-mips.h: Removed. Its content moved to
+ src/mips/ffitarget.h after separating assembly and C sections.
+ * src/alpha/ffi.c, src/alpha/ffi.c, src/java_raw_api.c
+ src/prep_cif.c, src/raw_api.c, src/ia64/ffi.c,
+ src/mips/ffi.c, src/mips/n32.S, src/mips/o32.S,
+ src/mips/ffitarget.h, src/sparc/ffi.c, src/x86/ffi64.c:
+ SIZEOF_ARG -> FFI_SIZEOF_ARG.
+ * src/ia64/ffi.c: Include stdbool.h (provided by GCC 2.95+).
+ * src/debug.c (ffi_assert): Accept stringized failed assertion.
+ (ffi_type_test): Rewritten.
+ * src/prep-cif.c (initialize_aggregate, ffi_prep_cif): Call
+ FFI_ASSERT_VALID_TYPE.
+ * src/alpha/ffitarget.h, src/arm/ffitarget.h,
+ src/ia64/ffitarget.h, src/m68k/ffitarget.h,
+ src/mips/ffitarget.h, src/powerpc/ffitarget.h,
+ src/s390/ffitarget.h, src/sh/ffitarget.h,
+ src/sh64/ffitarget.h, src/sparc/ffitarget.h,
+ src/x86/ffitarget.h: New files.
+ * src/alpha/osf.S, src/arm/sysv.S, src/ia64/unix.S,
+ src/m68k/sysv.S, src/mips/n32.S, src/mips/o32.S,
+ src/powerpc/aix.S, src/powerpc/darwin.S,
+ src/powerpc/ffi_darwin.c, src/powerpc/linux64.S,
+ src/powerpc/linux64_closure.S, src/powerpc/ppc_closure.S,
+ src/powerpc/sysv.S, src/s390/sysv.S, src/sh/sysv.S,
+ src/sh64/sysv.S, src/sparc/v8.S, src/sparc/v9.S,
+ src/x86/sysv.S, src/x86/unix64.S, src/x86/win32.S:
+ include fficonfig.h
+
+2003-10-20 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * src/mips/ffi.c: Use _ABIN32, _ABIO32 instead of external
+ _MIPS_SIM_NABI32, _MIPS_SIM_ABI32.
+
+2003-10-19 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Declare bytes again.
+ Used when FFI_DEBUG = 1.
+
+2003-10-14 Alan Modra <amodra@bigpond.net.au>
+
+ * src/types.c (double, longdouble): Default POWERPC64 to 8 byte size
+ and align.
+
+2003-10-06 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * include/ffi_mips.h: Define FFI_MIPS_N32 for N32/N64 ABIs,
+ FFI_MIPS_O32 for O32 ABI.
+
+2003-10-01 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_64 for
+ SPARC64. Cleanup whitespaces.
+
+2003-09-19 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/libffi.call/closure_fn0.c: Xfail mips, arm,
+ strongarm, xscale. Cleanup whitespaces.
+ * testsuite/libffi.call/closure_fn1.c: Likewise.
+ * testsuite/libffi.call/closure_fn2.c: Likewise.
+ * testsuite/libffi.call/closure_fn3.c: Likewise.
+ * testsuite/libffi.call/cls_12byte.c: Likewise.
+ * testsuite/libffi.call/cls_16byte.c: Likewise.
+ * testsuite/libffi.call/cls_1_1byte.c: Likewise.
+ * testsuite/libffi.call/cls_20byte.c: Likewise.
+ * testsuite/libffi.call/cls_24byte.c: Likewise.
+ * testsuite/libffi.call/cls_2byte.c: Likewise.
+ * testsuite/libffi.call/cls_3_1byte.c: Likewise.
+ * testsuite/libffi.call/cls_3byte1.c: Likewise.
+ * testsuite/libffi.call/cls_3byte2.c: Likewise.
+ * testsuite/libffi.call/cls_4_1byte.c: Likewise.
+ * testsuite/libffi.call/cls_4byte.c: Likewise.
+ * testsuite/libffi.call/cls_5byte.c: Likewise.
+ * testsuite/libffi.call/cls_6byte.c: Likewise.
+ * testsuite/libffi.call/cls_7byte.c: Likewise.
+ * testsuite/libffi.call/cls_8byte.c: Likewise.
+ * testsuite/libffi.call/cls_double.c: Likewise.
+ * testsuite/libffi.call/cls_float.c: Likewise.
+ * testsuite/libffi.call/cls_uchar.c: Likewise.
+ * testsuite/libffi.call/cls_uint.c: Likewise.
+ * testsuite/libffi.call/cls_ulonglong.c: Likewise.
+ * testsuite/libffi.call/cls_ushort.c: Likewise.
+ * testsuite/libffi.call/nested_struct.c: Likewise.
+ * testsuite/libffi.call/nested_struct1.c: Likewise.
+ * testsuite/libffi.call/problem1.c: Likewise.
+ * testsuite/libffi.special/unwindtest.cc: Likewise.
+ * testsuite/libffi.call/pyobjc-tc.c: Cleanup whitespaces.
+
+2003-09-18 David Edelsohn <edelsohn@gnu.org>
+
+ * src/powerpc/aix.S: Cleanup whitespaces.
+ * src/powerpc/aix_closure.S: Likewise.
+
+2003-09-18 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * src/powerpc/darwin.S: Cleanup whitespaces, comment formatting.
+ * src/powerpc/darwin_closure.S: Likewise.
+ * src/powerpc/ffi_darwin.c: Likewise.
+
+2003-09-18 Andreas Tobler <a.tobler@schweiz.ch>
+ David Edelsohn <edelsohn@gnu.org>
+
+ * src/types.c (double): Add AIX and Darwin to the right TYPEDEF.
+ * src/powerpc/aix_closure.S: Remove the pointer to the outgoing
+ parameter stack.
+ * src/powerpc/darwin_closure.S: Likewise.
+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Handle structures
+ according to the Darwin/AIX ABI.
+ (ffi_prep_cif_machdep): Likewise.
+ (ffi_closure_helper_DARWIN): Likewise.
+ Remove the outgoing parameter stack logic. Simplify the evaluation
+ of the different CASE types.
+ (ffi_prep_clousure): Avoid the casts on lvalues. Change the branch
+ statement in the trampoline code.
+
+2003-09-18 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * src/sh/ffi.c (ffi_prep_args): Take account into the alignement
+ for the register size.
+ (ffi_closure_helper_SYSV): Handle the structure return value
+ address correctly.
+ (ffi_closure_helper_SYSV): Return the appropriate type when
+ the registers are used for the structure return value.
+ * src/sh/sysv.S (ffi_closure_SYSV): Fix the stack layout for
+ the 64-bit return value. Update copyright years.
+
+2003-09-17 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * testsuite/lib/libffi-dg.exp (libffi_target_compile): Search in
+ srcdir for ffi_mips.h.
+
+2003-09-12 Alan Modra <amodra@bigpond.net.au>
+
+ * src/prep_cif.c (initialize_aggregate): Include tail padding in
+ structure size.
+ * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Correct
+ placement of float result.
+ * testsuite/libffi.special/unwindtest.cc (closure_test_fn1): Correct
+ cast of "resp" for big-endian 64 bit machines.
+
+2003-09-11 Alan Modra <amodra@bigpond.net.au>
+
+ * src/types.c (double, longdouble): Merge identical SH and ARM
+ typedefs, and add POWERPC64.
+ * src/powerpc/ffi.c (ffi_prep_args64): Correct next_arg calc for
+ struct split over gpr and rest.
+ (ffi_prep_cif_machdep): Correct intarg_count for structures.
+ * src/powerpc/linux64.S (ffi_call_LINUX64): Fix gpr offsets.
+
+2003-09-09 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * src/powerpc/ffi.c (ffi_closure_helper_SYSV) Handle struct
+ passing correctly.
+
+2003-09-09 Alan Modra <amodra@bigpond.net.au>
+
+ * configure: Regenerate.
+
+2003-09-04 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * Makefile.am: Remove build rules for ffitest.
+ * Makefile.in: Rebuilt.
+
+2003-09-04 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * src/java_raw_api.c: Include <stdlib.h> to fix compiler warning
+ about implicit declaration of abort().
+
+2003-09-04 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * Makefile.am: Add dejagnu test framework. Fixes PR other/11411.
+ * Makefile.in: Rebuilt.
+ * configure.in: Add dejagnu test framework.
+ * configure: Rebuilt.
+
+ * testsuite/Makefile.am: New file.
+ * testsuite/Makefile.in: Built
+ * testsuite/lib/libffi-dg.exp: New file.
+ * testsuite/config/default.exp: Likewise.
+ * testsuite/libffi.call/call.exp: Likewise.
+ * testsuite/libffi.call/ffitest.h: Likewise.
+ * testsuite/libffi.call/closure_fn0.c: Likewise.
+ * testsuite/libffi.call/closure_fn1.c: Likewise.
+ * testsuite/libffi.call/closure_fn2.c: Likewise.
+ * testsuite/libffi.call/closure_fn3.c: Likewise.
+ * testsuite/libffi.call/cls_1_1byte.c: Likewise.
+ * testsuite/libffi.call/cls_3_1byte.c: Likewise.
+ * testsuite/libffi.call/cls_4_1byte.c: Likewise.
+ * testsuite/libffi.call/cls_2byte.c: Likewise.
+ * testsuite/libffi.call/cls_3byte1.c: Likewise.
+ * testsuite/libffi.call/cls_3byte2.c: Likewise.
+ * testsuite/libffi.call/cls_4byte.c: Likewise.
+ * testsuite/libffi.call/cls_5byte.c: Likewise.
+ * testsuite/libffi.call/cls_6byte.c: Likewise.
+ * testsuite/libffi.call/cls_7byte.c: Likewise.
+ * testsuite/libffi.call/cls_8byte.c: Likewise.
+ * testsuite/libffi.call/cls_12byte.c: Likewise.
+ * testsuite/libffi.call/cls_16byte.c: Likewise.
+ * testsuite/libffi.call/cls_20byte.c: Likewise.
+ * testsuite/libffi.call/cls_24byte.c: Likewise.
+ * testsuite/libffi.call/cls_double.c: Likewise.
+ * testsuite/libffi.call/cls_float.c: Likewise.
+ * testsuite/libffi.call/cls_uchar.c: Likewise.
+ * testsuite/libffi.call/cls_uint.c: Likewise.
+ * testsuite/libffi.call/cls_ulonglong.c: Likewise.
+ * testsuite/libffi.call/cls_ushort.c: Likewise.
+ * testsuite/libffi.call/float.c: Likewise.
+ * testsuite/libffi.call/float1.c: Likewise.
+ * testsuite/libffi.call/float2.c: Likewise.
+ * testsuite/libffi.call/many.c: Likewise.
+ * testsuite/libffi.call/many_win32.c: Likewise.
+ * testsuite/libffi.call/nested_struct.c: Likewise.
+ * testsuite/libffi.call/nested_struct1.c: Likewise.
+ * testsuite/libffi.call/pyobjc-tc.c: Likewise.
+ * testsuite/libffi.call/problem1.c: Likewise.
+ * testsuite/libffi.call/promotion.c: Likewise.
+ * testsuite/libffi.call/return_ll.c: Likewise.
+ * testsuite/libffi.call/return_sc.c: Likewise.
+ * testsuite/libffi.call/return_uc.c: Likewise.
+ * testsuite/libffi.call/strlen.c: Likewise.
+ * testsuite/libffi.call/strlen_win32.c: Likewise.
+ * testsuite/libffi.call/struct1.c: Likewise.
+ * testsuite/libffi.call/struct2.c: Likewise.
+ * testsuite/libffi.call/struct3.c: Likewise.
+ * testsuite/libffi.call/struct4.c: Likewise.
+ * testsuite/libffi.call/struct5.c: Likewise.
+ * testsuite/libffi.call/struct6.c: Likewise.
+ * testsuite/libffi.call/struct7.c: Likewise.
+ * testsuite/libffi.call/struct8.c: Likewise.
+ * testsuite/libffi.call/struct9.c: Likewise.
+ * testsuite/libffi.special/special.exp: New file.
+ * testsuite/libffi.special/ffitestcxx.h: Likewise.
+ * testsuite/libffi.special/unwindtest.cc: Likewise.
+
+
+2003-08-13 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * src/sh/ffi.c (OFS_INT16): Set 0 for little endian case. Update
+ copyright years.
+
+2003-08-02 Alan Modra <amodra@bigpond.net.au>
+
+ * src/powerpc/ffi.c (ffi_prep_args64): Modify for changed gcc
+ structure passing.
+ (ffi_closure_helper_LINUX64): Likewise.
+ * src/powerpc/linux64.S: Remove code writing to parm save area.
+ * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Use return
+ address in lr from ffi_closure_helper_LINUX64 call to calculate
+ table address. Optimize function tail.
+
+2003-07-28 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * src/sparc/ffi.c: Handle all floating point registers.
+ * src/sparc/v9.S: Likewise. Fixes second part of PR target/11410.
+
+2003-07-11 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
+
+ * README: Note that libffi is not part of GCC. Update the project
+ URL and status.
+
+2003-06-19 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
+
+ * src/powerpc/ppc_closure.S: Include ffi.h.
+
+2003-06-13 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * src/x86/sysv.S: Avoid gas-only .uleb128/.sleb128 directives.
+ Use C style comments.
+
+2003-06-13 Kaz Kojima <kkojima@rr.iij4u.or.jp>
+
+ * Makefile.am: Add SHmedia support. Fix a typo of SH support.
+ * Makefile.in: Regenerate.
+ * configure.in (sh64-*-linux*, sh5*-*-linux*): Add target.
+ * configure: Regenerate.
+ * include/ffi.h.in: Add SHmedia support.
+ * src/sh64/ffi.c: New file.
+ * src/sh64/sysv.S: New file.
+
+2003-05-16 Jakub Jelinek <jakub@redhat.com>
+
+ * configure.in (HAVE_RO_EH_FRAME): Check whether .eh_frame section
+ should be read-only.
+ * configure: Rebuilt.
+ * fficonfig.h.in: Rebuilt.
+ * include/ffi.h.in (EH_FRAME_FLAGS): Define.
+ * src/alpha/osf.S: Use EH_FRAME_FLAGS.
+ * src/powerpc/linux64.S: Likewise.
+ * src/powerpc/linux64_closure.S: Likewise. Include ffi.h.
+ * src/powerpc/sysv.S: Use EH_FRAME_FLAGS. Use pcrel encoding
+ if -fpic/-fPIC/-mrelocatable.
+ * src/powerpc/powerpc_closure.S: Likewise.
+ * src/sparc/v8.S: If HAVE_RO_EH_FRAME is defined, don't include
+ #write in .eh_frame flags.
+ * src/sparc/v9.S: Likewise.
+ * src/x86/unix64.S: Use EH_FRAME_FLAGS.
+ * src/x86/sysv.S: Likewise. Use pcrel encoding if -fpic/-fPIC.
+ * src/s390/sysv.S: Use EH_FRAME_FLAGS. Include ffi.h.
+
+2003-05-07 Jeff Sturm <jsturm@one-point.com>
+
+ Fixes PR bootstrap/10656
+ * configure.in (HAVE_AS_REGISTER_PSEUDO_OP): Test assembler
+ support for .register pseudo-op.
+ * src/sparc/v8.S: Use it.
+ * fficonfig.h.in: Rebuilt.
+ * configure: Rebuilt.
+
+2003-04-18 Jakub Jelinek <jakub@redhat.com>
+
+ * include/ffi.h.in (POWERPC64): Define if 64-bit.
+ (enum ffi_abi): Add FFI_LINUX64 on POWERPC.
+ Make it the default on POWERPC64.
+ (FFI_TRAMPOLINE_SIZE): Define to 24 on POWERPC64.
+ * configure.in: Change powerpc-*-linux* into powerpc*-*-linux*.
+ * configure: Rebuilt.
+ * src/powerpc/ffi.c (hidden): Define.
+ (ffi_prep_args_SYSV): Renamed from
+ ffi_prep_args. Cast pointers to unsigned long to shut up warnings.
+ (NUM_GPR_ARG_REGISTERS64, NUM_FPR_ARG_REGISTERS64,
+ ASM_NEEDS_REGISTERS64): New.
+ (ffi_prep_args64): New function.
+ (ffi_prep_cif_machdep): Handle FFI_LINUX64 ABI.
+ (ffi_call): Likewise.
+ (ffi_prep_closure): Likewise.
+ (flush_icache): Surround by #ifndef POWERPC64.
+ (ffi_dblfl): New union type.
+ (ffi_closure_helper_SYSV): Use it to avoid aliasing problems.
+ (ffi_closure_helper_LINUX64): New function.
+ * src/powerpc/ppc_closure.S: Surround whole file by #ifndef
+ __powerpc64__.
+ * src/powerpc/sysv.S: Likewise.
+ (ffi_call_SYSV): Rename ffi_prep_args to ffi_prep_args_SYSV.
+ * src/powerpc/linux64.S: New file.
+ * src/powerpc/linux64_closure.S: New file.
+ * Makefile.am (EXTRA_DIST): Add src/powerpc/linux64.S and
+ src/powerpc/linux64_closure.S.
+ (TARGET_SRC_POWERPC): Likewise.
+
+ * src/ffitest.c (closure_test_fn, closure_test_fn1, closure_test_fn2,
+ closure_test_fn3): Fix result printing on big-endian 64-bit
+ machines.
+ (main): Print tst2_arg instead of uninitialized tst2_result.
+
+ * src/ffitest.c (main): Hide what closure pointer really points to
+ from the compiler.
+
+2003-04-16 Richard Earnshaw <rearnsha@arm.com>
+
+ * configure.in (arm-*-netbsdelf*): Add configuration.
+ (configure): Regenerated.
+
+2003-04-04 Loren J. Rittle <ljrittle@acm.org>
+
+ * include/Makefile.in: Regenerate.
+
+2003-03-21 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
+
+ * libffi/include/ffi.h.in: Define X86 instead of X86_64 in 32
+ bit mode.
+ * libffi/src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV):
+ Receive closure pointer through parameter, read args using
+ __builtin_dwarf_cfa.
+ (FFI_INIT_TRAMPOLINE): Send closure reference through eax.
+
+2003-03-12 Andreas Schwab <schwab@suse.de>
+
+ * configure.in: Avoid trailing /. in toolexeclibdir.
+ * configure: Rebuilt.
+
+2003-03-03 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * src/powerpc/darwin_closure.S: Recode to fit dynamic libraries.
+
+2003-02-06 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * libffi/src/powerpc/darwin_closure.S:
+ Fix alignement bug, allocate 8 bytes for the result.
+ * libffi/src/powerpc/aix_closure.S:
+ Likewise.
+ * libffi/src/powerpc/ffi_darwin.c:
+ Update stackframe description for aix/darwin_closure.S.
+
+2003-02-06 Jakub Jelinek <jakub@redhat.com>
+
+ * src/s390/ffi.c (ffi_closure_helper_SYSV): Add hidden visibility
+ attribute.
+
+2003-01-31 Christian Cornelssen <ccorn@cs.tu-berlin.de>,
+ Andreas Schwab <schwab@suse.de>
+
+ * configure.in: Adjust command to source config-ml.in to account
+ for changes to the libffi_basedir definition.
+ (libffi_basedir): Remove ${srcdir} from value and include trailing
+ slash if nonempty.
+
+ * configure: Regenerate.
+
+2003-01-29 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
+
+ * src/powerpc/ppc_closure.S: Recode to fit shared libs.
+
+2003-01-28 Andrew Haley <aph@redhat.com>
+
+ * include/ffi.h.in: Enable FFI_CLOSURES for x86_64.
+ * src/x86/ffi64.c (ffi_prep_closure): New.
+ (ffi_closure_UNIX64_inner): New.
+ * src/x86/unix64.S (ffi_closure_UNIX64): New.
+
+2003-01-27 Alexandre Oliva <aoliva@redhat.com>
+
+ * configure.in (toolexecdir, toolexeclibdir): Set and AC_SUBST.
+ Remove USE_LIBDIR conditional.
+ * Makefile.am (toolexecdir, toolexeclibdir): Don't override.
+ * Makefile.in, configure: Rebuilt.
+
+2003-01027 David Edelsohn <edelsohn@gnu.org>
+
+ * Makefile.am (TARGET_SRC_POWERPC_AIX): Fix typo.
+ * Makefile.in: Regenerate.
+
+2003-01-22 Andrew Haley <aph@redhat.com>
+
+ * src/powerpc/darwin.S (_ffi_call_AIX): Add Augmentation size to
+ unwind info.
+
+2003-01-21 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * src/powerpc/darwin.S: Add unwind info.
+ * src/powerpc/darwin_closure.S: Likewise.
+
+2003-01-14 Andrew Haley <aph@redhat.com>
+
+ * src/x86/ffi64.c (ffi_prep_args): Check for void retval.
+ (ffi_prep_cif_machdep): Likewise.
+ * src/x86/unix64.S: Add unwind info.
+
+2003-01-14 Andreas Jaeger <aj@suse.de>
+
+ * src/ffitest.c (main): Only use ffi_closures if those are
+ supported.
+
+2003-01-13 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * libffi/src/ffitest.c
+ add closure testcases
+
+2003-01-13 Kevin B. Hendricks <khendricks@ivey.uwo.ca>
+
+ * libffi/src/powerpc/ffi.c
+ fix alignment bug for float (4 byte aligned iso 8 byte)
+
+2003-01-09 Geoffrey Keating <geoffk@apple.com>
+
+ * src/powerpc/ffi_darwin.c: Remove RCS version string.
+ * src/powerpc/darwin.S: Remove RCS version string.
+
+2003-01-03 Jeff Sturm <jsturm@one-point.com>
+
+ * include/ffi.h.in: Add closure defines for SPARC, SPARC64.
+ * src/ffitest.c (main): Use static storage for closure.
+ * src/sparc/ffi.c (ffi_prep_closure, ffi_closure_sparc_inner): New.
+ * src/sparc/v8.S (ffi_closure_v8): New.
+ * src/sparc/v9.S (ffi_closure_v9): New.
+
+2002-11-10 Ranjit Mathew <rmathew@hotmail.com>
+
+ * include/ffi.h.in: Added FFI_STDCALL ffi_type
+ enumeration for X86_WIN32.
+ * src/x86/win32.S: Added ffi_call_STDCALL function
+ definition.
+ * src/x86/ffi.c (ffi_call/ffi_raw_call): Added
+ switch cases for recognising FFI_STDCALL and
+ calling ffi_call_STDCALL if target is X86_WIN32.
+ * src/ffitest.c (my_stdcall_strlen/stdcall_many):
+ stdcall versions of the "my_strlen" and "many"
+ test functions (for X86_WIN32).
+ Added test cases to test stdcall invocation using
+ these functions.
+
+2002-12-02 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * src/sh/sysv.S: Add DWARF2 unwind info.
+
+2002-11-27 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * src/s390/sysv.S (.eh_frame section): Make section read-only.
+
+2002-11-26 Jim Wilson <wilson@redhat.com>
+
+ * src/types.c (FFI_TYPE_POINTER): Has size 8 on IA64.
+
+2002-11-23 H.J. Lu <hjl@gnu.org>
+
+ * acinclude.m4: Add dummy AM_PROG_LIBTOOL.
+ Include ../config/accross.m4.
+ * aclocal.m4; Rebuild.
+ * configure: Likewise.
+
+2002-11-15 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * src/s390/sysv.S (.eh_frame section): Adapt to pcrel FDE encoding.
+
+2002-11-11 DJ Delorie <dj@redhat.com>
+
+ * configure.in: Look for common files in the right place.
+
+2002-10-08 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * src/java_raw_api.c (ffi_java_raw_to_ptrarray): Interpret
+ raw data as _Jv_word values, not ffi_raw.
+ (ffi_java_ptrarray_to_raw): Likewise.
+ (ffi_java_rvalue_to_raw): New function.
+ (ffi_java_raw_call): Call it.
+ (ffi_java_raw_to_rvalue): New function.
+ (ffi_java_translate_args): Call it.
+ * src/ffitest.c (closure_test_fn): Interpret return value
+ as ffi_arg, not int.
+ * src/s390/ffi.c (ffi_prep_cif_machdep): Add missing
+ FFI_TYPE_POINTER case.
+ (ffi_closure_helper_SYSV): Likewise. Also, assume return
+ values extended to word size.
+
+2002-10-02 Andreas Jaeger <aj@suse.de>
+
+ * src/x86/ffi64.c (ffi_prep_cif_machdep): Remove debug output.
+
+2002-10-01 Bo Thorsen <bo@smetana.suse.de>
+
+ * include/ffi.h.in: Fix i386 win32 compilation.
+
+2002-09-30 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * configure.in: Add s390x-*-linux-* target.
+ * configure: Regenerate.
+ * include/ffi.h.in: Define S390X for s390x targets.
+ (FFI_CLOSURES): Define for s390/s390x.
+ (FFI_TRAMPOLINE_SIZE): Likewise.
+ (FFI_NATIVE_RAW_API): Likewise.
+ * src/prep_cif.c (ffi_prep_cif): Do not compute stack space for s390.
+ * src/types.c (FFI_TYPE_POINTER): Use 8-byte pointers on s390x.
+ * src/s390/ffi.c: Major rework of existing code. Add support for
+ s390x targets. Add closure support.
+ * src/s390/sysv.S: Likewise.
+
+2002-09-29 Richard Earnshaw <rearnsha@arm.com>
+
+ * src/arm/sysv.S: Fix typo.
+
+2002-09-28 Richard Earnshaw <rearnsha@arm.com>
+
+ * src/arm/sysv.S: If we don't have machine/asm.h and the pre-processor
+ has defined __USER_LABEL_PREFIX__, then use it in CNAME.
+ (ffi_call_SYSV): Handle soft-float.
+
+2002-09-27 Bo Thorsen <bo@suse.de>
+
+ * include/ffi.h.in: Fix multilib x86-64 support.
+
+2002-09-22 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * Makefile.am (all-multi): Fix multilib parallel build.
+
+2002-07-19 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * configure.in (sh[34]*-*-linux*): Add brackets.
+ * configure: Regenerate.
+
+2002-07-18 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * Makefile.am: Add SH support.
+ * Makefile.in: Regenerate.
+ * configure.in (sh-*-linux*, sh[34]*-*-linux*): Add target.
+ * configure: Regenerate.
+ * include/ffi.h.in: Add SH support.
+ * src/sh/ffi.c: New file.
+ * src/sh/sysv.S: New file.
+ * src/types.c: Add SH support.
+
+2002-07-16 Bo Thorsen <bo@suse.de>
+
+ * src/x86/ffi64.c: New file that adds x86-64 support.
+ * src/x86/unix64.S: New file that handles argument setup for
+ x86-64.
+ * src/x86/sysv.S: Don't use this on x86-64.
+ * src/x86/ffi.c: Don't use this on x86-64.
+ Remove unused vars.
+ * src/prep_cif.c (ffi_prep_cif): Don't do stack size calculation
+ for x86-64.
+ * src/ffitest.c (struct6): New test that tests a special case in
+ the x86-64 ABI.
+ (struct7): Likewise.
+ (struct8): Likewise.
+ (struct9): Likewise.
+ (closure_test_fn): Silence warning about this when it's not used.
+ (main): Add the new tests.
+ (main): Fix a couple of wrong casts and silence some compiler warnings.
+ * include/ffi.h.in: Add x86-64 ABI definition.
+ * fficonfig.h.in: Regenerate.
+ * Makefile.am: Add x86-64 support.
+ * configure.in: Likewise.
+ * Makefile.in: Regenerate.
+ * configure: Likewise.
+
+2002-06-24 Bo Thorsen <bo@suse.de>
+
+ * src/types.c: Merge settings for similar architectures.
+ Add x86-64 sizes and alignments.
+
+2002-06-23 Bo Thorsen <bo@suse.de>
+
+ * src/arm/ffi.c (ffi_prep_args): Remove unused vars.
+ * src/sparc/ffi.c (ffi_prep_args_v8): Likewise.
+ * src/mips/ffi.c (ffi_prep_args): Likewise.
+ * src/m68k/ffi.c (ffi_prep_args): Likewise.
+
+2002-07-18 H.J. Lu (hjl@gnu.org)
+
+ * Makefile.am (TARGET_SRC_MIPS_LINUX): New.
+ (libffi_la_SOURCES): Support MIPS_LINUX.
+ (libffi_convenience_la_SOURCES): Likewise.
+ * Makefile.in: Regenerated.
+
+ * configure.in (mips64*-*): Skip.
+ (mips*-*-linux*): New.
+ * configure: Regenerated.
+
+ * src/mips/ffi.c: Include <sgidefs.h>.
+
+2002-06-06 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * src/s390/sysv.S: Save/restore %r6. Add DWARF-2 unwind info.
+
+2002-05-27 Roger Sayle <roger@eyesopen.com>
+
+ * src/x86/ffi.c (ffi_prep_args): Remove reference to avn.
+
+2002-05-27 Bo Thorsen <bo@suse.de>
+
+ * src/x86/ffi.c (ffi_prep_args): Remove unused variable and
+ fix formatting.
+
+2002-05-13 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * src/powerpc/ffi_darwin.c (ffi_prep_closure): Declare fd at
+ beginning of function (for older apple cc).
+
+2002-05-08 Alexandre Oliva <aoliva@redhat.com>
+
+ * configure.in (ORIGINAL_LD_FOR_MULTILIBS): Preserve LD at
+ script entry, and set LD to it when configuring multilibs.
+ * configure: Rebuilt.
+
+2002-05-05 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * configure.in (sparc64-*-netbsd*): Add target.
+ (sparc-*-netbsdelf*): Likewise.
+ * configure: Regenerate.
+
+2002-04-28 David S. Miller <davem@redhat.com>
+
+ * configure.in, configure: Fix SPARC test in previous change.
+
+2002-04-29 Gerhard Tonn <GerhardTonn@swol.de>
+
+ * Makefile.am: Add Linux for S/390 support.
+ * Makefile.in: Regenerate.
+ * configure.in: Add Linux for S/390 support.
+ * configure: Regenerate.
+ * include/ffi.h.in: Add Linux for S/390 support.
+ * src/s390/ffi.c: New file from libffi CVS tree.
+ * src/s390/sysv.S: New file from libffi CVS tree.
+
+2002-04-28 Jakub Jelinek <jakub@redhat.com>
+
+ * configure.in (HAVE_AS_SPARC_UA_PCREL): Check for working
+ %r_disp32().
+ * src/sparc/v8.S: Use it.
+ * src/sparc/v9.S: Likewise.
+ * fficonfig.h.in: Rebuilt.
+ * configure: Rebuilt.
+
+2002-04-08 Hans Boehm <Hans_Boehm@hp.com>
+
+ * src/java_raw_api.c (ffi_java_raw_size): Handle FFI_TYPE_DOUBLE
+ correctly.
+ * src/ia64/unix.S: Add unwind information. Fix comments.
+ Save sp in a way that's compatible with unwind info.
+ (ffi_call_unix): Correctly restore sp in all cases.
+ * src/ia64/ffi.c: Add, fix comments.
+
+2002-04-08 Jakub Jelinek <jakub@redhat.com>
+
+ * src/sparc/v8.S: Make .eh_frame dependent on target word size.
+
+2002-04-06 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * configure.in (alpha*-*-netbsd*): Add target.
+ * configure: Regenerate.
+
+2002-04-04 Jeff Sturm <jsturm@one-point.com>
+
+ * src/sparc/v8.S: Add unwind info.
+ * src/sparc/v9.S: Likewise.
+
+2002-03-30 Krister Walfridsson <cato@df.lth.se>
+
+ * configure.in: Enable i*86-*-netbsdelf*.
+ * configure: Rebuilt.
+
+2002-03-29 David Billinghurst <David.Billinghurst@riotinto.com>
+
+ PR other/2620
+ * src/mips/n32.s: Delete
+ * src/mips/o32.s: Delete
+
+2002-03-21 Loren J. Rittle <ljrittle@acm.org>
+
+ * configure.in: Enable alpha*-*-freebsd*.
+ * configure: Rebuilt.
+
+2002-03-17 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
+
+ * Makefile.am: libfficonvenience -> libffi_convenience.
+ * Makefile.in: Rebuilt.
+
+ * Makefile.am: Define ffitest_OBJECTS.
+ * Makefile.in: Rebuilt.
+
+2002-03-07 Andreas Tobler <toa@pop.agri.ch>
+ David Edelsohn <edelsohn@gnu.org>
+
+ * Makefile.am (EXTRA_DIST): Add Darwin and AIX closure files.
+ (TARGET_SRC_POWERPC_AIX): Add aix_closure.S.
+ (TARGET_SRC_POWERPC_DARWIN): Add darwin_closure.S.
+ * Makefile.in: Regenerate.
+ * include/ffi.h.in: Add AIX and Darwin closure definitions.
+ * src/powerpc/ffi_darwin.c (ffi_prep_closure): New function.
+ (flush_icache, flush_range): New functions.
+ (ffi_closure_helper_DARWIN): New function.
+ * src/powerpc/aix_closure.S: New file.
+ * src/powerpc/darwin_closure.S: New file.
+
+2002-02-24 Jeff Sturm <jsturm@one-point.com>
+
+ * include/ffi.h.in: Add typedef for ffi_arg.
+ * src/ffitest.c (main): Declare rint with ffi_arg.
+
+2002-02-21 Andreas Tobler <toa@pop.agri.ch>
+
+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Skip appropriate
+ number of GPRs for floating-point arguments.
+
+2002-01-31 Anthony Green <green@redhat.com>
+
+ * configure: Rebuilt.
+ * configure.in: Replace CHECK_SIZEOF and endian tests with
+ cross-compiler friendly macros.
+ * aclocal.m4 (AC_COMPILE_CHECK_SIZEOF, AC_C_BIGENDIAN_CROSS): New
+ macros.
+
+2002-01-18 David Edelsohn <edelsohn@gnu.org>
+
+ * src/powerpc/darwin.S (_ffi_call_AIX): New.
+ * src/powerpc/aix.S (ffi_call_DARWIN): New.
+
+2002-01-17 David Edelsohn <edelsohn@gnu.org>
+
+ * Makefile.am (EXTRA_DIST): Add Darwin and AIX files.
+ (TARGET_SRC_POWERPC_AIX): New.
+ (POWERPC_AIX): New stanza.
+ * Makefile.in: Regenerate.
+ * configure.in: Add AIX case.
+ * configure: Regenerate.
+ * include/ffi.h.in (ffi_abi): Add FFI_AIX.
+ * src/powerpc/ffi_darwin.c (ffi_status): Use "long" to scale frame
+ size. Fix "long double" support.
+ (ffi_call): Add FFI_AIX case.
+ * src/powerpc/aix.S: New.
+
+2001-10-09 John Hornkvist <john@toastedmarshmallow.com>
+
+ Implement Darwin PowerPC ABI.
+ * configure.in: Handle powerpc-*-darwin*.
+ * Makefile.am: Set source files for POWERPC_DARWIN.
+ * configure: Rebuilt.
+ * Makefile.in: Rebuilt.
+ * include/ffi.h.in: Define FFI_DARWIN and FFI_DEFAULT_ABI for
+ POWERPC_DARWIN.
+ * src/powerpc/darwin.S: New file.
+ * src/powerpc/ffi_darwin.c: New file.
+
+2001-10-07 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * src/x86/ffi.c: Fix spelling error of "separate" as "seperate".
+
+2001-07-16 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * src/x86/sysv.S: Avoid gas-only .balign directive.
+ Use C style comments.
+
+2001-07-16 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * src/alpha/ffi.c (ffi_prep_closure): Avoid gas-only mnemonic.
+ Fixes PR bootstrap/3563.
+
+2001-06-26 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * src/alpha/osf.S (ffi_closure_osf): Use .rdata for ECOFF.
+
+2001-06-25 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * configure.in: Recognize sparc*-sun-* host.
+ * configure: Regenerate.
+
+2001-06-06 Andrew Haley <aph@redhat.com>
+
+ * src/alpha/osf.S (__FRAME_BEGIN__): Conditionalize for ELF.
+
+2001-06-03 Andrew Haley <aph@redhat.com>
+
+ * src/alpha/osf.S: Add unwind info.
+ * src/powerpc/sysv.S: Add unwind info.
+ * src/powerpc/ppc_closure.S: Likewise.
+
+2000-05-31 Jeff Sturm <jsturm@one-point.com>
+
+ * configure.in: Fix AC_ARG_ENABLE usage.
+ * configure: Rebuilt.
+
+2001-05-06 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
+
+ * configure.in: Remove warning about beta code.
+ * configure: Rebuilt.
+
+2001-04-25 Hans Boehm <Hans_Boehm@hp.com>
+
+ * src/ia64/unix.S: Restore stack pointer when returning from
+ ffi_closure_UNIX.
+ * src/ia64/ffi.c: Fix typo in comment.
+
+2001-04-18 Jim Wilson <wilson@redhat.com>
+
+ * src/ia64/unix.S: Delete unnecessary increment and decrement of loc2
+ to eliminate RAW DV.
+
+2001-04-12 Bryce McKinlay <bryce@albatross.co.nz>
+
+ * Makefile.am: Make a libtool convenience library.
+ * Makefile.in: Rebuilt.
+
+2001-03-29 Bryce McKinlay <bryce@albatross.co.nz>
+
+ * configure.in: Use different syntax for subdirectory creation.
+ * configure: Rebuilt.
+
+2001-03-27 Jon Beniston <jon@beniston.com>
+
+ * configure.in: Added X86_WIN32 target (Win32, CygWin, MingW).
+ * configure: Rebuilt.
+ * Makefile.am: Added X86_WIN32 target support.
+ * Makefile.in: Rebuilt.
+
+ * include/ffi.h.in: Added X86_WIN32 target support.
+
+ * src/ffitest.c: Doesn't run structure tests for X86_WIN32 targets.
+ * src/types.c: Added X86_WIN32 target support.
+
+ * src/x86/win32.S: New file. Based on sysv.S, but with EH
+ stuff removed and made to work with CygWin's gas.
+
+2001-03-26 Bryce McKinlay <bryce@albatross.co.nz>
+
+ * configure.in: Make target subdirectory in build dir.
+ * Makefile.am: Override suffix based rules to specify correct output
+ subdirectory.
+ * Makefile.in: Rebuilt.
+ * configure: Rebuilt.
+
+2001-03-23 Kevin B Hendricks <khendricks@ivey.uwo.ca>
+
+ * src/powerpc/ppc_closure.S: New file.
+ * src/powerpc/ffi.c (ffi_prep_args): Fixed ABI compatibility bug
+ involving long long and register pairs.
+ (ffi_prep_closure): New function.
+ (flush_icache): Likewise.
+ (ffi_closure_helper_SYSV): Likewise.
+ * include/ffi.h.in (FFI_CLOSURES): Define on PPC.
+ (FFI_TRAMPOLINE_SIZE): Likewise.
+ (FFI_NATIVE_RAW_API): Likewise.
+ * Makefile.in: Rebuilt.
+ * Makefile.am (EXTRA_DIST): Added src/powerpc/ppc_closure.S.
+ (TARGET_SRC_POWERPC): Likewise.
+
+2001-03-19 Tom Tromey <tromey@redhat.com>
+
+ * Makefile.in: Rebuilt.
+ * Makefile.am (ffitest_LDFLAGS): New macro.
+
+2001-03-02 Nick Clifton <nickc@redhat.com>
+
+ * include/ffi.h.in: Remove RCS ident string.
+ * include/ffi_mips.h: Remove RCS ident string.
+ * src/debug.c: Remove RCS ident string.
+ * src/ffitest.c: Remove RCS ident string.
+ * src/prep_cif.c: Remove RCS ident string.
+ * src/types.c: Remove RCS ident string.
+ * src/alpha/ffi.c: Remove RCS ident string.
+ * src/alpha/osf.S: Remove RCS ident string.
+ * src/arm/ffi.c: Remove RCS ident string.
+ * src/arm/sysv.S: Remove RCS ident string.
+ * src/mips/ffi.c: Remove RCS ident string.
+ * src/mips/n32.S: Remove RCS ident string.
+ * src/mips/o32.S: Remove RCS ident string.
+ * src/sparc/ffi.c: Remove RCS ident string.
+ * src/sparc/v8.S: Remove RCS ident string.
+ * src/sparc/v9.S: Remove RCS ident string.
+ * src/x86/ffi.c: Remove RCS ident string.
+ * src/x86/sysv.S: Remove RCS ident string.
+
+2001-02-08 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * include/ffi.h.in: Change sourceware.cygnus.com references to
+ gcc.gnu.org.
+
+2000-12-09 Richard Henderson <rth@redhat.com>
+
+ * src/alpha/ffi.c (ffi_call): Simplify struct return test.
+ (ffi_closure_osf_inner): Index rather than increment avalue
+ and arg_types. Give ffi_closure_osf the raw return value type.
+ * src/alpha/osf.S (ffi_closure_osf): Handle return value type
+ promotion.
+
+2000-12-07 Richard Henderson <rth@redhat.com>
+
+ * src/raw_api.c (ffi_translate_args): Fix typo.
+ (ffi_prep_closure): Likewise.
+
+ * include/ffi.h.in [ALPHA]: Define FFI_CLOSURES and
+ FFI_TRAMPOLINE_SIZE.
+ * src/alpha/ffi.c (ffi_prep_cif_machdep): Adjust minimal
+ cif->bytes for new ffi_call_osf implementation.
+ (ffi_prep_args): Absorb into ...
+ (ffi_call): ... here. Do all stack allocation here and
+ avoid a callback function.
+ (ffi_prep_closure, ffi_closure_osf_inner): New.
+ * src/alpha/osf.S (ffi_call_osf): Reimplement with no callback.
+ (ffi_closure_osf): New.
+
+2000-09-10 Alexandre Oliva <aoliva@redhat.com>
+
+ * config.guess, config.sub, install-sh: Removed.
+ * ltconfig, ltmain.sh, missing, mkinstalldirs: Likewise.
+ * Makefile.in: Rebuilt.
+
+ * acinclude.m4: Include libtool macros from the top level.
+ * aclocal.m4, configure: Rebuilt.
+
+2000-08-22 Alexandre Oliva <aoliva@redhat.com>
+
+ * configure.in [i*86-*-freebsd*] (TARGET, TARGETDIR): Set.
+ * configure: Rebuilt.
+
+2000-05-11 Scott Bambrough <scottb@netwinder.org>
+
+ * libffi/src/arm/sysv.S (ffi_call_SYSV): Doubles are not saved to
+ memory correctly. Use conditional instructions, not branches where
+ possible.
+
+2000-05-04 Tom Tromey <tromey@cygnus.com>
+
+ * configure: Rebuilt.
+ * configure.in: Match `arm*-*-linux-*'.
+ From Chris Dornan <cdornan@arm.com>.
+
+2000-04-28 Jakub Jelinek <jakub@redhat.com>
+
+ * Makefile.am (SUBDIRS): Define.
+ (AM_MAKEFLAGS): Likewise.
+ (Multilib support.): Add section.
+ * Makefile.in: Rebuilt.
+ * ltconfig (extra_compiler_flags, extra_compiler_flags_value):
+ New variables. Set for gcc using -print-multi-lib. Export them
+ to libtool.
+ (sparc64-*-linux-gnu*): Use libsuff 64 for search paths.
+ * ltmain.sh (B|b|V): Don't throw away gcc's -B, -b and -V options
+ for -shared links.
+ (extra_compiler_flags_value, extra_compiler_flags): Check these
+ for extra compiler options which need to be passed down in
+ compiler_flags.
+
+2000-04-16 Anthony Green <green@redhat.com>
+
+ * configure: Rebuilt.
+ * configure.in: Change i*86-pc-linux* to i*86-*-linux*.
+
+2000-04-14 Jakub Jelinek <jakub@redhat.com>
+
+ * include/ffi.h.in (SPARC64): Define for 64bit SPARC builds.
+ Set SPARC FFI_DEFAULT_ABI based on SPARC64 define.
+ * src/sparc/ffi.c (ffi_prep_args_v8): Renamed from ffi_prep_args.
+ Replace all void * sizeofs with sizeof(int).
+ Only compare type with FFI_TYPE_LONGDOUBLE if LONGDOUBLE is
+ different than DOUBLE.
+ Remove FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases (handled elsewhere).
+ (ffi_prep_args_v9): New function.
+ (ffi_prep_cif_machdep): Handle V9 ABI and long long on V8.
+ (ffi_V9_return_struct): New function.
+ (ffi_call): Handle FFI_V9 ABI from 64bit code and FFI_V8 ABI from
+ 32bit code (not yet cross-arch calls).
+ * src/sparc/v8.S: Add struct return delay nop.
+ Handle long long.
+ * src/sparc/v9.S: New file.
+ * src/prep_cif.c (ffi_prep_cif): Return structure pointer
+ is used on sparc64 only for structures larger than 32 bytes.
+ Pass by reference for structures is done for structure arguments
+ larger than 16 bytes.
+ * src/ffitest.c (main): Use 64bit rint on sparc64.
+ Run long long tests on sparc.
+ * src/types.c (FFI_TYPE_POINTER): Pointer is 64bit on alpha and
+ sparc64.
+ (FFI_TYPE_LONGDOUBLE): long double is 128 bit aligned to 128 bits
+ on sparc64.
+ * configure.in (sparc-*-linux*): New supported target.
+ (sparc64-*-linux*): Likewise.
+ * configure: Rebuilt.
+ * Makefile.am: Add v9.S to SPARC files.
+ * Makefile.in: Likewise.
+ (LINK): Surround $(CCLD) into double quotes, so that multilib
+ compiles work correctly.
+
+2000-04-04 Alexandre Petit-Bianco <apbianco@cygnus.com>
+
+ * configure: Rebuilt.
+ * configure.in: (i*86-*-solaris*): New libffi target. Patch
+ proposed by Bryce McKinlay.
+
+2000-03-20 Tom Tromey <tromey@cygnus.com>
+
+ * Makefile.in: Hand edit for java_raw_api.lo.
+
+2000-03-08 Bryce McKinlay <bryce@albatross.co.nz>
+
+ * config.guess, config.sub: Update from the gcc tree.
+ Fix for PR libgcj/168.
+
+2000-03-03 Tom Tromey <tromey@cygnus.com>
+
+ * Makefile.in: Fixed ia64 by hand.
+
+ * configure: Rebuilt.
+ * configure.in (--enable-multilib): New option.
+ (libffi_basedir): New subst.
+ (AC_OUTPUT): Added multilib code.
+
+2000-03-02 Tom Tromey <tromey@cygnus.com>
+
+ * Makefile.in: Rebuilt.
+ * Makefile.am (TARGET_SRC_IA64): Use `ia64', not `alpha', as
+ directory name.
+
+2000-02-25 Hans Boehm <boehm@acm.org>
+
+ * src/ia64/ffi.c, src/ia64/ia64_flags.h, src/ia64/unix.S: New
+ files.
+ * src/raw_api.c (ffi_translate_args): Fixed typo in argument
+ list.
+ (ffi_prep_raw_closure): Use ffi_translate_args, not
+ ffi_closure_translate.
+ * src/java_raw_api.c: New file.
+ * src/ffitest.c (closure_test_fn): New function.
+ (main): Define `rint' as long long on IA64. Added new test when
+ FFI_CLOSURES is defined.
+ * include/ffi.h.in (ALIGN): Use size_t, not unsigned.
+ (ffi_abi): Recognize IA64.
+ (ffi_raw): Added `flt' field.
+ Added "Java raw API" code.
+ * configure.in: Recognize ia64.
+ * Makefile.am (TARGET_SRC_IA64): New macro.
+ (libffi_la_common_SOURCES): Added java_raw_api.c.
+ (libffi_la_SOURCES): Define in IA64 case.
+
+2000-01-04 Tom Tromey <tromey@cygnus.com>
+
+ * Makefile.in: Rebuilt with newer automake.
+
+1999-12-31 Tom Tromey <tromey@cygnus.com>
+
+ * Makefile.am (INCLUDES): Added -I$(top_srcdir)/src.
+
+1999-09-01 Tom Tromey <tromey@cygnus.com>
+
+ * include/ffi.h.in: Removed PACKAGE and VERSION defines and
+ undefs.
+ * fficonfig.h.in: Rebuilt.
+ * configure: Rebuilt.
+ * configure.in: Pass 3rd argument to AM_INIT_AUTOMAKE.
+ Use AM_PROG_LIBTOOL (automake 1.4 compatibility).
+ * acconfig.h: Don't #undef PACKAGE or VERSION.
+
+1999-08-09 Anthony Green <green@cygnus.com>
+
+ * include/ffi.h.in: Try to work around messy header problem
+ with PACKAGE and VERSION.
+
+ * configure: Rebuilt.
+ * configure.in: Change version to 2.00-beta.
+
+ * fficonfig.h.in: Rebuilt.
+ * acconfig.h (FFI_NO_STRUCTS, FFI_NO_RAW_API): Define.
+
+ * src/x86/ffi.c (ffi_raw_call): Rename.
+
+1999-08-02 Kresten Krab Thorup <krab@dominiq.is.s.u-tokyo.ac.jp>
+
+ * src/x86/ffi.c (ffi_closure_SYSV): New function.
+ (ffi_prep_incoming_args_SYSV): Ditto.
+ (ffi_prep_closure): Ditto.
+ (ffi_closure_raw_SYSV): Ditto.
+ (ffi_prep_raw_closure): More ditto.
+ (ffi_call_raw): Final ditto.
+
+ * include/ffi.h.in: Add definitions for closure and raw API.
+
+ * src/x86/ffi.c (ffi_prep_cif_machdep): Added case for
+ FFI_TYPE_UINT64.
+
+ * Makefile.am (libffi_la_common_SOURCES): Added raw_api.c
+
+ * src/raw_api.c: New file.
+
+ * include/ffi.h.in (ffi_raw): New type.
+ (UINT_ARG, SINT_ARG): New defines.
+ (ffi_closure, ffi_raw_closure): New types.
+ (ffi_prep_closure, ffi_prep_raw_closure): New declarations.
+
+ * configure.in: Add check for endianness and sizeof void*.
+
+ * src/x86/sysv.S (ffi_call_SYSV): Call fixup routine via argument,
+ instead of directly.
+
+ * configure: Rebuilt.
+
+Thu Jul 8 14:28:42 1999 Anthony Green <green@cygnus.com>
+
+ * configure.in: Add x86 and powerpc BeOS configurations.
+ From Makoto Kato <m_kato@ga2.so-net.ne.jp>.
+
+1999-05-09 Anthony Green <green@cygnus.com>
+
+ * configure.in: Add warning about this being beta code.
+ Remove src/Makefile.am from the picture.
+ * configure: Rebuilt.
+
+ * Makefile.am: Move logic from src/Makefile.am. Add changes
+ to support libffi as a target library.
+ * Makefile.in: Rebuilt.
+
+ * aclocal.m4, config.guess, config.sub, ltconfig, ltmain.sh:
+ Upgraded to new autoconf, automake, libtool.
+
+ * README: Tweaks.
+
+ * LICENSE: Update copyright date.
+
+ * src/Makefile.am, src/Makefile.in: Removed.
+
+1998-11-29 Anthony Green <green@cygnus.com>
+
+ * include/ChangeLog: Removed.
+ * src/ChangeLog: Removed.
+ * src/mips/ChangeLog: Removed.
+ * src/sparc/ChangeLog: Remboved.
+ * src/x86/ChangeLog: Removed.
+
+ * ChangeLog.v1: Created.
+/* -----------------------------------------------------------------------
+ ffi.c - Copyright (C) 2011 Anthony Green
+ Copyright (C) 2008 Red Hat, Inc
+ Copyright (C) 2007, 2008 Free Software Foundation, Inc
+ Copyright (c) 1998 Geoffrey Keating
+
+ PowerPC Foreign Function Interface
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ ``Software''), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+ ----------------------------------------------------------------------- */
+
+#include <ffi.h>
+#include <ffi_common.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+
+
+extern void ffi_closure_SYSV (void);
+extern void FFI_HIDDEN ffi_closure_LINUX64 (void);
+
+enum {
+ /* The assembly depends on these exact flags. */
+ FLAG_RETURNS_SMST = 1 << (31-31), /* Used for FFI_SYSV small structs. */
+ FLAG_RETURNS_NOTHING = 1 << (31-30), /* These go in cr7 */
+ FLAG_RETURNS_FP = 1 << (31-29),
+ FLAG_RETURNS_64BITS = 1 << (31-28),
+
+ FLAG_RETURNS_128BITS = 1 << (31-27), /* cr6 */
+ FLAG_SYSV_SMST_R4 = 1 << (31-26), /* use r4 for FFI_SYSV 8 byte
+ structs. */
+ FLAG_SYSV_SMST_R3 = 1 << (31-25), /* use r3 for FFI_SYSV 4 byte
+ structs. */
+ /* Bits (31-24) through (31-19) store shift value for SMST */
+
+ FLAG_ARG_NEEDS_COPY = 1 << (31- 7),
+ FLAG_FP_ARGUMENTS = 1 << (31- 6), /* cr1.eq; specified by ABI */
+ FLAG_4_GPR_ARGUMENTS = 1 << (31- 5),
+ FLAG_RETVAL_REFERENCE = 1 << (31- 4)
+};
+
+/* About the SYSV ABI. */
+unsigned int NUM_GPR_ARG_REGISTERS = 8;
+#ifndef __NO_FPRS__
+unsigned int NUM_FPR_ARG_REGISTERS = 8;
+#else
+unsigned int NUM_FPR_ARG_REGISTERS = 0;
+#endif
+
+enum { ASM_NEEDS_REGISTERS = 4 };
+
+/* ffi_prep_args_SYSV is called by the assembly routine once stack space
+ has been allocated for the function's arguments.
+
+ The stack layout we want looks like this:
+
+ | Return address from ffi_call_SYSV 4bytes | higher addresses
+ |--------------------------------------------|
+ | Previous backchain pointer 4 | stack pointer here
+ |--------------------------------------------|<+ <<< on entry to
+ | Saved r28-r31 4*4 | | ffi_call_SYSV
+ |--------------------------------------------| |
+ | GPR registers r3-r10 8*4 | | ffi_call_SYSV
+ |--------------------------------------------| |
+ | FPR registers f1-f8 (optional) 8*8 | |
+ |--------------------------------------------| | stack |
+ | Space for copied structures | | grows |
+ |--------------------------------------------| | down V
+ | Parameters that didn't fit in registers | |
+ |--------------------------------------------| | lower addresses
+ | Space for callee's LR 4 | |
+ |--------------------------------------------| | stack pointer here
+ | Current backchain pointer 4 |-/ during
+ |--------------------------------------------| <<< ffi_call_SYSV
+
+*/
+
+void
+ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack)
+{
+ const unsigned bytes = ecif->cif->bytes;
+ const unsigned flags = ecif->cif->flags;
+
+ typedef union {
+ char *c;
+ unsigned *u;
+ long long *ll;
+ float *f;
+ double *d;
+ } valp;
+
+ /* 'stacktop' points at the previous backchain pointer. */
+ valp stacktop;
+
+ /* 'gpr_base' points at the space for gpr3, and grows upwards as
+ we use GPR registers. */
+ valp gpr_base;
+ int intarg_count;
+
+ /* 'fpr_base' points at the space for fpr1, and grows upwards as
+ we use FPR registers. */
+ valp fpr_base;
+ int fparg_count;
+
+ /* 'copy_space' grows down as we put structures in it. It should
+ stay 16-byte aligned. */
+ valp copy_space;
+
+ /* 'next_arg' grows up as we put parameters in it. */
+ valp next_arg;
+
+ int i, ii MAYBE_UNUSED;
+ ffi_type **ptr;
+ double double_tmp;
+ union {
+ void **v;
+ char **c;
+ signed char **sc;
+ unsigned char **uc;
+ signed short **ss;
+ unsigned short **us;
+ unsigned int **ui;
+ long long **ll;
+ float **f;
+ double **d;
+ } p_argv;
+ size_t struct_copy_size;
+ unsigned gprvalue;
+
+ if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT)
+ NUM_FPR_ARG_REGISTERS = 0;
+
+ stacktop.c = (char *) stack + bytes;
+ gpr_base.u = stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS;
+ intarg_count = 0;
+ fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS;
+ fparg_count = 0;
+ copy_space.c = ((flags & FLAG_FP_ARGUMENTS) ? fpr_base.c : gpr_base.c);
+ next_arg.u = stack + 2;
+
+ /* Check that everything starts aligned properly. */
+ FFI_ASSERT (((unsigned) (char *) stack & 0xF) == 0);
+ FFI_ASSERT (((unsigned) copy_space.c & 0xF) == 0);
+ FFI_ASSERT (((unsigned) stacktop.c & 0xF) == 0);
+ FFI_ASSERT ((bytes & 0xF) == 0);
+ FFI_ASSERT (copy_space.c >= next_arg.c);
+
+ /* Deal with return values that are actually pass-by-reference. */
+ if (flags & FLAG_RETVAL_REFERENCE)
+ {
+ *gpr_base.u++ = (unsigned long) (char *) ecif->rvalue;
+ intarg_count++;
+ }
+
+ /* Now for the arguments. */
+ p_argv.v = ecif->avalue;
+ for (ptr = ecif->cif->arg_types, i = ecif->cif->nargs;
+ i > 0;
+ i--, ptr++, p_argv.v++)
+ {
+ switch ((*ptr)->type)
+ {
+ case FFI_TYPE_FLOAT:
+ /* With FFI_LINUX_SOFT_FLOAT floats are handled like UINT32. */
+ if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT)
+ goto soft_float_prep;
+ double_tmp = **p_argv.f;
+ if (fparg_count >= NUM_FPR_ARG_REGISTERS)
+ {
+ *next_arg.f = (float) double_tmp;
+ next_arg.u += 1;
+ intarg_count++;
+ }
+ else
+ *fpr_base.d++ = double_tmp;
+ fparg_count++;
+ FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
+ break;
+
+ case FFI_TYPE_DOUBLE:
+ /* With FFI_LINUX_SOFT_FLOAT doubles are handled like UINT64. */
+ if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT)
+ goto soft_double_prep;
+ double_tmp = **p_argv.d;
+
+ if (fparg_count >= NUM_FPR_ARG_REGISTERS)
+ {
+ if (intarg_count >= NUM_GPR_ARG_REGISTERS
+ && intarg_count % 2 != 0)
+ {
+ intarg_count++;
+ next_arg.u++;
+ }
+ *next_arg.d = double_tmp;
+ next_arg.u += 2;
+ }
+ else
+ *fpr_base.d++ = double_tmp;
+ fparg_count++;
+ FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
+ break;
+
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ case FFI_TYPE_LONGDOUBLE:
+ if ((ecif->cif->abi != FFI_LINUX)
+ && (ecif->cif->abi != FFI_LINUX_SOFT_FLOAT))
+ goto do_struct;
+ /* The soft float ABI for long doubles works like this,
+ a long double is passed in four consecutive gprs if available.
+ A maximum of 2 long doubles can be passed in gprs.
+ If we do not have 4 gprs left, the long double is passed on the
+ stack, 4-byte aligned. */
+ if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT)
+ {
+ unsigned int int_tmp = (*p_argv.ui)[0];
+ if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3)
+ {
+ if (intarg_count < NUM_GPR_ARG_REGISTERS)
+ intarg_count += NUM_GPR_ARG_REGISTERS - intarg_count;
+ *next_arg.u = int_tmp;
+ next_arg.u++;
+ for (ii = 1; ii < 4; ii++)
+ {
+ int_tmp = (*p_argv.ui)[ii];
+ *next_arg.u = int_tmp;
+ next_arg.u++;
+ }
+ }
+ else
+ {
+ *gpr_base.u++ = int_tmp;
+ for (ii = 1; ii < 4; ii++)
+ {
+ int_tmp = (*p_argv.ui)[ii];
+ *gpr_base.u++ = int_tmp;
+ }
+ }
+ intarg_count +=4;
+ }
+ else
+ {
+ double_tmp = (*p_argv.d)[0];
+
+ if (fparg_count >= NUM_FPR_ARG_REGISTERS - 1)
+ {
+ if (intarg_count >= NUM_GPR_ARG_REGISTERS
+ && intarg_count % 2 != 0)
+ {
+ intarg_count++;
+ next_arg.u++;
+ }
+ *next_arg.d = double_tmp;
+ next_arg.u += 2;
+ double_tmp = (*p_argv.d)[1];
+ *next_arg.d = double_tmp;
+ next_arg.u += 2;
+ }
+ else
+ {
+ *fpr_base.d++ = double_tmp;
+ double_tmp = (*p_argv.d)[1];
+ *fpr_base.d++ = double_tmp;
+ }
+
+ fparg_count += 2;
+ FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
+ }
+ break;
+#endif
+
+ case FFI_TYPE_UINT64:
+ case FFI_TYPE_SINT64:
+ soft_double_prep:
+ if (intarg_count == NUM_GPR_ARG_REGISTERS-1)
+ intarg_count++;
+ if (intarg_count >= NUM_GPR_ARG_REGISTERS)
+ {
+ if (intarg_count % 2 != 0)
+ {
+ intarg_count++;
+ next_arg.u++;
+ }
+ *next_arg.ll = **p_argv.ll;
+ next_arg.u += 2;
+ }
+ else
+ {
+ /* whoops: abi states only certain register pairs
+ * can be used for passing long long int
+ * specifically (r3,r4), (r5,r6), (r7,r8),
+ * (r9,r10) and if next arg is long long but
+ * not correct starting register of pair then skip
+ * until the proper starting register
+ */
+ if (intarg_count % 2 != 0)
+ {
+ intarg_count ++;
+ gpr_base.u++;
+ }
+ *gpr_base.ll++ = **p_argv.ll;
+ }
+ intarg_count += 2;
+ break;
+
+ case FFI_TYPE_STRUCT:
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ do_struct:
+#endif
+ struct_copy_size = ((*ptr)->size + 15) & ~0xF;
+ copy_space.c -= struct_copy_size;
+ memcpy (copy_space.c, *p_argv.c, (*ptr)->size);
+
+ gprvalue = (unsigned long) copy_space.c;
+
+ FFI_ASSERT (copy_space.c > next_arg.c);
+ FFI_ASSERT (flags & FLAG_ARG_NEEDS_COPY);
+ goto putgpr;
+
+ case FFI_TYPE_UINT8:
+ gprvalue = **p_argv.uc;
+ goto putgpr;
+ case FFI_TYPE_SINT8:
+ gprvalue = **p_argv.sc;
+ goto putgpr;
+ case FFI_TYPE_UINT16:
+ gprvalue = **p_argv.us;
+ goto putgpr;
+ case FFI_TYPE_SINT16:
+ gprvalue = **p_argv.ss;
+ goto putgpr;
+
+ case FFI_TYPE_INT:
+ case FFI_TYPE_UINT32:
+ case FFI_TYPE_SINT32:
+ case FFI_TYPE_POINTER:
+ soft_float_prep:
+
+ gprvalue = **p_argv.ui;
+
+ putgpr:
+ if (intarg_count >= NUM_GPR_ARG_REGISTERS)
+ *next_arg.u++ = gprvalue;
+ else
+ *gpr_base.u++ = gprvalue;
+ intarg_count++;
+ break;
+ }
+ }
+
+ /* Check that we didn't overrun the stack... */
+ FFI_ASSERT (copy_space.c >= next_arg.c);
+ FFI_ASSERT (gpr_base.u <= stacktop.u - ASM_NEEDS_REGISTERS);
+ FFI_ASSERT (fpr_base.u
+ <= stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS);
+ FFI_ASSERT (flags & FLAG_4_GPR_ARGUMENTS || intarg_count <= 4);
+}
+
+/* About the LINUX64 ABI. */
+enum {
+ NUM_GPR_ARG_REGISTERS64 = 8,
+ NUM_FPR_ARG_REGISTERS64 = 13
+};
+enum { ASM_NEEDS_REGISTERS64 = 4 };
+
+/* ffi_prep_args64 is called by the assembly routine once stack space
+ has been allocated for the function's arguments.
+
+ The stack layout we want looks like this:
+
+ | Ret addr from ffi_call_LINUX64 8bytes | higher addresses
+ |--------------------------------------------|
+ | CR save area 8bytes |
+ |--------------------------------------------|
+ | Previous backchain pointer 8 | stack pointer here
+ |--------------------------------------------|<+ <<< on entry to
+ | Saved r28-r31 4*8 | | ffi_call_LINUX64
+ |--------------------------------------------| |
+ | GPR registers r3-r10 8*8 | |
+ |--------------------------------------------| |
+ | FPR registers f1-f13 (optional) 13*8 | |
+ |--------------------------------------------| |
+ | Parameter save area | |
+ |--------------------------------------------| |
+ | TOC save area 8 | |
+ |--------------------------------------------| | stack |
+ | Linker doubleword 8 | | grows |
+ |--------------------------------------------| | down V
+ | Compiler doubleword 8 | |
+ |--------------------------------------------| | lower addresses
+ | Space for callee's LR 8 | |
+ |--------------------------------------------| |
+ | CR save area 8 | |
+ |--------------------------------------------| | stack pointer here
+ | Current backchain pointer 8 |-/ during
+ |--------------------------------------------| <<< ffi_call_LINUX64
+
+*/
+
+void FFI_HIDDEN
+ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack)
+{
+ const unsigned long bytes = ecif->cif->bytes;
+ const unsigned long flags = ecif->cif->flags;
+
+ typedef union {
+ char *c;
+ unsigned long *ul;
+ float *f;
+ double *d;
+ } valp;
+
+ /* 'stacktop' points at the previous backchain pointer. */
+ valp stacktop;
+
+ /* 'next_arg' points at the space for gpr3, and grows upwards as
+ we use GPR registers, then continues at rest. */
+ valp gpr_base;
+ valp gpr_end;
+ valp rest;
+ valp next_arg;
+
+ /* 'fpr_base' points at the space for fpr3, and grows upwards as
+ we use FPR registers. */
+ valp fpr_base;
+ int fparg_count;
+
+ int i, words;
+ ffi_type **ptr;
+ double double_tmp;
+ union {
+ void **v;
+ char **c;
+ signed char **sc;
+ unsigned char **uc;
+ signed short **ss;
+ unsigned short **us;
+ signed int **si;
+ unsigned int **ui;
+ unsigned long **ul;
+ float **f;
+ double **d;
+ } p_argv;
+ unsigned long gprvalue;
+
+ stacktop.c = (char *) stack + bytes;
+ gpr_base.ul = stacktop.ul - ASM_NEEDS_REGISTERS64 - NUM_GPR_ARG_REGISTERS64;
+ gpr_end.ul = gpr_base.ul + NUM_GPR_ARG_REGISTERS64;
+ rest.ul = stack + 6 + NUM_GPR_ARG_REGISTERS64;
+ fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS64;
+ fparg_count = 0;
+ next_arg.ul = gpr_base.ul;
+
+ /* Check that everything starts aligned properly. */
+ FFI_ASSERT (((unsigned long) (char *) stack & 0xF) == 0);
+ FFI_ASSERT (((unsigned long) stacktop.c & 0xF) == 0);
+ FFI_ASSERT ((bytes & 0xF) == 0);
+
+ /* Deal with return values that are actually pass-by-reference. */
+ if (flags & FLAG_RETVAL_REFERENCE)
+ *next_arg.ul++ = (unsigned long) (char *) ecif->rvalue;
+
+ /* Now for the arguments. */
+ p_argv.v = ecif->avalue;
+ for (ptr = ecif->cif->arg_types, i = ecif->cif->nargs;
+ i > 0;
+ i--, ptr++, p_argv.v++)
+ {
+ switch ((*ptr)->type)
+ {
+ case FFI_TYPE_FLOAT:
+ double_tmp = **p_argv.f;
+ *next_arg.f = (float) double_tmp;
+ if (++next_arg.ul == gpr_end.ul)
+ next_arg.ul = rest.ul;
+ if (fparg_count < NUM_FPR_ARG_REGISTERS64)
+ *fpr_base.d++ = double_tmp;
+ fparg_count++;
+ FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
+ break;
+
+ case FFI_TYPE_DOUBLE:
+ double_tmp = **p_argv.d;
+ *next_arg.d = double_tmp;
+ if (++next_arg.ul == gpr_end.ul)
+ next_arg.ul = rest.ul;
+ if (fparg_count < NUM_FPR_ARG_REGISTERS64)
+ *fpr_base.d++ = double_tmp;
+ fparg_count++;
+ FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
+ break;
+
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ case FFI_TYPE_LONGDOUBLE:
+ double_tmp = (*p_argv.d)[0];
+ *next_arg.d = double_tmp;
+ if (++next_arg.ul == gpr_end.ul)
+ next_arg.ul = rest.ul;
+ if (fparg_count < NUM_FPR_ARG_REGISTERS64)
+ *fpr_base.d++ = double_tmp;
+ fparg_count++;
+ double_tmp = (*p_argv.d)[1];
+ *next_arg.d = double_tmp;
+ if (++next_arg.ul == gpr_end.ul)
+ next_arg.ul = rest.ul;
+ if (fparg_count < NUM_FPR_ARG_REGISTERS64)
+ *fpr_base.d++ = double_tmp;
+ fparg_count++;
+ FFI_ASSERT (__LDBL_MANT_DIG__ == 106);
+ FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
+ break;
+#endif
+
+ case FFI_TYPE_STRUCT:
+ words = ((*ptr)->size + 7) / 8;
+ if (next_arg.ul >= gpr_base.ul && next_arg.ul + words > gpr_end.ul)
+ {
+ size_t first = gpr_end.c - next_arg.c;
+ memcpy (next_arg.c, *p_argv.c, first);
+ memcpy (rest.c, *p_argv.c + first, (*ptr)->size - first);
+ next_arg.c = rest.c + words * 8 - first;
+ }
+ else
+ {
+ char *where = next_arg.c;
+
+ /* Structures with size less than eight bytes are passed
+ left-padded. */
+ if ((*ptr)->size < 8)
+ where += 8 - (*ptr)->size;
+
+ memcpy (where, *p_argv.c, (*ptr)->size);
+ next_arg.ul += words;
+ if (next_arg.ul == gpr_end.ul)
+ next_arg.ul = rest.ul;
+ }
+ break;
+
+ case FFI_TYPE_UINT8:
+ gprvalue = **p_argv.uc;
+ goto putgpr;
+ case FFI_TYPE_SINT8:
+ gprvalue = **p_argv.sc;
+ goto putgpr;
+ case FFI_TYPE_UINT16:
+ gprvalue = **p_argv.us;
+ goto putgpr;
+ case FFI_TYPE_SINT16:
+ gprvalue = **p_argv.ss;
+ goto putgpr;
+ case FFI_TYPE_UINT32:
+ gprvalue = **p_argv.ui;
+ goto putgpr;
+ case FFI_TYPE_INT:
+ case FFI_TYPE_SINT32:
+ gprvalue = **p_argv.si;
+ goto putgpr;
+
+ case FFI_TYPE_UINT64:
+ case FFI_TYPE_SINT64:
+ case FFI_TYPE_POINTER:
+ gprvalue = **p_argv.ul;
+ putgpr:
+ *next_arg.ul++ = gprvalue;
+ if (next_arg.ul == gpr_end.ul)
+ next_arg.ul = rest.ul;
+ break;
+ }
+ }
+
+ FFI_ASSERT (flags & FLAG_4_GPR_ARGUMENTS
+ || (next_arg.ul >= gpr_base.ul
+ && next_arg.ul <= gpr_base.ul + 4));
+}
+
+
+
+/* Perform machine dependent cif processing */
+ffi_status
+ffi_prep_cif_machdep (ffi_cif *cif)
+{
+ /* All this is for the SYSV and LINUX64 ABI. */
+ int i;
+ ffi_type **ptr;
+ unsigned bytes;
+ int fparg_count = 0, intarg_count = 0;
+ unsigned flags = 0;
+ unsigned struct_copy_size = 0;
+ unsigned type = cif->rtype->type;
+ unsigned size = cif->rtype->size;
+
+ if (cif->abi == FFI_LINUX_SOFT_FLOAT)
+ NUM_FPR_ARG_REGISTERS = 0;
+
+ if (cif->abi != FFI_LINUX64)
+ {
+ /* All the machine-independent calculation of cif->bytes will be wrong.
+ Redo the calculation for SYSV. */
+
+ /* Space for the frame pointer, callee's LR, and the asm's temp regs. */
+ bytes = (2 + ASM_NEEDS_REGISTERS) * sizeof (int);
+
+ /* Space for the GPR registers. */
+ bytes += NUM_GPR_ARG_REGISTERS * sizeof (int);
+ }
+ else
+ {
+ /* 64-bit ABI. */
+
+ /* Space for backchain, CR, LR, cc/ld doubleword, TOC and the asm's temp
+ regs. */
+ bytes = (6 + ASM_NEEDS_REGISTERS64) * sizeof (long);
+
+ /* Space for the mandatory parm save area and general registers. */
+ bytes += 2 * NUM_GPR_ARG_REGISTERS64 * sizeof (long);
+ }
+
+ /* Return value handling. The rules for SYSV are as follows:
+ - 32-bit (or less) integer values are returned in gpr3;
+ - Structures of size <= 4 bytes also returned in gpr3;
+ - 64-bit integer values and structures between 5 and 8 bytes are returned
+ in gpr3 and gpr4;
+ - Single/double FP values are returned in fpr1;
+ - Larger structures are allocated space and a pointer is passed as
+ the first argument.
+ - long doubles (if not equivalent to double) are returned in
+ fpr1,fpr2 for Linux and as for large structs for SysV.
+ For LINUX64:
+ - integer values in gpr3;
+ - Structures/Unions by reference;
+ - Single/double FP values in fpr1, long double in fpr1,fpr2.
+ - soft-float float/doubles are treated as UINT32/UINT64 respectivley.
+ - soft-float long doubles are returned in gpr3-gpr6. */
+ switch (type)
+ {
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ case FFI_TYPE_LONGDOUBLE:
+ if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX64
+ && cif->abi != FFI_LINUX_SOFT_FLOAT)
+ goto byref;
+ flags |= FLAG_RETURNS_128BITS;
+ /* Fall through. */
+#endif
+ case FFI_TYPE_DOUBLE:
+ flags |= FLAG_RETURNS_64BITS;
+ /* Fall through. */
+ case FFI_TYPE_FLOAT:
+ /* With FFI_LINUX_SOFT_FLOAT no fp registers are used. */
+ if (cif->abi != FFI_LINUX_SOFT_FLOAT)
+ flags |= FLAG_RETURNS_FP;
+ break;
+
+ case FFI_TYPE_UINT64:
+ case FFI_TYPE_SINT64:
+ flags |= FLAG_RETURNS_64BITS;
+ break;
+
+ case FFI_TYPE_STRUCT:
+ if (cif->abi == FFI_SYSV)
+ {
+ /* The final SYSV ABI says that structures smaller or equal 8 bytes
+ are returned in r3/r4. The FFI_GCC_SYSV ABI instead returns them
+ in memory. */
+
+ /* Treat structs with size <= 8 bytes. */
+ if (size <= 8)
+ {
+ flags |= FLAG_RETURNS_SMST;
+ /* These structs are returned in r3. We pack the type and the
+ precalculated shift value (needed in the sysv.S) into flags.
+ The same applies for the structs returned in r3/r4. */
+ if (size <= 4)
+ {
+ flags |= FLAG_SYSV_SMST_R3;
+ flags |= 8 * (4 - size) << 8;
+ break;
+ }
+ /* These structs are returned in r3 and r4. See above. */
+ if (size <= 8)
+ {
+ flags |= FLAG_SYSV_SMST_R3 | FLAG_SYSV_SMST_R4;
+ flags |= 8 * (8 - size) << 8;
+ break;
+ }
+ }
+ }
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ byref:
+#endif
+ intarg_count++;
+ flags |= FLAG_RETVAL_REFERENCE;
+ /* Fall through. */
+ case FFI_TYPE_VOID:
+ flags |= FLAG_RETURNS_NOTHING;
+ break;
+
+ default:
+ /* Returns 32-bit integer, or similar. Nothing to do here. */
+ break;
+ }
+
+ if (cif->abi != FFI_LINUX64)
+ /* The first NUM_GPR_ARG_REGISTERS words of integer arguments, and the
+ first NUM_FPR_ARG_REGISTERS fp arguments, go in registers; the rest
+ goes on the stack. Structures and long doubles (if not equivalent
+ to double) are passed as a pointer to a copy of the structure.
+ Stuff on the stack needs to keep proper alignment. */
+ for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
+ {
+ switch ((*ptr)->type)
+ {
+ case FFI_TYPE_FLOAT:
+ /* With FFI_LINUX_SOFT_FLOAT floats are handled like UINT32. */
+ if (cif->abi == FFI_LINUX_SOFT_FLOAT)
+ goto soft_float_cif;
+ fparg_count++;
+ /* floating singles are not 8-aligned on stack */
+ break;
+
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ case FFI_TYPE_LONGDOUBLE:
+ if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX_SOFT_FLOAT)
+ goto do_struct;
+ if (cif->abi == FFI_LINUX_SOFT_FLOAT)
+ {
+ if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3
+ || intarg_count < NUM_GPR_ARG_REGISTERS)
+ /* A long double in FFI_LINUX_SOFT_FLOAT can use only
+ a set of four consecutive gprs. If we have not enough,
+ we have to adjust the intarg_count value. */
+ intarg_count += NUM_GPR_ARG_REGISTERS - intarg_count;
+ intarg_count += 4;
+ break;
+ }
+ else
+ fparg_count++;
+ /* Fall thru */
+#endif
+ case FFI_TYPE_DOUBLE:
+ /* With FFI_LINUX_SOFT_FLOAT doubles are handled like UINT64. */
+ if (cif->abi == FFI_LINUX_SOFT_FLOAT)
+ goto soft_double_cif;
+ fparg_count++;
+ /* If this FP arg is going on the stack, it must be
+ 8-byte-aligned. */
+ if (fparg_count > NUM_FPR_ARG_REGISTERS
+ && intarg_count >= NUM_GPR_ARG_REGISTERS
+ && intarg_count % 2 != 0)
+ intarg_count++;
+ break;
+
+ case FFI_TYPE_UINT64:
+ case FFI_TYPE_SINT64:
+ soft_double_cif:
+ /* 'long long' arguments are passed as two words, but
+ either both words must fit in registers or both go
+ on the stack. If they go on the stack, they must
+ be 8-byte-aligned.
+
+ Also, only certain register pairs can be used for
+ passing long long int -- specifically (r3,r4), (r5,r6),
+ (r7,r8), (r9,r10).
+ */
+ if (intarg_count == NUM_GPR_ARG_REGISTERS-1
+ || intarg_count % 2 != 0)
+ intarg_count++;
+ intarg_count += 2;
+ break;
+
+ case FFI_TYPE_STRUCT:
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ do_struct:
+#endif
+ /* We must allocate space for a copy of these to enforce
+ pass-by-value. Pad the space up to a multiple of 16
+ bytes (the maximum alignment required for anything under
+ the SYSV ABI). */
+ struct_copy_size += ((*ptr)->size + 15) & ~0xF;
+ /* Fall through (allocate space for the pointer). */
+
+ default:
+ soft_float_cif:
+ /* Everything else is passed as a 4-byte word in a GPR, either
+ the object itself or a pointer to it. */
+ intarg_count++;
+ break;
+ }
+ }
+ else
+ for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
+ {
+ switch ((*ptr)->type)
+ {
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ case FFI_TYPE_LONGDOUBLE:
+ if (cif->abi == FFI_LINUX_SOFT_FLOAT)
+ intarg_count += 4;
+ else
+ {
+ fparg_count += 2;
+ intarg_count += 2;
+ }
+ break;
+#endif
+ case FFI_TYPE_FLOAT:
+ case FFI_TYPE_DOUBLE:
+ fparg_count++;
+ intarg_count++;
+ break;
+
+ case FFI_TYPE_STRUCT:
+ intarg_count += ((*ptr)->size + 7) / 8;
+ break;
+
+ default:
+ /* Everything else is passed as a 8-byte word in a GPR, either
+ the object itself or a pointer to it. */
+ intarg_count++;
+ break;
+ }
+ }
+
+ if (fparg_count != 0)
+ flags |= FLAG_FP_ARGUMENTS;
+ if (intarg_count > 4)
+ flags |= FLAG_4_GPR_ARGUMENTS;
+ if (struct_copy_size != 0)
+ flags |= FLAG_ARG_NEEDS_COPY;
+
+ if (cif->abi != FFI_LINUX64)
+ {
+ /* Space for the FPR registers, if needed. */
+ if (fparg_count != 0)
+ bytes += NUM_FPR_ARG_REGISTERS * sizeof (double);
+
+ /* Stack space. */
+ if (intarg_count > NUM_GPR_ARG_REGISTERS)
+ bytes += (intarg_count - NUM_GPR_ARG_REGISTERS) * sizeof (int);
+ if (fparg_count > NUM_FPR_ARG_REGISTERS)
+ bytes += (fparg_count - NUM_FPR_ARG_REGISTERS) * sizeof (double);
+ }
+ else
+ {
+ /* Space for the FPR registers, if needed. */
+ if (fparg_count != 0)
+ bytes += NUM_FPR_ARG_REGISTERS64 * sizeof (double);
+
+ /* Stack space. */
+ if (intarg_count > NUM_GPR_ARG_REGISTERS64)
+ bytes += (intarg_count - NUM_GPR_ARG_REGISTERS64) * sizeof (long);
+ }
+
+ /* The stack space allocated needs to be a multiple of 16 bytes. */
+ bytes = (bytes + 15) & ~0xF;
+
+ /* Add in the space for the copied structures. */
+ bytes += struct_copy_size;
+
+ cif->flags = flags;
+ cif->bytes = bytes;
+
+ return FFI_OK;
+}
+
+extern void ffi_call_SYSV(extended_cif *, unsigned, unsigned, unsigned *,
+ void (*fn)(void));
+extern void FFI_HIDDEN ffi_call_LINUX64(extended_cif *, unsigned long,
+ unsigned long, unsigned long *,
+ void (*fn)(void));
+
+void
+ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
+{
+ extended_cif ecif;
+
+ ecif.cif = cif;
+ ecif.avalue = avalue;
+
+ /* If the return value is a struct and we don't have a return */
+ /* value address then we need to make one */
+
+ if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT))
+ {
+ ecif.rvalue = alloca(cif->rtype->size);
+ }
+ else
+ ecif.rvalue = rvalue;
+
+
+ switch (cif->abi)
+ {
+#ifndef POWERPC64
+ case FFI_SYSV:
+ case FFI_GCC_SYSV:
+ case FFI_LINUX:
+ case FFI_LINUX_SOFT_FLOAT:
+ ffi_call_SYSV (&ecif, -cif->bytes, cif->flags, ecif.rvalue, fn);
+ break;
+#else
+ case FFI_LINUX64:
+ ffi_call_LINUX64 (&ecif, -(long) cif->bytes, cif->flags, ecif.rvalue, fn);
+ break;
+#endif
+ default:
+ FFI_ASSERT (0);
+ break;
+ }
+}
+
+
+#ifndef POWERPC64
+#define MIN_CACHE_LINE_SIZE 8
+
+static void
+flush_icache (char *wraddr, char *xaddr, int size)
+{
+ int i;
+ for (i = 0; i < size; i += MIN_CACHE_LINE_SIZE)
+ __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;"
+ : : "r" (xaddr + i), "r" (wraddr + i) : "memory");
+ __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" "sync;" "isync;"
+ : : "r"(xaddr + size - 1), "r"(wraddr + size - 1)
+ : "memory");
+}
+#endif
+
+ffi_status
+ffi_prep_closure_loc (ffi_closure *closure,
+ ffi_cif *cif,
+ void (*fun) (ffi_cif *, void *, void **, void *),
+ void *user_data,
+ void *codeloc)
+{
+#ifdef POWERPC64
+ void **tramp = (void **) &closure->tramp[0];
+
+ if (cif->abi != FFI_LINUX64)
+ return FFI_BAD_ABI;
+ /* Copy function address and TOC from ffi_closure_LINUX64. */
+ memcpy (tramp, (char *) ffi_closure_LINUX64, 16);
+ tramp[2] = codeloc;
+#else
+ unsigned int *tramp;
+
+ if (! (cif->abi == FFI_GCC_SYSV || cif->abi == FFI_SYSV))
+ return FFI_BAD_ABI;
+
+ tramp = (unsigned int *) &closure->tramp[0];
+ tramp[0] = 0x7c0802a6; /* mflr r0 */
+ tramp[1] = 0x4800000d; /* bl 10 <trampoline_initial+0x10> */
+ tramp[4] = 0x7d6802a6; /* mflr r11 */
+ tramp[5] = 0x7c0803a6; /* mtlr r0 */
+ tramp[6] = 0x800b0000; /* lwz r0,0(r11) */
+ tramp[7] = 0x816b0004; /* lwz r11,4(r11) */
+ tramp[8] = 0x7c0903a6; /* mtctr r0 */
+ tramp[9] = 0x4e800420; /* bctr */
+ *(void **) &tramp[2] = (void *) ffi_closure_SYSV; /* function */
+ *(void **) &tramp[3] = codeloc; /* context */
+
+ /* Flush the icache. */
+ flush_icache ((char *)tramp, (char *)codeloc, FFI_TRAMPOLINE_SIZE);
+#endif
+
+ closure->cif = cif;
+ closure->fun = fun;
+ closure->user_data = user_data;
+
+ return FFI_OK;
+}
+
+typedef union
+{
+ float f;
+ double d;
+} ffi_dblfl;
+
+int ffi_closure_helper_SYSV (ffi_closure *, void *, unsigned long *,
+ ffi_dblfl *, unsigned long *);
+
+/* Basically the trampoline invokes ffi_closure_SYSV, and on
+ * entry, r11 holds the address of the closure.
+ * After storing the registers that could possibly contain
+ * parameters to be passed into the stack frame and setting
+ * up space for a return value, ffi_closure_SYSV invokes the
+ * following helper function to do most of the work
+ */
+
+int
+ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue,
+ unsigned long *pgr, ffi_dblfl *pfr,
+ unsigned long *pst)
+{
+ /* rvalue is the pointer to space for return value in closure assembly */
+ /* pgr is the pointer to where r3-r10 are stored in ffi_closure_SYSV */
+ /* pfr is the pointer to where f1-f8 are stored in ffi_closure_SYSV */
+ /* pst is the pointer to outgoing parameter stack in original caller */
+
+ void ** avalue;
+ ffi_type ** arg_types;
+ long i, avn;
+ long nf; /* number of floating registers already used */
+ long ng; /* number of general registers already used */
+ ffi_cif * cif;
+ double temp;
+ unsigned size;
+
+ cif = closure->cif;
+ avalue = alloca (cif->nargs * sizeof (void *));
+ size = cif->rtype->size;
+
+ nf = 0;
+ ng = 0;
+
+ /* Copy the caller's structure return value address so that the closure
+ returns the data directly to the caller.
+ For FFI_SYSV the result is passed in r3/r4 if the struct size is less
+ or equal 8 bytes. */
+
+ if ((cif->rtype->type == FFI_TYPE_STRUCT
+ && !((cif->abi == FFI_SYSV) && (size <= 8)))
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ || (cif->rtype->type == FFI_TYPE_LONGDOUBLE
+ && cif->abi != FFI_LINUX && cif->abi != FFI_LINUX_SOFT_FLOAT)
+#endif
+ )
+ {
+ rvalue = (void *) *pgr;
+ ng++;
+ pgr++;
+ }
+
+ i = 0;
+ avn = cif->nargs;
+ arg_types = cif->arg_types;
+
+ /* Grab the addresses of the arguments from the stack frame. */
+ while (i < avn)
+ {
+ switch (arg_types[i]->type)
+ {
+ case FFI_TYPE_SINT8:
+ case FFI_TYPE_UINT8:
+ /* there are 8 gpr registers used to pass values */
+ if (ng < 8)
+ {
+ avalue[i] = (char *) pgr + 3;
+ ng++;
+ pgr++;
+ }
+ else
+ {
+ avalue[i] = (char *) pst + 3;
+ pst++;
+ }
+ break;
+
+ case FFI_TYPE_SINT16:
+ case FFI_TYPE_UINT16:
+ /* there are 8 gpr registers used to pass values */
+ if (ng < 8)
+ {
+ avalue[i] = (char *) pgr + 2;
+ ng++;
+ pgr++;
+ }
+ else
+ {
+ avalue[i] = (char *) pst + 2;
+ pst++;
+ }
+ break;
+
+ case FFI_TYPE_SINT32:
+ case FFI_TYPE_UINT32:
+ case FFI_TYPE_POINTER:
+ soft_float_closure:
+ /* there are 8 gpr registers used to pass values */
+ if (ng < 8)
+ {
+ avalue[i] = pgr;
+ ng++;
+ pgr++;
+ }
+ else
+ {
+ avalue[i] = pst;
+ pst++;
+ }
+ break;
+
+ case FFI_TYPE_STRUCT:
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ do_struct:
+#endif
+ /* Structs are passed by reference. The address will appear in a
+ gpr if it is one of the first 8 arguments. */
+ if (ng < 8)
+ {
+ avalue[i] = (void *) *pgr;
+ ng++;
+ pgr++;
+ }
+ else
+ {
+ avalue[i] = (void *) *pst;
+ pst++;
+ }
+ break;
+
+ case FFI_TYPE_SINT64:
+ case FFI_TYPE_UINT64:
+ soft_double_closure:
+ /* passing long long ints are complex, they must
+ * be passed in suitable register pairs such as
+ * (r3,r4) or (r5,r6) or (r6,r7), or (r7,r8) or (r9,r10)
+ * and if the entire pair aren't available then the outgoing
+ * parameter stack is used for both but an alignment of 8
+ * must will be kept. So we must either look in pgr
+ * or pst to find the correct address for this type
+ * of parameter.
+ */
+ if (ng < 7)
+ {
+ if (ng & 0x01)
+ {
+ /* skip r4, r6, r8 as starting points */
+ ng++;
+ pgr++;
+ }
+ avalue[i] = pgr;
+ ng += 2;
+ pgr += 2;
+ }
+ else
+ {
+ if (((long) pst) & 4)
+ pst++;
+ avalue[i] = pst;
+ pst += 2;
+ ng = 8;
+ }
+ break;
+
+ case FFI_TYPE_FLOAT:
+ /* With FFI_LINUX_SOFT_FLOAT floats are handled like UINT32. */
+ if (cif->abi == FFI_LINUX_SOFT_FLOAT)
+ goto soft_float_closure;
+ /* unfortunately float values are stored as doubles
+ * in the ffi_closure_SYSV code (since we don't check
+ * the type in that routine).
+ */
+
+ /* there are 8 64bit floating point registers */
+
+ if (nf < 8)
+ {
+ temp = pfr->d;
+ pfr->f = (float) temp;
+ avalue[i] = pfr;
+ nf++;
+ pfr++;
+ }
+ else
+ {
+ /* FIXME? here we are really changing the values
+ * stored in the original calling routines outgoing
+ * parameter stack. This is probably a really
+ * naughty thing to do but...
+ */
+ avalue[i] = pst;
+ pst += 1;
+ }
+ break;
+
+ case FFI_TYPE_DOUBLE:
+ /* With FFI_LINUX_SOFT_FLOAT doubles are handled like UINT64. */
+ if (cif->abi == FFI_LINUX_SOFT_FLOAT)
+ goto soft_double_closure;
+ /* On the outgoing stack all values are aligned to 8 */
+ /* there are 8 64bit floating point registers */
+
+ if (nf < 8)
+ {
+ avalue[i] = pfr;
+ nf++;
+ pfr++;
+ }
+ else
+ {
+ if (((long) pst) & 4)
+ pst++;
+ avalue[i] = pst;
+ pst += 2;
+ }
+ break;
+
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ case FFI_TYPE_LONGDOUBLE:
+ if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX_SOFT_FLOAT)
+ goto do_struct;
+ if (cif->abi == FFI_LINUX_SOFT_FLOAT)
+ { /* Test if for the whole long double, 4 gprs are available.
+ otherwise the stuff ends up on the stack. */
+ if (ng < 5)
+ {
+ avalue[i] = pgr;
+ pgr += 4;
+ ng += 4;
+ }
+ else
+ {
+ avalue[i] = pst;
+ pst += 4;
+ ng = 8;
+ }
+ break;
+ }
+ if (nf < 7)
+ {
+ avalue[i] = pfr;
+ pfr += 2;
+ nf += 2;
+ }
+ else
+ {
+ if (((long) pst) & 4)
+ pst++;
+ avalue[i] = pst;
+ pst += 4;
+ nf = 8;
+ }
+ break;
+#endif
+
+ default:
+ FFI_ASSERT (0);
+ }
+
+ i++;
+ }
+
+
+ (closure->fun) (cif, rvalue, avalue, closure->user_data);
+
+ /* Tell ffi_closure_SYSV how to perform return type promotions.
+ Because the FFI_SYSV ABI returns the structures <= 8 bytes in r3/r4
+ we have to tell ffi_closure_SYSV how to treat them. We combine the base
+ type FFI_SYSV_TYPE_SMALL_STRUCT - 1 with the size of the struct.
+ So a one byte struct gets the return type 16. Return type 1 to 15 are
+ already used and we never have a struct with size zero. That is the reason
+ for the subtraction of 1. See the comment in ffitarget.h about ordering.
+ */
+ if (cif->abi == FFI_SYSV && cif->rtype->type == FFI_TYPE_STRUCT
+ && size <= 8)
+ return (FFI_SYSV_TYPE_SMALL_STRUCT - 1) + size;
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ else if (cif->rtype->type == FFI_TYPE_LONGDOUBLE
+ && cif->abi != FFI_LINUX && cif->abi != FFI_LINUX_SOFT_FLOAT)
+ return FFI_TYPE_STRUCT;
+#endif
+ /* With FFI_LINUX_SOFT_FLOAT floats and doubles are handled like UINT32
+ respectivley UINT64. */
+ if (cif->abi == FFI_LINUX_SOFT_FLOAT)
+ {
+ switch (cif->rtype->type)
+ {
+ case FFI_TYPE_FLOAT:
+ return FFI_TYPE_UINT32;
+ break;
+ case FFI_TYPE_DOUBLE:
+ return FFI_TYPE_UINT64;
+ break;
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ case FFI_TYPE_LONGDOUBLE:
+ return FFI_TYPE_UINT128;
+ break;
+#endif
+ default:
+ return cif->rtype->type;
+ }
+ }
+ else
+ {
+ return cif->rtype->type;
+ }
+}
+
+int FFI_HIDDEN ffi_closure_helper_LINUX64 (ffi_closure *, void *,
+ unsigned long *, ffi_dblfl *);
+
+int FFI_HIDDEN
+ffi_closure_helper_LINUX64 (ffi_closure *closure, void *rvalue,
+ unsigned long *pst, ffi_dblfl *pfr)
+{
+ /* rvalue is the pointer to space for return value in closure assembly */
+ /* pst is the pointer to parameter save area
+ (r3-r10 are stored into its first 8 slots by ffi_closure_LINUX64) */
+ /* pfr is the pointer to where f1-f13 are stored in ffi_closure_LINUX64 */
+
+ void **avalue;
+ ffi_type **arg_types;
+ long i, avn;
+ ffi_cif *cif;
+ ffi_dblfl *end_pfr = pfr + NUM_FPR_ARG_REGISTERS64;
+
+ cif = closure->cif;
+ avalue = alloca (cif->nargs * sizeof (void *));
+
+ /* Copy the caller's structure return value address so that the closure
+ returns the data directly to the caller. */
+ if (cif->rtype->type == FFI_TYPE_STRUCT)
+ {
+ rvalue = (void *) *pst;
+ pst++;
+ }
+
+ i = 0;
+ avn = cif->nargs;
+ arg_types = cif->arg_types;
+
+ /* Grab the addresses of the arguments from the stack frame. */
+ while (i < avn)
+ {
+ switch (arg_types[i]->type)
+ {
+ case FFI_TYPE_SINT8:
+ case FFI_TYPE_UINT8:
+ avalue[i] = (char *) pst + 7;
+ pst++;
+ break;
+
+ case FFI_TYPE_SINT16:
+ case FFI_TYPE_UINT16:
+ avalue[i] = (char *) pst + 6;
+ pst++;
+ break;
+
+ case FFI_TYPE_SINT32:
+ case FFI_TYPE_UINT32:
+ avalue[i] = (char *) pst + 4;
+ pst++;
+ break;
+
+ case FFI_TYPE_SINT64:
+ case FFI_TYPE_UINT64:
+ case FFI_TYPE_POINTER:
+ avalue[i] = pst;
+ pst++;
+ break;
+
+ case FFI_TYPE_STRUCT:
+ /* Structures with size less than eight bytes are passed
+ left-padded. */
+ if (arg_types[i]->size < 8)
+ avalue[i] = (char *) pst + 8 - arg_types[i]->size;
+ else
+ avalue[i] = pst;
+ pst += (arg_types[i]->size + 7) / 8;
+ break;
+
+ case FFI_TYPE_FLOAT:
+ /* unfortunately float values are stored as doubles
+ * in the ffi_closure_LINUX64 code (since we don't check
+ * the type in that routine).
+ */
+
+ /* there are 13 64bit floating point registers */
+
+ if (pfr < end_pfr)
+ {
+ double temp = pfr->d;
+ pfr->f = (float) temp;
+ avalue[i] = pfr;
+ pfr++;
+ }
+ else
+ avalue[i] = pst;
+ pst++;
+ break;
+
+ case FFI_TYPE_DOUBLE:
+ /* On the outgoing stack all values are aligned to 8 */
+ /* there are 13 64bit floating point registers */
+
+ if (pfr < end_pfr)
+ {
+ avalue[i] = pfr;
+ pfr++;
+ }
+ else
+ avalue[i] = pst;
+ pst++;
+ break;
+
+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
+ case FFI_TYPE_LONGDOUBLE:
+ if (pfr + 1 < end_pfr)
+ {
+ avalue[i] = pfr;
+ pfr += 2;
+ }
+ else
+ {
+ if (pfr < end_pfr)
+ {
+ /* Passed partly in f13 and partly on the stack.
+ Move it all to the stack. */
+ *pst = *(unsigned long *) pfr;
+ pfr++;
+ }
+ avalue[i] = pst;
+ }
+ pst += 2;
+ break;
+#endif
+
+ default:
+ FFI_ASSERT (0);
+ }
+
+ i++;
+ }
+
+
+ (closure->fun) (cif, rvalue, avalue, closure->user_data);
+
+ /* Tell ffi_closure_LINUX64 how to perform return type promotions. */
+ return cif->rtype->type;
+}
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for libffi 3.0.10rc6.
+# Generated by GNU Autoconf 2.68 for libffi 3.0.10rc7.
#
# Report bugs to <http://sourceware.org/libffi.html>.
#
# Identity of this package.
PACKAGE_NAME='libffi'
PACKAGE_TARNAME='libffi'
-PACKAGE_VERSION='3.0.10rc6'
-PACKAGE_STRING='libffi 3.0.10rc6'
+PACKAGE_VERSION='3.0.10rc7'
+PACKAGE_STRING='libffi 3.0.10rc7'
PACKAGE_BUGREPORT='http://sourceware.org/libffi.html'
PACKAGE_URL=''
FFI_DEBUG_TRUE
TARGETDIR
TARGET
-FFI_EXEC_TRAMPOLINE_TABLE
-FFI_EXEC_TRAMPOLINE_TABLE_FALSE
-FFI_EXEC_TRAMPOLINE_TABLE_TRUE
sys_symbol_underscore
HAVE_LONG_DOUBLE
ALLOCA
MAINT
MAINTAINER_MODE_FALSE
MAINTAINER_MODE_TRUE
-PRTDIAG
CPP
OTOOL64
OTOOL
INSTALL_DATA
INSTALL_SCRIPT
INSTALL_PROGRAM
-ax_enable_builddir_sed
target_os
target_vendor
target_cpu
ac_subst_files=''
ac_user_opts='
enable_option_checking
-enable_builddir
enable_dependency_tracking
enable_shared
enable_static
with_gnu_ld
with_sysroot
enable_libtool_lock
-enable_portable_binary
-with_gcc_arch
enable_maintainer_mode
enable_debug
enable_structs
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures libffi 3.0.10rc6 to adapt to many kinds of systems.
+\`configure' configures libffi 3.0.10rc7 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libffi 3.0.10rc6:";;
+ short | recursive ) echo "Configuration of libffi 3.0.10rc7:";;
esac
cat <<\_ACEOF
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --disable-builddir disable automatic build in subdir of sources
-
--disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors
--enable-shared[=PKGS] build shared libraries [default=yes]
--enable-fast-install[=PKGS]
optimize for fast installation [default=yes]
--disable-libtool-lock avoid locking (might break parallel builds)
- --enable-portable-binary
- disable compiler optimizations that would produce
- unportable binaries
--enable-maintainer-mode enable make rules and dependencies not useful
(and sometimes confusing) to the casual installer
--enable-debug debugging mode
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
--with-sysroot=DIR Search for dependent libraries within DIR
(or the compiler's sysroot if not specified).
- --with-gcc-arch=<arch> use architecture <arch> for gcc -march/-mtune,
- instead of guessing
Some influential environment variables:
CC C compiler command
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libffi configure 3.0.10rc6
+libffi configure 3.0.10rc7
generated by GNU Autoconf 2.68
Copyright (C) 2010 Free Software Foundation, Inc.
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by libffi $as_me 3.0.10rc6, which was
+It was created by libffi $as_me 3.0.10rc7, which was
generated by GNU Autoconf 2.68. Invocation command line was
$ $0 $@
. ${srcdir}/configure.host
-
- # [$]@ is unsable in 2.60+ but earlier autoconf had no ac_configure_args
- if test "${ac_configure_args+set}" != "set" ; then
- ac_configure_args=
- for ac_arg in ${1+"$@"}; do
- ac_configure_args="$ac_configure_args '$ac_arg'"
- done
- fi
-
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-
-
-ax_enable_builddir="."
-# Check whether --enable-builddir was given.
-if test "${enable_builddir+set}" = set; then :
- enableval=$enable_builddir; ax_enable_builddir="$enableval"
-else
- ax_enable_builddir="auto"
-fi
-
-if test ".$ac_srcdir_defaulted" != ".no" ; then
-if test ".$srcdir" = ".." ; then
- if test -f config.status ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: toplevel srcdir already configured... skipping subdir build" >&5
-$as_echo "$as_me: toplevel srcdir already configured... skipping subdir build" >&6;}
- else
- test ".$ax_enable_builddir" = "." && ax_enable_builddir="."
- test ".$ax_enable_builddir" = ".no" && ax_enable_builddir="."
- test ".$TARGET" = "." && TARGET="$target"
- test ".$ax_enable_builddir" = ".auto" && ax_enable_builddir="$TARGET"
- if test ".$ax_enable_builddir" != ".." ; then # we know where to go and
- as_dir=$ax_enable_builddir; as_fn_mkdir_p
- echo __.$ax_enable_builddir.__ > $ax_enable_builddir/conftest.tmp
- cd $ax_enable_builddir
- if grep __.$ax_enable_builddir.__ conftest.tmp >/dev/null 2>/dev/null ; then
- rm conftest.tmp
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: continue configure in default builddir \"./$ax_enable_builddir\"" >&5
-$as_echo "continue configure in default builddir \"./$ax_enable_builddir\"" >&6; }
- else
- as_fn_error $? "could not change to default builddir \"./$ax_enable_builddir\"" "$LINENO" 5
- fi
- srcdir=`echo "$ax_enable_builddir" |
- sed -e 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g;s,[/]$,,;'`
- # going to restart from subdirectory location
- test -f $srcdir/config.log && mv $srcdir/config.log .
- test -f $srcdir/confdefs.h && mv $srcdir/confdefs.h .
- test -f $srcdir/conftest.log && mv $srcdir/conftest.log .
- test -f $srcdir/$cache_file && mv $srcdir/$cache_file .
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ....exec $SHELL $srcdir/$0 \"--srcdir=$srcdir\" \"--enable-builddir=$ax_enable_builddir\" ${1+\"$@\"}" >&5
-$as_echo "....exec $SHELL $srcdir/$0 \"--srcdir=$srcdir\" \"--enable-builddir=$ax_enable_builddir\" ${1+\"$@\"}" >&6; }
- case "$0" in # restart
- /\\*) eval $SHELL "'$0'" "'--srcdir=$srcdir'" "'--enable-builddir=$ax_enable_builddir'" $ac_configure_args ;;
- *) eval $SHELL "'$srcdir/$0'" "'--srcdir=$srcdir'" "'--enable-builddir=$ax_enable_builddir'" $ac_configure_args ;;
- esac ; exit $?
- fi
- fi
-fi fi
-test ".$ax_enable_builddir" = ".auto" && ax_enable_builddir="."
-# Extract the first word of "gsed sed", so it can be a program name with args.
-set dummy gsed sed; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ax_enable_builddir_sed+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $ax_enable_builddir_sed in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_ax_enable_builddir_sed="$ax_enable_builddir_sed" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_path_ax_enable_builddir_sed="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_ax_enable_builddir_sed" && ac_cv_path_ax_enable_builddir_sed="sed"
- ;;
-esac
-fi
-ax_enable_builddir_sed=$ac_cv_path_ax_enable_builddir_sed
-if test -n "$ax_enable_builddir_sed"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_enable_builddir_sed" >&5
-$as_echo "$ax_enable_builddir_sed" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-ax_enable_builddir_auxdir="$am_aux_dir"
-ac_config_commands="$ac_config_commands buildir"
-
-
am__api_version='1.11'
# Find a good install program. We prefer a C program (faster),
ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
if test x"${MISSING+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
# Define the identity of the package.
PACKAGE='libffi'
- VERSION='3.0.10rc6'
+ VERSION='3.0.10rc7'
cat >>confdefs.h <<_ACEOF
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler vendor" >&5
-$as_echo_n "checking for C compiler vendor... " >&6; }
-if ${ax_cv_c_compiler_vendor+:} false; then :
- $as_echo_n "(cached) " >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+ # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
else
- ax_cv_c_compiler_vendor=unknown
- # note: don't check for gcc first since some other compilers define __GNUC__
- for ventest in intel:__ICC,__ECC,__INTEL_COMPILER ibm:__xlc__,__xlC__,__IBMC__,__IBMCPP__ pathscale:__PATHCC__,__PATHSCALE__ clang:__clang__ gnu:__GNUC__ sun:__SUNPRO_C,__SUNPRO_CC hp:__HP_cc,__HP_aCC dec:__DECC,__DECCXX,__DECC_VER,__DECCXX_VER borland:__BORLANDC__,__TURBOC__ comeau:__COMO__ cray:_CRAYC kai:__KCC lcc:__LCC__ metrowerks:__MWERKS__ sgi:__sgi,sgi microsoft:_MSC_VER watcom:__WATCOMC__ portland:__PGI; do
- vencpp="defined("`echo $ventest | cut -d: -f2 | sed 's/,/) || defined(/g'`")"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
-#if !($vencpp)
- thisisanerror;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ax_cv_c_compiler_vendor=`echo $ventest | cut -d: -f1`; break
+ USE_MAINTAINER_MODE=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- done
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+ if test $USE_MAINTAINER_MODE = yes; then
+ MAINTAINER_MODE_TRUE=
+ MAINTAINER_MODE_FALSE='#'
+else
+ MAINTAINER_MODE_TRUE='#'
+ MAINTAINER_MODE_FALSE=
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_compiler_vendor" >&5
-$as_echo "$ax_cv_c_compiler_vendor" >&6; }
-
+ MAINT=$MAINTAINER_MODE_TRUE
+for ac_header in sys/mman.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_mman_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_MMAN_H 1
+_ACEOF
-# Check whether --enable-portable-binary was given.
-if test "${enable_portable_binary+set}" = set; then :
- enableval=$enable_portable_binary; acx_maxopt_portable=$withval
-else
- acx_maxopt_portable=no
fi
+done
-# Try to determine "good" native compiler flags if none specified via CFLAGS
-if test "$ac_test_CFLAGS" != "set"; then
- CFLAGS=""
- case $ax_cv_c_compiler_vendor in
- dec) CFLAGS="-newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host"
- if test "x$acx_maxopt_portable" = xno; then
- CFLAGS="$CFLAGS -arch host"
- fi;;
-
- sun) CFLAGS="-native -fast -xO5 -dalign"
- if test "x$acx_maxopt_portable" = xyes; then
- CFLAGS="$CFLAGS -xarch=generic"
- fi;;
-
- hp) CFLAGS="+Oall +Optrs_ansi +DSnative"
- if test "x$acx_maxopt_portable" = xyes; then
- CFLAGS="$CFLAGS +DAportable"
- fi;;
-
- ibm) if test "x$acx_maxopt_portable" = xno; then
- xlc_opt="-qarch=auto -qtune=auto"
- else
- xlc_opt="-qtune=auto"
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $xlc_opt" >&5
-$as_echo_n "checking whether C compiler accepts $xlc_opt... " >&6; }
-ax_save_FLAGS=$CFLAGS
- CFLAGS="$xlc_opt"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
+for ac_func in mmap
+do :
+ ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
+if test "x$ac_cv_func_mmap" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_MMAP 1
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- eval `$as_echo "ax_cv_c_flags_$xlc_opt" | $as_tr_sh`=yes
-else
- eval `$as_echo "ax_cv_c_flags_$xlc_opt" | $as_tr_sh`=no
+
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS=$ax_save_FLAGS
-eval ax_check_compiler_flags=$`$as_echo "ax_cv_c_flags_$xlc_opt" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
-$as_echo "$ax_check_compiler_flags" >&6; }
-if test "x$ax_check_compiler_flags" = xyes; then
- CFLAGS="-O3 -qansialias -w $xlc_opt"
-else
- CFLAGS="-O3 -qansialias -w"
- echo "******************************************************"
- echo "* You seem to have the IBM C compiler. It is *"
- echo "* recommended for best performance that you use: *"
- echo "* *"
- echo "* CFLAGS=-O3 -qarch=xxx -qtune=xxx -qansialias -w *"
- echo "* ^^^ ^^^ *"
- echo "* where xxx is pwr2, pwr3, 604, or whatever kind of *"
- echo "* CPU you have. (Set the CFLAGS environment var. *"
- echo "* and re-run configure.) For more info, man cc. *"
- echo "******************************************************"
-fi
-
- ;;
-
- intel) CFLAGS="-O3 -ansi_alias"
- if test "x$acx_maxopt_portable" = xno; then
- icc_archflag=unknown
- icc_flags=""
- case $host_cpu in
- i686*|x86_64*)
- # icc accepts gcc assembly syntax, so these should work:
+done
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5
-$as_echo_n "checking for x86 cpuid 0 output... " >&6; }
-if ${ax_cv_gcc_x86_cpuid_0+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- ax_cv_gcc_x86_cpuid_0=unknown
+ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_mman_h" = xyes; then :
+ libffi_header_sys_mman_h=yes
else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdio.h>
-int
-main ()
-{
+ libffi_header_sys_mman_h=no
+fi
- int op = 0, eax, ebx, ecx, edx;
- FILE *f;
- __asm__("cpuid"
- : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
- : "a" (op));
- f = fopen("conftest_cpuid", "w"); if (!f) return 1;
- fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
- fclose(f);
- return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- ax_cv_gcc_x86_cpuid_0=`cat conftest_cpuid`; rm -f conftest_cpuid
+ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
+if test "x$ac_cv_func_mmap" = xyes; then :
+ libffi_func_mmap=yes
else
- ax_cv_gcc_x86_cpuid_0=unknown; rm -f conftest_cpuid
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
+ libffi_func_mmap=no
fi
+if test "$libffi_header_sys_mman_h" != yes \
+ || test "$libffi_func_mmap" != yes; then
+ ac_cv_func_mmap_file=no
+ ac_cv_func_mmap_dev_zero=no
+ ac_cv_func_mmap_anon=no
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether read-only mmap of a plain file works" >&5
+$as_echo_n "checking whether read-only mmap of a plain file works... " >&6; }
+if ${ac_cv_func_mmap_file+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # Add a system to this blacklist if
+ # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a
+ # memory area containing the same data that you'd get if you applied
+ # read() to the same fd. The only system known to have a problem here
+ # is VMS, where text files have record structure.
+ case "$host_os" in
+ vms* | ultrix*)
+ ac_cv_func_mmap_file=no ;;
+ *)
+ ac_cv_func_mmap_file=yes;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5
-$as_echo "$ax_cv_gcc_x86_cpuid_0" >&6; }
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5
-$as_echo_n "checking for x86 cpuid 1 output... " >&6; }
-if ${ax_cv_gcc_x86_cpuid_1+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_file" >&5
+$as_echo "$ac_cv_func_mmap_file" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap from /dev/zero works" >&5
+$as_echo_n "checking whether mmap from /dev/zero works... " >&6; }
+if ${ac_cv_func_mmap_dev_zero+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test "$cross_compiling" = yes; then :
- ax_cv_gcc_x86_cpuid_1=unknown
+ # Add a system to this blacklist if it has mmap() but /dev/zero
+ # does not exist, or if mmapping /dev/zero does not give anonymous
+ # zeroed pages with both the following properties:
+ # 1. If you map N consecutive pages in with one call, and then
+ # unmap any subset of those pages, the pages that were not
+ # explicitly unmapped remain accessible.
+ # 2. If you map two adjacent blocks of memory and then unmap them
+ # both at once, they must both go away.
+ # Systems known to be in this category are Windows (all variants),
+ # VMS, and Darwin.
+ case "$host_os" in
+ vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00)
+ ac_cv_func_mmap_dev_zero=no ;;
+ *)
+ ac_cv_func_mmap_dev_zero=yes;;
+ esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_dev_zero" >&5
+$as_echo "$ac_cv_func_mmap_dev_zero" >&6; }
+
+ # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAP_ANON(YMOUS)" >&5
+$as_echo_n "checking for MAP_ANON(YMOUS)... " >&6; }
+if ${ac_cv_decl_map_anon+:} false; then :
+ $as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stdio.h>
-int
-main ()
-{
-
- int op = 1, eax, ebx, ecx, edx;
- FILE *f;
- __asm__("cpuid"
- : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
- : "a" (op));
- f = fopen("conftest_cpuid", "w"); if (!f) return 1;
- fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
- fclose(f);
- return 0;
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- ax_cv_gcc_x86_cpuid_1=`cat conftest_cpuid`; rm -f conftest_cpuid
-else
- ax_cv_gcc_x86_cpuid_1=unknown; rm -f conftest_cpuid
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5
-$as_echo "$ax_cv_gcc_x86_cpuid_1" >&6; }
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
+#include <sys/types.h>
+#include <sys/mman.h>
+#include <unistd.h>
- case $ax_cv_gcc_x86_cpuid_0 in # see AX_GCC_ARCHFLAG
- *:756e6547:*:*) # Intel
- case $ax_cv_gcc_x86_cpuid_1 in
- *6a?:*[234]:*:*|*6[789b]?:*:*:*) icc_flags="-xK";;
- *f3[347]:*:*:*|*f41347:*:*:*) icc_flags="-xP -xN -xW -xK";;
- *f??:*:*:*) icc_flags="-xN -xW -xK";;
- esac ;;
- esac ;;
- esac
- if test "x$icc_flags" != x; then
- for flag in $icc_flags; do
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
-$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
-ax_save_FLAGS=$CFLAGS
- CFLAGS="$flag"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+#ifndef MAP_ANONYMOUS
+#define MAP_ANONYMOUS MAP_ANON
+#endif
int
main ()
{
-
+int n = MAP_ANONYMOUS;
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
- eval `$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`=yes
+ ac_cv_decl_map_anon=yes
else
- eval `$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`=no
+ ac_cv_decl_map_anon=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS=$ax_save_FLAGS
-eval ax_check_compiler_flags=$`$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
-$as_echo "$ax_check_compiler_flags" >&6; }
-if test "x$ax_check_compiler_flags" = xyes; then
- icc_archflag=$flag; break
-else
- :
fi
-
- done
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for icc architecture flag" >&5
-$as_echo_n "checking for icc architecture flag... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $icc_archflag" >&5
-$as_echo "$icc_archflag" >&6; }
- if test "x$icc_archflag" != xunknown; then
- CFLAGS="$CFLAGS $icc_archflag"
- fi
- fi
- ;;
-
- gnu)
- # default optimization flags for gcc on all systems
- CFLAGS="-O3 -fomit-frame-pointer"
-
- # -malign-double for x86 systems
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -malign-double" >&5
-$as_echo_n "checking whether C compiler accepts -malign-double... " >&6; }
-if ${ax_cv_c_flags__malign_double+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- ax_save_FLAGS=$CFLAGS
- CFLAGS="-malign-double"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ax_cv_c_flags__malign_double=yes
-else
- ax_cv_c_flags__malign_double=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS=$ax_save_FLAGS
-fi
-
-eval ax_check_compiler_flags=$ax_cv_c_flags__malign_double
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
-$as_echo "$ax_check_compiler_flags" >&6; }
-if test "x$ax_check_compiler_flags" = xyes; then
- CFLAGS="$CFLAGS -malign-double"
-else
- :
-fi
-
-
- # -fstrict-aliasing for gcc-2.95+
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fstrict-aliasing" >&5
-$as_echo_n "checking whether C compiler accepts -fstrict-aliasing... " >&6; }
-if ${ax_cv_c_flags__fstrict_aliasing+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- ax_save_FLAGS=$CFLAGS
- CFLAGS="-fstrict-aliasing"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ax_cv_c_flags__fstrict_aliasing=yes
-else
- ax_cv_c_flags__fstrict_aliasing=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS=$ax_save_FLAGS
-fi
-
-eval ax_check_compiler_flags=$ax_cv_c_flags__fstrict_aliasing
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
-$as_echo "$ax_check_compiler_flags" >&6; }
-if test "x$ax_check_compiler_flags" = xyes; then
- CFLAGS="$CFLAGS -fstrict-aliasing"
-else
- :
-fi
-
-
- # note that we enable "unsafe" fp optimization with other compilers, too
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -ffast-math" >&5
-$as_echo_n "checking whether C compiler accepts -ffast-math... " >&6; }
-if ${ax_cv_c_flags__ffast_math+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- ax_save_FLAGS=$CFLAGS
- CFLAGS="-ffast-math"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ax_cv_c_flags__ffast_math=yes
-else
- ax_cv_c_flags__ffast_math=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS=$ax_save_FLAGS
-fi
-
-eval ax_check_compiler_flags=$ax_cv_c_flags__ffast_math
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
-$as_echo "$ax_check_compiler_flags" >&6; }
-if test "x$ax_check_compiler_flags" = xyes; then
- CFLAGS="$CFLAGS -ffast-math"
-else
- :
-fi
-
-
-
-
-
-
-# Check whether --with-gcc-arch was given.
-if test "${with_gcc_arch+set}" = set; then :
- withval=$with_gcc_arch; ax_gcc_arch=$withval
-else
- ax_gcc_arch=yes
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5
-$as_echo_n "checking for gcc architecture flag... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
-$as_echo "" >&6; }
-if ${ax_cv_gcc_archflag+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
-ax_cv_gcc_archflag="unknown"
-
-if test "$GCC" = yes; then
-
-if test "x$ax_gcc_arch" = xyes; then
-ax_gcc_arch=""
-if test "$cross_compiling" = no; then
-case $host_cpu in
- i[3456]86*|x86_64*) # use cpuid codes, in part from x86info-1.7 by D. Jones
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5
-$as_echo_n "checking for x86 cpuid 0 output... " >&6; }
-if ${ax_cv_gcc_x86_cpuid_0+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- ax_cv_gcc_x86_cpuid_0=unknown
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdio.h>
-int
-main ()
-{
-
- int op = 0, eax, ebx, ecx, edx;
- FILE *f;
- __asm__("cpuid"
- : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
- : "a" (op));
- f = fopen("conftest_cpuid", "w"); if (!f) return 1;
- fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
- fclose(f);
- return 0;
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- ax_cv_gcc_x86_cpuid_0=`cat conftest_cpuid`; rm -f conftest_cpuid
-else
- ax_cv_gcc_x86_cpuid_0=unknown; rm -f conftest_cpuid
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5
-$as_echo "$ax_cv_gcc_x86_cpuid_0" >&6; }
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5
-$as_echo_n "checking for x86 cpuid 1 output... " >&6; }
-if ${ax_cv_gcc_x86_cpuid_1+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- ax_cv_gcc_x86_cpuid_1=unknown
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdio.h>
-int
-main ()
-{
-
- int op = 1, eax, ebx, ecx, edx;
- FILE *f;
- __asm__("cpuid"
- : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
- : "a" (op));
- f = fopen("conftest_cpuid", "w"); if (!f) return 1;
- fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
- fclose(f);
- return 0;
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- ax_cv_gcc_x86_cpuid_1=`cat conftest_cpuid`; rm -f conftest_cpuid
-else
- ax_cv_gcc_x86_cpuid_1=unknown; rm -f conftest_cpuid
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5
-$as_echo "$ax_cv_gcc_x86_cpuid_1" >&6; }
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
- case $ax_cv_gcc_x86_cpuid_0 in
- *:756e6547:*:*) # Intel
- case $ax_cv_gcc_x86_cpuid_1 in
- *5[48]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;;
- *5??:*:*:*) ax_gcc_arch=pentium ;;
- *6[3456]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
- *6a?:*[01]:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
- *6a?:*[234]:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
- *6[9d]?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;;
- *6[78b]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
- *6??:*:*:*) ax_gcc_arch=pentiumpro ;;
- *f3[347]:*:*:*|*f41347:*:*:*)
- case $host_cpu in
- x86_64*) ax_gcc_arch="nocona pentium4 pentiumpro" ;;
- *) ax_gcc_arch="prescott pentium4 pentiumpro" ;;
- esac ;;
- *f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro";;
- esac ;;
- *:68747541:*:*) # AMD
- case $ax_cv_gcc_x86_cpuid_1 in
- *5[67]?:*:*:*) ax_gcc_arch=k6 ;;
- *5[8d]?:*:*:*) ax_gcc_arch="k6-2 k6" ;;
- *5[9]?:*:*:*) ax_gcc_arch="k6-3 k6" ;;
- *60?:*:*:*) ax_gcc_arch=k7 ;;
- *6[12]?:*:*:*) ax_gcc_arch="athlon k7" ;;
- *6[34]?:*:*:*) ax_gcc_arch="athlon-tbird k7" ;;
- *67?:*:*:*) ax_gcc_arch="athlon-4 athlon k7" ;;
- *6[68a]?:*:*:*)
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0x80000006 output" >&5
-$as_echo_n "checking for x86 cpuid 0x80000006 output... " >&6; }
-if ${ax_cv_gcc_x86_cpuid_0x80000006+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- ax_cv_gcc_x86_cpuid_0x80000006=unknown
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdio.h>
-int
-main ()
-{
-
- int op = 0x80000006, eax, ebx, ecx, edx;
- FILE *f;
- __asm__("cpuid"
- : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
- : "a" (op));
- f = fopen("conftest_cpuid", "w"); if (!f) return 1;
- fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
- fclose(f);
- return 0;
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- ax_cv_gcc_x86_cpuid_0x80000006=`cat conftest_cpuid`; rm -f conftest_cpuid
-else
- ax_cv_gcc_x86_cpuid_0x80000006=unknown; rm -f conftest_cpuid
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0x80000006" >&5
-$as_echo "$ax_cv_gcc_x86_cpuid_0x80000006" >&6; }
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- # L2 cache size
- case $ax_cv_gcc_x86_cpuid_0x80000006 in
- *:*:*[1-9a-f]??????:*) # (L2 = ecx >> 16) >= 256
- ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;;
- *) ax_gcc_arch="athlon-4 athlon k7" ;;
- esac ;;
- *f[4cef8b]?:*:*:*) ax_gcc_arch="athlon64 k8" ;;
- *f5?:*:*:*) ax_gcc_arch="opteron k8" ;;
- *f7?:*:*:*) ax_gcc_arch="athlon-fx opteron k8" ;;
- *f??:*:*:*) ax_gcc_arch="k8" ;;
- esac ;;
- *:746e6543:*:*) # IDT
- case $ax_cv_gcc_x86_cpuid_1 in
- *54?:*:*:*) ax_gcc_arch=winchip-c6 ;;
- *58?:*:*:*) ax_gcc_arch=winchip2 ;;
- *6[78]?:*:*:*) ax_gcc_arch=c3 ;;
- *69?:*:*:*) ax_gcc_arch="c3-2 c3" ;;
- esac ;;
- esac
- if test x"$ax_gcc_arch" = x; then # fallback
- case $host_cpu in
- i586*) ax_gcc_arch=pentium ;;
- i686*) ax_gcc_arch=pentiumpro ;;
- esac
- fi
- ;;
-
- sparc*)
- # Extract the first word of "prtdiag", so it can be a program name with args.
-set dummy prtdiag; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PRTDIAG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $PRTDIAG in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_PRTDIAG="$PRTDIAG" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_dummy="$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/"
-for as_dir in $as_dummy
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_path_PRTDIAG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_PRTDIAG" && ac_cv_path_PRTDIAG="prtdiag"
- ;;
-esac
-fi
-PRTDIAG=$ac_cv_path_PRTDIAG
-if test -n "$PRTDIAG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PRTDIAG" >&5
-$as_echo "$PRTDIAG" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- cputype=`(((grep cpu /proc/cpuinfo | cut -d: -f2) ; ($PRTDIAG -v |grep -i sparc) ; grep -i cpu /var/run/dmesg.boot ) | head -n 1) 2> /dev/null`
- cputype=`echo "$cputype" | tr -d ' -' |tr $as_cr_LETTERS $as_cr_letters`
- case $cputype in
- *ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;;
- *ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;;
- *ultrasparc*) ax_gcc_arch="ultrasparc v9" ;;
- *supersparc*|*tms390z5[05]*) ax_gcc_arch="supersparc v8" ;;
- *hypersparc*|*rt62[056]*) ax_gcc_arch="hypersparc v8" ;;
- *cypress*) ax_gcc_arch=cypress ;;
- esac ;;
-
- alphaev5) ax_gcc_arch=ev5 ;;
- alphaev56) ax_gcc_arch=ev56 ;;
- alphapca56) ax_gcc_arch="pca56 ev56" ;;
- alphapca57) ax_gcc_arch="pca57 pca56 ev56" ;;
- alphaev6) ax_gcc_arch=ev6 ;;
- alphaev67) ax_gcc_arch=ev67 ;;
- alphaev68) ax_gcc_arch="ev68 ev67" ;;
- alphaev69) ax_gcc_arch="ev69 ev68 ev67" ;;
- alphaev7) ax_gcc_arch="ev7 ev69 ev68 ev67" ;;
- alphaev79) ax_gcc_arch="ev79 ev7 ev69 ev68 ev67" ;;
-
- powerpc*)
- cputype=`((grep cpu /proc/cpuinfo | head -n 1 | cut -d: -f2 | cut -d, -f1 | sed 's/ //g') ; /usr/bin/machine ; /bin/machine; grep CPU /var/run/dmesg.boot | head -n 1 | cut -d" " -f2) 2> /dev/null`
- cputype=`echo $cputype | sed -e 's/ppc//g;s/ *//g'`
- case $cputype in
- *750*) ax_gcc_arch="750 G3" ;;
- *740[0-9]*) ax_gcc_arch="$cputype 7400 G4" ;;
- *74[4-5][0-9]*) ax_gcc_arch="$cputype 7450 G4" ;;
- *74[0-9][0-9]*) ax_gcc_arch="$cputype G4" ;;
- *970*) ax_gcc_arch="970 G5 power4";;
- *POWER4*|*power4*|*gq*) ax_gcc_arch="power4 970";;
- *POWER5*|*power5*|*gr*|*gs*) ax_gcc_arch="power5 power4 970";;
- 603ev|8240) ax_gcc_arch="$cputype 603e 603";;
- *) ax_gcc_arch=$cputype ;;
- esac
- ax_gcc_arch="$ax_gcc_arch powerpc"
- ;;
-esac
-fi # not cross-compiling
-fi # guess arch
-
-if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then
-for arch in $ax_gcc_arch; do
- if test "x$acx_maxopt_portable" = xyes; then # if we require portable code
- flags="-mtune=$arch"
- # -mcpu=$arch and m$arch generate nonportable code on every arch except
- # x86. And some other arches (e.g. Alpha) don't accept -mtune. Grrr.
- case $host_cpu in i*86|x86_64*) flags="$flags -mcpu=$arch -m$arch";; esac
- else
- flags="-march=$arch -mcpu=$arch -m$arch"
- fi
- for flag in $flags; do
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
-$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
-ax_save_FLAGS=$CFLAGS
- CFLAGS="$flag"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- eval `$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`=yes
-else
- eval `$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS=$ax_save_FLAGS
-eval ax_check_compiler_flags=$`$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
-$as_echo "$ax_check_compiler_flags" >&6; }
-if test "x$ax_check_compiler_flags" = xyes; then
- ax_cv_gcc_archflag=$flag; break
-else
- :
-fi
-
- done
- test "x$ax_cv_gcc_archflag" = xunknown || break
-done
-fi
-
-fi # $GCC=yes
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5
-$as_echo_n "checking for gcc architecture flag... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_archflag" >&5
-$as_echo "$ax_cv_gcc_archflag" >&6; }
-if test "x$ax_cv_gcc_archflag" = xunknown; then
- :
-else
- CFLAGS="$CFLAGS $ax_cv_gcc_archflag"
-fi
-
- ;;
- esac
-
- if test -z "$CFLAGS"; then
- echo ""
- echo "********************************************************"
- echo "* WARNING: Don't know the best CFLAGS for this system *"
- echo "* Use ./configure CFLAGS=... to specify your own flags *"
- echo "* (otherwise, a default of CFLAGS=-O3 will be used) *"
- echo "********************************************************"
- echo ""
- CFLAGS="-O3"
- fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CFLAGS" >&5
-$as_echo_n "checking whether C compiler accepts $CFLAGS... " >&6; }
-ax_save_FLAGS=$CFLAGS
- CFLAGS="$CFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- eval `$as_echo "ax_cv_c_flags_$CFLAGS" | $as_tr_sh`=yes
-else
- eval `$as_echo "ax_cv_c_flags_$CFLAGS" | $as_tr_sh`=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS=$ax_save_FLAGS
-eval ax_check_compiler_flags=$`$as_echo "ax_cv_c_flags_$CFLAGS" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
-$as_echo "$ax_check_compiler_flags" >&6; }
-if test "x$ax_check_compiler_flags" = xyes; then
- :
-else
-
- echo ""
- echo "********************************************************"
- echo "* WARNING: The guessed CFLAGS don't seem to work with *"
- echo "* your compiler. *"
- echo "* Use ./configure CFLAGS=... to specify your own flags *"
- echo "********************************************************"
- echo ""
- CFLAGS=""
-
-fi
-
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for maximum warnings" >&5
-$as_echo_n "checking CFLAGS for maximum warnings... " >&6; }
-if ${ac_cv_cflags_warn_all+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_cflags_warn_all="no, unknown"
- ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- ac_save_CFLAGS="$CFLAGS"
-for ac_arg in "-pedantic % -Wall" "-xstrconst % -v" "-std1 % -verbose -w0 -warnprotos" "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" "-ansi -ansiE % -fullwarn" "+ESlit % +w1" "-Xc % -pvctl,fullmsg" "-h conform % -h msglevel 2" #
-do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_cflags_warn_all=`echo $ac_arg | sed -e 's,.*% *,,'` ; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
- CFLAGS="$ac_save_CFLAGS"
- ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags_warn_all" >&5
-$as_echo "$ac_cv_cflags_warn_all" >&6; }
-case ".$ac_cv_cflags_warn_all" in
- .ok|.ok,*) ;;
- .|.no|.no,*)
- ;;
- *)
- if echo " $CFLAGS " | grep " $ac_cv_cflags_warn_all " 2>&1 >/dev/null
- then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ac_cv_cflags_warn_all"; } >&5
- (: CFLAGS does contain $ac_cv_cflags_warn_all) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
- else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ac_cv_cflags_warn_all\""; } >&5
- (: CFLAGS="$CFLAGS $ac_cv_cflags_warn_all") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
- CFLAGS="$CFLAGS $ac_cv_cflags_warn_all"
- fi
- ;;
-esac
-
-if test "x$GCC" = "xyes"; then
- CFLAGS="$CFLAGS -fexceptions"
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
-$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
- # Check whether --enable-maintainer-mode was given.
-if test "${enable_maintainer_mode+set}" = set; then :
- enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
-else
- USE_MAINTAINER_MODE=no
-fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
-$as_echo "$USE_MAINTAINER_MODE" >&6; }
- if test $USE_MAINTAINER_MODE = yes; then
- MAINTAINER_MODE_TRUE=
- MAINTAINER_MODE_FALSE='#'
-else
- MAINTAINER_MODE_TRUE='#'
- MAINTAINER_MODE_FALSE=
-fi
-
- MAINT=$MAINTAINER_MODE_TRUE
-
-
-
-for ac_header in sys/mman.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_mman_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SYS_MMAN_H 1
-_ACEOF
-
-fi
-
-done
-
-for ac_func in mmap
-do :
- ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
-if test "x$ac_cv_func_mmap" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_MMAP 1
-_ACEOF
-
-fi
-done
-
-
-ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_mman_h" = xyes; then :
- libffi_header_sys_mman_h=yes
-else
- libffi_header_sys_mman_h=no
-fi
-
-
-ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
-if test "x$ac_cv_func_mmap" = xyes; then :
- libffi_func_mmap=yes
-else
- libffi_func_mmap=no
-fi
-
-if test "$libffi_header_sys_mman_h" != yes \
- || test "$libffi_func_mmap" != yes; then
- ac_cv_func_mmap_file=no
- ac_cv_func_mmap_dev_zero=no
- ac_cv_func_mmap_anon=no
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether read-only mmap of a plain file works" >&5
-$as_echo_n "checking whether read-only mmap of a plain file works... " >&6; }
-if ${ac_cv_func_mmap_file+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- # Add a system to this blacklist if
- # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a
- # memory area containing the same data that you'd get if you applied
- # read() to the same fd. The only system known to have a problem here
- # is VMS, where text files have record structure.
- case "$host_os" in
- vms* | ultrix*)
- ac_cv_func_mmap_file=no ;;
- *)
- ac_cv_func_mmap_file=yes;;
- esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_file" >&5
-$as_echo "$ac_cv_func_mmap_file" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap from /dev/zero works" >&5
-$as_echo_n "checking whether mmap from /dev/zero works... " >&6; }
-if ${ac_cv_func_mmap_dev_zero+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- # Add a system to this blacklist if it has mmap() but /dev/zero
- # does not exist, or if mmapping /dev/zero does not give anonymous
- # zeroed pages with both the following properties:
- # 1. If you map N consecutive pages in with one call, and then
- # unmap any subset of those pages, the pages that were not
- # explicitly unmapped remain accessible.
- # 2. If you map two adjacent blocks of memory and then unmap them
- # both at once, they must both go away.
- # Systems known to be in this category are Windows (all variants),
- # VMS, and Darwin.
- case "$host_os" in
- vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00)
- ac_cv_func_mmap_dev_zero=no ;;
- *)
- ac_cv_func_mmap_dev_zero=yes;;
- esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_dev_zero" >&5
-$as_echo "$ac_cv_func_mmap_dev_zero" >&6; }
-
- # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAP_ANON(YMOUS)" >&5
-$as_echo_n "checking for MAP_ANON(YMOUS)... " >&6; }
-if ${ac_cv_decl_map_anon+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/mman.h>
-#include <unistd.h>
-
-#ifndef MAP_ANONYMOUS
-#define MAP_ANONYMOUS MAP_ANON
-#endif
-
-int
-main ()
-{
-int n = MAP_ANONYMOUS;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_decl_map_anon=yes
-else
- ac_cv_decl_map_anon=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_decl_map_anon" >&5
-$as_echo "$ac_cv_decl_map_anon" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_decl_map_anon" >&5
+$as_echo "$ac_cv_decl_map_anon" >&6; }
if test $ac_cv_decl_map_anon = no; then
ac_cv_func_mmap_anon=no
fi
fi
-
-FFI_EXEC_TRAMPOLINE_TABLE=0
case "$target" in
- *arm*-apple-darwin*)
- FFI_EXEC_TRAMPOLINE_TABLE=1
-
-$as_echo "#define FFI_EXEC_TRAMPOLINE_TABLE 1" >>confdefs.h
-
- ;;
*-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
$as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h
;;
esac
- if test x$FFI_EXEC_TRAMPOLINE_TABLE = x1; then
- FFI_EXEC_TRAMPOLINE_TABLE_TRUE=
- FFI_EXEC_TRAMPOLINE_TABLE_FALSE='#'
-else
- FFI_EXEC_TRAMPOLINE_TABLE_TRUE='#'
- FFI_EXEC_TRAMPOLINE_TABLE_FALSE=
-fi
-
-
if test x$TARGET = xX86_64; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports unwind section type" >&5
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether .eh_frame section should be read-only" >&5
+if test "x$GCC" = "xyes"; then
+ { $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; }
if ${libffi_cv_ro_eh_frame+:} false; then :
$as_echo_n "(cached) " >&6
else
- libffi_cv_ro_eh_frame=no
- echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
- if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
- if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
- libffi_cv_ro_eh_frame=yes
- elif grep '.section.*eh_frame.*#alloc' conftest.c \
- | grep -v '#write' > /dev/null; then
- libffi_cv_ro_eh_frame=yes
- fi
- fi
- rm -f conftest.*
+ libffi_cv_ro_eh_frame=no
+ echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
+ if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
+ if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
+ libffi_cv_ro_eh_frame=yes
+ elif grep '.section.*eh_frame.*#alloc' conftest.c \
+ | grep -v '#write' > /dev/null; then
+ libffi_cv_ro_eh_frame=yes
+ fi
+ fi
+ rm -f conftest.*
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_ro_eh_frame" >&5
$as_echo "$libffi_cv_ro_eh_frame" >&6; }
-if test "x$libffi_cv_ro_eh_frame" = xyes; then
+ if test "x$libffi_cv_ro_eh_frame" = xyes; then
$as_echo "#define HAVE_RO_EH_FRAME 1" >>confdefs.h
$as_echo "#define EH_FRAME_FLAGS \"a\"" >>confdefs.h
-else
+ else
$as_echo "#define EH_FRAME_FLAGS \"aw\"" >>confdefs.h
-fi
+ fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5
$as_echo_n "checking for __attribute__((visibility(\"hidden\")))... " >&6; }
if ${libffi_cv_hidden_visibility_attribute+:} false; then :
$as_echo_n "(cached) " >&6
else
- echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
- libffi_cv_hidden_visibility_attribute=no
- if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
+ echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c
+ libffi_cv_hidden_visibility_attribute=no
+ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then
- if grep '\.hidden.*foo' conftest.s >/dev/null; then
- libffi_cv_hidden_visibility_attribute=yes
- fi
- fi
- rm -f conftest.*
+ if grep '\.hidden.*foo' conftest.s >/dev/null; then
+ libffi_cv_hidden_visibility_attribute=yes
+ fi
+ fi
+ rm -f conftest.*
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_hidden_visibility_attribute" >&5
$as_echo "$libffi_cv_hidden_visibility_attribute" >&6; }
-if test $libffi_cv_hidden_visibility_attribute = yes; then
+ if test $libffi_cv_hidden_visibility_attribute = yes; then
$as_echo "#define HAVE_HIDDEN_VISIBILITY_ATTRIBUTE 1" >>confdefs.h
+ fi
fi
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
-if test -z "${FFI_EXEC_TRAMPOLINE_TABLE_TRUE}" && test -z "${FFI_EXEC_TRAMPOLINE_TABLE_FALSE}"; then
- as_fn_error $? "conditional \"FFI_EXEC_TRAMPOLINE_TABLE\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
if test -z "${FFI_DEBUG_TRUE}" && test -z "${FFI_DEBUG_FALSE}"; then
as_fn_error $? "conditional \"FFI_DEBUG\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libffi $as_me 3.0.10rc6, which was
+This file was extended by libffi $as_me 3.0.10rc7, which was
generated by GNU Autoconf 2.68. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-libffi config.status 3.0.10rc6
+libffi config.status 3.0.10rc7
configured by $0, generated by GNU Autoconf 2.68,
with options \\"\$ac_cs_config\\"
#
# INIT-COMMANDS
#
-ax_enable_builddir_srcdir="$srcdir" # $srcdir
-ax_enable_builddir_host="$HOST" # $HOST / $host
-ax_enable_builddir_version="$VERSION" # $VERSION
-ax_enable_builddir_package="$PACKAGE" # $PACKAGE
-ax_enable_builddir_auxdir="$ax_enable_builddir_auxdir" # $AUX
-ax_enable_builddir_sed="$ax_enable_builddir_sed" # $SED
-ax_enable_builddir="$ax_enable_builddir" # $SUB
-
AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
do
case $ac_config_target in
"fficonfig.h") CONFIG_HEADERS="$CONFIG_HEADERS fficonfig.h" ;;
- "buildir") CONFIG_COMMANDS="$CONFIG_COMMANDS buildir" ;;
"depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
"libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
"include") CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;;
case $ac_file$ac_mode in
- "buildir":C) ac_top_srcdir="$ax_enable_builddir_srcdir"
- if test ".$ax_enable_builddir" = ".." ; then
- if test -f "$top_srcdir/Makefile" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: skipping top_srcdir/Makefile - left untouched" >&5
-$as_echo "$as_me: skipping top_srcdir/Makefile - left untouched" >&6;}
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: skipping top_srcdir/Makefile - not created" >&5
-$as_echo "$as_me: skipping top_srcdir/Makefile - not created" >&6;}
- fi
- else
- if test -f "$ac_top_srcdir/Makefile" ; then
- a=`grep "^VERSION " "$ac_top_srcdir/Makefile"` ; b=`grep "^VERSION " Makefile`
- test "$a" != "$b" && rm "$ac_top_srcdir/Makefile"
- fi
- if test -f "$ac_top_srcdir/Makefile" ; then
- echo "$ac_top_srcdir/Makefile : $ac_top_srcdir/Makefile.in" > $tmp/conftemp.mk
- echo " @ echo 'REMOVED,,,' >\$@" >> $tmp/conftemp.mk
- eval "${MAKE-make} -f $tmp/conftemp.mk 2>/dev/null >/dev/null"
- if grep '^REMOVED,,,' "$ac_top_srcdir/Makefile" >/dev/null
- then rm $ac_top_srcdir/Makefile ; fi
- cp $tmp/conftemp.mk $ac_top_srcdir/makefiles.mk~ ## DEBUGGING
- fi
- if test ! -f "$ac_top_srcdir/Makefile" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: create top_srcdir/Makefile guessed from local Makefile" >&5
-$as_echo "$as_me: create top_srcdir/Makefile guessed from local Makefile" >&6;}
- x='`' ; cat >$tmp/conftemp.sed <<_EOF
-/^\$/n
-x
-/^\$/bS
-x
-/\\\\\$/{H;d;}
-{H;s/.*//;x;}
-bM
-:S
-x
-/\\\\\$/{h;d;}
-{h;s/.*//;x;}
-:M
-s/\\(\\n\\) /\\1 /g
-/^ /d
-/^[ ]*[\\#]/d
-/^VPATH *=/d
-s/^srcdir *=.*/srcdir = ./
-s/^top_srcdir *=.*/top_srcdir = ./
-/[:=]/!d
-/^\\./d
-/ = /b
-/ .= /b
-/:/!b
-s/:.*/:/
-s/ / /g
-s/ \\([a-z][a-z-]*[a-zA-Z0-9]\\)\\([ :]\\)/ \\1 \\1-all\\2/g
-s/^\\([a-z][a-z-]*[a-zA-Z0-9]\\)\\([ :]\\)/\\1 \\1-all\\2/
-s/ / /g
-/^all all-all[ :]/i\\
-all-configured : all-all
-s/ [a-zA-Z0-9-]*-all [a-zA-Z0-9-]*-all-all//g
-/-all-all/d
-a\\
- @ HOST="\$(HOST)\" \\\\\\
- ; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\
- ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
- ; use=$x basename "\$\@" -all $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\
- ; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test "\$\$n" = "0" ; then : \\\\\\
- ; BUILD=$x grep "^####.*|" Makefile |tail -1| sed -e 's/.*|//' $x ; fi \\\\\\
- ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\
- ; test "\$\$use" = "\$\@" && BUILD=$x echo "\$\$BUILD" | tail -1 $x \\\\\\
- ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
- ; (cd "\$\$i" && test ! -f configure && \$(MAKE) \$\$use) || exit; done
-/dist-all *:/a\\
- @ HOST="\$(HOST)\" \\\\\\
- ; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\
- ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
- ; found=$x echo \$\$BUILD | wc -w $x \\\\\\
- ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).tar.*" \\\\\\
- ; if test "\$\$found" = "0" ; then : \\\\\\
- ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\
- ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
- ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).tar.* \\\\\\
- ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done
-/dist-[a-zA-Z0-9]*-all *:/a\\
- @ HOST="\$(HOST)\" \\\\\\
- ; test ".\$\$HOST" = "." && HOST=$x sh ./config.guess $x \\\\\\
- ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
- ; found=$x echo \$\$BUILD | wc -w $x \\\\\\
- ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).*" \\\\\\
- ; if test "\$\$found" = "0" ; then : \\\\\\
- ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\
- ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
- ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).* \\\\\\
- ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done
-/distclean-all *:/a\\
- @ HOST="\$(HOST)\" \\\\\\
- ; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\
- ; BUILD=$x grep "^#### .*|" Makefile | sed -e 's/.*|//' $x \\\\\\
- ; use=$x basename "\$\@" -all $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\
- ; echo "MAKE \$\$HOST : \$\$n * \$\@ (all local builds)" \\\\\\
- ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\
- ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
- ; echo "# rm -r \$\$i"; done ; echo "# (sleep 3)" ; sleep 3 \\\\\\
- ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
- ; echo "\$\$i" | grep "^/" > /dev/null && continue \\\\\\
- ; echo "\$\$i" | grep "^../" > /dev/null && continue \\\\\\
- ; echo "rm -r \$\$i"; (rm -r "\$\$i") ; done ; rm Makefile
-_EOF
- cp "$tmp/conftemp.sed" "$ac_top_srcdir/makefile.sed~" ## DEBUGGING
- $ax_enable_builddir_sed -f $tmp/conftemp.sed Makefile >$ac_top_srcdir/Makefile
- if test -f "$ac_top_srcdir/Makefile.mk" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: extend top_srcdir/Makefile with top_srcdir/Makefile.mk" >&5
-$as_echo "$as_me: extend top_srcdir/Makefile with top_srcdir/Makefile.mk" >&6;}
- cat $ac_top_srcdir/Makefile.mk >>$ac_top_srcdir/Makefile
- fi ; xxxx="####"
- echo "$xxxx CONFIGURATIONS FOR TOPLEVEL MAKEFILE: " >>$ac_top_srcdir/Makefile
- # sanity check
- if grep '^; echo "MAKE ' $ac_top_srcdir/Makefile >/dev/null ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: buggy sed found - it deletes tab in \"a\" text parts" >&5
-$as_echo "$as_me: buggy sed found - it deletes tab in \"a\" text parts" >&6;}
- $ax_enable_builddir_sed -e '/^@ HOST=/s/^/ /' -e '/^; /s/^/ /' $ac_top_srcdir/Makefile \
- >$ac_top_srcdir/Makefile~
- (test -s $ac_top_srcdir/Makefile~ && mv $ac_top_srcdir/Makefile~ $ac_top_srcdir/Makefile) 2>/dev/null
- fi
- else
- xxxx="\\#\\#\\#\\#"
- # echo "/^$xxxx *$ax_enable_builddir_host /d" >$tmp/conftemp.sed
- echo "s!^$xxxx [^|]* | *$ax_enable_builddir *\$!$xxxx ...... $ax_enable_builddir!" >$tmp/conftemp.sed
- $ax_enable_builddir_sed -f "$tmp/conftemp.sed" "$ac_top_srcdir/Makefile" >$tmp/mkfile.tmp
- cp "$tmp/conftemp.sed" "$ac_top_srcdir/makefiles.sed~" ## DEBUGGING
- cp "$tmp/mkfile.tmp" "$ac_top_srcdir/makefiles.out~" ## DEBUGGING
- if cmp -s "$ac_top_srcdir/Makefile" "$tmp/mkfile.tmp" 2>/dev/null ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: keeping top_srcdir/Makefile from earlier configure" >&5
-$as_echo "$as_me: keeping top_srcdir/Makefile from earlier configure" >&6;}
- rm "$tmp/mkfile.tmp"
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: reusing top_srcdir/Makefile from earlier configure" >&5
-$as_echo "$as_me: reusing top_srcdir/Makefile from earlier configure" >&6;}
- mv "$tmp/mkfile.tmp" "$ac_top_srcdir/Makefile"
- fi
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: build in $ax_enable_builddir (HOST=$ax_enable_builddir_host)" >&5
-$as_echo "$as_me: build in $ax_enable_builddir (HOST=$ax_enable_builddir_host)" >&6;}
- xxxx="####"
- echo "$xxxx" "$ax_enable_builddir_host" "|$ax_enable_builddir" >>$ac_top_srcdir/Makefile
- fi
- ;;
"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
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for libffi 3.0.10rc6.
+# Generated by GNU Autoconf 2.68 for libffi 3.0.10rc7.
#
# Report bugs to <http://sourceware.org/libffi.html>.
#
# Identity of this package.
PACKAGE_NAME='libffi'
PACKAGE_TARNAME='libffi'
-PACKAGE_VERSION='3.0.10rc6'
-PACKAGE_STRING='libffi 3.0.10rc6'
+PACKAGE_VERSION='3.0.10rc7'
+PACKAGE_STRING='libffi 3.0.10rc7'
PACKAGE_BUGREPORT='http://sourceware.org/libffi.html'
PACKAGE_URL=''
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures libffi 3.0.10rc6 to adapt to many kinds of systems.
+\`configure' configures libffi 3.0.10rc7 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libffi 3.0.10rc6:";;
+ short | recursive ) echo "Configuration of libffi 3.0.10rc7:";;
esac
cat <<\_ACEOF
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libffi configure 3.0.10rc6
+libffi configure 3.0.10rc7
generated by GNU Autoconf 2.68
Copyright (C) 2010 Free Software Foundation, Inc.
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by libffi $as_me 3.0.10rc6, which was
+It was created by libffi $as_me 3.0.10rc7, which was
generated by GNU Autoconf 2.68. Invocation command line was
$ $0 $@
# Define the identity of the package.
PACKAGE='libffi'
- VERSION='3.0.10rc6'
+ VERSION='3.0.10rc7'
cat >>confdefs.h <<_ACEOF
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether .eh_frame section should be read-only" >&5
+if test "x$GCC" = "xyes"; then
+ { $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; }
if ${libffi_cv_ro_eh_frame+:} false; then :
$as_echo_n "(cached) " >&6
else
- libffi_cv_ro_eh_frame=no
- echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
- if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
- if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
- libffi_cv_ro_eh_frame=yes
- elif grep '.section.*eh_frame.*#alloc' conftest.c \
- | grep -v '#write' > /dev/null; then
- libffi_cv_ro_eh_frame=yes
- fi
- fi
- rm -f conftest.*
+ libffi_cv_ro_eh_frame=no
+ echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
+ if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
+ if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
+ libffi_cv_ro_eh_frame=yes
+ elif grep '.section.*eh_frame.*#alloc' conftest.c \
+ | grep -v '#write' > /dev/null; then
+ libffi_cv_ro_eh_frame=yes
+ fi
+ fi
+ rm -f conftest.*
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_ro_eh_frame" >&5
$as_echo "$libffi_cv_ro_eh_frame" >&6; }
-if test "x$libffi_cv_ro_eh_frame" = xyes; then
+ if test "x$libffi_cv_ro_eh_frame" = xyes; then
$as_echo "#define HAVE_RO_EH_FRAME 1" >>confdefs.h
$as_echo "#define EH_FRAME_FLAGS \"a\"" >>confdefs.h
-else
+ else
$as_echo "#define EH_FRAME_FLAGS \"aw\"" >>confdefs.h
-fi
+ fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5
$as_echo_n "checking for __attribute__((visibility(\"hidden\")))... " >&6; }
if ${libffi_cv_hidden_visibility_attribute+:} false; then :
$as_echo_n "(cached) " >&6
else
- echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
- libffi_cv_hidden_visibility_attribute=no
- if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
+ echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c
+ libffi_cv_hidden_visibility_attribute=no
+ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then
- if grep '\.hidden.*foo' conftest.s >/dev/null; then
- libffi_cv_hidden_visibility_attribute=yes
- fi
- fi
- rm -f conftest.*
+ if grep '\.hidden.*foo' conftest.s >/dev/null; then
+ libffi_cv_hidden_visibility_attribute=yes
+ fi
+ fi
+ rm -f conftest.*
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_hidden_visibility_attribute" >&5
$as_echo "$libffi_cv_hidden_visibility_attribute" >&6; }
-if test $libffi_cv_hidden_visibility_attribute = yes; then
+ if test $libffi_cv_hidden_visibility_attribute = yes; then
$as_echo "#define HAVE_HIDDEN_VISIBILITY_ATTRIBUTE 1" >>confdefs.h
+ fi
fi
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libffi $as_me 3.0.10rc6, which was
+This file was extended by libffi $as_me 3.0.10rc7, which was
generated by GNU Autoconf 2.68. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-libffi config.status 3.0.10rc6
+libffi config.status 3.0.10rc7
configured by $0, generated by GNU Autoconf 2.68,
with options \\"\$ac_cs_config\\"
AC_PREREQ(2.63)
-AC_INIT([libffi], [3.0.10rc6], [http://sourceware.org/libffi.html])
+AC_INIT([libffi], [3.0.10rc7], [http://sourceware.org/libffi.html])
AC_CONFIG_HEADERS([fficonfig.h])
AC_CANONICAL_SYSTEM
fi
fi
-AC_CACHE_CHECK([whether .eh_frame section should be read-only],
- libffi_cv_ro_eh_frame, [
- libffi_cv_ro_eh_frame=no
- echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
- if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
- if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
- libffi_cv_ro_eh_frame=yes
- elif grep '.section.*eh_frame.*#alloc' conftest.c \
- | grep -v '#write' > /dev/null; then
- libffi_cv_ro_eh_frame=yes
- fi
- fi
- rm -f conftest.*
- ])
-if test "x$libffi_cv_ro_eh_frame" = xyes; then
- AC_DEFINE(HAVE_RO_EH_FRAME, 1,
- [Define if .eh_frame sections should be read-only.])
- AC_DEFINE(EH_FRAME_FLAGS, "a",
- [Define to the flags needed for the .section .eh_frame directive.])
-else
- AC_DEFINE(EH_FRAME_FLAGS, "aw",
- [Define to the flags needed for the .section .eh_frame directive.])
-fi
+if test "x$GCC" = "xyes"; then
+ AC_CACHE_CHECK([whether .eh_frame section should be read-only],
+ libffi_cv_ro_eh_frame, [
+ libffi_cv_ro_eh_frame=no
+ echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
+ if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
+ if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
+ libffi_cv_ro_eh_frame=yes
+ elif grep '.section.*eh_frame.*#alloc' conftest.c \
+ | grep -v '#write' > /dev/null; then
+ libffi_cv_ro_eh_frame=yes
+ fi
+ fi
+ rm -f conftest.*
+ ])
+ if test "x$libffi_cv_ro_eh_frame" = xyes; then
+ AC_DEFINE(HAVE_RO_EH_FRAME, 1,
+ [Define if .eh_frame sections should be read-only.])
+ AC_DEFINE(EH_FRAME_FLAGS, "a",
+ [Define to the flags needed for the .section .eh_frame directive. ])
+ else
+ AC_DEFINE(EH_FRAME_FLAGS, "aw",
+ [Define to the flags needed for the .section .eh_frame directive. ])
+ fi
-AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
- libffi_cv_hidden_visibility_attribute, [
- echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
- libffi_cv_hidden_visibility_attribute=no
- if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
- if grep '\.hidden.*foo' conftest.s >/dev/null; then
- libffi_cv_hidden_visibility_attribute=yes
- fi
- fi
- rm -f conftest.*
- ])
-if test $libffi_cv_hidden_visibility_attribute = yes; then
- AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
- [Define if __attribute__((visibility("hidden"))) is supported.])
+ AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
+ libffi_cv_hidden_visibility_attribute, [
+ echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c
+ libffi_cv_hidden_visibility_attribute=no
+ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ if grep '\.hidden.*foo' conftest.s >/dev/null; then
+ libffi_cv_hidden_visibility_attribute=yes
+ fi
+ fi
+ rm -f conftest.*
+ ])
+ if test $libffi_cv_hidden_visibility_attribute = yes; then
+ AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
+ [Define if __attribute__((visibility("hidden"))) is supported.])
+ fi
fi
AH_BOTTOM([
AC_PREREQ(2.63)
-AC_INIT([libffi], [3.0.10rc6], [http://sourceware.org/libffi.html])
+AC_INIT([libffi], [3.0.10rc7], [http://sourceware.org/libffi.html])
AC_CONFIG_HEADERS([fficonfig.h])
AC_CANONICAL_SYSTEM
fi
fi
-AC_CACHE_CHECK([whether .eh_frame section should be read-only],
- libffi_cv_ro_eh_frame, [
- libffi_cv_ro_eh_frame=no
- echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
- if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
- if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
- libffi_cv_ro_eh_frame=yes
- elif grep '.section.*eh_frame.*#alloc' conftest.c \
- | grep -v '#write' > /dev/null; then
- libffi_cv_ro_eh_frame=yes
- fi
- fi
- rm -f conftest.*
- ])
-if test "x$libffi_cv_ro_eh_frame" = xyes; then
- AC_DEFINE(HAVE_RO_EH_FRAME, 1,
- [Define if .eh_frame sections should be read-only.])
- AC_DEFINE(EH_FRAME_FLAGS, "a",
- [Define to the flags needed for the .section .eh_frame directive.])
-else
- AC_DEFINE(EH_FRAME_FLAGS, "aw",
- [Define to the flags needed for the .section .eh_frame directive.])
-fi
+if test "x$GCC" = "xyes"; then
+ AC_CACHE_CHECK([whether .eh_frame section should be read-only],
+ libffi_cv_ro_eh_frame, [
+ libffi_cv_ro_eh_frame=no
+ echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
+ if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
+ if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
+ libffi_cv_ro_eh_frame=yes
+ elif grep '.section.*eh_frame.*#alloc' conftest.c \
+ | grep -v '#write' > /dev/null; then
+ libffi_cv_ro_eh_frame=yes
+ fi
+ fi
+ rm -f conftest.*
+ ])
+ if test "x$libffi_cv_ro_eh_frame" = xyes; then
+ AC_DEFINE(HAVE_RO_EH_FRAME, 1,
+ [Define if .eh_frame sections should be read-only.])
+ AC_DEFINE(EH_FRAME_FLAGS, "a",
+ [Define to the flags needed for the .section .eh_frame directive. ])
+ else
+ AC_DEFINE(EH_FRAME_FLAGS, "aw",
+ [Define to the flags needed for the .section .eh_frame directive. ])
+ fi
-AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
- libffi_cv_hidden_visibility_attribute, [
- echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
- libffi_cv_hidden_visibility_attribute=no
- if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
- if grep '\.hidden.*foo' conftest.s >/dev/null; then
- libffi_cv_hidden_visibility_attribute=yes
- fi
- fi
- rm -f conftest.*
- ])
-if test $libffi_cv_hidden_visibility_attribute = yes; then
- AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
- [Define if __attribute__((visibility("hidden"))) is supported.])
+ AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
+ libffi_cv_hidden_visibility_attribute, [
+ echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c
+ libffi_cv_hidden_visibility_attribute=no
+ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ if grep '\.hidden.*foo' conftest.s >/dev/null; then
+ libffi_cv_hidden_visibility_attribute=yes
+ fi
+ fi
+ rm -f conftest.*
+ ])
+ if test $libffi_cv_hidden_visibility_attribute = yes; then
+ AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
+ [Define if __attribute__((visibility("hidden"))) is supported.])
+ fi
fi
AH_BOTTOM([
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-sys_symbol_underscore = @sys_symbol_underscore@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for libffi 3.0.10rc6.
+# Generated by GNU Autoconf 2.68 for libffi 3.0.10rc7.
#
# Report bugs to <http://sourceware.org/libffi.html>.
#
# Identity of this package.
PACKAGE_NAME='libffi'
PACKAGE_TARNAME='libffi'
-PACKAGE_VERSION='3.0.10rc6'
-PACKAGE_STRING='libffi 3.0.10rc6'
+PACKAGE_VERSION='3.0.10rc7'
+PACKAGE_STRING='libffi 3.0.10rc7'
PACKAGE_BUGREPORT='http://sourceware.org/libffi.html'
PACKAGE_URL=''
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures libffi 3.0.10rc6 to adapt to many kinds of systems.
+\`configure' configures libffi 3.0.10rc7 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libffi 3.0.10rc6:";;
+ short | recursive ) echo "Configuration of libffi 3.0.10rc7:";;
esac
cat <<\_ACEOF
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libffi configure 3.0.10rc6
+libffi configure 3.0.10rc7
generated by GNU Autoconf 2.68
Copyright (C) 2010 Free Software Foundation, Inc.
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by libffi $as_me 3.0.10rc6, which was
+It was created by libffi $as_me 3.0.10rc7, which was
generated by GNU Autoconf 2.68. Invocation command line was
$ $0 $@
# Define the identity of the package.
PACKAGE='libffi'
- VERSION='3.0.10rc6'
+ VERSION='3.0.10rc7'
cat >>confdefs.h <<_ACEOF
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether .eh_frame section should be read-only" >&5
+if test "x$GCC" = "xyes"; then
+ { $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; }
if ${libffi_cv_ro_eh_frame+:} false; then :
$as_echo_n "(cached) " >&6
else
- libffi_cv_ro_eh_frame=no
- echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
- if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
- if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
- libffi_cv_ro_eh_frame=yes
- elif grep '.section.*eh_frame.*#alloc' conftest.c \
- | grep -v '#write' > /dev/null; then
- libffi_cv_ro_eh_frame=yes
- fi
- fi
- rm -f conftest.*
+ libffi_cv_ro_eh_frame=no
+ echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
+ if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
+ if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
+ libffi_cv_ro_eh_frame=yes
+ elif grep '.section.*eh_frame.*#alloc' conftest.c \
+ | grep -v '#write' > /dev/null; then
+ libffi_cv_ro_eh_frame=yes
+ fi
+ fi
+ rm -f conftest.*
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_ro_eh_frame" >&5
$as_echo "$libffi_cv_ro_eh_frame" >&6; }
-if test "x$libffi_cv_ro_eh_frame" = xyes; then
+ if test "x$libffi_cv_ro_eh_frame" = xyes; then
$as_echo "#define HAVE_RO_EH_FRAME 1" >>confdefs.h
$as_echo "#define EH_FRAME_FLAGS \"a\"" >>confdefs.h
-else
+ else
$as_echo "#define EH_FRAME_FLAGS \"aw\"" >>confdefs.h
-fi
+ fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5
$as_echo_n "checking for __attribute__((visibility(\"hidden\")))... " >&6; }
if ${libffi_cv_hidden_visibility_attribute+:} false; then :
$as_echo_n "(cached) " >&6
else
- echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
- libffi_cv_hidden_visibility_attribute=no
- if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
+ echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c
+ libffi_cv_hidden_visibility_attribute=no
+ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then
- if grep '\.hidden.*foo' conftest.s >/dev/null; then
- libffi_cv_hidden_visibility_attribute=yes
- fi
- fi
- rm -f conftest.*
+ if grep '\.hidden.*foo' conftest.s >/dev/null; then
+ libffi_cv_hidden_visibility_attribute=yes
+ fi
+ fi
+ rm -f conftest.*
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_hidden_visibility_attribute" >&5
$as_echo "$libffi_cv_hidden_visibility_attribute" >&6; }
-if test $libffi_cv_hidden_visibility_attribute = yes; then
+ if test $libffi_cv_hidden_visibility_attribute = yes; then
$as_echo "#define HAVE_HIDDEN_VISIBILITY_ATTRIBUTE 1" >>confdefs.h
+ fi
fi
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libffi $as_me 3.0.10rc6, which was
+This file was extended by libffi $as_me 3.0.10rc7, which was
generated by GNU Autoconf 2.68. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-libffi config.status 3.0.10rc6
+libffi config.status 3.0.10rc7
configured by $0, generated by GNU Autoconf 2.68,
with options \\"\$ac_cs_config\\"
AC_PREREQ(2.63)
-AC_INIT([libffi], [3.0.10rc6], [http://sourceware.org/libffi.html])
+AC_INIT([libffi], [3.0.10rc7], [http://sourceware.org/libffi.html])
AC_CONFIG_HEADERS([fficonfig.h])
AC_CANONICAL_SYSTEM
fi
fi
-AC_CACHE_CHECK([whether .eh_frame section should be read-only],
- libffi_cv_ro_eh_frame, [
- libffi_cv_ro_eh_frame=no
- echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
- if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
- if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
- libffi_cv_ro_eh_frame=yes
- elif grep '.section.*eh_frame.*#alloc' conftest.c \
- | grep -v '#write' > /dev/null; then
- libffi_cv_ro_eh_frame=yes
- fi
- fi
- rm -f conftest.*
- ])
-if test "x$libffi_cv_ro_eh_frame" = xyes; then
- AC_DEFINE(HAVE_RO_EH_FRAME, 1,
- [Define if .eh_frame sections should be read-only.])
- AC_DEFINE(EH_FRAME_FLAGS, "a",
- [Define to the flags needed for the .section .eh_frame directive.])
-else
- AC_DEFINE(EH_FRAME_FLAGS, "aw",
- [Define to the flags needed for the .section .eh_frame directive.])
-fi
+if test "x$GCC" = "xyes"; then
+ AC_CACHE_CHECK([whether .eh_frame section should be read-only],
+ libffi_cv_ro_eh_frame, [
+ libffi_cv_ro_eh_frame=no
+ echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
+ if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
+ if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
+ libffi_cv_ro_eh_frame=yes
+ elif grep '.section.*eh_frame.*#alloc' conftest.c \
+ | grep -v '#write' > /dev/null; then
+ libffi_cv_ro_eh_frame=yes
+ fi
+ fi
+ rm -f conftest.*
+ ])
+ if test "x$libffi_cv_ro_eh_frame" = xyes; then
+ AC_DEFINE(HAVE_RO_EH_FRAME, 1,
+ [Define if .eh_frame sections should be read-only.])
+ AC_DEFINE(EH_FRAME_FLAGS, "a",
+ [Define to the flags needed for the .section .eh_frame directive. ])
+ else
+ AC_DEFINE(EH_FRAME_FLAGS, "aw",
+ [Define to the flags needed for the .section .eh_frame directive. ])
+ fi
-AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
- libffi_cv_hidden_visibility_attribute, [
- echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
- libffi_cv_hidden_visibility_attribute=no
- if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
- if grep '\.hidden.*foo' conftest.s >/dev/null; then
- libffi_cv_hidden_visibility_attribute=yes
- fi
- fi
- rm -f conftest.*
- ])
-if test $libffi_cv_hidden_visibility_attribute = yes; then
- AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
- [Define if __attribute__((visibility("hidden"))) is supported.])
+ AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
+ libffi_cv_hidden_visibility_attribute, [
+ echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c
+ libffi_cv_hidden_visibility_attribute=no
+ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ if grep '\.hidden.*foo' conftest.s >/dev/null; then
+ libffi_cv_hidden_visibility_attribute=yes
+ fi
+ fi
+ rm -f conftest.*
+ ])
+ if test $libffi_cv_hidden_visibility_attribute = yes; then
+ AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
+ [Define if __attribute__((visibility("hidden"))) is supported.])
+ fi
fi
AH_BOTTOM([
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-sys_symbol_underscore = @sys_symbol_underscore@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
-sys_symbol_underscore = @sys_symbol_underscore@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
AC_PREREQ(2.63)
-AC_INIT([libffi], [3.0.10rc6], [http://sourceware.org/libffi.html])
+AC_INIT([libffi], [3.0.10rc7], [http://sourceware.org/libffi.html])
AC_CONFIG_HEADERS([fficonfig.h])
AC_CANONICAL_SYSTEM
fi
fi
-AC_CACHE_CHECK([whether .eh_frame section should be read-only],
- libffi_cv_ro_eh_frame, [
- libffi_cv_ro_eh_frame=no
- echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
- if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
- if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
- libffi_cv_ro_eh_frame=yes
- elif grep '.section.*eh_frame.*#alloc' conftest.c \
- | grep -v '#write' > /dev/null; then
- libffi_cv_ro_eh_frame=yes
- fi
- fi
- rm -f conftest.*
- ])
-if test "x$libffi_cv_ro_eh_frame" = xyes; then
- AC_DEFINE(HAVE_RO_EH_FRAME, 1,
- [Define if .eh_frame sections should be read-only.])
- AC_DEFINE(EH_FRAME_FLAGS, "a",
- [Define to the flags needed for the .section .eh_frame directive.])
-else
- AC_DEFINE(EH_FRAME_FLAGS, "aw",
- [Define to the flags needed for the .section .eh_frame directive.])
-fi
+if test "x$GCC" = "xyes"; then
+ AC_CACHE_CHECK([whether .eh_frame section should be read-only],
+ libffi_cv_ro_eh_frame, [
+ libffi_cv_ro_eh_frame=no
+ echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
+ if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
+ if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
+ libffi_cv_ro_eh_frame=yes
+ elif grep '.section.*eh_frame.*#alloc' conftest.c \
+ | grep -v '#write' > /dev/null; then
+ libffi_cv_ro_eh_frame=yes
+ fi
+ fi
+ rm -f conftest.*
+ ])
+ if test "x$libffi_cv_ro_eh_frame" = xyes; then
+ AC_DEFINE(HAVE_RO_EH_FRAME, 1,
+ [Define if .eh_frame sections should be read-only.])
+ AC_DEFINE(EH_FRAME_FLAGS, "a",
+ [Define to the flags needed for the .section .eh_frame directive. ])
+ else
+ AC_DEFINE(EH_FRAME_FLAGS, "aw",
+ [Define to the flags needed for the .section .eh_frame directive. ])
+ fi
-AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
- libffi_cv_hidden_visibility_attribute, [
- echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
- libffi_cv_hidden_visibility_attribute=no
- if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
- if grep '\.hidden.*foo' conftest.s >/dev/null; then
- libffi_cv_hidden_visibility_attribute=yes
- fi
- fi
- rm -f conftest.*
- ])
-if test $libffi_cv_hidden_visibility_attribute = yes; then
- AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
- [Define if __attribute__((visibility("hidden"))) is supported.])
+ AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
+ libffi_cv_hidden_visibility_attribute, [
+ echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c
+ libffi_cv_hidden_visibility_attribute=no
+ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ if grep '\.hidden.*foo' conftest.s >/dev/null; then
+ libffi_cv_hidden_visibility_attribute=yes
+ fi
+ fi
+ rm -f conftest.*
+ ])
+ if test $libffi_cv_hidden_visibility_attribute = yes; then
+ AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
+ [Define if __attribute__((visibility("hidden"))) is supported.])
+ fi
fi
AH_BOTTOM([
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for libffi 3.0.10rc6.
+# Generated by GNU Autoconf 2.68 for libffi 3.0.10rc7.
#
# Report bugs to <http://sourceware.org/libffi.html>.
#
# Identity of this package.
PACKAGE_NAME='libffi'
PACKAGE_TARNAME='libffi'
-PACKAGE_VERSION='3.0.10rc6'
-PACKAGE_STRING='libffi 3.0.10rc6'
+PACKAGE_VERSION='3.0.10rc7'
+PACKAGE_STRING='libffi 3.0.10rc7'
PACKAGE_BUGREPORT='http://sourceware.org/libffi.html'
PACKAGE_URL=''
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures libffi 3.0.10rc6 to adapt to many kinds of systems.
+\`configure' configures libffi 3.0.10rc7 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libffi 3.0.10rc6:";;
+ short | recursive ) echo "Configuration of libffi 3.0.10rc7:";;
esac
cat <<\_ACEOF
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libffi configure 3.0.10rc6
+libffi configure 3.0.10rc7
generated by GNU Autoconf 2.68
Copyright (C) 2010 Free Software Foundation, Inc.
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by libffi $as_me 3.0.10rc6, which was
+It was created by libffi $as_me 3.0.10rc7, which was
generated by GNU Autoconf 2.68. Invocation command line was
$ $0 $@
# Define the identity of the package.
PACKAGE='libffi'
- VERSION='3.0.10rc6'
+ VERSION='3.0.10rc7'
cat >>confdefs.h <<_ACEOF
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libffi $as_me 3.0.10rc6, which was
+This file was extended by libffi $as_me 3.0.10rc7, which was
generated by GNU Autoconf 2.68. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-libffi config.status 3.0.10rc6
+libffi config.status 3.0.10rc7
configured by $0, generated by GNU Autoconf 2.68,
with options \\"\$ac_cs_config\\"
AC_PREREQ(2.63)
-AC_INIT([libffi], [3.0.10rc6], [http://sourceware.org/libffi.html])
+AC_INIT([libffi], [3.0.10rc7], [http://sourceware.org/libffi.html])
AC_CONFIG_HEADERS([fficonfig.h])
AC_CANONICAL_SYSTEM
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for libffi 3.0.10rc6.
+# Generated by GNU Autoconf 2.68 for libffi 3.0.10rc7.
#
# Report bugs to <http://sourceware.org/libffi.html>.
#
# Identity of this package.
PACKAGE_NAME='libffi'
PACKAGE_TARNAME='libffi'
-PACKAGE_VERSION='3.0.10rc6'
-PACKAGE_STRING='libffi 3.0.10rc6'
+PACKAGE_VERSION='3.0.10rc7'
+PACKAGE_STRING='libffi 3.0.10rc7'
PACKAGE_BUGREPORT='http://sourceware.org/libffi.html'
PACKAGE_URL=''
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures libffi 3.0.10rc6 to adapt to many kinds of systems.
+\`configure' configures libffi 3.0.10rc7 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libffi 3.0.10rc6:";;
+ short | recursive ) echo "Configuration of libffi 3.0.10rc7:";;
esac
cat <<\_ACEOF
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libffi configure 3.0.10rc6
+libffi configure 3.0.10rc7
generated by GNU Autoconf 2.68
Copyright (C) 2010 Free Software Foundation, Inc.
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by libffi $as_me 3.0.10rc6, which was
+It was created by libffi $as_me 3.0.10rc7, which was
generated by GNU Autoconf 2.68. Invocation command line was
$ $0 $@
# Define the identity of the package.
PACKAGE='libffi'
- VERSION='3.0.10rc6'
+ VERSION='3.0.10rc7'
cat >>confdefs.h <<_ACEOF
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libffi $as_me 3.0.10rc6, which was
+This file was extended by libffi $as_me 3.0.10rc7, which was
generated by GNU Autoconf 2.68. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-libffi config.status 3.0.10rc6
+libffi config.status 3.0.10rc7
configured by $0, generated by GNU Autoconf 2.68,
with options \\"\$ac_cs_config\\"
AC_PREREQ(2.63)
-AC_INIT([libffi], [3.0.10rc6], [http://sourceware.org/libffi.html])
+AC_INIT([libffi], [3.0.10rc7], [http://sourceware.org/libffi.html])
AC_CONFIG_HEADERS([fficonfig.h])
AC_CANONICAL_SYSTEM
2011-02-25 Anthony Green <green@moxielogic.com>
- * src/powerpc/ffi.c (ffi_prep_closure_loc): Accept more 32-bit
- ABIs for closures.
+ * src/powerpc/ffi.c (ffi_prep_closure_loc): Allow for more
+ 32-bit ABIs.
2011-02-15 Anthony Green <green@moxielogic.com>
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
+m4_include([m4/ax_cc_maxopt.m4])
+m4_include([m4/ax_cflags_warn_all.m4])
+m4_include([m4/ax_check_compiler_flags.m4])
+m4_include([m4/ax_compiler_vendor.m4])
+m4_include([m4/ax_configure_args.m4])
+m4_include([m4/ax_enable_builddir.m4])
+m4_include([m4/ax_gcc_archflag.m4])
+m4_include([m4/ax_gcc_x86_cpuid.m4])
m4_include([m4/libtool.m4])
m4_include([m4/ltoptions.m4])
m4_include([m4/ltsugar.m4])
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for libffi 3.0.10rc6.
+# Generated by GNU Autoconf 2.68 for libffi 3.0.10rc7.
#
# Report bugs to <http://sourceware.org/libffi.html>.
#
# Identity of this package.
PACKAGE_NAME='libffi'
PACKAGE_TARNAME='libffi'
-PACKAGE_VERSION='3.0.10rc6'
-PACKAGE_STRING='libffi 3.0.10rc6'
+PACKAGE_VERSION='3.0.10rc7'
+PACKAGE_STRING='libffi 3.0.10rc7'
PACKAGE_BUGREPORT='http://sourceware.org/libffi.html'
PACKAGE_URL=''
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures libffi 3.0.10rc6 to adapt to many kinds of systems.
+\`configure' configures libffi 3.0.10rc7 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libffi 3.0.10rc6:";;
+ short | recursive ) echo "Configuration of libffi 3.0.10rc7:";;
esac
cat <<\_ACEOF
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libffi configure 3.0.10rc6
+libffi configure 3.0.10rc7
generated by GNU Autoconf 2.68
Copyright (C) 2010 Free Software Foundation, Inc.
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by libffi $as_me 3.0.10rc6, which was
+It was created by libffi $as_me 3.0.10rc7, which was
generated by GNU Autoconf 2.68. Invocation command line was
$ $0 $@
# Define the identity of the package.
PACKAGE='libffi'
- VERSION='3.0.10rc6'
+ VERSION='3.0.10rc7'
cat >>confdefs.h <<_ACEOF
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether .eh_frame section should be read-only" >&5
+if test "x$GCC" = "xyes"; then
+ { $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; }
if ${libffi_cv_ro_eh_frame+:} false; then :
$as_echo_n "(cached) " >&6
else
- libffi_cv_ro_eh_frame=no
- echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
- if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
- if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
- libffi_cv_ro_eh_frame=yes
- elif grep '.section.*eh_frame.*#alloc' conftest.c \
- | grep -v '#write' > /dev/null; then
- libffi_cv_ro_eh_frame=yes
- fi
- fi
- rm -f conftest.*
+ libffi_cv_ro_eh_frame=no
+ echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
+ if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
+ if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
+ libffi_cv_ro_eh_frame=yes
+ elif grep '.section.*eh_frame.*#alloc' conftest.c \
+ | grep -v '#write' > /dev/null; then
+ libffi_cv_ro_eh_frame=yes
+ fi
+ fi
+ rm -f conftest.*
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_ro_eh_frame" >&5
$as_echo "$libffi_cv_ro_eh_frame" >&6; }
-if test "x$libffi_cv_ro_eh_frame" = xyes; then
+ if test "x$libffi_cv_ro_eh_frame" = xyes; then
$as_echo "#define HAVE_RO_EH_FRAME 1" >>confdefs.h
$as_echo "#define EH_FRAME_FLAGS \"a\"" >>confdefs.h
-else
+ else
$as_echo "#define EH_FRAME_FLAGS \"aw\"" >>confdefs.h
-fi
+ fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5
$as_echo_n "checking for __attribute__((visibility(\"hidden\")))... " >&6; }
if ${libffi_cv_hidden_visibility_attribute+:} false; then :
$as_echo_n "(cached) " >&6
else
- echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
- libffi_cv_hidden_visibility_attribute=no
- if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
+ echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c
+ libffi_cv_hidden_visibility_attribute=no
+ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then
- if grep '\.hidden.*foo' conftest.s >/dev/null; then
- libffi_cv_hidden_visibility_attribute=yes
- fi
- fi
- rm -f conftest.*
+ if grep '\.hidden.*foo' conftest.s >/dev/null; then
+ libffi_cv_hidden_visibility_attribute=yes
+ fi
+ fi
+ rm -f conftest.*
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_hidden_visibility_attribute" >&5
$as_echo "$libffi_cv_hidden_visibility_attribute" >&6; }
-if test $libffi_cv_hidden_visibility_attribute = yes; then
+ if test $libffi_cv_hidden_visibility_attribute = yes; then
$as_echo "#define HAVE_HIDDEN_VISIBILITY_ATTRIBUTE 1" >>confdefs.h
+ fi
fi
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libffi $as_me 3.0.10rc6, which was
+This file was extended by libffi $as_me 3.0.10rc7, which was
generated by GNU Autoconf 2.68. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-libffi config.status 3.0.10rc6
+libffi config.status 3.0.10rc7
configured by $0, generated by GNU Autoconf 2.68,
with options \\"\$ac_cs_config\\"
AC_PREREQ(2.63)
-AC_INIT([libffi], [3.0.10rc6], [http://sourceware.org/libffi.html])
+AC_INIT([libffi], [3.0.10rc7], [http://sourceware.org/libffi.html])
AC_CONFIG_HEADERS([fficonfig.h])
AC_CANONICAL_SYSTEM
fi
fi
-AC_CACHE_CHECK([whether .eh_frame section should be read-only],
- libffi_cv_ro_eh_frame, [
- libffi_cv_ro_eh_frame=no
- echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
- if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
- if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
- libffi_cv_ro_eh_frame=yes
- elif grep '.section.*eh_frame.*#alloc' conftest.c \
- | grep -v '#write' > /dev/null; then
- libffi_cv_ro_eh_frame=yes
- fi
- fi
- rm -f conftest.*
- ])
-if test "x$libffi_cv_ro_eh_frame" = xyes; then
- AC_DEFINE(HAVE_RO_EH_FRAME, 1,
- [Define if .eh_frame sections should be read-only.])
- AC_DEFINE(EH_FRAME_FLAGS, "a",
- [Define to the flags needed for the .section .eh_frame directive.])
-else
- AC_DEFINE(EH_FRAME_FLAGS, "aw",
- [Define to the flags needed for the .section .eh_frame directive.])
-fi
+if test "x$GCC" = "xyes"; then
+ AC_CACHE_CHECK([whether .eh_frame section should be read-only],
+ libffi_cv_ro_eh_frame, [
+ libffi_cv_ro_eh_frame=no
+ echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
+ if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
+ if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
+ libffi_cv_ro_eh_frame=yes
+ elif grep '.section.*eh_frame.*#alloc' conftest.c \
+ | grep -v '#write' > /dev/null; then
+ libffi_cv_ro_eh_frame=yes
+ fi
+ fi
+ rm -f conftest.*
+ ])
+ if test "x$libffi_cv_ro_eh_frame" = xyes; then
+ AC_DEFINE(HAVE_RO_EH_FRAME, 1,
+ [Define if .eh_frame sections should be read-only.])
+ AC_DEFINE(EH_FRAME_FLAGS, "a",
+ [Define to the flags needed for the .section .eh_frame directive. ])
+ else
+ AC_DEFINE(EH_FRAME_FLAGS, "aw",
+ [Define to the flags needed for the .section .eh_frame directive. ])
+ fi
-AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
- libffi_cv_hidden_visibility_attribute, [
- echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
- libffi_cv_hidden_visibility_attribute=no
- if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
- if grep '\.hidden.*foo' conftest.s >/dev/null; then
- libffi_cv_hidden_visibility_attribute=yes
- fi
- fi
- rm -f conftest.*
- ])
-if test $libffi_cv_hidden_visibility_attribute = yes; then
- AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
- [Define if __attribute__((visibility("hidden"))) is supported.])
+ AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
+ libffi_cv_hidden_visibility_attribute, [
+ echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c
+ libffi_cv_hidden_visibility_attribute=no
+ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ if grep '\.hidden.*foo' conftest.s >/dev/null; then
+ libffi_cv_hidden_visibility_attribute=yes
+ fi
+ fi
+ rm -f conftest.*
+ ])
+ if test $libffi_cv_hidden_visibility_attribute = yes; then
+ AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
+ [Define if __attribute__((visibility("hidden"))) is supported.])
+ fi
fi
AH_BOTTOM([
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
$(srcdir)/ffi.h.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(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__aclocal_m4_deps = $(top_srcdir)/m4/ax_cc_maxopt.m4 \
+ $(top_srcdir)/m4/ax_cflags_warn_all.m4 \
+ $(top_srcdir)/m4/ax_check_compiler_flags.m4 \
+ $(top_srcdir)/m4/ax_compiler_vendor.m4 \
+ $(top_srcdir)/m4/ax_configure_args.m4 \
+ $(top_srcdir)/m4/ax_enable_builddir.m4 \
+ $(top_srcdir)/m4/ax_gcc_archflag.m4 \
+ $(top_srcdir)/m4/ax_gcc_x86_cpuid.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)
mkinstalldirs = $(install_sh) -d
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@
FGREP = @FGREP@
GREP = @GREP@
HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
+PRTDIAG = @PRTDIAG@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
+ax_enable_builddir_sed = @ax_enable_builddir_sed@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
+sys_symbol_underscore = @sys_symbol_underscore@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
subdir = man
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(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__aclocal_m4_deps = $(top_srcdir)/m4/ax_cc_maxopt.m4 \
+ $(top_srcdir)/m4/ax_cflags_warn_all.m4 \
+ $(top_srcdir)/m4/ax_check_compiler_flags.m4 \
+ $(top_srcdir)/m4/ax_compiler_vendor.m4 \
+ $(top_srcdir)/m4/ax_configure_args.m4 \
+ $(top_srcdir)/m4/ax_enable_builddir.m4 \
+ $(top_srcdir)/m4/ax_gcc_archflag.m4 \
+ $(top_srcdir)/m4/ax_gcc_x86_cpuid.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)
mkinstalldirs = $(install_sh) -d
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@
FGREP = @FGREP@
GREP = @GREP@
HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
+PRTDIAG = @PRTDIAG@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
+ax_enable_builddir_sed = @ax_enable_builddir_sed@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
+sys_symbol_underscore = @sys_symbol_underscore@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
#define LIBFFI_ASM
#define JUMPTARGET(name) name
#define L(x) x
+Index: libffi/configure
+===================================================================
+--- libffi.orig/configure
++++ libffi/configure
+@@ -13313,67 +13313,69 @@ $as_echo "#define HAVE_AS_X86_64_UNWIND_
+ fi
+ fi
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether .eh_frame section should be read-only" >&5
++if test "x$GCC" = "xyes"; then
++ { $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; }
+ if ${libffi_cv_ro_eh_frame+:} false; then :
+ $as_echo_n "(cached) " >&6
+ else
+
+- libffi_cv_ro_eh_frame=no
+- echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
+- if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
+- if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
+- libffi_cv_ro_eh_frame=yes
+- elif grep '.section.*eh_frame.*#alloc' conftest.c \
+- | grep -v '#write' > /dev/null; then
+- libffi_cv_ro_eh_frame=yes
+- fi
+- fi
+- rm -f conftest.*
++ libffi_cv_ro_eh_frame=no
++ echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
++ if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
++ if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
++ libffi_cv_ro_eh_frame=yes
++ elif grep '.section.*eh_frame.*#alloc' conftest.c \
++ | grep -v '#write' > /dev/null; then
++ libffi_cv_ro_eh_frame=yes
++ fi
++ fi
++ rm -f conftest.*
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_ro_eh_frame" >&5
+ $as_echo "$libffi_cv_ro_eh_frame" >&6; }
+-if test "x$libffi_cv_ro_eh_frame" = xyes; then
++ if test "x$libffi_cv_ro_eh_frame" = xyes; then
+
+ $as_echo "#define HAVE_RO_EH_FRAME 1" >>confdefs.h
+
+
+ $as_echo "#define EH_FRAME_FLAGS \"a\"" >>confdefs.h
+
+-else
++ else
+
+ $as_echo "#define EH_FRAME_FLAGS \"aw\"" >>confdefs.h
+
+-fi
++ fi
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5
+ $as_echo_n "checking for __attribute__((visibility(\"hidden\")))... " >&6; }
+ if ${libffi_cv_hidden_visibility_attribute+:} false; then :
+ $as_echo_n "(cached) " >&6
+ else
+
+- echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
+- libffi_cv_hidden_visibility_attribute=no
+- if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
++ echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c
++ libffi_cv_hidden_visibility_attribute=no
++ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+- if grep '\.hidden.*foo' conftest.s >/dev/null; then
+- libffi_cv_hidden_visibility_attribute=yes
+- fi
+- fi
+- rm -f conftest.*
++ if grep '\.hidden.*foo' conftest.s >/dev/null; then
++ libffi_cv_hidden_visibility_attribute=yes
++ fi
++ fi
++ rm -f conftest.*
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_hidden_visibility_attribute" >&5
+ $as_echo "$libffi_cv_hidden_visibility_attribute" >&6; }
+-if test $libffi_cv_hidden_visibility_attribute = yes; then
++ if test $libffi_cv_hidden_visibility_attribute = yes; then
+
+ $as_echo "#define HAVE_HIDDEN_VISIBILITY_ATTRIBUTE 1" >>confdefs.h
+
++ fi
+ fi
+
+
+Index: libffi/configure.ac
+===================================================================
+--- libffi.orig/configure.ac
++++ libffi/configure.ac
+@@ -351,44 +351,46 @@ if test x$TARGET = xX86_64; then
+ fi
+ fi
+
+-AC_CACHE_CHECK([whether .eh_frame section should be read-only],
+- libffi_cv_ro_eh_frame, [
+- libffi_cv_ro_eh_frame=no
+- echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
+- if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
+- if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
+- libffi_cv_ro_eh_frame=yes
+- elif grep '.section.*eh_frame.*#alloc' conftest.c \
+- | grep -v '#write' > /dev/null; then
+- libffi_cv_ro_eh_frame=yes
+- fi
+- fi
+- rm -f conftest.*
+- ])
+-if test "x$libffi_cv_ro_eh_frame" = xyes; then
+- AC_DEFINE(HAVE_RO_EH_FRAME, 1,
+- [Define if .eh_frame sections should be read-only.])
+- AC_DEFINE(EH_FRAME_FLAGS, "a",
+- [Define to the flags needed for the .section .eh_frame directive.])
+-else
+- AC_DEFINE(EH_FRAME_FLAGS, "aw",
+- [Define to the flags needed for the .section .eh_frame directive.])
+-fi
++if test "x$GCC" = "xyes"; then
++ AC_CACHE_CHECK([whether .eh_frame section should be read-only],
++ libffi_cv_ro_eh_frame, [
++ libffi_cv_ro_eh_frame=no
++ echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
++ if $CC $CFLAGS -S -fpic -fexceptions -o conftest.s conftest.c > /dev/null 2>&1; then
++ if grep '.section.*eh_frame.*"a"' conftest.s > /dev/null; then
++ libffi_cv_ro_eh_frame=yes
++ elif grep '.section.*eh_frame.*#alloc' conftest.c \
++ | grep -v '#write' > /dev/null; then
++ libffi_cv_ro_eh_frame=yes
++ fi
++ fi
++ rm -f conftest.*
++ ])
++ if test "x$libffi_cv_ro_eh_frame" = xyes; then
++ AC_DEFINE(HAVE_RO_EH_FRAME, 1,
++ [Define if .eh_frame sections should be read-only.])
++ AC_DEFINE(EH_FRAME_FLAGS, "a",
++ [Define to the flags needed for the .section .eh_frame directive. ])
++ else
++ AC_DEFINE(EH_FRAME_FLAGS, "aw",
++ [Define to the flags needed for the .section .eh_frame directive. ])
++ fi
+
+-AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
+- libffi_cv_hidden_visibility_attribute, [
+- echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
+- libffi_cv_hidden_visibility_attribute=no
+- if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
+- if grep '\.hidden.*foo' conftest.s >/dev/null; then
+- libffi_cv_hidden_visibility_attribute=yes
+- fi
+- fi
+- rm -f conftest.*
+- ])
+-if test $libffi_cv_hidden_visibility_attribute = yes; then
+- AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
+- [Define if __attribute__((visibility("hidden"))) is supported.])
++ AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
++ libffi_cv_hidden_visibility_attribute, [
++ echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c
++ libffi_cv_hidden_visibility_attribute=no
++ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
++ if grep '\.hidden.*foo' conftest.s >/dev/null; then
++ libffi_cv_hidden_visibility_attribute=yes
++ fi
++ fi
++ rm -f conftest.*
++ ])
++ if test $libffi_cv_hidden_visibility_attribute = yes; then
++ AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
++ [Define if __attribute__((visibility("hidden"))) is supported.])
++ fi
+ fi
+
+ AH_BOTTOM([
Index: libffi/ChangeLog
===================================================================
---- /dev/null
+--- libffi.orig/ChangeLog
+++ libffi/ChangeLog
-@@ -0,0 +1,4556 @@
+@@ -1,3 +1,8 @@
+2011-02-25 Anthony Green <green@moxielogic.com>
+
-+ * src/powerpc/ffi.c (ffi_prep_closure_loc): Accept more 32-bit
-+ ABIs for closures.
++ * src/powerpc/ffi.c (ffi_prep_closure_loc): Allow for more
++ 32-bit ABIs.
+
-+2011-02-15 Anthony Green <green@moxielogic.com>
-+
-+ * m4/ax_cc_maxopt.m4: Don't -malign-double or use -ffast-math.
-+ * configure: Rebuilt.
-+
-+2011-02-13 Anthony Green <green@moxielogic.com>
-+
-+ * include/ffi_common.h (UNLIKELY, LIKELY): Define.
-+ * src/x86/ffi64.c (UNLIKELY, LIKELY): Remove definition.
-+ * src/prep_cif.c (UNLIKELY, LIKELY): Remove definition.
-+
-+ * src/prep_cif.c (initialize_aggregate): Convert assertion into
-+ FFI_BAD_TYPEDEF return. Initialize arg size and alignment to 0.
-+
-+ * src/pa/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test,
-+ just return FFI_BAD_ABI when things are wrong.
-+ * src/arm/ffi.c (ffi_prep_closure_loc): Ditto.
-+ * src/powerpc/ffi.c (ffi_prep_closure_loc): Ditto.
-+ * src/mips/ffi.c (ffi_prep_closure_loc): Ditto.
-+ * src/ia64/ffi.c (ffi_prep_closure_loc): Ditto.
-+ * src/avr32/ffi.c (ffi_prep_closure_loc): Ditto.
-+
-+2011-02-11 Anthony Green <green@moxielogic.com>
-+
-+ * libtool-version: Update.
-+ * Makefile.am (nodist_libffi_la_SOURCES): Add src/debug.c if
-+ FFI_DEBUG.
-+ (libffi_la_SOURCES): Remove src/debug.c
-+ (EXTRA_DIST): Add src/debug.c
-+ * Makefile.in: Rebuilt.
-+
-+2011-02-11 Anthony Green <green@moxielogic.com>
-+
-+ * src/sparc/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test,
-+ just return FFI_BAD_ABI when things are wrong.
-+
-+2011-02-09 Stuart Shelton <srcshelton@gmail.com>
-+
-+ http://bugs.gentoo.org/show_bug.cgi?id=286911
-+ * src/mips/ffitarget.h: Clean up error messages.
-+ * src/java_raw_api.c (ffi_java_translate_args): Cast raw arg to
-+ ffi_raw*.
-+ * include/ffi.h.in: Add pragma for SGI compiler.
-+
-+2011-02-09 Anthony Green <green@moxielogic.com>
-+
-+ * configure.ac: Add powerpc64-*-darwin* support.
-+
-+2011-02-09 Anthony Green <green@moxielogic.com>
-+
-+ * README: Mention Interix.
-+
-+2011-02-09 Jonathan Callen <abcd@gentoo.org>
-+
-+ * configure.ac: Add Interix to win32/cygwin/mingw case.
-+ * configure: Ditto.
-+ * src/closures.c: Treat Interix like Cygwin, instead of as a
-+ generic win32.
-+
-+2011-02-09 Anthony Green <green@moxielogic.com>
-+
-+ * testsuite/libffi.call/err_bad_typedef.c: Remove xfail.
-+ * testsuite/libffi.call/err_bad_abi.c: Remove xfail.
-+ * src/x86/ffi64.c (UNLIKELY, LIKELY): Define.
-+ (ffi_prep_closure_loc): Check for bad ABI.
-+ * src/prep_cif.c (UNLIKELY, LIKELY): Define.
-+ (initialize_aggregate): Check for bad types.
-+
-+2011-02-09 Landon Fuller <landonf@plausible.coop>
-+
-+ * Makefile.am (EXTRA_DIST): Add build-ios.sh, src/arm/gentramp.sh,
-+ src/arm/trampoline.S.
-+ (nodist_libffi_la_SOURCES): Add src/arc/trampoline.S.
-+ * configure.ac (FFI_EXEC_TRAMPOLINE_TABLE): Define.
-+ * src/arm/ffi.c (ffi_trampoline_table)
-+ (ffi_closure_trampoline_table_page, ffi_trampoline_table_entry)
-+ (FFI_TRAMPOLINE_CODELOC_CONFIG, FFI_TRAMPOLINE_CONFIG_PAGE_OFFSET)
-+ (FFI_TRAMPOLINE_COUNT, ffi_trampoline_lock, ffi_trampoline_tables)
-+ (ffi_trampoline_table_alloc, ffi_closure_alloc, ffi_closure_free):
-+ Define for FFI_EXEC_TRAMPOLINE_TABLE case (iOS).
-+ (ffi_prep_closure_loc): Handl FFI_EXEC_TRAMPOLINE_TABLE case
-+ separately.
-+ * src/arm/sysv.S: Handle Apple iOS host.
-+ * src/closures.c: Handle FFI_EXEC_TRAMPOLINE_TABLE case.
-+ * build-ios.sh: New file.
-+ * fficonfig.h.in, configure, Makefile.in: Rebuilt.
-+ * README: Mention ARM iOS.
-+
-+2011-02-08 Oren Held <orenhe@il.ibm.com>
-+
-+ * src/dlmalloc.c (_STRUCT_MALLINFO): Define in order to avoid
-+ redefinition of mallinfo on HP-UX.
-+
-+2011-02-08 Ginn Chen <ginn.chen@oracle.com>
-+
-+ * src/sparc/ffi.c (ffi_call): Make compatible with Solaris Studio
-+ aggregate return ABI.
-+
-+2011-02-08 Ed <ed@kdtc.net>
-+
-+ * src/powerpc/asm.h: Fix grammar nit in comment.
-+
-+2011-02-11 Anthony Green <green@moxielogic.com>
-+
-+ From Tom Honermann <tom.honermann@oracle.com>:
-+ * src/powerpc/aix.S (ffi_call_AIX): Support for xlc toolchain on
-+ AIX. Declare .ffi_prep_args. Insert nops after branch
-+ instructions so that the AIX linker can insert TOC reload
-+ instructions.
-+ * src/powerpc/aix_closure.S: Declare .ffi_closure_helper_DARWIN.
-+
-+2011-02-08 Uli Link <ul.mcamafia@linkitup.de>
-+
-+ * include/ffi.h.in (FFI_64_BIT_MAX): Define and use.
-+
-+2011-02-08 Rafael Avila de Espindola <respindola@mozilla.com>
-+
-+ * configure.ac: Fix x86 test for pc related relocs.
-+ * confifure: Rebuilt.
-+
-+2011-02-07 Joel Sherrill <joel.sherrill@oarcorp.com>
-+
-+ * libffi/src/m68k/ffi.c: Add RTEMS support for cache flushing.
-+ Handle case when CPU variant does not have long double support.
-+ * libffi/src/m68k/sysv.S: Add support for mc68000, Coldfire,
-+ and cores with soft floating point.
-+
-+2011-02-07 Joel Sherrill <joel.sherrill@oarcorp.com>
-+
-+ * configure.ac: Add mips*-*-rtems* support.
-+ * configure: Regenerate.
-+ * src/mips/ffitarget.h: Ensure needed constants are available
-+ for targets which do not have sgidefs.h.
-+
-+2011-01-26 Dave Korn <dave.korn.cygwin@gmail.com>
-+
-+ PR target/40125
-+ * configure.ac (AM_LTLDFLAGS): Add -bindir option for windows DLLs.
-+ * configure: Regenerate.
-+
-+2010-12-18 Iain Sandoe <iains@gcc.gnu.org>
-+
-+ PR libffi/29152
-+ PR libffi/42378
-+ * src/powerpc/darwin_closure.S: Provide Darwin64 implementation,
-+ update comments.
-+ * src/powerpc/ffitarget.h (POWERPC_DARWIN64): New,
-+ (FFI_TRAMPOLINE_SIZE): Update for Darwin64.
-+ * src/powerpc/darwin.S: Provide Darwin64 implementation,
-+ update comments.
-+ * src/powerpc/ffi_darwin.c: Likewise.
-+
-+2010-12-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+ * configure.ac (libffi_cv_as_ascii_pseudo_op): Use double
-+ backslashes.
-+ (libffi_cv_as_string_pseudo_op): Likewise.
-+ * configure: Regenerate.
-+
-+2010-12-03 Chung-Lin Tang <cltang@codesourcery.com>
-+
-+ * src/arm/sysv.S (ffi_closure_SYSV): Add UNWIND to .pad directive.
-+ (ffi_closure_VFP): Same.
-+ (ffi_call_VFP): Move down to before ffi_closure_VFP. Add '.fpu vfp'
-+ directive.
-+
-+2010-12-01 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+ * testsuite/libffi.call/ffitest.h [__sgi] (PRId64, PRIu64): Define.
-+ (PRIuPTR): Define.
-+
-+2010-11-29 Richard Henderson <rth@redhat.com>
-+ Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+ * src/x86/sysv.S (FDE_ENCODING, FDE_ENCODE): Define.
-+ (.eh_frame): Use FDE_ENCODING.
-+ (.LASFDE1, .LASFDE2, LASFDE3): Simplify with FDE_ENCODE.
-+
-+2010-11-22 Jacek Caban <jacek@codeweavers.com>
-+
-+ * configure.ac: Check for symbol underscores on mingw-w64.
-+ * configure: Rebuilt.
-+ * src/x86/win64.S: Correctly access extern symbols in respect to
-+ underscores.
-+
-+2010-11-15 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+ * testsuite/lib/libffi-dg.exp: Rename ...
-+ * testsuite/lib/libffi.exp: ... to this.
-+ * libffi/testsuite/libffi.call/call.exp: Don't load libffi-dg.exp.
-+ * libffi/testsuite/libffi.special/special.exp: Likewise.
-+
-+2010-10-28 Chung-Lin Tang <cltang@codesourcery.com>
-+
-+ * src/arm/ffi.c (ffi_prep_args): Add VFP register argument handling
-+ code, new parameter, and return value. Update comments.
-+ (ffi_prep_cif_machdep): Add case for VFP struct return values. Add
-+ call to layout_vfp_args().
-+ (ffi_call_SYSV): Update declaration.
-+ (ffi_call_VFP): New declaration.
-+ (ffi_call): Add VFP struct return conditions. Call ffi_call_VFP()
-+ when ABI is FFI_VFP.
-+ (ffi_closure_VFP): New declaration.
-+ (ffi_closure_SYSV_inner): Add new vfp_args parameter, update call to
-+ ffi_prep_incoming_args_SYSV().
-+ (ffi_prep_incoming_args_SYSV): Update parameters. Add VFP argument
-+ case handling.
-+ (ffi_prep_closure_loc): Pass ffi_closure_VFP to trampoline
-+ construction under VFP hard-float.
-+ (rec_vfp_type_p): New function.
-+ (vfp_type_p): Same.
-+ (place_vfp_arg): Same.
-+ (layout_vfp_args): Same.
-+ * src/arm/ffitarget.h (ffi_abi): Add FFI_VFP. Define FFI_DEFAULT_ABI
-+ based on __ARM_PCS_VFP.
-+ (FFI_EXTRA_CIF_FIELDS): Define for adding VFP hard-float specific
-+ fields.
-+ (FFI_TYPE_STRUCT_VFP_FLOAT): Define internally used type code.
-+ (FFI_TYPE_STRUCT_VFP_DOUBLE): Same.
-+ * src/arm/sysv.S (ffi_call_SYSV): Change call of ffi_prep_args() to
-+ direct call. Move function pointer load upwards.
-+ (ffi_call_VFP): New function.
-+ (ffi_closure_VFP): Same.
-+
-+ * testsuite/lib/libffi-dg.exp (check-flags): New function.
-+ (dg-skip-if): New function.
-+ * testsuite/libffi.call/cls_double_va.c: Skip if target is arm*-*-*
-+ and compiler options include -mfloat-abi=hard.
-+ * testsuite/libffi.call/cls_longdouble_va.c: Same.
-+
-+2010-10-01 Jakub Jelinek <jakub@redhat.com>
-+
-+ PR libffi/45677
-+ * src/x86/ffi64.c (ffi_prep_cif_machdep): Ensure cif->bytes is
-+ a multiple of 8.
-+ * testsuite/libffi.call/many2.c: New test.
-+
-+2010-08-20 Mark Wielaard <mjw@redhat.com>
-+
-+ * src/closures.c (open_temp_exec_file_mnt): Check if getmntent_r
-+ returns NULL.
-+
-+2010-08-09 Andreas Tobler <andreast@fgznet.ch>
-+
-+ * configure.ac: Add target powerpc64-*-freebsd*.
-+ * configure: Regenerate.
-+ * testsuite/libffi.call/cls_align_longdouble_split.c: Pass
-+ -mlong-double-128 only to linux targets.
-+ * testsuite/libffi.call/cls_align_longdouble_split2.c: Likewise.
-+ * testsuite/libffi.call/cls_longdouble.c: Likewise.
-+ * testsuite/libffi.call/huge_struct.c: Likewise.
-+
-+2010-08-05 Dan Witte <dwitte@mozilla.com>
-+
-+ * Makefile.am: Pass FFI_DEBUG define to msvcc.sh for linking to the
-+ debug CRT when --enable-debug is given.
-+ * configure.ac: Define it.
-+ * msvcc.sh: Translate -g and -DFFI_DEBUG appropriately.
-+
-+2010-08-04 Dan Witte <dwitte@mozilla.com>
-+
-+ * src/x86/ffitarget.h: Add X86_ANY define for all x86/x86_64
-+ platforms.
-+ * src/x86/ffi.c: Remove redundant ifdef checks.
-+ * 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.
-+
-+2010-08-03 Neil Rashbrooke <neil@parkwaycc.co.uk>
-+
-+ * msvcc.sh: Don't pass -safeseh to ml64 because behavior is buggy.
-+
-+2010-07-22 Dan Witte <dwitte@mozilla.com>
-+
-+ * src/*/ffitarget.h: Make FFI_LAST_ABI one past the last valid ABI.
-+ * src/prep_cif.c: Fix ABI assertion.
-+ * src/cris/ffi.c: Ditto.
-+
-+2010-07-10 Evan Phoenix <evan@fallingsnow.net>
-+
-+ * src/closures.c (selinux_enabled_check): Fix strncmp usage bug.
-+
-+2010-07-07 Dan Horák <dan@danny.cz>
-+
-+ * include/ffi.h.in: Protect #define with #ifndef.
-+ * src/powerpc/ffitarget.h: Ditto.
-+ * src/s390/ffitarget.h: Ditto.
-+ * src/sparc/ffitarget.h: Ditto.
-+
-+2010-07-07 Neil Roberts <neil@linux.intel.com>
-+
-+ * src/x86/sysv.S (ffi_call_SYSV): Align the stack pointer to
-+ 16-bytes.
-+
-+2010-07-02 Jakub Jelinek <jakub@redhat.com>
-+
-+ * Makefile.am (AM_MAKEFLAGS): Pass also mandir to submakes.
-+ * Makefile.in: Regenerated.
-+
-+2010-05-19 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+ * configure.ac (libffi_cv_as_x86_pcrel): Check for illegal in as
-+ output, too.
-+ (libffi_cv_as_ascii_pseudo_op): Check for .ascii.
-+ (libffi_cv_as_string_pseudo_op): Check for .string.
-+ * configure: Regenerate.
-+ * fficonfig.h.in: Regenerate.
-+ * src/x86/sysv.S (.eh_frame): Use .ascii, .string or error.
-+
-+2010-05-11 Dan Witte <dwitte@mozilla.com>
-+
-+ * doc/libffi.tex: Document previous change.
-+
-+2010-05-11 Makoto Kato <m_kato@ga2.so-net.ne.jp>
-+
-+ * src/x86/ffi.c (ffi_call): Don't copy structs passed by value.
-+
-+2010-05-05 Michael Kohler <michaelkohler@live.com>
-+
-+ * src/dlmalloc.c (dlfree): Fix spelling.
-+ * src/ia64/ffi.c (ffi_prep_cif_machdep): Ditto.
-+ * configure.ac: Ditto.
-+ * configure: Rebuilt.
-+
-+2010-04-13 Dan Witte <dwitte@mozilla.com>
-+
-+ * msvcc.sh: Build with -W3 instead of -Wall.
-+ * src/powerpc/ffi_darwin.c: Remove build warnings.
-+ * src/x86/ffi.c: Ditto.
-+ * src/x86/ffitarget.h: Ditto.
-+
-+2010-04-12 Dan Witte <dwitte@mozilla.com>
-+ Walter Meinl <wuno@lsvw.de>
-+
-+ * configure.ac: Add OS/2 support.
-+ * configure: Rebuilt.
-+ * src/closures.c: Ditto.
-+ * src/dlmalloc.c: Ditto.
-+ * src/x86/win32.S: Ditto.
-+
-+2010-04-07 Jakub Jelinek <jakub@redhat.com>
-+
-+ * testsuite/libffi.call/err_bad_abi.c: Remove unused args variable.
-+
-+2010-04-02 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
-+
-+ * Makefile.in: Regenerate.
-+ * aclocal.m4: Regenerate.
-+ * include/Makefile.in: Regenerate.
-+ * man/Makefile.in: Regenerate.
-+ * testsuite/Makefile.in: Regenerate.
-+
-+2010-03-30 Dan Witte <dwitte@mozilla.com>
-+
-+ * msvcc.sh: Disable build warnings.
-+ * README (tested): Clarify windows build procedure.
-+
-+2010-03-15 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+ * configure.ac (libffi_cv_as_x86_64_unwind_section_type): New test.
-+ * configure: Regenerate.
-+ * fficonfig.h.in: Regenerate.
-+ * libffi/src/x86/unix64.S (.eh_frame)
-+ [HAVE_AS_X86_64_UNWIND_SECTION_TYPE]: Use @unwind section type.
-+
-+2010-03-14 Matthias Klose <doko@ubuntu.com>
-+
-+ * src/x86/ffi64.c: Fix typo in comment.
-+ * src/x86/ffi.c: Use /* ... */ comment style.
-+
-+2010-02-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+ * doc/libffi.texi (The Closure API): Fix typo.
-+ * doc/libffi.info: Remove.
-+
-+2010-02-15 Matthias Klose <doko@ubuntu.com>
-+
-+ * src/arm/sysv.S (__ARM_ARCH__): Define for processor
-+ __ARM_ARCH_7EM__.
-+
-+2010-01-15 Anthony Green <green@redhat.com>
-+
-+ * README: Add notes on building with Microsoft Visual C++.
-+
-+2010-01-15 Daniel Witte <dwitte@mozilla.com>
-+
-+ * msvcc.sh: New file.
-+
-+ * src/x86/win32.S: Port assembly routines to MSVC and #ifdef.
-+ * src/x86/ffi.c: Tweak function declaration and remove excess
-+ parens.
-+ * include/ffi.h.in: Add __declspec(align(8)) to typedef struct
-+ ffi_closure.
-+
-+ * src/x86/ffi.c: Merge ffi_call_SYSV and ffi_call_STDCALL into new
-+ function ffi_call_win32 on X86_WIN32.
-+ * src/x86/win32.S (ffi_call_SYSV): Rename to ffi_call_win32.
-+ (ffi_call_STDCALL): Remove.
-+
-+ * src/prep_cif.c (ffi_prep_cif): Move stack space allocation code
-+ to ffi_prep_cif_machdep for x86.
-+ * src/x86/ffi.c (ffi_prep_cif_machdep): To here.
-+
-+2010-01-15 Oliver Kiddle <okiddle@yahoo.co.uk>
-+
-+ * src/x86/ffitarget.h (ffi_abi): Check for __i386 and __amd64 for
-+ Sun Studio compiler compatibility.
-+
-+2010-01-12 Conrad Irwin <conrad.irwin@gmail.com>
-+
-+ * doc/libffi.texi: Add closure example.
-+
-+2010-01-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+ PR libffi/40701
-+ * testsuite/libffi.call/ffitest.h [__alpha__ && __osf__] (PRIdLL,
-+ PRIuLL, PRId64, PRIu64, PRIuPTR): Define.
-+ * testsuite/libffi.call/cls_align_sint64.c: Add -Wno-format on
-+ alpha*-dec-osf*.
-+ * testsuite/libffi.call/cls_align_uint64.c: Likewise.
-+ * testsuite/libffi.call/cls_ulonglong.c: Likewise.
-+ * testsuite/libffi.call/return_ll1.c: Likewise.
-+ * testsuite/libffi.call/stret_medium2.c: Likewise.
-+ * testsuite/libffi.special/ffitestcxx.h (allocate_mmap): Cast
-+ MAP_FAILED to char *.
-+
-+2010-01-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+ * src/mips/n32.S: Use .abicalls and .eh_frame with __GNUC__.
-+
-+2009-12-31 Anthony Green <green@redhat.com>
-+
-+ * README: Update for libffi 3.0.9.
-+
-+2009-12-27 Matthias Klose <doko@ubuntu.com>
-+
-+ * configure.ac (HAVE_LONG_DOUBLE): Define for mips when
-+ appropriate.
-+ * configure: Rebuilt.
-+
-+2009-12-26 Anthony Green <green@redhat.com>
-+
-+ * testsuite/libffi.call/cls_longdouble_va.c: Mark as xfail for
-+ avr32*-*-*.
-+ * testsuite/libffi.call/cls_double_va.c: Ditto.
-+
-+2009-12-26 Andreas Tobler <a.tobler@schweiz.org>
-+
-+ * testsuite/libffi.call/ffitest.h: Conditionally include stdint.h
-+ and inttypes.h.
-+ * testsuite/libffi.special/unwindtest.cc: Ditto.
-+
-+2009-12-26 Andreas Tobler <a.tobler@schweiz.org>
-+
-+ * configure.ac: Add amd64-*-openbsd*.
-+ * configure: Rebuilt.
-+ * testsuite/lib/libffi-dg.exp (libffi_target_compile): Link
-+ openbsd programs with -lpthread.
-+
-+2009-12-26 Anthony Green <green@redhat.com>
-+
-+ * testsuite/libffi.call/cls_double_va.c,
-+ testsuite/libffi.call/cls_longdouble.c,
-+ testsuite/libffi.call/cls_longdouble_va.c,
-+ testsuite/libffi.call/cls_pointer.c,
-+ testsuite/libffi.call/cls_pointer_stack.c: Remove xfail for
-+ mips*-*-* and arm*-*-*.
-+ * testsuite/libffi.call/cls_align_longdouble_split.c,
-+ testsuite/libffi.call/cls_align_longdouble_split2.c,
-+ testsuite/libffi.call/stret_medium2.c,
-+ testsuite/libffi.call/stret_medium.c,
-+ testsuite/libffi.call/stret_large.c,
-+ testsuite/libffi.call/stret_large2.c: Remove xfail for arm*-*-*.
-+
-+2009-12-31 Kay Tietz <ktietz70@googlemail.com>
-+
-+ * testsuite/libffi.call/ffitest.h,
-+ testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRuLL): Fix
-+ definitions.
-+
-+2009-12-31 Carlo Bramini <carlo.bramix@libero.it>
-+
-+ * configure.ac (AM_LTLDFLAGS): Define for windows hosts.
-+ * Makefile.am (libffi_la_LDFLAGS): Add AM_LTLDFLAGS.
-+ * configure: Rebuilt.
-+ * Makefile.in: Rebuilt.
-+
-+2009-12-31 Anthony Green <green@redhat.com>
-+ Blake Chaffin.
-+
-+ * testsuite/libffi.call/huge_struct.c: New test case from Blake
-+ Chaffin @ Apple.
-+
-+2009-12-28 David Edelsohn <edelsohn@gnu.org>
-+
-+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Copy abi and nargs to
-+ local variables.
-+ (aix_adjust_aggregate_sizes): New function.
-+ (ffi_prep_cif_machdep): Call it.
-+
-+2009-12-26 Andreas Tobler <a.tobler@schweiz.org>
-+
-+ * configure.ac: Define FFI_MMAP_EXEC_WRIT for the given targets.
-+ * configure: Regenerate.
-+ * fficonfig.h.in: Likewise.
-+ * src/closures.c: Remove the FFI_MMAP_EXEC_WRIT definition for
-+ Solaris/x86.
-+
-+2009-12-26 Andreas Schwab <schwab@linux-m68k.org>
-+
-+ * src/powerpc/ffi.c (ffi_prep_args_SYSV): Advance intarg_count
-+ when a float arguments is passed in memory.
-+ (ffi_closure_helper_SYSV): Mark general registers as used up when
-+ a 64bit or soft-float long double argument is passed in memory.
-+
-+2009-12-25 Matthias Klose <doko@ubuntu.com>
-+
-+ * man/ffi_call.3: Fix #include in examples.
-+ * doc/libffi.texi: Add dircategory.
-+
-+2009-12-25 Frank Everdij <f.p.x.everdij@tudelft.nl>
-+
-+ * include/ffi.h.in: Placed '__GNUC__' ifdef around
-+ '__attribute__((aligned(8)))' in ffi_closure, fixes compile for
-+ IRIX MIPSPro c99.
-+ * include/ffi_common.h: Added '__sgi' define to non
-+ '__attribute__((__mode__()))' integer typedefs.
-+ * src/mips/ffi.c (ffi_call, ffi_closure_mips_inner_O32,
-+ ffi_closure_mips_inner_N32): Added 'defined(_MIPSEB)' to BE check.
-+ (ffi_closure_mips_inner_O32, ffi_closure_mips_inner_N32): Added
-+ FFI_LONGDOUBLE support and alignment(N32 only).
-+ * src/mips/ffitarget.h: Corrected '#include <sgidefs.h>' for IRIX and
-+ fixed non '__attribute__((__mode__()))' integer typedefs.
-+ * src/mips/n32.S: Put '#ifdef linux' around '.abicalls' and '.eh_frame'
-+ since they are Linux/GNU Assembler specific.
-+
-+2009-12-25 Bradley Smith <brad@brad-smith.co.uk>
-+
-+ * configure.ac, Makefile.am, src/avr32/ffi.c,
-+ src/avr32/ffitarget.h,
-+ src/avr32/sysv.S: Add AVR32 port.
-+ * configure, Makefile.in: Rebuilt.
-+
-+2009-12-21 Andreas Tobler <a.tobler@schweiz.org>
-+
-+ * configure.ac: Make i?86 build on FreeBSD and OpenBSD.
-+ * configure: Regenerate.
-+
-+2009-12-15 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
-+
-+ * testsuite/libffi.call/ffitest.h: Define PRIuPTR on PA HP-UX.
-+
-+2009-12-13 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
-+
-+ * src/pa/ffi.c (ffi_closure_inner_pa32): Handle FFI_TYPE_LONGDOUBLE
-+ type on HP-UX.
-+
-+2009-12-11 Eric Botcazou <ebotcazou@adacore.com>
-+
-+ * src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long
-+ double' arguments.
-+
-+2009-12-11 Eric Botcazou <ebotcazou@adacore.com>
-+
-+ * testsuite/libffi.call/ffitest.h: Define PRIuPTR on Solaris < 10.
-+
-+2009-12-10 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-+
-+ PR libffi/40700
-+ * src/closures.c [X86_64 && __sun__ && __svr4__]
-+ (FFI_MMAP_EXEC_WRIT): Define.
-+
-+2009-12-08 David Daney <ddaney@caviumnetworks.com>
-+
-+ * testsuite/libffi.call/stret_medium.c: Remove xfail for mips*-*-*
-+ * testsuite/libffi.call/cls_align_longdouble_split2.c: Same.
-+ * testsuite/libffi.call/stret_large.c: Same.
-+ * testsuite/libffi.call/cls_align_longdouble_split.c: Same.
-+ * testsuite/libffi.call/stret_large2.c: Same.
-+ * testsuite/libffi.call/stret_medium2.c: Same.
-+
-+2009-12-07 David Edelsohn <edelsohn@gnu.org>
-+
-+ * src/powerpc/aix_closure.S (libffi_closure_ASM): Fix tablejump
-+ typo.
-+
-+2009-12-05 David Edelsohn <edelsohn@gnu.org>
-+
-+ * src/powerpc/aix.S: Update AIX32 code to be consistent with AIX64
-+ code.
-+ * src/powerpc/aix_closure.S: Same.
-+
-+2009-12-05 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
-+
-+ * Makefile.in: Regenerate.
-+ * configure: Regenerate.
-+ * include/Makefile.in: Regenerate.
-+ * man/Makefile.in: Regenerate.
-+ * testsuite/Makefile.in: Regenerate.
-+
-+2009-12-04 David Edelsohn <edelsohn@gnu.org>
-+
-+ * src/powerpc/aix_closure.S: Reorganize 64-bit code to match
-+ linux64_closure.S.
-+
-+2009-12-04 Uros Bizjak <ubizjak@gmail.com>
-+
-+ PR libffi/41908
-+ * src/x86/ffi64.c (classify_argument): Update from
-+ gcc/config/i386/i386.c.
-+ (ffi_closure_unix64_inner): Do not use the address of two consecutive
-+ SSE registers directly.
-+ * testsuite/libffi.call/cls_dbls_struct.c (main): Remove xfail
-+ for x86_64 linux targets.
-+
-+2009-12-04 David Edelsohn <edelsohn@gnu.org>
-+
-+ * src/powerpc/ffi_darwin.c (ffi_closure_helper_DARWIN): Increment
-+ pfr for long double split between fpr13 and stack.
-+
-+2009-12-03 David Edelsohn <edelsohn@gnu.org>
-+
-+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Increment next_arg and
-+ fparg_count twice for long double.
-+
-+2009-12-03 David Edelsohn <edelsohn@gnu.org>
-+
-+ PR libffi/42243
-+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Remove extra parentheses.
-+
-+2009-12-03 Uros Bizjak <ubizjak@gmail.com>
-+
-+ * testsuite/libffi.call/cls_longdouble_va.c (main): Fix format string.
-+ Remove xfails for x86 linux targets.
-+
-+2009-12-02 David Edelsohn <edelsohn@gnu.org>
-+
-+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Fix typo in INT64
-+ case.
-+
-+2009-12-01 David Edelsohn <edelsohn@gnu.org>
-+
-+ * src/powerpc/aix.S (ffi_call_AIX): Convert to more standard
-+ register usage. Call ffi_prep_args directly. Add long double
-+ return value support.
-+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Double arg increment
-+ applies to FFI_TYPE_DOUBLE. Correct fpr_base increment typo.
-+ Separate FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases.
-+ (ffi_prep_cif_machdep): Only 16 byte stack alignment in 64 bit
-+ mode.
-+ (ffi_closure_helper_DARWIN): Remove nf and ng counters. Move temp
-+ into case.
-+ * src/powerpc/aix_closure.S: Maintain 16 byte stack alignment.
-+ Allocate result area between params and FPRs.
-+
-+2009-11-30 David Edelsohn <edelsohn@gnu.org>
-+
-+ PR target/35484
-+ * src/powerpc/ffitarget.h (POWERPC64): Define for PPC64 Linux and
-+ AIX64.
-+ * src/powerpc/aix.S: Implement AIX64 version.
-+ * src/powerpc/aix_closure.S: Implement AIX64 version.
-+ (ffi_closure_ASM): Use extsb, lha and displament addresses.
-+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Implement AIX64
-+ support.
-+ (ffi_prep_cif_machdep): Same.
-+ (ffi_call): Same.
-+ (ffi_closure_helper_DARWIN): Same.
-+
-+2009-11-02 Andreas Tobler <a.tobler@schweiz.org>
-+
-+ PR libffi/41908
-+ * testsuite/libffi.call/testclosure.c: New test.
-+
-+2009-09-28 Kai Tietz <kai.tietz@onevision.com>
-+
-+ * src/x86/win64.S (_ffi_call_win64 stack): Remove for gnu
-+ assembly version use of ___chkstk.
-+
-+2009-09-23 Matthias Klose <doko@ubuntu.com>
-+
-+ PR libffi/40242, PR libffi/41443
-+ * src/arm/sysv.S (__ARM_ARCH__): Define for processors
-+ __ARM_ARCH_6T2__, __ARM_ARCH_6M__, __ARM_ARCH_7__,
-+ __ARM_ARCH_7A__, __ARM_ARCH_7R__, __ARM_ARCH_7M__.
-+ Change the conditionals to __SOFTFP__ || __ARM_EABI__
-+ for -mfloat-abi=softfp to work.
-+
-+2009-09-17 Loren J. Rittle <ljrittle@acm.org>
-+
-+ PR testsuite/32843 (strikes again)
-+ * src/x86/ffi.c (ffi_prep_cif_machdep): Add X86_FREEBSD to
-+ enable proper extension on char and short.
-+
-+2009-09-15 David Daney <ddaney@caviumnetworks.com>
-+
-+ * src/java_raw_api.c (ffi_java_raw_to_rvalue): Remove special
-+ handling for FFI_TYPE_POINTER.
-+ * src/mips/ffitarget.h (FFI_TYPE_STRUCT_D_SOFT,
-+ FFI_TYPE_STRUCT_F_SOFT, FFI_TYPE_STRUCT_DD_SOFT,
-+ FFI_TYPE_STRUCT_FF_SOFT, FFI_TYPE_STRUCT_FD_SOFT,
-+ FFI_TYPE_STRUCT_DF_SOFT, FFI_TYPE_STRUCT_SOFT): New defines.
-+ (FFI_N32_SOFT_FLOAT, FFI_N64_SOFT_FLOAT): New ffi_abi enumerations.
-+ (enum ffi_abi): Set FFI_DEFAULT_ABI for soft-float.
-+ * src/mips/n32.S (ffi_call_N32): Add handling for soft-float
-+ structure and pointer returns.
-+ (ffi_closure_N32): Add handling for pointer returns.
-+ * src/mips/ffi.c (ffi_prep_args, calc_n32_struct_flags,
-+ calc_n32_return_struct_flags): Handle soft-float.
-+ (ffi_prep_cif_machdep): Handle soft-float, fix pointer handling.
-+ (ffi_call_N32): Declare proper argument types.
-+ (ffi_call, copy_struct_N32, ffi_closure_mips_inner_N32): Handle
-+ soft-float.
-+
-+2009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
-+
-+ * configure.ac (AC_PREREQ): Bump to 2.64.
-+
-+2009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
-+
-+ * Makefile.am (install-html, install-pdf): Remove.
-+ * Makefile.in: Regenerate.
-+
-+ * Makefile.in: Regenerate.
-+ * aclocal.m4: Regenerate.
-+ * configure: Regenerate.
-+ * fficonfig.h.in: Regenerate.
-+ * include/Makefile.in: Regenerate.
-+ * man/Makefile.in: Regenerate.
-+ * testsuite/Makefile.in: Regenerate.
-+
-+2009-07-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
-+
-+ * configure.ac (_AC_ARG_VAR_PRECIOUS): Use m4_rename_force.
-+
-+2009-07-24 Dave Korn <dave.korn.cygwin@gmail.com>
-+
-+ PR libffi/40807
-+ * src/x86/ffi.c (ffi_prep_cif_machdep): Also use sign/zero-extending
-+ return types for X86_WIN32.
-+ * src/x86/win32.S (_ffi_call_SYSV): Handle omitted return types.
-+ (_ffi_call_STDCALL, _ffi_closure_SYSV, _ffi_closure_raw_SYSV,
-+ _ffi_closure_STDCALL): Likewise.
-+
-+ * src/closures.c (is_selinux_enabled): Define to const 0 for Cygwin.
-+ (dlmmap, dlmunmap): Also use these functions on Cygwin.
-+
-+2009-07-11 Richard Sandiford <rdsandiford@googlemail.com>
-+
-+ PR testsuite/40699
-+ PR testsuite/40707
-+ PR testsuite/40709
-+ * testsuite/lib/libffi-dg.exp: Revert 2009-07-02, 2009-07-01 and
-+ 2009-06-30 commits.
-+
-+2009-07-01 Richard Sandiford <r.sandiford@uk.ibm.com>
-+
-+ * testsuite/lib/libffi-dg.exp (libffi-init): Set ld_library_path
-+ to "" before adding paths. (This reinstates an assignment that
-+ was removed by my 2009-06-30 commit, but changes the initial
-+ value from "." to "".)
-+
-+2009-07-01 H.J. Lu <hongjiu.lu@intel.com>
-+
-+ PR testsuite/40601
-+ * testsuite/lib/libffi-dg.exp (libffi-init): Properly set
-+ gccdir. Adjust ld_library_path for gcc only if gccdir isn't
-+ empty.
-+
-+2009-06-30 Richard Sandiford <r.sandiford@uk.ibm.com>
-+
-+ * testsuite/lib/libffi-dg.exp (libffi-init): Don't add "."
-+ to ld_library_path. Use add_path. Add just find_libgcc_s
-+ to ld_library_path, not every libgcc multilib directory.
-+
-+2009-06-16 Wim Lewis <wiml@hhhh.org>
-+
-+ * src/powerpc/ffi.c: Avoid clobbering cr3 and cr4, which are
-+ supposed to be callee-saved.
-+ * src/powerpc/sysv.S (small_struct_return_value): Fix overrun of
-+ return buffer for odd-size structs.
-+
-+2009-06-16 Andreas Tobler <a.tobler@schweiz.org>
-+
-+ PR libffi/40444
-+ * testsuite/lib/libffi-dg.exp (libffi_target_compile): Add
-+ allow_stack_execute for Darwin.
-+
-+2009-06-16 Andrew Haley <aph@redhat.com>
-+
-+ * configure.ac (TARGETDIR): Add missing blank lines.
-+ * configure: Regenerate.
-+
-+2009-06-16 Andrew Haley <aph@redhat.com>
-+
-+ * testsuite/libffi.call/cls_align_sint64.c,
-+ testsuite/libffi.call/cls_align_uint64.c,
-+ testsuite/libffi.call/cls_longdouble_va.c,
-+ testsuite/libffi.call/cls_ulonglong.c,
-+ testsuite/libffi.call/return_ll1.c,
-+ testsuite/libffi.call/stret_medium2.c: Fix printf format
-+ specifiers.
-+ * testsuite/libffi.call/ffitest.h,
-+ testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRIuLL): Define.
-+
-+2009-06-15 Andrew Haley <aph@redhat.com>
-+
-+ * testsuite/libffi.call/err_bad_typedef.c: xfail everywhere.
-+ * testsuite/libffi.call/err_bad_abi.c: Likewise.
-+
-+2009-06-12 Andrew Haley <aph@redhat.com>
-+
-+ * Makefile.am: Remove info_TEXINFOS.
-+
-+2009-06-12 Andrew Haley <aph@redhat.com>
-+
-+ * ChangeLog.libffi: testsuite/libffi.call/cls_align_sint64.c,
-+ testsuite/libffi.call/cls_align_uint64.c,
-+ testsuite/libffi.call/cls_ulonglong.c,
-+ testsuite/libffi.call/return_ll1.c,
-+ testsuite/libffi.call/stret_medium2.c: Fix printf format
-+ specifiers.
-+ testsuite/libffi.special/unwindtest.cc: include stdint.h.
-+
-+2009-06-11 Timothy Wall <twall@users.sf.net>
-+
-+ * Makefile.am,
-+ configure.ac,
-+ include/ffi.h.in,
-+ include/ffi_common.h,
-+ src/closures.c,
-+ src/dlmalloc.c,
-+ src/x86/ffi.c,
-+ src/x86/ffitarget.h,
-+ src/x86/win64.S (new),
-+ README: Added win64 support (mingw or MSVC)
-+ * Makefile.in,
-+ include/Makefile.in,
-+ man/Makefile.in,
-+ testsuite/Makefile.in,
-+ configure,
-+ aclocal.m4: Regenerated
-+ * ltcf-c.sh: properly escape cygwin/w32 path
-+ * man/ffi_call.3: Clarify size requirements for return value.
-+ * src/x86/ffi64.c: Fix filename in comment.
-+ * src/x86/win32.S: Remove unused extern.
-+
-+ * testsuite/libffi.call/closure_fn0.c,
-+ testsuite/libffi.call/closure_fn1.c,
-+ testsuite/libffi.call/closure_fn2.c,
-+ testsuite/libffi.call/closure_fn3.c,
-+ testsuite/libffi.call/closure_fn4.c,
-+ testsuite/libffi.call/closure_fn5.c,
-+ testsuite/libffi.call/closure_fn6.c,
-+ testsuite/libffi.call/closure_stdcall.c,
-+ testsuite/libffi.call/cls_12byte.c,
-+ testsuite/libffi.call/cls_16byte.c,
-+ testsuite/libffi.call/cls_18byte.c,
-+ testsuite/libffi.call/cls_19byte.c,
-+ testsuite/libffi.call/cls_1_1byte.c,
-+ testsuite/libffi.call/cls_20byte.c,
-+ testsuite/libffi.call/cls_20byte1.c,
-+ testsuite/libffi.call/cls_24byte.c,
-+ testsuite/libffi.call/cls_2byte.c,
-+ testsuite/libffi.call/cls_3_1byte.c,
-+ testsuite/libffi.call/cls_3byte1.c,
-+ testsuite/libffi.call/cls_3byte2.c,
-+ testsuite/libffi.call/cls_4_1byte.c,
-+ testsuite/libffi.call/cls_4byte.c,
-+ testsuite/libffi.call/cls_5_1_byte.c,
-+ testsuite/libffi.call/cls_5byte.c,
-+ testsuite/libffi.call/cls_64byte.c,
-+ testsuite/libffi.call/cls_6_1_byte.c,
-+ testsuite/libffi.call/cls_6byte.c,
-+ testsuite/libffi.call/cls_7_1_byte.c,
-+ testsuite/libffi.call/cls_7byte.c,
-+ testsuite/libffi.call/cls_8byte.c,
-+ testsuite/libffi.call/cls_9byte1.c,
-+ testsuite/libffi.call/cls_9byte2.c,
-+ testsuite/libffi.call/cls_align_double.c,
-+ testsuite/libffi.call/cls_align_float.c,
-+ testsuite/libffi.call/cls_align_longdouble.c,
-+ testsuite/libffi.call/cls_align_longdouble_split.c,
-+ testsuite/libffi.call/cls_align_longdouble_split2.c,
-+ testsuite/libffi.call/cls_align_pointer.c,
-+ testsuite/libffi.call/cls_align_sint16.c,
-+ testsuite/libffi.call/cls_align_sint32.c,
-+ testsuite/libffi.call/cls_align_sint64.c,
-+ testsuite/libffi.call/cls_align_uint16.c,
-+ testsuite/libffi.call/cls_align_uint32.c,
-+ testsuite/libffi.call/cls_align_uint64.c,
-+ testsuite/libffi.call/cls_dbls_struct.c,
-+ testsuite/libffi.call/cls_double.c,
-+ testsuite/libffi.call/cls_double_va.c,
-+ testsuite/libffi.call/cls_float.c,
-+ testsuite/libffi.call/cls_longdouble.c,
-+ testsuite/libffi.call/cls_longdouble_va.c,
-+ testsuite/libffi.call/cls_multi_schar.c,
-+ testsuite/libffi.call/cls_multi_sshort.c,
-+ testsuite/libffi.call/cls_multi_sshortchar.c,
-+ testsuite/libffi.call/cls_multi_uchar.c,
-+ testsuite/libffi.call/cls_multi_ushort.c,
-+ testsuite/libffi.call/cls_multi_ushortchar.c,
-+ testsuite/libffi.call/cls_pointer.c,
-+ testsuite/libffi.call/cls_pointer_stack.c,
-+ testsuite/libffi.call/cls_schar.c,
-+ testsuite/libffi.call/cls_sint.c,
-+ testsuite/libffi.call/cls_sshort.c,
-+ testsuite/libffi.call/cls_uchar.c,
-+ testsuite/libffi.call/cls_uint.c,
-+ testsuite/libffi.call/cls_ulonglong.c,
-+ testsuite/libffi.call/cls_ushort.c,
-+ testsuite/libffi.call/err_bad_abi.c,
-+ testsuite/libffi.call/err_bad_typedef.c,
-+ testsuite/libffi.call/float2.c,
-+ testsuite/libffi.call/huge_struct.c,
-+ testsuite/libffi.call/nested_struct.c,
-+ testsuite/libffi.call/nested_struct1.c,
-+ testsuite/libffi.call/nested_struct10.c,
-+ testsuite/libffi.call/nested_struct2.c,
-+ testsuite/libffi.call/nested_struct3.c,
-+ testsuite/libffi.call/nested_struct4.c,
-+ testsuite/libffi.call/nested_struct5.c,
-+ testsuite/libffi.call/nested_struct6.c,
-+ testsuite/libffi.call/nested_struct7.c,
-+ testsuite/libffi.call/nested_struct8.c,
-+ testsuite/libffi.call/nested_struct9.c,
-+ testsuite/libffi.call/problem1.c,
-+ testsuite/libffi.call/return_ldl.c,
-+ testsuite/libffi.call/return_ll1.c,
-+ testsuite/libffi.call/stret_large.c,
-+ testsuite/libffi.call/stret_large2.c,
-+ testsuite/libffi.call/stret_medium.c,
-+ testsuite/libffi.call/stret_medium2.c,
-+ testsuite/libffi.special/unwindtest.cc: use ffi_closure_alloc instead
-+ of checking for MMAP. Use intptr_t instead of long casts.
-+
-+2009-06-11 Kaz Kojima <kkojima@gcc.gnu.org>
-+
-+ * testsuite/libffi.call/cls_longdouble_va.c: Add xfail sh*-*-linux-*.
-+ * testsuite/libffi.call/err_bad_abi.c: Add xfail sh*-*-*.
-+ * testsuite/libffi.call/err_bad_typedef.c: Likewise.
-+
-+2009-06-09 Andrew Haley <aph@redhat.com>
-+
-+ * src/x86/freebsd.S: Add missing file.
-+
-+2009-06-08 Andrew Haley <aph@redhat.com>
-+
-+ Import from libffi 3.0.8:
-+
-+ * doc/libffi.texi: New file.
-+ * doc/libffi.info: Likewise.
-+ * doc/stamp-vti: Likewise.
-+ * man/Makefile.am: New file.
-+ * man/ffi_call.3: New file.
-+
-+ * Makefile.am (EXTRA_DIST): Add src/x86/darwin64.S,
-+ src/dlmalloc.c.
-+ (nodist_libffi_la_SOURCES): Add X86_FREEBSD.
-+
-+ * configure.ac: Bump version to 3.0.8.
-+ parisc*-*-linux*: Add.
-+ i386-*-freebsd* | i386-*-openbsd*: Add.
-+ powerpc-*-beos*: Add.
-+ AM_CONDITIONAL X86_FREEBSD: Add.
-+ AC_CONFIG_FILES: Add man/Makefile.
-+
-+ * include/ffi.h.in (FFI_FN): Change void (*)() to void (*)(void).
-+
-+2009-06-08 Andrew Haley <aph@redhat.com>
-+
-+ * README: Import from libffi 3.0.8.
-+
-+2009-06-08 Andrew Haley <aph@redhat.com>
-+
-+ * testsuite/libffi.call/err_bad_abi.c: Add xfails.
-+ * testsuite/libffi.call/cls_longdouble_va.c: Add xfails.
-+ * testsuite/libffi.call/cls_dbls_struct.c: Add xfail x86_64-*-linux-*.
-+ * testsuite/libffi.call/err_bad_typedef.c: Add xfails.
-+
-+ * testsuite/libffi.call/stret_medium2.c: Add __UNUSED__ to args.
-+ * testsuite/libffi.call/stret_medium.c: Likewise.
-+ * testsuite/libffi.call/stret_large2.c: Likewise.
-+ * testsuite/libffi.call/stret_large.c: Likewise.
-+
-+2008-12-26 Timothy Wall <twall@users.sf.net>
-+
-+ * testsuite/libffi.call/cls_longdouble.c,
-+ testsuite/libffi.call/cls_longdouble_va.c,
-+ testsuite/libffi.call/cls_align_longdouble.c,
-+ testsuite/libffi.call/cls_align_longdouble_split.c,
-+ testsuite/libffi.call/cls_align_longdouble_split2.c: mark expected
-+ failures on x86_64 cygwin/mingw.
-+
-+2008-12-22 Timothy Wall <twall@users.sf.net>
-+
-+ * testsuite/libffi.call/closure_fn0.c,
-+ testsuite/libffi.call/closure_fn1.c,
-+ testsuite/libffi.call/closure_fn2.c,
-+ testsuite/libffi.call/closure_fn3.c,
-+ testsuite/libffi.call/closure_fn4.c,
-+ testsuite/libffi.call/closure_fn5.c,
-+ testsuite/libffi.call/closure_fn6.c,
-+ testsuite/libffi.call/closure_loc_fn0.c,
-+ testsuite/libffi.call/closure_stdcall.c,
-+ testsuite/libffi.call/cls_align_pointer.c,
-+ testsuite/libffi.call/cls_pointer.c,
-+ testsuite/libffi.call/cls_pointer_stack.c: use portable cast from
-+ pointer to integer (intptr_t).
-+ * testsuite/libffi.call/cls_longdouble.c: disable for win64.
-+
-+2008-07-24 Anthony Green <green@redhat.com>
-+
-+ * testsuite/libffi.call/cls_dbls_struct.c,
-+ testsuite/libffi.call/cls_double_va.c,
-+ testsuite/libffi.call/cls_longdouble.c,
-+ testsuite/libffi.call/cls_longdouble_va.c,
-+ testsuite/libffi.call/cls_pointer.c,
-+ testsuite/libffi.call/cls_pointer_stack.c,
-+ testsuite/libffi.call/err_bad_abi.c: Clean up failures from
-+ compiler warnings.
-+
-+2008-03-04 Anthony Green <green@redhat.com>
-+ Blake Chaffin
-+ hos@tamanegi.org
-+
-+ * testsuite/libffi.call/cls_align_longdouble_split2.c
-+ testsuite/libffi.call/cls_align_longdouble_split.c
-+ testsuite/libffi.call/cls_dbls_struct.c
-+ testsuite/libffi.call/cls_double_va.c
-+ testsuite/libffi.call/cls_longdouble.c
-+ testsuite/libffi.call/cls_longdouble_va.c
-+ testsuite/libffi.call/cls_pointer.c
-+ testsuite/libffi.call/cls_pointer_stack.c
-+ testsuite/libffi.call/err_bad_abi.c
-+ testsuite/libffi.call/err_bad_typedef.c
-+ testsuite/libffi.call/stret_large2.c
-+ testsuite/libffi.call/stret_large.c
-+ testsuite/libffi.call/stret_medium2.c
-+ testsuite/libffi.call/stret_medium.c: New tests from Apple.
-+
-+2009-06-05 Andrew Haley <aph@redhat.com>
-+
-+ * src/x86/ffitarget.h, src/x86/ffi.c: Merge stdcall changes from
-+ libffi.
-+
-+2009-06-04 Andrew Haley <aph@redhat.com>
-+
-+ * src/x86/ffitarget.h, src/x86/win32.S, src/x86/ffi.c: Back out
-+ stdcall changes.
-+
-+2008-02-26 Anthony Green <green@redhat.com>
-+ Thomas Heller <theller@ctypes.org>
-+
-+ * src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C
-+ comment.
-+
-+2008-02-03 Timothy Wall <twall@users.sf.net>
-+
-+ * src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL): Calculate jump return
-+ offset based on code pointer, not data pointer.
-+
-+2008-01-31 Timothy Wall <twall@users.sf.net>
-+
-+ * testsuite/libffi.call/closure_stdcall.c: Add test for stdcall
-+ closures.
-+ * src/x86/ffitarget.h: Increase size of trampoline for stdcall
-+ closures.
-+ * src/x86/win32.S: Add assembly for stdcall closure.
-+ * src/x86/ffi.c: Initialize stdcall closure trampoline.
-+
-+2009-06-04 Andrew Haley <aph@redhat.com>
-+
-+ * include/ffi.h.in: Change void (*)() to void (*)(void).
-+ * src/x86/ffi.c: Likewise.
-+
-+2009-06-04 Andrew Haley <aph@redhat.com>
-+
-+ * src/powerpc/ppc_closure.S: Insert licence header.
-+ * src/powerpc/linux64_closure.S: Likewise.
-+ * src/m68k/sysv.S: Likewise.
-+
-+ * src/sh64/ffi.c: Change void (*)() to void (*)(void).
-+ * src/powerpc/ffi.c: Likewise.
-+ * src/powerpc/ffi_darwin.c: Likewise.
-+ * src/m32r/ffi.c: Likewise.
-+ * src/sh64/ffi.c: Likewise.
-+ * src/x86/ffi64.c: Likewise.
-+ * src/alpha/ffi.c: Likewise.
-+ * src/alpha/osf.S: Likewise.
-+ * src/frv/ffi.c: Likewise.
-+ * src/s390/ffi.c: Likewise.
-+ * src/pa/ffi.c: Likewise.
-+ * src/pa/hpux32.S: Likewise.
-+ * src/ia64/unix.S: Likewise.
-+ * src/ia64/ffi.c: Likewise.
-+ * src/sparc/ffi.c: Likewise.
-+ * src/mips/ffi.c: Likewise.
-+ * src/sh/ffi.c: Likewise.
-+
-+2008-02-15 David Daney <ddaney@avtrex.com>
-+
-+ * src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE):
-+ Define (conditionally), and use it to include cachectl.h.
-+ (ffi_prep_closure_loc): Fix cache flushing.
-+ * src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define.
-+
-+2009-06-04 Andrew Haley <aph@redhat.com>
-+
-+ include/ffi.h.in,
-+ src/arm/ffitarget.h,
-+ src/arm/ffi.c,
-+ src/arm/sysv.S,
-+ src/powerpc/ffitarget.h,
-+ src/closures.c,
-+ src/sh64/ffitarget.h,
-+ src/sh64/ffi.c,
-+ src/sh64/sysv.S,
-+ src/types.c,
-+ src/x86/ffi64.c,
-+ src/x86/ffitarget.h,
-+ src/x86/win32.S,
-+ src/x86/darwin.S,
-+ src/x86/ffi.c,
-+ src/x86/sysv.S,
-+ src/x86/unix64.S,
-+ src/alpha/ffitarget.h,
-+ src/alpha/ffi.c,
-+ src/alpha/osf.S,
-+ src/m68k/ffitarget.h,
-+ src/frv/ffitarget.h,
-+ src/frv/ffi.c,
-+ src/s390/ffitarget.h,
-+ src/s390/sysv.S,
-+ src/cris/ffitarget.h,
-+ src/pa/linux.S,
-+ src/pa/ffitarget.h,
-+ src/pa/ffi.c,
-+ src/raw_api.c,
-+ src/ia64/ffitarget.h,
-+ src/ia64/unix.S,
-+ src/ia64/ffi.c,
-+ src/ia64/ia64_flags.h,
-+ src/java_raw_api.c,
-+ src/debug.c,
-+ src/sparc/v9.S,
-+ src/sparc/ffitarget.h,
-+ src/sparc/ffi.c,
-+ src/sparc/v8.S,
-+ src/mips/ffitarget.h,
-+ src/mips/n32.S,
-+ src/mips/o32.S,
-+ src/mips/ffi.c,
-+ src/prep_cif.c,
-+ src/sh/ffitarget.h,
-+ src/sh/ffi.c,
-+ src/sh/sysv.S: Update license text.
-+
-+2009-05-22 Dave Korn <dave.korn.cygwin@gmail.com>
-+
-+ * src/x86/win32.S (_ffi_closure_STDCALL): New function.
-+ (.eh_frame): Add FDE for it.
-+
-+2009-05-22 Dave Korn <dave.korn.cygwin@gmail.com>
-+
-+ * configure.ac: Also check if assembler supports pc-relative
-+ relocs on X86_WIN32 targets.
-+ * configure: Regenerate.
-+ * src/x86/win32.S (ffi_prep_args): Declare extern, not global.
-+ (_ffi_call_SYSV): Add missing function type symbol .def and
-+ add EH markup labels.
-+ (_ffi_call_STDCALL): Likewise.
-+ (_ffi_closure_SYSV): Likewise.
-+ (_ffi_closure_raw_SYSV): Likewise.
-+ (.eh_frame): Add hand-crafted EH data.
-+
-+2009-04-09 Jakub Jelinek <jakub@redhat.com>
-+
-+ * testsuite/lib/libffi-dg.exp: Change copyright header to refer to
-+ version 3 of the GNU General Public License and to point readers
-+ at the COPYING3 file and the FSF's license web page.
-+ * testsuite/libffi.call/call.exp: Likewise.
-+ * testsuite/libffi.special/special.exp: Likewise.
-+
-+2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
-+
-+ * configure: Regenerate.
-+
-+2008-12-18 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-+
-+ PR libffi/26048
-+ * configure.ac (HAVE_AS_X86_PCREL): New test.
-+ * configure: Regenerate.
-+ * fficonfig.h.in: Regenerate.
-+ * src/x86/sysv.S [!FFI_NO_RAW_API]: Precalculate
-+ RAW_CLOSURE_CIF_OFFSET, RAW_CLOSURE_FUN_OFFSET,
-+ RAW_CLOSURE_USER_DATA_OFFSET for the Solaris 10/x86 assembler.
-+ (.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL.
-+ * src/x86/unix64.S (.Lstore_table): Move to .text section.
-+ (.Lload_table): Likewise.
-+ (.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL.
-+
-+2008-12-18 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
-+
-+ * configure: Regenerate.
-+
-+2008-11-21 Eric Botcazou <ebotcazou@adacore.com>
-+
-+ * src/sparc/ffi.c (ffi_prep_cif_machdep): Add support for
-+ signed/unsigned int8/16 return values.
-+ * src/sparc/v8.S (ffi_call_v8): Likewise.
-+ (ffi_closure_v8): Likewise.
-+
-+2008-09-26 Peter O'Gorman <pogma@thewrittenword.com>
-+ Steve Ellcey <sje@cup.hp.com>
-+
-+ * configure: Regenerate for new libtool.
-+ * Makefile.in: Ditto.
-+ * include/Makefile.in: Ditto.
-+ * aclocal.m4: Ditto.
-+
-+2008-08-25 Andreas Tobler <a.tobler@schweiz.org>
-+
-+ * src/powerpc/ffitarget.h (ffi_abi): Add FFI_LINUX and
-+ FFI_LINUX_SOFT_FLOAT to the POWERPC_FREEBSD enum.
-+ Add note about flag bits used for FFI_SYSV_TYPE_SMALL_STRUCT.
-+ Adjust copyright notice.
-+ * src/powerpc/ffi.c: Add two new flags to indicate if we have one
-+ register or two register to use for FFI_SYSV structs.
-+ (ffi_prep_cif_machdep): Pass the right register flag introduced above.
-+ (ffi_closure_helper_SYSV): Fix the return type for
-+ FFI_SYSV_TYPE_SMALL_STRUCT. Comment.
-+ Adjust copyright notice.
-+
-+2008-07-16 Kaz Kojima <kkojima@gcc.gnu.org>
-+
-+ * src/sh/ffi.c (ffi_prep_closure_loc): Turn INSN into an unsigned
-+ int.
-+
-+2008-06-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
-+
-+ * configure: Regenerate.
-+ * include/Makefile.in: Regenerate.
-+ * testsuite/Makefile.in: Regenerate.
-+
-+2008-06-07 Joseph Myers <joseph@codesourcery.com>
-+
-+ * configure.ac (parisc*-*-linux*, powerpc-*-sysv*,
-+ powerpc-*-beos*): Remove.
-+ * configure: Regenerate.
-+
-+2008-05-09 Julian Brown <julian@codesourcery.com>
-+
-+ * Makefile.am (LTLDFLAGS): New.
-+ (libffi_la_LDFLAGS): Use above.
-+ * Makefile.in: Regenerate.
-+
-+2008-04-18 Paolo Bonzini <bonzini@gnu.org>
-+
-+ PR bootstrap/35457
-+ * aclocal.m4: Regenerate.
-+ * configure: Regenerate.
-+
-+2008-03-26 Kaz Kojima <kkojima@gcc.gnu.org>
-+
-+ * src/sh/sysv.S: Add .note.GNU-stack on Linux.
-+ * src/sh64/sysv.S: Likewise.
-+
-+2008-03-26 Daniel Jacobowitz <dan@debian.org>
-+
-+ * src/arm/sysv.S: Fix ARM comment marker.
-+
-+2008-03-26 Jakub Jelinek <jakub@redhat.com>
-+
-+ * src/alpha/osf.S: Add .note.GNU-stack on Linux.
-+ * src/s390/sysv.S: Likewise.
-+ * src/powerpc/ppc_closure.S: Likewise.
-+ * src/powerpc/sysv.S: Likewise.
-+ * src/x86/unix64.S: Likewise.
-+ * src/x86/sysv.S: Likewise.
-+ * src/sparc/v8.S: Likewise.
-+ * src/sparc/v9.S: Likewise.
-+ * src/m68k/sysv.S: Likewise.
-+ * src/arm/sysv.S: Likewise.
-+
-+2008-03-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
-+
-+ * aclocal.m4: Regenerate.
-+ * configure: Likewise.
-+ * Makefile.in: Likewise.
-+ * include/Makefile.in: Likewise.
-+ * testsuite/Makefile.in: Likewise.
-+
-+2008-02-12 Bjoern Koenig <bkoenig@alpha-tierchen.de>
-+ Andreas Tobler <a.tobler@schweiz.org>
-+
-+ * configure.ac: Add amd64-*-freebsd* target.
-+ * configure: Regenerate.
-+
-+2008-01-30 H.J. Lu <hongjiu.lu@intel.com>
-+
-+ PR libffi/34612
-+ * src/x86/sysv.S (ffi_closure_SYSV): Pop 4 byte from stack when
-+ returning struct.
-+
-+ * testsuite/libffi.call/call.exp: Add "-O2 -fomit-frame-pointer"
-+ tests.
-+
-+2008-01-24 David Edelsohn <edelsohn@gnu.org>
-+
-+ * configure: Regenerate.
-+
-+2008-01-06 Andreas Tobler <a.tobler@schweiz.org>
-+
-+ * src/x86/ffi.c (ffi_prep_cif_machdep): Fix thinko.
-+
-+2008-01-05 Andreas Tobler <a.tobler@schweiz.org>
-+
-+ PR testsuite/32843
-+ * src/x86/ffi.c (ffi_prep_cif_machdep): Add code for
-+ signed/unsigned int8/16 for X86_DARWIN.
-+ Updated copyright info.
-+ Handle one and two byte structs with special cif->flags.
-+ * src/x86/ffitarget.h: Add special types for one and two byte structs.
-+ Updated copyright info.
-+ * src/x86/darwin.S (ffi_call_SYSV): Rewrite to use a jump table like
-+ sysv.S
-+ Remove code to pop args from the stack after call.
-+ Special-case signed/unsigned for int8/16, one and two byte structs.
-+ (ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8,
-+ FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32,
-+ FFI_TYPE_SINT32.
-+ Updated copyright info.
-+
-+2007-12-08 David Daney <ddaney@avtrex.com>
-+
-+ * src/mips/n32.S (ffi_call_N32): Replace dadd with ADDU, dsub with
-+ SUBU, add with ADDU and use smaller code sequences.
-+
-+2007-12-07 David Daney <ddaney@avtrex.com>
-+
-+ * src/mips/ffi.c (ffi_prep_cif_machdep): Handle long double return
-+ type.
-+
-+2007-12-06 David Daney <ddaney@avtrex.com>
-+
-+ * include/ffi.h.in (FFI_SIZEOF_JAVA_RAW): Define if not already
-+ defined.
-+ (ffi_java_raw): New typedef.
-+ (ffi_java_raw_call, ffi_java_ptrarray_to_raw,
-+ ffi_java_raw_to_ptrarray): Change parameter types from ffi_raw to
-+ ffi_java_raw.
-+ (ffi_java_raw_closure) : Same.
-+ (ffi_prep_java_raw_closure, ffi_prep_java_raw_closure_loc): Change
-+ parameter types.
-+ * src/java_raw_api.c (ffi_java_raw_size): Replace FFI_SIZEOF_ARG with
-+ FFI_SIZEOF_JAVA_RAW.
-+ (ffi_java_raw_to_ptrarray): Change type of raw to ffi_java_raw.
-+ Replace FFI_SIZEOF_ARG with FFI_SIZEOF_JAVA_RAW. Use
-+ sizeof(ffi_java_raw) for alignment calculations.
-+ (ffi_java_ptrarray_to_raw): Same.
-+ (ffi_java_rvalue_to_raw): Add special handling for FFI_TYPE_POINTER
-+ if FFI_SIZEOF_JAVA_RAW == 4.
-+ (ffi_java_raw_to_rvalue): Same.
-+ (ffi_java_raw_call): Change type of raw to ffi_java_raw.
-+ (ffi_java_translate_args): Same.
-+ (ffi_prep_java_raw_closure_loc, ffi_prep_java_raw_closure): Change
-+ parameter types.
-+ * src/mips/ffitarget.h (FFI_SIZEOF_JAVA_RAW): Define for N32 ABI.
-+
-+2007-12-06 David Daney <ddaney@avtrex.com>
-+
-+ * src/mips/n32.S (ffi_closure_N32): Use 64-bit add instruction on
-+ pointer values.
-+
-+2007-12-01 Andreas Tobler <a.tobler@schweiz.org>
-+
-+ PR libffi/31937
-+ * src/powerpc/ffitarget.h: Introduce new ABI FFI_LINUX_SOFT_FLOAT.
-+ Add local FFI_TYPE_UINT128 to handle soft-float long-double-128.
-+ * src/powerpc/ffi.c: Distinguish between __NO_FPRS__ and not and
-+ set the NUM_FPR_ARG_REGISTERS according to.
-+ Add support for potential soft-float support under hard-float
-+ architecture.
-+ (ffi_prep_args_SYSV): Set NUM_FPR_ARG_REGISTERS to 0 in case of
-+ FFI_LINUX_SOFT_FLOAT, handle float, doubles and long-doubles according
-+ to the FFI_LINUX_SOFT_FLOAT ABI.
-+ (ffi_prep_cif_machdep): Likewise.
-+ (ffi_closure_helper_SYSV): Likewise.
-+ * src/powerpc/ppc_closure.S: Make sure not to store float/double
-+ on archs where __NO_FPRS__ is true.
-+ Add FFI_TYPE_UINT128 support.
-+ * src/powerpc/sysv.S: Add support for soft-float long-double-128.
-+ Adjust copyright notice.
-+
-+2007-11-25 Andreas Tobler <a.tobler@schweiz.org>
-+
-+ * src/closures.c: Move defintion of MAYBE_UNUSED from here to ...
-+ * include/ffi_common.h: ... here.
-+ Update copyright.
-+
-+2007-11-17 Andreas Tobler <a.tobler@schweiz.org>
-+
-+ * src/powerpc/sysv.S: Load correct cr to compare if we have long double.
-+ * src/powerpc/linux64.S: Likewise.
-+ * src/powerpc/ffi.c: Add a comment to show which part goes into cr6.
-+ * testsuite/libffi.call/return_ldl.c: New test.
-+
-+2007-09-04 <aph@redhat.com>
-+
-+ * src/arm/sysv.S (UNWIND): New.
-+ (Whole file): Conditionally compile unwinder directives.
-+ * src/arm/sysv.S: Add unwinder directives.
-+
-+ * src/arm/ffi.c (ffi_prep_args): Align structs by at least 4 bytes.
-+ Only treat r0 as a struct address if we're actually returning a
-+ struct by address.
-+ Only copy the bytes that are actually within a struct.
-+ (ffi_prep_cif_machdep): A Composite Type not larger than 4 bytes
-+ is returned in r0, not passed by address.
-+ (ffi_call): Allocate a word-sized temporary for the case where
-+ a composite is returned in r0.
-+ (ffi_prep_incoming_args_SYSV): Align as necessary.
-+
-+2007-08-05 Steven Newbury <s_j_newbury@yahoo.co.uk>
-+
-+ * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Use __clear_cache instead of
-+ directly using the sys_cacheflush syscall.
-+
-+2007-07-27 Andrew Haley <aph@redhat.com>
-+
-+ * src/arm/sysv.S (ffi_closure_SYSV): Add soft-float.
-+
-+2007-09-03 Maciej W. Rozycki <macro@linux-mips.org>
-+
-+ * Makefile.am: Unify MIPS_IRIX and MIPS_LINUX into MIPS.
-+ * configure.ac: Likewise.
-+ * Makefile.in: Regenerate.
-+ * include/Makefile.in: Likewise.
-+ * testsuite/Makefile.in: Likewise.
-+ * configure: Likewise.
-+
-+2007-08-24 David Daney <ddaney@avtrex.com>
-+
-+ * testsuite/libffi.call/return_sl.c: New test.
-+
-+2007-08-10 David Daney <ddaney@avtrex.com>
-+
-+ * testsuite/libffi.call/cls_multi_ushort.c,
-+ testsuite/libffi.call/cls_align_uint16.c,
-+ testsuite/libffi.call/nested_struct1.c,
-+ testsuite/libffi.call/nested_struct3.c,
-+ testsuite/libffi.call/cls_7_1_byte.c,
-+ testsuite/libffi.call/nested_struct5.c,
-+ testsuite/libffi.call/cls_double.c,
-+ testsuite/libffi.call/nested_struct7.c,
-+ testsuite/libffi.call/cls_sint.c,
-+ testsuite/libffi.call/nested_struct9.c,
-+ testsuite/libffi.call/cls_20byte1.c,
-+ testsuite/libffi.call/cls_multi_sshortchar.c,
-+ testsuite/libffi.call/cls_align_sint64.c,
-+ testsuite/libffi.call/cls_3byte2.c,
-+ testsuite/libffi.call/cls_multi_schar.c,
-+ testsuite/libffi.call/cls_multi_uchar.c,
-+ testsuite/libffi.call/cls_19byte.c,
-+ testsuite/libffi.call/cls_9byte1.c,
-+ testsuite/libffi.call/cls_align_float.c,
-+ testsuite/libffi.call/closure_fn1.c,
-+ testsuite/libffi.call/problem1.c,
-+ testsuite/libffi.call/closure_fn3.c,
-+ testsuite/libffi.call/cls_sshort.c,
-+ testsuite/libffi.call/closure_fn5.c,
-+ testsuite/libffi.call/cls_align_double.c,
-+ testsuite/libffi.call/nested_struct.c,
-+ testsuite/libffi.call/cls_2byte.c,
-+ testsuite/libffi.call/nested_struct10.c,
-+ testsuite/libffi.call/cls_4byte.c,
-+ testsuite/libffi.call/cls_6byte.c,
-+ testsuite/libffi.call/cls_8byte.c,
-+ testsuite/libffi.call/cls_multi_sshort.c,
-+ testsuite/libffi.call/cls_align_sint16.c,
-+ testsuite/libffi.call/cls_align_uint32.c,
-+ testsuite/libffi.call/cls_20byte.c,
-+ testsuite/libffi.call/cls_float.c,
-+ testsuite/libffi.call/nested_struct2.c,
-+ testsuite/libffi.call/cls_5_1_byte.c,
-+ testsuite/libffi.call/nested_struct4.c,
-+ testsuite/libffi.call/cls_24byte.c,
-+ testsuite/libffi.call/nested_struct6.c,
-+ testsuite/libffi.call/cls_64byte.c,
-+ testsuite/libffi.call/nested_struct8.c,
-+ testsuite/libffi.call/cls_uint.c,
-+ testsuite/libffi.call/cls_multi_ushortchar.c,
-+ testsuite/libffi.call/cls_schar.c,
-+ testsuite/libffi.call/cls_uchar.c,
-+ testsuite/libffi.call/cls_align_uint64.c,
-+ testsuite/libffi.call/cls_ulonglong.c,
-+ testsuite/libffi.call/cls_align_longdouble.c,
-+ testsuite/libffi.call/cls_1_1byte.c,
-+ testsuite/libffi.call/cls_12byte.c,
-+ testsuite/libffi.call/cls_3_1byte.c,
-+ testsuite/libffi.call/cls_3byte1.c,
-+ testsuite/libffi.call/cls_4_1byte.c,
-+ testsuite/libffi.call/cls_6_1_byte.c,
-+ testsuite/libffi.call/cls_16byte.c,
-+ testsuite/libffi.call/cls_18byte.c,
-+ testsuite/libffi.call/closure_fn0.c,
-+ testsuite/libffi.call/cls_9byte2.c,
-+ testsuite/libffi.call/closure_fn2.c,
-+ testsuite/libffi.call/closure_fn4.c,
-+ testsuite/libffi.call/cls_ushort.c,
-+ testsuite/libffi.call/closure_fn6.c,
-+ testsuite/libffi.call/cls_5byte.c,
-+ testsuite/libffi.call/cls_align_pointer.c,
-+ testsuite/libffi.call/cls_7byte.c,
-+ testsuite/libffi.call/cls_align_sint32.c,
-+ testsuite/libffi.special/unwindtest_ffi_call.cc,
-+ testsuite/libffi.special/unwindtest.cc: Remove xfail for mips64*-*-*.
-+
-+2007-08-10 David Daney <ddaney@avtrex.com>
-+
-+ PR libffi/28313
-+ * configure.ac: Don't treat mips64 as a special case.
-+ * Makefile.am (nodist_libffi_la_SOURCES): Add n32.S.
-+ * configure: Regenerate
-+ * Makefile.in: Ditto.
-+ * fficonfig.h.in: Ditto.
-+ * src/mips/ffitarget.h (REG_L, REG_S, SUBU, ADDU, SRL, LI): Indent.
-+ (LA, EH_FRAME_ALIGN, FDE_ADDR_BYTES): New preprocessor macros.
-+ (FFI_DEFAULT_ABI): Set for n64 case.
-+ (FFI_CLOSURES, FFI_TRAMPOLINE_SIZE): Define for n32 and n64 cases.
-+ * src/mips/n32.S (ffi_call_N32): Add debug macros and labels for FDE.
-+ (ffi_closure_N32): New function.
-+ (.eh_frame): New section
-+ * src/mips/o32.S: Clean up comments.
-+ (ffi_closure_O32): Pass ffi_closure parameter in $12.
-+ * src/mips/ffi.c: Use FFI_MIPS_N32 instead of
-+ _MIPS_SIM == _ABIN32 throughout.
-+ (FFI_MIPS_STOP_HERE): New, use in place of
-+ ffi_stop_here.
-+ (ffi_prep_args): Use unsigned long to hold pointer values. Rewrite
-+ to support n32/n64 ABIs.
-+ (calc_n32_struct_flags): Rewrite.
-+ (calc_n32_return_struct_flags): Remove unused variable. Reverse
-+ position of flag bits.
-+ (ffi_prep_cif_machdep): Rewrite n32 portion.
-+ (ffi_call): Enable for n64. Add special handling for small structure
-+ return values.
-+ (ffi_prep_closure_loc): Add n32 and n64 support.
-+ (ffi_closure_mips_inner_O32): Add cast to silence warning.
-+ (copy_struct_N32, ffi_closure_mips_inner_N32): New functions.
-+
-+2007-08-08 David Daney <ddaney@avtrex.com>
-+
-+ * testsuite/libffi.call/ffitest.h (ffi_type_mylong): Remove definition.
-+ * testsuite/libffi.call/cls_align_uint16.c (main): Use correct type
-+ specifiers.
-+ * testsuite/libffi.call/nested_struct1.c (main): Ditto.
-+ * testsuite/libffi.call/cls_sint.c (main): Ditto.
-+ * testsuite/libffi.call/nested_struct9.c (main): Ditto.
-+ * testsuite/libffi.call/cls_20byte1.c (main): Ditto.
-+ * testsuite/libffi.call/cls_9byte1.c (main): Ditto.
-+ * testsuite/libffi.call/closure_fn1.c (main): Ditto.
-+ * testsuite/libffi.call/closure_fn3.c (main): Ditto.
-+ * testsuite/libffi.call/return_dbl2.c (main): Ditto.
-+ * testsuite/libffi.call/cls_sshort.c (main): Ditto.
-+ * testsuite/libffi.call/return_fl3.c (main): Ditto.
-+ * testsuite/libffi.call/closure_fn5.c (main): Ditto.
-+ * testsuite/libffi.call/nested_struct.c (main): Ditto.
-+ * testsuite/libffi.call/nested_struct10.c (main): Ditto.
-+ * testsuite/libffi.call/return_ll1.c (main): Ditto.
-+ * testsuite/libffi.call/cls_8byte.c (main): Ditto.
-+ * testsuite/libffi.call/cls_align_uint32.c (main): Ditto.
-+ * testsuite/libffi.call/cls_align_sint16.c (main): Ditto.
-+ * testsuite/libffi.call/cls_20byte.c (main): Ditto.
-+ * testsuite/libffi.call/nested_struct2.c (main): Ditto.
-+ * testsuite/libffi.call/cls_24byte.c (main): Ditto.
-+ * testsuite/libffi.call/nested_struct6.c (main): Ditto.
-+ * testsuite/libffi.call/cls_uint.c (main): Ditto.
-+ * testsuite/libffi.call/cls_12byte.c (main): Ditto.
-+ * testsuite/libffi.call/cls_16byte.c (main): Ditto.
-+ * testsuite/libffi.call/closure_fn0.c (main): Ditto.
-+ * testsuite/libffi.call/cls_9byte2.c (main): Ditto.
-+ * testsuite/libffi.call/closure_fn2.c (main): Ditto.
-+ * testsuite/libffi.call/return_dbl1.c (main): Ditto.
-+ * testsuite/libffi.call/closure_fn4.c (main): Ditto.
-+ * testsuite/libffi.call/closure_fn6.c (main): Ditto.
-+ * testsuite/libffi.call/cls_align_sint32.c (main): Ditto.
-+
-+2007-08-07 Andrew Haley <aph@redhat.com>
-+
-+ * src/x86/sysv.S (ffi_closure_raw_SYSV): Fix typo in previous
-+ checkin.
-+
-+2007-08-06 Andrew Haley <aph@redhat.com>
-+
-+ PR testsuite/32843
-+ * src/x86/sysv.S (ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8,
-+ FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32,
-+ FFI_TYPE_SINT32.
-+
-+2007-08-02 David Daney <ddaney@avtrex.com>
-+
-+ * testsuite/libffi.call/return_ul.c (main): Define return type as
-+ ffi_arg. Use proper printf conversion specifier.
-+
-+2007-07-30 Andrew Haley <aph@redhat.com>
-+
-+ PR testsuite/32843
-+ * src/x86/ffi.c (ffi_prep_cif_machdep): in x86 case, add code for
-+ signed/unsigned int8/16.
-+ * src/x86/sysv.S (ffi_call_SYSV): Rewrite to:
-+ Use a jump table.
-+ Remove code to pop args from the stack after call.
-+ Special-case signed/unsigned int8/16.
-+ * testsuite/libffi.call/return_sc.c (main): Revert.
-+
-+2007-07-26 Richard Guenther <rguenther@suse.de>
-+
-+ PR testsuite/32843
-+ * testsuite/libffi.call/return_sc.c (main): Verify call
-+ result as signed char, not ffi_arg.
-+
-+2007-07-16 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-+
-+ * configure.ac (i?86-*-solaris2.1[0-9]): Set TARGET to X86_64.
-+ * configure: Regenerate.
-+
-+2007-07-11 David Daney <ddaney@avtrex.com>
-+
-+ * src/mips/ffi.c: Don't include sys/cachectl.h.
-+ (ffi_prep_closure_loc): Use __builtin___clear_cache() instead of
-+ cacheflush().
-+
-+2007-05-18 Aurelien Jarno <aurelien@aurel32.net>
-+
-+ * src/arm/ffi.c (ffi_prep_closure_loc): Renamed and ajusted
-+ from (ffi_prep_closure): ... this.
-+ (FFI_INIT_TRAMPOLINE): Adjust.
-+
-+2005-12-31 Phil Blundell <pb@reciva.com>
-+
-+ * src/arm/ffi.c (ffi_prep_incoming_args_SYSV,
-+ ffi_closure_SYSV_inner, ffi_prep_closure): New, add closure support.
-+ * src/arm/sysv.S(ffi_closure_SYSV): Likewise.
-+ * src/arm/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise.
-+ (FFI_CLOSURES): Enable closure support.
-+
-+2007-07-03 Andrew Haley <aph@hedges.billgatliff.com>
-+
-+ * testsuite/libffi.call/cls_multi_ushort.c,
-+ testsuite/libffi.call/cls_align_uint16.c,
-+ testsuite/libffi.call/nested_struct1.c,
-+ testsuite/libffi.call/nested_struct3.c,
-+ testsuite/libffi.call/cls_7_1_byte.c,
-+ testsuite/libffi.call/cls_double.c,
-+ testsuite/libffi.call/nested_struct5.c,
-+ testsuite/libffi.call/nested_struct7.c,
-+ testsuite/libffi.call/cls_sint.c,
-+ testsuite/libffi.call/nested_struct9.c,
-+ testsuite/libffi.call/cls_20byte1.c,
-+ testsuite/libffi.call/cls_multi_sshortchar.c,
-+ testsuite/libffi.call/cls_align_sint64.c,
-+ testsuite/libffi.call/cls_3byte2.c,
-+ testsuite/libffi.call/cls_multi_schar.c,
-+ testsuite/libffi.call/cls_multi_uchar.c,
-+ testsuite/libffi.call/cls_19byte.c,
-+ testsuite/libffi.call/cls_9byte1.c,
-+ testsuite/libffi.call/cls_align_float.c,
-+ testsuite/libffi.call/closure_fn1.c,
-+ testsuite/libffi.call/problem1.c,
-+ testsuite/libffi.call/closure_fn3.c,
-+ testsuite/libffi.call/cls_sshort.c,
-+ testsuite/libffi.call/closure_fn5.c,
-+ testsuite/libffi.call/cls_align_double.c,
-+ testsuite/libffi.call/cls_2byte.c,
-+ testsuite/libffi.call/nested_struct.c,
-+ testsuite/libffi.call/nested_struct10.c,
-+ testsuite/libffi.call/cls_4byte.c,
-+ testsuite/libffi.call/cls_6byte.c,
-+ testsuite/libffi.call/cls_8byte.c,
-+ testsuite/libffi.call/cls_multi_sshort.c,
-+ testsuite/libffi.call/cls_align_uint32.c,
-+ testsuite/libffi.call/cls_align_sint16.c,
-+ testsuite/libffi.call/cls_float.c,
-+ testsuite/libffi.call/cls_20byte.c,
-+ testsuite/libffi.call/cls_5_1_byte.c,
-+ testsuite/libffi.call/nested_struct2.c,
-+ testsuite/libffi.call/cls_24byte.c,
-+ testsuite/libffi.call/nested_struct4.c,
-+ testsuite/libffi.call/nested_struct6.c,
-+ testsuite/libffi.call/cls_64byte.c,
-+ testsuite/libffi.call/nested_struct8.c,
-+ testsuite/libffi.call/cls_uint.c,
-+ testsuite/libffi.call/cls_multi_ushortchar.c,
-+ testsuite/libffi.call/cls_schar.c,
-+ testsuite/libffi.call/cls_uchar.c,
-+ testsuite/libffi.call/cls_align_uint64.c,
-+ testsuite/libffi.call/cls_ulonglong.c,
-+ testsuite/libffi.call/cls_align_longdouble.c,
-+ testsuite/libffi.call/cls_1_1byte.c,
-+ testsuite/libffi.call/cls_12byte.c,
-+ testsuite/libffi.call/cls_3_1byte.c,
-+ testsuite/libffi.call/cls_3byte1.c,
-+ testsuite/libffi.call/cls_4_1byte.c,
-+ testsuite/libffi.call/cls_6_1_byte.c,
-+ testsuite/libffi.call/cls_16byte.c,
-+ testsuite/libffi.call/cls_18byte.c,
-+ testsuite/libffi.call/closure_fn0.c,
-+ testsuite/libffi.call/cls_9byte2.c,
-+ testsuite/libffi.call/closure_fn2.c,
-+ testsuite/libffi.call/closure_fn4.c,
-+ testsuite/libffi.call/cls_ushort.c,
-+ testsuite/libffi.call/closure_fn6.c,
-+ testsuite/libffi.call/cls_5byte.c,
-+ testsuite/libffi.call/cls_align_pointer.c,
-+ testsuite/libffi.call/cls_7byte.c,
-+ testsuite/libffi.call/cls_align_sint32.c,
-+ testsuite/libffi.special/unwindtest_ffi_call.cc,
-+ testsuite/libffi.special/unwindtest.cc: Enable for ARM.
-+
-+2007-07-05 H.J. Lu <hongjiu.lu@intel.com>
-+
-+ * aclocal.m4: Regenerated.
-+
-+2007-06-02 Paolo Bonzini <bonzini@gnu.org>
-+
-+ * configure: Regenerate.
-+
-+2007-05-23 Steve Ellcey <sje@cup.hp.com>
-+
-+ * Makefile.in: Regenerate.
-+ * configure: Regenerate.
-+ * aclocal.m4: Regenerate.
-+ * include/Makefile.in: Regenerate.
-+ * testsuite/Makefile.in: Regenerate.
-+
-+2007-05-10 Roman Zippel <zippel@linux-m68k.org>
-+
-+ * src/m68k/ffi.c (ffi_prep_incoming_args_SYSV,
-+ ffi_closure_SYSV_inner,ffi_prep_closure): New, add closure support.
-+ * src/m68k/sysv.S(ffi_closure_SYSV,ffi_closure_struct_SYSV): Likewise.
-+ * src/m68k/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise.
-+ (FFI_CLOSURES): Enable closure support.
-+
-+2007-05-10 Roman Zippel <zippel@linux-m68k.org>
-+
-+ * configure.ac (HAVE_AS_CFI_PSEUDO_OP): New test.
-+ * configure: Regenerate.
-+ * fficonfig.h.in: Regenerate.
-+ * src/m68k/sysv.S (CFI_STARTPROC,CFI_ENDPROC,
-+ CFI_OFFSET,CFI_DEF_CFA): New macros.
-+ (ffi_call_SYSV): Add callframe annotation.
-+
-+2007-05-10 Roman Zippel <zippel@linux-m68k.org>
-+
-+ * src/m68k/ffi.c (ffi_prep_args,ffi_prep_cif_machdep): Fix
-+ numerous test suite failures.
-+ * src/m68k/sysv.S (ffi_call_SYSV): Likewise.
-+
-+2007-04-11 Paolo Bonzini <bonzini@gnu.org>
-+
-+ * Makefile.am (EXTRA_DIST): Bring up to date.
-+ * Makefile.in: Regenerate.
-+ * src/frv/eabi.S: Remove RCS keyword.
-+
-+2007-04-06 Richard Henderson <rth@redhat.com>
-+
-+ * configure.ac: Tidy target case.
-+ (HAVE_LONG_DOUBLE): Allow the target to override.
-+ * configure: Regenerate.
-+ * include/ffi.h.in: Don't define ffi_type_foo if
-+ LIBFFI_HIDE_BASIC_TYPES is defined.
-+ (ffi_type_longdouble): If not HAVE_LONG_DOUBLE, define
-+ to ffi_type_double.
-+ * types.c (LIBFFI_HIDE_BASIC_TYPES): Define.
-+ (FFI_TYPEDEF, ffi_type_void): Mark the data const.
-+ (ffi_type_longdouble): Special case for Alpha. Don't define
-+ if long double == double.
-+
-+ * src/alpha/ffi.c (FFI_TYPE_LONGDOUBLE): Assert unique value.
-+ (ffi_prep_cif_machdep): Handle it as the 128-bit type.
-+ (ffi_call, ffi_closure_osf_inner): Likewise.
-+ (ffi_closure_osf_inner): Likewise. Mark hidden.
-+ (ffi_call_osf, ffi_closure_osf): Mark hidden.
-+ * src/alpha/ffitarget.h (FFI_LAST_ABI): Tidy definition.
-+ * src/alpha/osf.S (ffi_call_osf, ffi_closure_osf): Mark hidden.
-+ (load_table): Handle 128-bit long double.
-+
-+ * testsuite/libffi.call/float4.c: Add -mieee for alpha.
-+
-+2007-04-06 Tom Tromey <tromey@redhat.com>
-+
-+ PR libffi/31491:
-+ * README: Fixed bug in example.
-+
-+2007-04-03 Jakub Jelinek <jakub@redhat.com>
-+
-+ * src/closures.c: Include sys/statfs.h.
-+ (_GNU_SOURCE): Define on Linux.
-+ (FFI_MMAP_EXEC_SELINUX): Define.
-+ (selinux_enabled): New variable.
-+ (selinux_enabled_check): New function.
-+ (is_selinux_enabled): Define.
-+ (dlmmap): Use it.
-+
-+2007-03-24 Uros Bizjak <ubizjak@gmail.com>
-+
-+ * testsuite/libffi.call/return_fl2.c (return_fl): Mark as static.
-+ Use 'volatile float sum' to create sum of floats to avoid false
-+ negative due to excess precision on ix86 targets.
-+ (main): Ditto.
-+
-+2007-03-08 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * src/powerpc/ffi.c (flush_icache): Fix left-over from previous
-+ patch.
-+ (ffi_prep_closure_loc): Remove unneeded casts. Add needed ones.
-+
-+2007-03-07 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * include/ffi.h.in (ffi_closure_alloc, ffi_closure_free): New.
-+ (ffi_prep_closure_loc): New.
-+ (ffi_prep_raw_closure_loc): New.
-+ (ffi_prep_java_raw_closure_loc): New.
-+ * src/closures.c: New file.
-+ * src/dlmalloc.c [FFI_MMAP_EXEC_WRIT] (struct malloc_segment):
-+ Replace sflags with exec_offset.
-+ [FFI_MMAP_EXEC_WRIT] (mmap_exec_offset, add_segment_exec_offset,
-+ sub_segment_exec_offset): New macros.
-+ (get_segment_flags, set_segment_flags, check_segment_merge): New
-+ macros.
-+ (is_mmapped_segment, is_extern_segment): Use get_segment_flags.
-+ (add_segment, sys_alloc, create_mspace, create_mspace_with_base,
-+ destroy_mspace): Use new macros.
-+ (sys_alloc): Silence warning.
-+ * Makefile.am (libffi_la_SOURCES): Add src/closures.c.
-+ * Makefile.in: Rebuilt.
-+ * src/prep_cif [FFI_CLOSURES] (ffi_prep_closure): Implement in
-+ terms of ffi_prep_closure_loc.
-+ * src/raw_api.c (ffi_prep_raw_closure_loc): Renamed and adjusted
-+ from...
-+ (ffi_prep_raw_closure): ... this. Re-implement in terms of the
-+ renamed version.
-+ * src/java_raw_api (ffi_prep_java_raw_closure_loc): Renamed and
-+ adjusted from...
-+ (ffi_prep_java_raw_closure): ... this. Re-implement in terms of
-+ the renamed version.
-+ * src/alpha/ffi.c (ffi_prep_closure_loc): Renamed from
-+ (ffi_prep_closure): ... this.
-+ * src/pa/ffi.c: Likewise.
-+ * src/cris/ffi.c: Likewise. Adjust.
-+ * src/frv/ffi.c: Likewise.
-+ * src/ia64/ffi.c: Likewise.
-+ * src/mips/ffi.c: Likewise.
-+ * src/powerpc/ffi_darwin.c: Likewise.
-+ * src/s390/ffi.c: Likewise.
-+ * src/sh/ffi.c: Likewise.
-+ * src/sh64/ffi.c: Likewise.
-+ * src/sparc/ffi.c: Likewise.
-+ * src/x86/ffi64.c: Likewise.
-+ * src/x86/ffi.c: Likewise.
-+ (FFI_INIT_TRAMPOLINE): Adjust.
-+ (ffi_prep_raw_closure_loc): Renamed and adjusted from...
-+ (ffi_prep_raw_closure): ... this.
-+ * src/powerpc/ffi.c (ffi_prep_closure_loc): Renamed from
-+ (ffi_prep_closure): ... this.
-+ (flush_icache): Adjust.
-+
-+2007-03-07 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * src/dlmalloc.c: New file, imported version 2.8.3 of Doug
-+ Lea's malloc.
-+
-+2007-03-01 Brooks Moses <brooks.moses@codesourcery.com>
-+
-+ * Makefile.am: Add dummy install-pdf target.
-+ * Makefile.in: Regenerate
-+
-+2007-02-13 Andreas Krebbel <krebbel1@de.ibm.com>
-+
-+ * src/s390/ffi.c (ffi_prep_args, ffi_prep_cif_machdep,
-+ ffi_closure_helper_SYSV): Add long double handling.
-+
-+2007-02-02 Jakub Jelinek <jakub@redhat.com>
-+
-+ * src/powerpc/linux64.S (ffi_call_LINUX64): Move restore of r2
-+ immediately after bctrl instruction.
-+
-+2007-01-18 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * Makefile.am (all-recursive, install-recursive,
-+ mostlyclean-recursive, clean-recursive, distclean-recursive,
-+ maintainer-clean-recursive): Add missing targets.
-+ * Makefile.in: Rebuilt.
-+
-+2006-12-14 Andreas Tobler <a.tobler@schweiz.org>
-+
-+ * configure.ac: Add TARGET for x86_64-*-darwin*.
-+ * Makefile.am (nodist_libffi_la_SOURCES): Add rules for 64-bit sources
-+ for X86_DARWIN.
-+ * src/x86/ffitarget.h: Set trampoline size for x86_64-*-darwin*.
-+ * src/x86/darwin64.S: New file for x86_64-*-darwin* support.
-+ * configure: Regenerate.
-+ * Makefile.in: Regenerate.
-+ * include/Makefile.in: Regenerate.
-+ * testsuite/Makefile.in: Regenerate.
-+ * testsuite/libffi.special/unwindtest_ffi_call.cc: New test case for
-+ ffi_call only.
-+
-+2006-12-13 Andreas Tobler <a.tobler@schweiz.org>
-+
-+ * aclocal.m4: Regenerate with aclocal -I .. as written in the
-+ Makefile.am.
-+
-+2006-10-31 Geoffrey Keating <geoffk@apple.com>
-+
-+ * src/powerpc/ffi_darwin.c (darwin_adjust_aggregate_sizes): New.
-+ (ffi_prep_cif_machdep): Call darwin_adjust_aggregate_sizes for
-+ Darwin.
-+ * testsuite/libffi.call/nested_struct4.c: Remove Darwin XFAIL.
-+ * testsuite/libffi.call/nested_struct6.c: Remove Darwin XFAIL.
-+
-+2006-10-10 Paolo Bonzini <bonzini@gnu.org>
-+ Sandro Tolaini <tolaini@libero.it>
-+
-+ * configure.ac [i*86-*-darwin*]: Set X86_DARWIN symbol and
-+ conditional.
-+ * configure: Regenerated.
-+ * Makefile.am (nodist_libffi_la_SOURCES) [X86_DARWIN]: New case.
-+ (EXTRA_DIST): Add src/x86/darwin.S.
-+ * Makefile.in: Regenerated.
-+ * include/Makefile.in: Regenerated.
-+ * testsuite/Makefile.in: Regenerated.
-+
-+ * src/x86/ffi.c (ffi_prep_cif_machdep) [X86_DARWIN]: Treat like
-+ X86_WIN32, and additionally align stack to 16 bytes.
-+ * src/x86/darwin.S: New, based on sysv.S.
-+ * src/prep_cif.c (ffi_prep_cif) [X86_DARWIN]: Align > 8-byte structs.
-+
-+2006-09-12 David Daney <ddaney@avtrex.com>
-+
-+ PR libffi/23935
-+ * include/Makefile.am: Install both ffi.h and ffitarget.h in
-+ $(libdir)/gcc/$(target_alias)/$(gcc_version)/include.
-+ * aclocal.m4: Regenerated for automake 1.9.6.
-+ * Makefile.in: Regenerated.
-+ * include/Makefile.in: Regenerated.
-+ * testsuite/Makefile.in: Regenerated.
-+
-+2006-08-17 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * include/ffi_common.h (struct): Revert accidental commit.
-+
-+2006-08-15 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * include/ffi_common.h: Remove lint directives.
-+ * include/ffi.h.in: Likewise.
-+
-+2006-07-25 Torsten Schoenfeld <kaffeetisch@gmx.de>
-+
-+ * include/ffi.h.in (ffi_type_ulong, ffi_type_slong): Define correctly
-+ for 32-bit architectures.
-+ * testsuite/libffi.call/return_ul.c: New test case.
-+
-+2006-07-19 David Daney <ddaney@avtrex.com>
-+
-+ * testsuite/libffi.call/closure_fn6.c: Remove xfail for mips,
-+ xfail remains for mips64.
-+
-+2006-05-23 Carlos O'Donell <carlos@codesourcery.com>
-+
-+ * Makefile.am: Add install-html target. Add install-html to .PHONY
-+ * Makefile.in: Regenerate.
-+ * aclocal.m4: Regenerate.
-+ * include/Makefile.in: Regenerate.
-+ * testsuite/Makefile.in: Regenerate.
-+
-+2006-05-18 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
-+
-+ * pa/ffi.c (ffi_prep_args_pa32): Load floating point arguments from
-+ stack slot.
-+
-+2006-04-22 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * README: Remove notice about 'Crazy Comments'.
-+ * src/debug.c: Remove lint directives. Cleanup white spaces.
-+ * src/java_raw_api.c: Likewise.
-+ * src/prep_cif.c: Likewise.
-+ * src/raw_api.c: Likewise.
-+ * src/ffitest.c: Delete. No longer needed, all test cases migrated
-+ to the testsuite.
-+ * src/arm/ffi.c: Remove lint directives.
-+ * src/m32r/ffi.c: Likewise.
-+ * src/pa/ffi.c: Likewise.
-+ * src/powerpc/ffi.c: Likewise.
-+ * src/powerpc/ffi_darwin.c: Likewise.
-+ * src/sh/ffi.c: Likewise.
-+ * src/sh64/ffi.c: Likewise.
-+ * src/x86/ffi.c: Likewise.
-+ * testsuite/libffi.call/float2.c: Likewise.
-+ * testsuite/libffi.call/promotion.c: Likewise.
-+ * testsuite/libffi.call/struct1.c: Likewise.
-+
-+2006-04-13 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * src/pa/hpux32.S: Correct unwind offset calculation for
-+ ffi_closure_pa32.
-+ * src/pa/linux.S: Likewise.
-+
-+2006-04-12 James E Wilson <wilson@specifix.com>
-+
-+ PR libgcj/26483
-+ * src/ia64/ffi.c (stf_spill, ldf_fill): Rewrite as macros.
-+ (hfa_type_load): Call stf_spill.
-+ (hfa_type_store): Call ldf_fill.
-+ (ffi_call): Adjust calls to above routines. Add local temps for
-+ macro result.
-+
-+2006-04-10 Matthias Klose <doko@debian.org>
-+
-+ * testsuite/lib/libffi-dg.exp (libffi-init): Recognize multilib
-+ directory names containing underscores.
-+
-+2006-04-07 James E Wilson <wilson@specifix.com>
-+
-+ * testsuite/libffi.call/float4.c: New testcase.
-+
-+2006-04-05 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
-+ Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * Makefile.am: Add PA_HPUX port.
-+ * Makefile.in: Regenerate.
-+ * include/Makefile.in: Likewise.
-+ * testsuite/Makefile.in: Likewise.
-+ * configure.ac: Add PA_HPUX rules.
-+ * configure: Regenerate.
-+ * src/pa/ffitarget.h: Rename linux target to PA_LINUX.
-+ Add PA_HPUX and PA64_HPUX.
-+ Rename FFI_LINUX ABI to FFI_PA32 ABI.
-+ (FFI_TRAMPOLINE_SIZE): Define for 32-bit HP-UX targets.
-+ (FFI_TYPE_SMALL_STRUCT2): Define.
-+ (FFI_TYPE_SMALL_STRUCT4): Likewise.
-+ (FFI_TYPE_SMALL_STRUCT8): Likewise.
-+ (FFI_TYPE_SMALL_STRUCT3): Redefine.
-+ (FFI_TYPE_SMALL_STRUCT5): Likewise.
-+ (FFI_TYPE_SMALL_STRUCT6): Likewise.
-+ (FFI_TYPE_SMALL_STRUCT7): Likewise.
-+ * src/pa/ffi.c (ROUND_DOWN): Delete.
-+ (fldw, fstw, fldd, fstd): Use '__asm__'.
-+ (ffi_struct_type): Add support for FFI_TYPE_SMALL_STRUCT2,
-+ FFI_TYPE_SMALL_STRUCT4 and FFI_TYPE_SMALL_STRUCT8.
-+ (ffi_prep_args_LINUX): Rename to ffi_prep_args_pa32. Update comment.
-+ Simplify incrementing of stack slot variable. Change type of local
-+ 'n' to unsigned int.
-+ (ffi_size_stack_LINUX): Rename to ffi_size_stack_pa32. Handle long
-+ double on PA_HPUX.
-+ (ffi_prep_cif_machdep): Likewise.
-+ (ffi_call): Likewise.
-+ (ffi_closure_inner_LINUX): Rename to ffi_closure_inner_pa32. Change
-+ return type to ffi_status. Simplify incrementing of stack slot
-+ variable. Only copy floating point argument registers when PA_LINUX
-+ is true. Reformat debug statement.
-+ Add support for FFI_TYPE_SMALL_STRUCT2, FFI_TYPE_SMALL_STRUCT4 and
-+ FFI_TYPE_SMALL_STRUCT8.
-+ (ffi_closure_LINUX): Rename to ffi_closure_pa32. Add 'extern' to
-+ declaration.
-+ (ffi_prep_closure): Make linux trampoline conditional on PA_LINUX.
-+ Add nops to cache flush. Add trampoline for PA_HPUX.
-+ * src/pa/hpux32.S: New file.
-+ * src/pa/linux.S (ffi_call_LINUX): Rename to ffi_call_pa32. Rename
-+ ffi_prep_args_LINUX to ffi_prep_args_pa32.
-+ Localize labels. Add support for 2, 4 and 8-byte small structs. Handle
-+ unaligned destinations in 3, 5, 6 and 7-byte small structs. Order
-+ argument type checks so that common argument types appear first.
-+ (ffi_closure_LINUX): Rename to ffi_closure_pa32. Rename
-+ ffi_closure_inner_LINUX to ffi_closure_inner_pa32.
-+
-+2006-03-24 Alan Modra <amodra@bigpond.net.au>
-+
-+ * src/powerpc/ffitarget.h (enum ffi_abi): Add FFI_LINUX. Default
-+ for 32-bit using IBM extended double format. Fix FFI_LAST_ABI.
-+ * src/powerpc/ffi.c (ffi_prep_args_SYSV): Handle linux variant of
-+ FFI_TYPE_LONGDOUBLE.
-+ (ffi_prep_args64): Assert using IBM extended double.
-+ (ffi_prep_cif_machdep): Don't munge FFI_TYPE_LONGDOUBLE type.
-+ Handle FFI_LINUX FFI_TYPE_LONGDOUBLE return and args.
-+ (ffi_call): Handle FFI_LINUX.
-+ (ffi_closure_helper_SYSV): Non FFI_LINUX long double return needs
-+ gpr3 return pointer as for struct return. Handle FFI_LINUX
-+ FFI_TYPE_LONGDOUBLE return and args. Don't increment "nf"
-+ unnecessarily.
-+ * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Load both f1 and f2
-+ for FFI_TYPE_LONGDOUBLE. Move epilogue insns into case table.
-+ Don't use r6 as pointer to results, instead use sp offset. Don't
-+ make a special call to load lr with case table address, instead
-+ use offset from previous call.
-+ * src/powerpc/sysv.S (ffi_call_SYSV): Save long double return.
-+ * src/powerpc/linux64.S (ffi_call_LINUX64): Simplify long double
-+ return.
-+
-+2006-03-15 Kaz Kojima <kkojima@gcc.gnu.org>
-+
-+ * src/sh64/ffi.c (ffi_prep_cif_machdep): Handle float arguments
-+ passed with FP registers correctly.
-+ (ffi_closure_helper_SYSV): Likewise.
-+ * src/sh64/sysv.S: Likewise.
-+
-+2006-03-01 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * testsuite/libffi.special/unwindtest.cc (closure_test_fn): Mark cif,
-+ args and userdata unused.
-+ (closure_test_fn1): Mark cif and userdata unused.
-+ (main): Remove unused res.
-+
-+2006-02-28 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * testsuite/libffi.call/call.exp: Adjust FSF address. Add test runs for
-+ -O2, -O3, -Os and the warning flags -W -Wall.
-+ * testsuite/libffi.special/special.exp: Likewise.
-+ * testsuite/libffi.call/ffitest.h: Add an __UNUSED__ macro to mark
-+ unused parameter unused for gcc or else do nothing.
-+ * testsuite/libffi.special/ffitestcxx.h: Likewise.
-+ * testsuite/libffi.call/cls_12byte.c (cls_struct_12byte_gn): Mark cif
-+ and userdata unused.
-+ * testsuite/libffi.call/cls_16byte.c (cls_struct_16byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_18byte.c (cls_struct_18byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_19byte.c (cls_struct_19byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_1_1byte.c (cls_struct_1_1byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_20byte.c (cls_struct_20byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_20byte1.c (cls_struct_20byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_24byte.c (cls_struct_24byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_2byte.c (cls_struct_2byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_3_1byte.c (cls_struct_3_1byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_3byte1.c (cls_struct_3byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_3byte2.c (cls_struct_3byte_gn1): Likewise.
-+ * testsuite/libffi.call/cls_4_1byte.c (cls_struct_4_1byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_4byte.c (cls_struct_4byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_5_1_byte.c (cls_struct_5byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_5byte.c (cls_struct_5byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_64byte.c (cls_struct_64byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_6_1_byte.c (cls_struct_6byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_6byte.c (cls_struct_6byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_7_1_byte.c (cls_struct_7byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_7byte.c (cls_struct_7byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_8byte.c (cls_struct_8byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_9byte1.c (cls_struct_9byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_9byte2.c (cls_struct_9byte_gn): Likewise.
-+ * testsuite/libffi.call/cls_align_double.c (cls_struct_align_gn):
-+ Likewise.
-+ * testsuite/libffi.call/cls_align_float.c (cls_struct_align_gn):
-+ Likewise.
-+ * testsuite/libffi.call/cls_align_longdouble.c (cls_struct_align_gn):
-+ Likewise.
-+ * testsuite/libffi.call/cls_align_pointer.c (cls_struct_align_fn): Cast
-+ void* to avoid compiler warning.
-+ (main): Likewise.
-+ (cls_struct_align_gn): Mark cif and userdata unused.
-+ * testsuite/libffi.call/cls_align_sint16.c (cls_struct_align_gn):
-+ Likewise.
-+ * testsuite/libffi.call/cls_align_sint32.c (cls_struct_align_gn):
-+ Likewise.
-+ * testsuite/libffi.call/cls_align_sint64.c (cls_struct_align_gn):
-+ Likewise.
-+ * testsuite/libffi.call/cls_align_uint16.c (cls_struct_align_gn):
-+ Likewise.
-+ * testsuite/libffi.call/cls_align_uint32.c (cls_struct_align_gn):
-+ Likewise.
-+ * testsuite/libffi.call/cls_double.c (cls_ret_double_fn): Likewise.
-+ * testsuite/libffi.call/cls_float.c (cls_ret_float_fn): Likewise.
-+ * testsuite/libffi.call/cls_multi_schar.c (test_func_gn): Mark cif and
-+ data unused.
-+ (main): Cast res_call to silence gcc.
-+ * testsuite/libffi.call/cls_multi_sshort.c (test_func_gn): Mark cif and
-+ data unused.
-+ (main): Cast res_call to silence gcc.
-+ * testsuite/libffi.call/cls_multi_sshortchar.c (test_func_gn): Mark cif
-+ and data unused.
-+ (main): Cast res_call to silence gcc.
-+ * testsuite/libffi.call/cls_multi_uchar.c (test_func_gn): Mark cif and
-+ data unused.
-+ (main): Cast res_call to silence gcc.
-+ * testsuite/libffi.call/cls_multi_ushort.c (test_func_gn): Mark cif and
-+ data unused.
-+ (main): Cast res_call to silence gcc.
-+ * testsuite/libffi.call/cls_multi_ushortchar.c (test_func_gn): Mark cif
-+ and data unused.
-+ (main): Cast res_call to silence gcc.
-+ * testsuite/libffi.call/cls_schar.c (cls_ret_schar_fn): Mark cif and
-+ userdata unused.
-+ (cls_ret_schar_fn): Cast printf parameter to silence gcc.
-+ * testsuite/libffi.call/cls_sint.c (cls_ret_sint_fn): Mark cif and
-+ userdata unused.
-+ (cls_ret_sint_fn): Cast printf parameter to silence gcc.
-+ * testsuite/libffi.call/cls_sshort.c (cls_ret_sshort_fn): Mark cif and
-+ userdata unused.
-+ (cls_ret_sshort_fn): Cast printf parameter to silence gcc.
-+ * testsuite/libffi.call/cls_uchar.c (cls_ret_uchar_fn): Mark cif and
-+ userdata unused.
-+ (cls_ret_uchar_fn): Cast printf parameter to silence gcc.
-+ * testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Mark cif and
-+ userdata unused.
-+ (cls_ret_uint_fn): Cast printf parameter to silence gcc.
-+ * testsuite/libffi.call/cls_ulonglong.c (cls_ret_ulonglong_fn): Mark cif
-+ and userdata unused.
-+ * testsuite/libffi.call/cls_ushort.c (cls_ret_ushort_fn): Mark cif and
-+ userdata unused.
-+ (cls_ret_ushort_fn): Cast printf parameter to silence gcc.
-+ * testsuite/libffi.call/float.c (floating): Remove unused parameter e.
-+ * testsuite/libffi.call/float1.c (main): Remove unused variable i.
-+ Cleanup white spaces.
-+ * testsuite/libffi.call/negint.c (checking): Remove unused variable i.
-+ * testsuite/libffi.call/nested_struct.c (cls_struct_combined_gn): Mark
-+ cif and userdata unused.
-+ * testsuite/libffi.call/nested_struct1.c (cls_struct_combined_gn):
-+ Likewise.
-+ * testsuite/libffi.call/nested_struct10.c (B_gn): Likewise.
-+ * testsuite/libffi.call/nested_struct2.c (B_fn): Adjust printf
-+ formatters to silence gcc.
-+ (B_gn): Mark cif and userdata unused.
-+ * testsuite/libffi.call/nested_struct3.c (B_gn): Mark cif and userdata
-+ unused.
-+ * testsuite/libffi.call/nested_struct4.c: Mention related PR.
-+ (B_gn): Mark cif and userdata unused.
-+ * testsuite/libffi.call/nested_struct5.c (B_gn): Mark cif and userdata
-+ unused.
-+ * testsuite/libffi.call/nested_struct6.c: Mention related PR.
-+ (B_gn): Mark cif and userdata unused.
-+ * testsuite/libffi.call/nested_struct7.c (B_gn): Mark cif and userdata
-+ unused.
-+ * testsuite/libffi.call/nested_struct8.c (B_gn): Likewise.
-+ * testsuite/libffi.call/nested_struct9.c (B_gn): Likewise.
-+ * testsuite/libffi.call/problem1.c (stub): Likewise.
-+ * testsuite/libffi.call/pyobjc-tc.c (main): Cast the result to silence
-+ gcc.
-+ * testsuite/libffi.call/return_fl2.c (return_fl): Add the note mentioned
-+ in the last commit for this test case in the test case itself.
-+ * testsuite/libffi.call/closure_fn0.c (closure_test_fn0): Mark cif as
-+ unused.
-+ * testsuite/libffi.call/closure_fn1.c (closure_test_fn1): Likewise.
-+ * testsuite/libffi.call/closure_fn2.c (closure_test_fn2): Likewise.
-+ * testsuite/libffi.call/closure_fn3.c (closure_test_fn3): Likewise.
-+ * testsuite/libffi.call/closure_fn4.c (closure_test_fn0): Likewise.
-+ * testsuite/libffi.call/closure_fn5.c (closure_test_fn5): Likewise.
-+ * testsuite/libffi.call/closure_fn6.c (closure_test_fn0): Likewise.
-+
-+2006-02-22 Kaz Kojima <kkojima@gcc.gnu.org>
-+
-+ * src/sh/sysv.S: Fix register numbers in the FDE for
-+ ffi_closure_SYSV.
-+
-+2006-02-20 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * testsuite/libffi.call/return_fl2.c (return_fl): Remove static
-+ declaration to avoid a false negative on ix86. See PR323.
-+
-+2006-02-18 Kaz Kojima <kkojima@gcc.gnu.org>
-+
-+ * src/sh/ffi.c (ffi_closure_helper_SYSV): Remove unused variable
-+ and cast integer to void * if needed. Update the pointer to
-+ the FP register saved area correctly.
-+
-+2006-02-17 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * testsuite/libffi.call/nested_struct6.c: XFAIL this test until PR25630
-+ is fixed.
-+ * testsuite/libffi.call/nested_struct4.c: Likewise.
-+
-+2006-02-16 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * testsuite/libffi.call/return_dbl.c: New test case.
-+ * testsuite/libffi.call/return_dbl1.c: Likewise.
-+ * testsuite/libffi.call/return_dbl2.c: Likewise.
-+ * testsuite/libffi.call/return_fl.c: Likewise.
-+ * testsuite/libffi.call/return_fl1.c: Likewise.
-+ * testsuite/libffi.call/return_fl2.c: Likewise.
-+ * testsuite/libffi.call/return_fl3.c: Likewise.
-+ * testsuite/libffi.call/closure_fn6.c: Likewise.
-+
-+ * testsuite/libffi.call/nested_struct2.c: Remove ffi_type_mylong
-+ definition.
-+ * testsuite/libffi.call/ffitest.h: Add ffi_type_mylong definition
-+ here to be used by other test cases too.
-+
-+ * testsuite/libffi.call/nested_struct10.c: New test case.
-+ * testsuite/libffi.call/nested_struct9.c: Likewise.
-+ * testsuite/libffi.call/nested_struct8.c: Likewise.
-+ * testsuite/libffi.call/nested_struct7.c: Likewise.
-+ * testsuite/libffi.call/nested_struct6.c: Likewise.
-+ * testsuite/libffi.call/nested_struct5.c: Likewise.
-+ * testsuite/libffi.call/nested_struct4.c: Likewise.
-+
-+2006-01-21 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * configure.ac: Enable libffi for sparc64-*-freebsd*.
-+ * configure: Rebuilt.
-+
-+2006-01-18 Jakub Jelinek <jakub@redhat.com>
-+
-+ * src/powerpc/sysv.S (smst_two_register): Don't call __ashldi3,
-+ instead do the shifting inline.
-+ * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't compute %r5
-+ shift count unconditionally. Simplify load sequences for 1, 2, 3, 4
-+ and 8 byte structs, for the remaining struct sizes don't call
-+ __lshrdi3, instead do the shifting inline.
-+
-+2005-12-07 Thiemo Seufer <ths@networkno.de>
-+
-+ * src/mips/ffitarget.h: Remove obsolete sgidefs.h include. Add
-+ missing parentheses.
-+ * src/mips/o32.S (ffi_call_O32): Code formatting. Define
-+ and use A3_OFF, FP_OFF, RA_OFF. Micro-optimizations.
-+ (ffi_closure_O32): Likewise, but with newly defined A3_OFF2,
-+ A2_OFF2, A1_OFF2, A0_OFF2, RA_OFF2, FP_OFF2, S0_OFF2, GP_OFF2,
-+ V1_OFF2, V0_OFF2, FA_1_1_OFF2, FA_1_0_OFF2, FA_0_1_OFF2,
-+ FA_0_0_OFF2.
-+ * src/mips/ffi.c (ffi_prep_args): Code formatting. Fix
-+ endianness bugs.
-+ (ffi_prep_closure): Improve trampoline instruction scheduling.
-+ (ffi_closure_mips_inner_O32): Fix endianness bugs.
-+
-+2005-12-03 Alan Modra <amodra@bigpond.net.au>
-+
-+ * src/powerpc/ffi.c: Formatting.
-+ (ffi_prep_args_SYSV): Avoid possible aliasing problems by using unions.
-+ (ffi_prep_args64): Likewise.
-+
-+2005-09-30 Geoffrey Keating <geoffk@apple.com>
-+
-+ * testsuite/lib/libffi-dg.exp (libffi_target_compile): For
-+ darwin, use -shared-libgcc not -lgcc_s, and explain why.
-+
-+2005-09-26 Tom Tromey <tromey@redhat.com>
-+
-+ * testsuite/libffi.call/float1.c (value_type): New typedef.
-+ (CANARY): New define.
-+ (main): Check for result buffer overflow.
-+ * src/powerpc/linux64.S: Handle linux64 long double returns.
-+ * src/powerpc/ffi.c (FLAG_RETURNS_128BITS): New constant.
-+ (ffi_prep_cif_machdep): Handle linux64 long double returns.
-+
-+2005-08-25 Alan Modra <amodra@bigpond.net.au>
-+
-+ PR target/23404
-+ * src/powerpc/ffi.c (ffi_prep_args_SYSV): Correct placement of stack
-+ homed fp args.
-+ (ffi_status ffi_prep_cif_machdep): Correct stack sizing for same.
-+
-+2005-08-11 Jakub Jelinek <jakub@redhat.com>
-+
-+ * configure.ac (HAVE_HIDDEN_VISIBILITY_ATTRIBUTE): New test.
-+ (AH_BOTTOM): Add FFI_HIDDEN definition.
-+ * configure: Rebuilt.
-+ * fficonfig.h.in: Rebuilt.
-+ * src/powerpc/ffi.c (hidden): Remove.
-+ (ffi_closure_LINUX64, ffi_prep_args64, ffi_call_LINUX64,
-+ ffi_closure_helper_LINUX64): Use FFI_HIDDEN instead of hidden.
-+ * src/powerpc/linux64_closure.S (ffi_closure_LINUX64,
-+ .ffi_closure_LINUX64): Use FFI_HIDDEN instead of .hidden.
-+ * src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV): Remove,
-+ add FFI_HIDDEN to its prototype.
-+ (ffi_closure_SYSV_inner): New.
-+ * src/x86/sysv.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New.
-+ * src/x86/win32.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New.
-+
-+2005-08-10 Alfred M. Szmidt <ams@gnu.org>
-+
-+ PR libffi/21819:
-+ * configure: Rebuilt.
-+ * configure.ac: Handle i*86-*-gnu*.
-+
-+2005-08-09 Jakub Jelinek <jakub@redhat.com>
-+
-+ * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Use
-+ DW_CFA_offset_extended_sf rather than
-+ DW_CFA_GNU_negative_offset_extended.
-+ * src/powerpc/sysv.S (ffi_call_SYSV): Likewise.
-+
-+2005-07-22 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
-+
-+ * src/sh/sysv.S (ffi_call_SYSV): Stop argument popping correctly
-+ on sh3.
-+ (ffi_closure_SYSV): Change the stack layout for sh3 struct argument.
-+ * src/sh/ffi.c (ffi_prep_args): Fix sh3 argument copy, when it is
-+ partially on register.
-+ (ffi_closure_helper_SYSV): Likewise.
-+ (ffi_prep_cif_machdep): Don't set too many cif->flags.
-+
-+2005-07-20 Kaz Kojima <kkojima@gcc.gnu.org>
-+
-+ * src/sh/ffi.c (ffi_call): Handle small structures correctly.
-+ Remove empty line.
-+ * src/sh64/ffi.c (simple_type): Remove.
-+ (return_type): Handle small structures correctly.
-+ (ffi_prep_args): Likewise.
-+ (ffi_call): Likewise.
-+ (ffi_closure_helper_SYSV): Likewise.
-+ * src/sh64/sysv.S (ffi_call_SYSV): Handle 1, 2 and 4-byte return.
-+ Emit position independent code if PIC and remove wrong datalabel
-+ prefixes from EH data.
-+
-+2005-07-19 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * Makefile.am (nodist_libffi_la_SOURCES): Add POWERPC_FREEBSD.
-+ * Makefile.in: Regenerate.
-+ * include/Makefile.in: Likewise.
-+ * testsuite/Makefile.in: Likewise.
-+ * configure.ac: Add POWERPC_FREEBSD rules.
-+ * configure: Regenerate.
-+ * src/powerpc/ffitarget.h: Add POWERPC_FREEBSD rules.
-+ (FFI_SYSV_TYPE_SMALL_STRUCT): Define.
-+ * src/powerpc/ffi.c: Add flags to handle small structure returns
-+ in ffi_call_SYSV.
-+ (ffi_prep_cif_machdep): Handle small structures for SYSV 4 ABI.
-+ Aka FFI_SYSV.
-+ (ffi_closure_helper_SYSV): Likewise.
-+ * src/powerpc/ppc_closure.S: Add return types for small structures.
-+ * src/powerpc/sysv.S: Add bits to handle small structures for
-+ final SYSV 4 ABI.
-+
-+2005-07-10 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * testsuite/libffi.call/cls_5_1_byte.c: New test file.
-+ * testsuite/libffi.call/cls_6_1_byte.c: Likewise.
-+ * testsuite/libffi.call/cls_7_1_byte.c: Likewise.
-+
-+2005-07-05 Randolph Chung <tausq@debian.org>
-+
-+ * src/pa/ffi.c (ffi_struct_type): Rename FFI_TYPE_SMALL_STRUCT1
-+ as FFI_TYPE_SMALL_STRUCT3. Break out handling for 5-7 byte
-+ structures. Kill compilation warnings.
-+ (ffi_closure_inner_LINUX): Print return values as hex in debug
-+ message. Rename FFI_TYPE_SMALL_STRUCT1 as FFI_TYPE_SMALL_STRUCT3.
-+ Properly handle 5-7 byte structure returns.
-+ * src/pa/ffitarget.h (FFI_TYPE_SMALL_STRUCT1)
-+ (FFI_TYPE_SMALL_STRUCT2): Remove.
-+ (FFI_TYPE_SMALL_STRUCT3, FFI_TYPE_SMALL_STRUCT5)
-+ (FFI_TYPE_SMALL_STRUCT6, FFI_TYPE_SMALL_STRUCT7): Define.
-+ * src/pa/linux.S: Mark source file as using PA1.1 assembly.
-+ (checksmst1, checksmst2): Remove.
-+ (checksmst3): Optimize handling of 3-byte struct returns.
-+ (checksmst567): Properly handle 5-7 byte struct returns.
-+
-+2005-06-15 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-+
-+ PR libgcj/21943
-+ * src/mips/n32.S: Enforce PIC code.
-+ * src/mips/o32.S: Likewise.
-+
-+2005-06-15 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-+
-+ * configure.ac: Treat i*86-*-solaris2.10 and up as X86_64.
-+ * configure: Regenerate.
-+
-+2005-06-01 Alan Modra <amodra@bigpond.net.au>
-+
-+ * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't use JUMPTARGET
-+ to call ffi_closure_helper_SYSV. Append @local instead.
-+ * src/powerpc/sysv.S (ffi_call_SYSV): Likewise for ffi_prep_args_SYSV.
-+
-+2005-05-17 Kelley Cook <kcook@gcc.gnu.org>
-+
-+ * configure.ac: Use AC_C_BIGENDIAN instead of AC_C_BIGENDIAN_CROSS.
-+ Use AC_CHECK_SIZEOF instead of AC_COMPILE_CHECK_SIZEOF.
-+ * Makefile.am (ACLOCAL_AMFLAGS): Remove -I ../config.
-+ * aclocal.m4, configure, fficonfig.h.in, Makefile.in,
-+ include/Makefile.in, testsuite/Makefile.in: Regenerate.
-+
-+2005-05-09 Mike Stump <mrs@apple.com>
-+
-+ * configure: Regenerate.
-+
-+2005-05-08 Richard Henderson <rth@redhat.com>
-+
-+ PR libffi/21285
-+ * src/alpha/osf.S: Update unwind into to match code.
-+
-+2005-05-04 Andreas Degert <ad@papyrus-gmbh.de>
-+ Richard Henderson <rth@redhat.com>
-+
-+ * src/x86/ffi64.c (ffi_prep_cif_machdep): Save sse-used flag in
-+ bit 11 of flags.
-+ (ffi_call): Mask return type field. Pass ssecount to ffi_call_unix64.
-+ (ffi_prep_closure): Set carry bit if sse-used flag set.
-+ * src/x86/unix64.S (ffi_call_unix64): Add ssecount argument.
-+ Only load sse registers if ssecount non-zero.
-+ (ffi_closure_unix64): Only save sse registers if carry set on entry.
-+
-+2005-04-29 Ralf Corsepius <ralf.corsepius@rtems.org>
-+
-+ * configure.ac: Add i*86-*-rtems*, sparc*-*-rtems*,
-+ powerpc-*rtems*, arm*-*-rtems*, sh-*-rtems*.
-+ * configure: Regenerate.
-+
-+2005-04-20 Hans-Peter Nilsson <hp@axis.com>
-+
-+ * testsuite/lib/libffi-dg.exp (libffi-dg-test-1): In regsub use,
-+ have Tcl8.3-compatible intermediate variable.
-+
-+2005-04-18 Simon Posnjak <simon.posnjak@siol.net>
-+ Hans-Peter Nilsson <hp@axis.com>
-+
-+ * Makefile.am: Add CRIS support.
-+ * configure.ac: Likewise.
-+ * Makefile.in, configure, testsuite/Makefile.in,
-+ include/Makefile.in: Regenerate.
-+ * src/cris: New directory.
-+ * src/cris/ffi.c, src/cris/sysv.S, src/cris/ffitarget.h: New files.
-+ * src/prep_cif.c (ffi_prep_cif): Wrap in #ifndef __CRIS__.
-+
-+ * testsuite/lib/libffi-dg.exp (libffi-dg-test-1): Replace \n with
-+ \r?\n in output tests.
-+
-+2005-04-12 Mike Stump <mrs@apple.com>
-+
-+ * configure: Regenerate.
-+
-+2005-03-30 Hans Boehm <Hans.Boehm@hp.com>
-+
-+ * src/ia64/ffitarget.h (ffi_arg): Use long long instead of DI.
-+
-+2005-03-30 Steve Ellcey <sje@cup.hp.com>
-+
-+ * src/ia64/ffitarget.h (ffi_arg) ADD DI attribute.
-+ (ffi_sarg) Ditto.
-+ * src/ia64/unix.S (ffi_closure_unix): Extend gp
-+ to 64 bits in ILP32 mode.
-+ Load 64 bits even for short data.
-+
-+2005-03-23 Mike Stump <mrs@apple.com>
-+
-+ * src/powerpc/darwin.S: Update for -m64 multilib.
-+ * src/powerpc/darwin_closure.S: Likewise.
-+
-+2005-03-21 Zack Weinberg <zack@codesourcery.com>
-+
-+ * configure.ac: Do not invoke TL_AC_GCC_VERSION.
-+ Do not set tool_include_dir.
-+ * aclocal.m4, configure, Makefile.in, testsuite/Makefile.in:
-+ Regenerate.
-+ * include/Makefile.am: Set gcc_version and toollibffidir.
-+ * include/Makefile.in: Regenerate.
-+
-+2005-02-22 Andrew Haley <aph@redhat.com>
-+
-+ * src/powerpc/ffi.c (ffi_prep_cif_machdep): Bump alignment to
-+ odd-numbered register pairs for 64-bit integer types.
-+
-+2005-02-23 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ PR libffi/20104
-+ * testsuite/libffi.call/return_ll1.c: New test case.
-+
-+2005-02-11 Janis Johnson <janis187@us.ibm.com>
-+
-+ * testsuite/libffi.call/cls_align_longdouble.c: Remove dg-options.
-+ * testsuite/libffi.call/float.c: Ditto.
-+ * testsuite/libffi.call/float2.c: Ditto.
-+ * testsuite/libffi.call/float3.c: Ditto.
-+
-+2005-02-08 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * src/frv/ffitarget.h: Remove PPC stuff which does not belong to frv.
-+
-+2005-01-12 Eric Botcazou <ebotcazou@libertysurf.fr>
-+
-+ * testsuite/libffi.special/special.exp (cxx_options): Add
-+ -shared-libgcc.
-+
-+2004-12-31 Richard Henderson <rth@redhat.com>
-+
-+ * src/types.c (FFI_AGGREGATE_TYPEDEF): Remove.
-+ (FFI_TYPEDEF): Rename from FFI_INTEGRAL_TYPEDEF. Replace size and
-+ offset parameters with a type parameter; deduce size and structure
-+ alignment. Update all users.
-+
-+2004-12-31 Richard Henderson <rth@redhat.com>
-+
-+ * src/types.c (FFI_TYPE_POINTER): Define with sizeof.
-+ (FFI_TYPE_LONGDOUBLE): Fix for ia64.
-+ * src/ia64/ffitarget.h (struct ffi_ia64_trampoline_struct): Move
-+ into ffi_prep_closure.
-+ * src/ia64/ia64_flags.h, src/ia64/ffi.c, src/ia64/unix.S: Rewrite
-+ from scratch.
-+
-+2004-12-27 Richard Henderson <rth@redhat.com>
-+
-+ * src/x86/unix64.S: Fix typo in unwind info.
-+
-+2004-12-25 Richard Henderson <rth@redhat.com>
-+
-+ * src/x86/ffi64.c (struct register_args): Rename from stackLayout.
-+ (enum x86_64_reg_class): Add X86_64_COMPLEX_X87_CLASS.
-+ (merge_classes): Check for it.
-+ (SSE_CLASS_P): New.
-+ (classify_argument): Pass byte_offset by value; perform all updates
-+ inside struct case.
-+ (examine_argument): Add classes argument; handle
-+ X86_64_COMPLEX_X87_CLASS.
-+ (ffi_prep_args): Merge into ...
-+ (ffi_call): ... here. Share stack frame with ffi_call_unix64.
-+ (ffi_prep_cif_machdep): Setup cif->flags for proper structure return.
-+ (ffi_fill_return_value): Remove.
-+ (ffi_prep_closure): Remove dead assert.
-+ (ffi_closure_unix64_inner): Rename from ffi_closure_UNIX64_inner.
-+ Rewrite to use struct register_args instead of va_list. Create
-+ flags for handling structure returns.
-+ * src/x86/unix64.S: Remove dead strings.
-+ (ffi_call_unix64): Rename from ffi_call_UNIX64. Rewrite to share
-+ stack frame with ffi_call. Handle structure returns properly.
-+ (float2sse, floatfloat2sse, double2sse): Remove.
-+ (sse2float, sse2double, sse2floatfloat): Remove.
-+ (ffi_closure_unix64): Rename from ffi_closure_UNIX64. Rewrite
-+ to handle structure returns properly.
-+
-+2004-12-08 David Edelsohn <edelsohn@gnu.org>
-+
-+ * Makefile.am (AM_MAKEFLAGS): Remove duplicate LIBCFLAGS and
-+ PICFLAG.
-+ * Makefile.in: Regenerated.
-+
-+2004-12-02 Richard Sandiford <rsandifo@redhat.com>
-+
-+ * configure.ac: Use TL_AC_GCC_VERSION to set gcc_version.
-+ * configure, aclocal.m4, Makefile.in: Regenerate.
-+ * include/Makefile.in, testsuite/Makefile.in: Regenerate.
-+
-+2004-11-29 Kelley Cook <kcook@gcc.gnu.org>
-+
-+ * configure: Regenerate for libtool change.
-+
-+2004-11-25 Kelley Cook <kcook@gcc.gnu.org>
-+
-+ * configure: Regenerate for libtool reversion.
-+
-+2004-11-24 Kelley Cook <kcook@gcc.gnu.org>
-+
-+ * configure: Regenerate for libtool change.
-+
-+2004-11-23 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
-+
-+ * testsuite/lib/libffi-dg.exp: Use new procs in target-libpath.exp.
-+
-+2004-11-23 Richard Sandiford <rsandifo@redhat.com>
-+
-+ * src/mips/o32.S (ffi_call_O32, ffi_closure_O32): Use jalr instead
-+ of jal. Use an absolute encoding for the frame information.
-+
-+2004-11-23 Kelley Cook <kcook@gcc.gnu.org>
-+
-+ * Makefile.am: Remove no-dependencies. Add ACLOCAL_AMFLAGS.
-+ * acinclude.m4: Delete logic for sincludes.
-+ * aclocal.m4, Makefile.in, configure: Regenerate.
-+ * include/Makefile: Likewise.
-+ * testsuite/Makefile: Likewise.
-+
-+2004-11-22 Eric Botcazou <ebotcazou@libertysurf.fr>
-+
-+ * src/sparc/ffi.c (ffi_prep_closure): Align doubles and 64-bit integers
-+ on a 8-byte boundary.
-+ * src/sparc/v8.S (ffi_closure_v8): Reserve frame space for arguments.
-+
-+2004-10-27 Richard Earnshaw <rearnsha@arm.com>
-+
-+ * src/arm/ffi.c (ffi_prep_cif_machdep): Handle functions that return
-+ long long values. Round stack allocation to a multiple of 8 bytes
-+ for ATPCS compatibility.
-+ * src/arm/sysv.S (ffi_call_SYSV): Rework to avoid use of APCS register
-+ names. Handle returning long long types. Add Thumb and interworking
-+ support. Improve soft-float code.
-+
-+2004-10-27 Richard Earnshaw <rearnsha@arm.com>
-+
-+ * testsuite/lib/libffi-db.exp (load_gcc_lib): New function.
-+ (libffi_exit): New function.
-+ (libffi_init): Build the testglue wrapper if needed.
-+
-+2004-10-25 Eric Botcazou <ebotcazou@libertysurf.fr>
-+
-+ PR other/18138
-+ * testsuite/lib/libffi-dg.exp: Accept more than one multilib libgcc.
-+
-+2004-10-25 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
-+
-+ * src/m32r/libffitarget.h (FFI_CLOSURES): Set to 0.
-+
-+2004-10-20 Kaz Kojima <kkojima@gcc.gnu.org>
-+
-+ * src/sh/sysv.S (ffi_call_SYSV): Don't align for double data.
-+ * testsuite/libffi.call/float3.c: New test case.
-+
-+2004-10-18 Kaz Kojima <kkojima@gcc.gnu.org>
-+
-+ * src/sh/ffi.c (ffi_prep_closure): Set T bit in trampoline for
-+ the function returning a structure pointed with R2.
-+ * src/sh/sysv.S (ffi_closure_SYSV): Use R2 as the pointer to
-+ the structure return value if T bit set. Emit position
-+ independent code and EH data if PIC.
-+
-+2004-10-13 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
-+
-+ * Makefile.am: Add m32r support.
-+ * configure.ac: Likewise.
-+ * Makefile.in: Regenerate.
-+ * confiugre: Regenerate.
-+ * src/types.c: Add m32r port to FFI_INTERNAL_TYPEDEF
-+ (uint64, sint64, double, longdouble)
-+ * src/m32r: New directory.
-+ * src/m32r/ffi.c: New file.
-+ * src/m32r/sysv.S: Likewise.
-+ * src/m32r/ffitarget.h: Likewise.
-+
-+2004-10-02 Kaz Kojima <kkojima@gcc.gnu.org>
-+
-+ * testsuite/libffi.call/negint.c: New test case.
-+
-+2004-09-14 H.J. Lu <hongjiu.lu@intel.com>
-+
-+ PR libgcj/17465
-+ * testsuite/lib/libffi-dg.exp: Don't use global ld_library_path.
-+ Set up LD_LIBRARY_PATH, SHLIB_PATH, LD_LIBRARYN32_PATH,
-+ LD_LIBRARY64_PATH, LD_LIBRARY_PATH_32, LD_LIBRARY_PATH_64 and
-+ DYLD_LIBRARY_PATH.
-+
-+2004-09-05 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * testsuite/libffi.call/many_win32.c: Remove whitespaces.
-+ * testsuite/libffi.call/promotion.c: Likewise.
-+ * testsuite/libffi.call/return_ll.c: Remove unused var. Cleanup
-+ whitespaces.
-+ * testsuite/libffi.call/return_sc.c: Likewise.
-+ * testsuite/libffi.call/return_uc.c: Likewise.
-+
-+2004-09-05 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * src/powerpc/darwin.S: Fix comments and identation.
-+ * src/powerpc/darwin_closure.S: Likewise.
-+
-+2004-09-02 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * src/powerpc/ffi_darwin.c: Add flag for longdouble return values.
-+ (ffi_prep_args): Handle longdouble arguments.
-+ (ffi_prep_cif_machdep): Set flags for longdouble. Calculate space for
-+ longdouble.
-+ (ffi_closure_helper_DARWIN): Add closure handling for longdouble.
-+ * src/powerpc/darwin.S (_ffi_call_DARWIN): Add handling of longdouble
-+ values.
-+ * src/powerpc/darwin_closure.S (_ffi_closure_ASM): Likewise.
-+ * src/types.c: Defined longdouble size and alignment for darwin.
-+
-+2004-09-02 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * src/powerpc/aix.S: Remove whitespaces.
-+ * src/powerpc/aix_closure.S: Likewise.
-+ * src/powerpc/asm.h: Likewise.
-+ * src/powerpc/ffi.c: Likewise.
-+ * src/powerpc/ffitarget.h: Likewise.
-+ * src/powerpc/linux64.S: Likewise.
-+ * src/powerpc/linux64_closure.S: Likewise.
-+ * src/powerpc/ppc_closure.S: Likewise.
-+ * src/powerpc/sysv.S: Likewise.
-+
-+2004-08-30 Anthony Green <green@redhat.com>
-+
-+ * Makefile.am: Add frv support.
-+ * Makefile.in, testsuite/Makefile.in: Rebuilt.
-+ * configure.ac: Read configure.host.
-+ * configure.in: Read configure.host.
-+ * configure.host: New file. frv-elf needs libgloss.
-+ * include/ffi.h.in: Force ffi_closure to have a nice big (8)
-+ alignment. This is needed to frv and shouldn't harm the others.
-+ * include/ffi_common.h (ALIGN_DOWN): New macro.
-+ * src/frv/ffi.c, src/frv/ffitarget.h, src/frv/eabi.S: New files.
-+
-+2004-08-24 David Daney <daney@avtrex.com>
-+
-+ * testsuite/libffi.call/closure_fn0.c: Xfail mips64* instead of mips*.
-+ * testsuite/libffi.call/closure_fn1.c: Likewise.
-+ * testsuite/libffi.call/closure_fn2.c Likewise.
-+ * testsuite/libffi.call/closure_fn3.c: Likewise.
-+ * testsuite/libffi.call/closure_fn4.c: Likewise.
-+ * testsuite/libffi.call/closure_fn5.c: Likewise.
-+ * testsuite/libffi.call/cls_18byte.c: Likewise.
-+ * testsuite/libffi.call/cls_19byte.c: Likewise.
-+ * testsuite/libffi.call/cls_1_1byte.c: Likewise.
-+ * testsuite/libffi.call/cls_20byte.c: Likewise.
-+ * testsuite/libffi.call/cls_20byte1.c: Likewise.
-+ * testsuite/libffi.call/cls_24byte.c: Likewise.
-+ * testsuite/libffi.call/cls_2byte.c: Likewise.
-+ * testsuite/libffi.call/cls_3_1byte.c: Likewise.
-+ * testsuite/libffi.call/cls_3byte1.c: Likewise.
-+ * testsuite/libffi.call/cls_3byte2.c: Likewise.
-+ * testsuite/libffi.call/cls_4_1byte.c: Likewise.
-+ * testsuite/libffi.call/cls_4byte.c: Likewise.
-+ * testsuite/libffi.call/cls_64byte.c: Likewise.
-+ * testsuite/libffi.call/cls_6byte.c: Likewise.
-+ * testsuite/libffi.call/cls_7byte.c: Likewise.
-+ * testsuite/libffi.call/cls_8byte.c: Likewise.
-+ * testsuite/libffi.call/cls_9byte1.c: Likewise.
-+ * testsuite/libffi.call/cls_9byte2.c: Likewise.
-+ * testsuite/libffi.call/cls_align_double.c: Likewise.
-+ * testsuite/libffi.call/cls_align_float.c: Likewise.
-+ * testsuite/libffi.call/cls_align_longdouble.c: Likewise.
-+ * testsuite/libffi.call/cls_align_pointer.c: Likewise.
-+ * testsuite/libffi.call/cls_align_sint16.c: Likewise.
-+ * testsuite/libffi.call/cls_align_sint32.c: Likewise.
-+ * testsuite/libffi.call/cls_align_sint64.c: Likewise.
-+ * testsuite/libffi.call/cls_align_uint16.c: Likewise.
-+ * testsuite/libffi.call/cls_align_uint32.c: Likewise.
-+ * testsuite/libffi.call/cls_align_uint64.c: Likewise.
-+ * testsuite/libffi.call/cls_double.c: Likewise.
-+ * testsuite/libffi.call/cls_float.c: Likewise.
-+ * testsuite/libffi.call/cls_multi_schar.c: Likewise.
-+ * testsuite/libffi.call/cls_multi_sshort.c: Likewise.
-+ * testsuite/libffi.call/cls_multi_sshortchar.c: Likewise.
-+ * testsuite/libffi.call/cls_multi_uchar.c: Likewise.
-+ * testsuite/libffi.call/cls_multi_ushort.c: Likewise.
-+ * testsuite/libffi.call/cls_multi_ushortchar.c: Likewise.
-+ * testsuite/libffi.call/cls_schar.c: Likewise.
-+ * testsuite/libffi.call/cls_sint.c: Likewise.
-+ * testsuite/libffi.call/cls_sshort.c: Likewise.
-+ * testsuite/libffi.call/cls_uchar.c: Likewise.
-+ * testsuite/libffi.call/cls_uint.c: Likewise.
-+ * testsuite/libffi.call/cls_ulonglong.c: Likewise.
-+ * testsuite/libffi.call/cls_ushort.c: Likewise.
-+ * testsuite/libffi.call/nested_struct.c: Likewise.
-+ * testsuite/libffi.call/nested_struct1.c: Likewise.
-+ * testsuite/libffi.call/nested_struct2.c: Likewise.
-+ * testsuite/libffi.call/nested_struct3.c: Likewise.
-+ * testsuite/libffi.call/problem1.c: Likewise.
-+ * testsuite/libffi.special/unwindtest.cc: Likewise.
-+ * testsuite/libffi.call/cls_12byte.c: Likewise and set return value
-+ to zero.
-+ * testsuite/libffi.call/cls_16byte.c: Likewise.
-+ * testsuite/libffi.call/cls_5byte.c: Likewise.
-+
-+2004-08-23 David Daney <daney@avtrex.com>
-+
-+ PR libgcj/13141
-+ * src/mips/ffitarget.h (FFI_O32_SOFT_FLOAT): New ABI.
-+ * src/mips/ffi.c (ffi_prep_args): Fix alignment calculation.
-+ (ffi_prep_cif_machdep): Handle FFI_O32_SOFT_FLOAT floating point
-+ parameters and return types.
-+ (ffi_call): Handle FFI_O32_SOFT_FLOAT ABI.
-+ (ffi_prep_closure): Ditto.
-+ (ffi_closure_mips_inner_O32): Handle FFI_O32_SOFT_FLOAT ABI, fix
-+ alignment calculations.
-+ * src/mips/o32.S (ffi_closure_O32): Don't use floating point
-+ instructions if FFI_O32_SOFT_FLOAT, make stack frame ABI compliant.
-+
-+2004-08-14 Casey Marshall <csm@gnu.org>
-+
-+ * src/mips/ffi.c (ffi_pref_cif_machdep): set `cif->flags' to
-+ contain `FFI_TYPE_UINT64' as return type for any 64-bit
-+ integer (O32 ABI only).
-+ (ffi_prep_closure): new function.
-+ (ffi_closure_mips_inner_O32): new function.
-+ * src/mips/ffitarget.h: Define `FFI_CLOSURES' and
-+ `FFI_TRAMPOLINE_SIZE' appropriately if the ABI is o32.
-+ * src/mips/o32.S (ffi_call_O32): add labels for .eh_frame. Return
-+ 64 bit integers correctly.
-+ (ffi_closure_O32): new function.
-+ Added DWARF-2 unwind info for both functions.
-+
-+2004-08-10 Andrew Haley <aph@redhat.com>
-+
-+ * src/x86/ffi64.c (ffi_prep_args ): 8-align all stack arguments.
-+
-+2004-08-01 Robert Millan <robertmh@gnu.org>
-+
-+ * configure.ac: Detect knetbsd-gnu and kfreebsd-gnu.
-+ * configure: Regenerate.
-+
-+2004-07-30 Maciej W. Rozycki <macro@linux-mips.org>
-+
-+ * acinclude.m4 (AC_FUNC_MMAP_BLACKLIST): Check for <sys/mman.h>
-+ and mmap() explicitly instead of relying on preset autoconf cache
-+ variables.
-+ * aclocal.m4: Regenerate.
-+ * configure: Regenerate.
-+
-+2004-07-11 Ulrich Weigand <uweigand@de.ibm.com>
-+
-+ * src/s390/ffi.c (ffi_prep_args): Fix C aliasing violation.
-+ (ffi_check_float_struct): Remove unused prototype.
-+
-+2004-06-30 Geoffrey Keating <geoffk@apple.com>
-+
-+ * src/powerpc/ffi_darwin.c (flush_icache): ';' is a comment
-+ character on Darwin, use '\n\t' instead.
-+
-+2004-06-26 Matthias Klose <doko@debian.org>
-+
-+ * libtool-version: Fix typo in revision/age.
-+
-+2004-06-17 Matthias Klose <doko@debian.org>
-+
-+ * libtool-version: New.
-+ * Makefile.am (libffi_la_LDFLAGS): Use -version-info for soname.
-+ * Makefile.in: Regenerate.
-+
-+2004-06-15 Paolo Bonzini <bonzini@gnu.org>
-+
-+ * Makefile.am: Remove useless multilib rules.
-+ * Makefile.in: Regenerate.
-+ * aclocal.m4: Regenerate with automake 1.8.5.
-+ * configure.ac: Remove useless multilib configury.
-+ * configure: Regenerate.
-+
-+2004-06-15 Paolo Bonzini <bonzini@gnu.org>
-+
-+ * .cvsignore: New file.
-+
-+2004-06-10 Jakub Jelinek <jakub@redhat.com>
-+
-+ * src/ia64/unix.S (ffi_call_unix): Insert group barrier break
-+ fp_done.
-+ (ffi_closure_UNIX): Fix f14/f15 adjustment if FLOAT_SZ is ever
-+ changed from 8.
-+
-+2004-06-06 Sean McNeil <sean@mcneil.com>
-+
-+ * configure.ac: Add x86_64-*-freebsd* support.
-+ * configure: Regenerate.
-+
-+2004-04-26 Joe Buck <jbuck@welsh-buck.org>
-+
-+ Bug 15093
-+ * configure.ac: Test for existence of mmap and sys/mman.h before
-+ checking blacklist. Fix suggested by Jim Wilson.
-+ * configure: Regenerate.
-+
-+2004-04-26 Matt Austern <austern@apple.com>
-+
-+ * src/powerpc/darwin.S: Go through a non-lazy pointer for initial
-+ FDE location.
-+ * src/powerpc/darwin_closure.S: Likewise.
-+
-+2004-04-24 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * testsuite/libffi.call/cls_multi_schar.c (main): Fix initialization
-+ error. Reported by Thomas Heller <theller@python.net>.
-+ * testsuite/libffi.call/cls_multi_sshort.c (main): Likewise.
-+ * testsuite/libffi.call/cls_multi_ushort.c (main): Likewise.
-+
-+2004-03-20 Matthias Klose <doko@debian.org>
-+
-+ * src/pa/linux.S: Fix typo.
-+
-+2004-03-19 Matthias Klose <doko@debian.org>
-+
-+ * Makefile.am: Update.
-+ * Makefile.in: Regenerate.
-+ * src/pa/ffi.h.in: Remove.
-+ * src/pa/ffitarget.h: New file.
-+
-+2004-02-10 Randolph Chung <tausq@debian.org>
-+
-+ * Makefile.am: Add PA support.
-+ * Makefile.in: Regenerate.
-+ * include/Makefile.in: Regenerate.
-+ * configure.ac: Add PA target.
-+ * configure: Regenerate.
-+ * src/pa/ffi.c: New file.
-+ * src/pa/ffi.h.in: Add PA support.
-+ * src/pa/linux.S: New file.
-+ * prep_cif.c: Add PA support.
-+
-+2004-03-16 Hosaka Yuji <hos@tamanegi.org>
-+
-+ * src/types.c: Fix alignment size of X86_WIN32 case int64 and
-+ double.
-+ * src/x86/ffi.c (ffi_prep_args): Replace ecif->cif->rtype->type
-+ with ecif->cif->flags.
-+ (ffi_call, ffi_prep_incoming_args_SYSV): Replace cif->rtype->type
-+ with cif->flags.
-+ (ffi_prep_cif_machdep): Add X86_WIN32 struct case.
-+ (ffi_closure_SYSV): Add 1 or 2-bytes struct case for X86_WIN32.
-+ * src/x86/win32.S (retstruct1b, retstruct2b, sc_retstruct1b,
-+ sc_retstruct2b): Add for 1 or 2-bytes struct case.
-+
-+2004-03-15 Kelley Cook <kcook@gcc.gnu.org>
-+
-+ * configure.in: Rename file to ...
-+ * configure.ac: ... this.
-+ * fficonfig.h.in: Regenerate.
-+ * Makefile.in: Regenerate.
-+ * include/Makefile.in: Regenerate.
-+ * testsuite/Makefile.in: Regenerate.
-+
-+2004-03-12 Matt Austern <austern@apple.com>
-+
-+ * src/powerpc/darwin.S: Fix EH information so it corresponds to
-+ changes in EH format resulting from addition of linkonce support.
-+ * src/powerpc/darwin_closure.S: Likewise.
-+
-+2004-03-11 Andreas Tobler <a.tobler@schweiz.ch>
-+ Paolo Bonzini <bonzini@gnu.org>
-+
-+ * Makefile.am (AUTOMAKE_OPTIONS): Set them.
-+ Remove VPATH. Remove rules for object files. Remove multilib support.
-+ (AM_CCASFLAGS): Add.
-+ * configure.in (AC_CONFIG_HEADERS): Relace AM_CONFIG_HEADER.
-+ (AC_PREREQ): Bump version to 2.59.
-+ (AC_INIT): Fill with version info and bug address.
-+ (ORIGINAL_LD_FOR_MULTILIBS): Remove.
-+ (AM_ENABLE_MULTILIB): Use this instead of AC_ARG_ENABLE.
-+ De-precious CC so that the right flags are passed down to multilibs.
-+ (AC_MSG_ERROR): Replace obsolete macro AC_ERROR.
-+ (AC_CONFIG_FILES): Replace obsolete macro AC_LINK_FILES.
-+ (AC_OUTPUT): Reorganize the output with AC_CONFIG_COMMANDS.
-+ * configure: Rebuilt.
-+ * aclocal.m4: Likewise.
-+ * Makefile.in, include/Makefile.in, testsuite/Makefile.in: Likewise.
-+ * fficonfig.h.in: Likewise.
-+
-+2004-03-11 Andreas Schwab <schwab@suse.de>
-+
-+ * src/ia64/ffi.c (ffi_prep_incoming_args_UNIX): Get floating point
-+ arguments from fp registers only for the first 8 parameter slots.
-+ Don't convert a float parameter when passed in memory.
-+
-+2004-03-09 Hans-Peter Nilsson <hp@axis.com>
-+
-+ * configure: Regenerate for config/accross.m4 correction.
-+
-+2004-02-25 Matt Kraai <kraai@alumni.cmu.edu>
-+
-+ * src/powerpc/ffi.c (ffi_prep_args_SYSV): Change
-+ ecif->cif->bytes to bytes.
-+ (ffi_prep_cif_machdep): Add braces around nested if statement.
-+
-+2004-02-09 Alan Modra <amodra@bigpond.net.au>
-+
-+ * src/types.c (pointer): POWERPC64 has 8 byte pointers.
-+
-+ * src/powerpc/ffi.c (ffi_prep_args64): Correct long double handling.
-+ (ffi_closure_helper_LINUX64): Fix typo.
-+ * testsuite/libffi.call/cls_align_longdouble.c: Pass -mlong-double-128
-+ for powerpc64-*-*.
-+ * testsuite/libffi.call/float.c: Likewise.
-+ * testsuite/libffi.call/float2.c: Likewise.
-+
-+2004-02-08 Alan Modra <amodra@bigpond.net.au>
-+
-+ * src/powerpc/ffi.c (ffi_prep_cif_machdep <FFI_LINUX64>): Correct
-+ long double function return and long double arg handling.
-+ (ffi_closure_helper_LINUX64): Formatting. Delete unused "ng" var.
-+ Use "end_pfr" instead of "nf". Correct long double handling.
-+ Localise "temp".
-+ * src/powerpc/linux64.S (ffi_call_LINUX64): Save f2 long double
-+ return value.
-+ * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Allocate
-+ space for long double return value. Adjust stack frame and offsets.
-+ Load f2 long double return.
-+
-+2004-02-07 Alan Modra <amodra@bigpond.net.au>
-+
-+ * src/types.c: Use 16 byte long double for POWERPC64.
-+
-+2004-01-25 Eric Botcazou <ebotcazou@libertysurf.fr>
-+
-+ * src/sparc/ffi.c (ffi_prep_args_v9): Shift the parameter array
-+ when the structure return address is passed in %o0.
-+ (ffi_V9_return_struct): Rename into ffi_v9_layout_struct.
-+ (ffi_v9_layout_struct): Align the field following a nested structure
-+ on a word boundary. Use memmove instead of memcpy.
-+ (ffi_call): Update call to ffi_V9_return_struct.
-+ (ffi_prep_closure): Define 'ctx' only for V8.
-+ (ffi_closure_sparc_inner): Clone into ffi_closure_sparc_inner_v8
-+ and ffi_closure_sparc_inner_v9.
-+ (ffi_closure_sparc_inner_v8): Return long doubles by reference.
-+ Always skip the structure return address. For structures and long
-+ doubles, copy the argument directly.
-+ (ffi_closure_sparc_inner_v9): Skip the structure return address only
-+ if required. Shift the maximum floating-point slot accordingly. For
-+ big structures, copy the argument directly; otherwise, left-justify the
-+ argument and call ffi_v9_layout_struct to lay out the structure on
-+ the stack.
-+ * src/sparc/v8.S: Undef STACKFRAME before defining it.
-+ (ffi_closure_v8): Pass the structure return address. Update call to
-+ ffi_closure_sparc_inner_v8. Short-circuit FFI_TYPE_INT handling.
-+ Skip the 'unimp' insn when returning long doubles and structures.
-+ * src/sparc/v9.S: Undef STACKFRAME before defining it.
-+ (ffi_closure_v9): Increase the frame size by 2 words. Short-circuit
-+ FFI_TYPE_INT handling. Load structures both in integers and
-+ floating-point registers on return.
-+ * README: Update status of the SPARC port.
-+
-+2004-01-24 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * testsuite/libffi.call/pyobjc-tc.c (main): Treat result value
-+ as of type ffi_arg.
-+ * testsuite/libffi.call/struct3.c (main): Fix CHECK.
-+
-+2004-01-22 Ulrich Weigand <uweigand@de.ibm.com>
-+
-+ * testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Treat result
-+ value as of type ffi_arg, not unsigned int.
-+
-+2004-01-21 Michael Ritzert <ritzert@t-online.de>
-+
-+ * ffi64.c (ffi_prep_args): Cast the RHS of an assignment instead
-+ of the LHS.
-+
-+2004-01-12 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_32 for
-+ Solaris.
-+
-+2004-01-08 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-+
-+ * testsuite/libffi.call/ffitest.h (allocate_mmap): Cast MAP_FAILED
-+ to void *.
-+
-+2003-12-10 Richard Henderson <rth@redhat.com>
-+
-+ * testsuite/libffi.call/cls_align_pointer.c: Cast pointers to
-+ size_t instead of int.
-+
-+2003-12-04 Hosaka Yuji <hos@tamanegi.org>
-+
-+ * testsuite/libffi.call/many_win32.c: Include <float.h>.
-+ * testsuite/libffi.call/many_win32.c (main): Replace variable
-+ int i with unsigned long ul.
-+
-+ * testsuite/libffi.call/cls_align_uint64.c: New test case.
-+ * testsuite/libffi.call/cls_align_sint64.c: Likewise.
-+ * testsuite/libffi.call/cls_align_uint32.c: Likewise.
-+ * testsuite/libffi.call/cls_align_sint32.c: Likewise.
-+ * testsuite/libffi.call/cls_align_uint16.c: Likewise.
-+ * testsuite/libffi.call/cls_align_sint16.c: Likewise.
-+ * testsuite/libffi.call/cls_align_float.c: Likewise.
-+ * testsuite/libffi.call/cls_align_double.c: Likewise.
-+ * testsuite/libffi.call/cls_align_longdouble.c: Likewise.
-+ * testsuite/libffi.call/cls_align_pointer.c: Likewise.
-+
-+2003-12-02 Hosaka Yuji <hos@tamanegi.org>
-+
-+ PR other/13221
-+ * src/x86/ffi.c (ffi_prep_args, ffi_prep_incoming_args_SYSV):
-+ Align arguments to 32 bits.
-+
-+2003-12-01 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ PR other/13221
-+ * testsuite/libffi.call/cls_multi_sshort.c: New test case.
-+ * testsuite/libffi.call/cls_multi_sshortchar.c: Likewise.
-+ * testsuite/libffi.call/cls_multi_uchar.c: Likewise.
-+ * testsuite/libffi.call/cls_multi_schar.c: Likewise.
-+ * testsuite/libffi.call/cls_multi_ushortchar.c: Likewise.
-+ * testsuite/libffi.call/cls_multi_ushort.c: Likewise.
-+
-+ * testsuite/libffi.special/unwindtest.cc: Cosmetics.
-+
-+2003-11-26 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-+
-+ * testsuite/libffi.call/ffitest.h: Include <fcntl.h>.
-+ * testsuite/libffi.special/ffitestcxx.h: Likewise.
-+
-+2003-11-22 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * Makefile.in: Rebuilt.
-+ * configure: Likewise.
-+ * testsuite/libffi.special/unwindtest.cc: Convert the mmap to
-+ the right type.
-+
-+2003-11-21 Andreas Jaeger <aj@suse.de>
-+ Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * acinclude.m4: Add AC_FUNC_MMAP_BLACKLIST.
-+ * configure.in: Call AC_FUNC_MMAP_BLACKLIST.
-+ * Makefile.in: Rebuilt.
-+ * aclocal.m4: Likewise.
-+ * configure: Likewise.
-+ * fficonfig.h.in: Likewise.
-+ * testsuite/lib/libffi-dg.exp: Add include dir.
-+ * testsuite/libffi.call/ffitest.h: Add MMAP definitions.
-+ * testsuite/libffi.special/ffitestcxx.h: Likewise.
-+ * testsuite/libffi.call/closure_fn0.c: Use MMAP functionality
-+ for ffi_closure if available.
-+ * testsuite/libffi.call/closure_fn1.c: Likewise.
-+ * testsuite/libffi.call/closure_fn2.c: Likewise.
-+ * testsuite/libffi.call/closure_fn3.c: Likewise.
-+ * testsuite/libffi.call/closure_fn4.c: Likewise.
-+ * testsuite/libffi.call/closure_fn5.c: Likewise.
-+ * testsuite/libffi.call/cls_12byte.c: Likewise.
-+ * testsuite/libffi.call/cls_16byte.c: Likewise.
-+ * testsuite/libffi.call/cls_18byte.c: Likewise.
-+ * testsuite/libffi.call/cls_19byte.c: Likewise.
-+ * testsuite/libffi.call/cls_1_1byte.c: Likewise.
-+ * testsuite/libffi.call/cls_20byte.c: Likewise.
-+ * testsuite/libffi.call/cls_20byte1.c: Likewise.
-+ * testsuite/libffi.call/cls_24byte.c: Likewise.
-+ * testsuite/libffi.call/cls_2byte.c: Likewise.
-+ * testsuite/libffi.call/cls_3_1byte.c: Likewise.
-+ * testsuite/libffi.call/cls_3byte1.c: Likewise.
-+ * testsuite/libffi.call/cls_3byte2.c: Likewise.
-+ * testsuite/libffi.call/cls_4_1byte.c: Likewise.
-+ * testsuite/libffi.call/cls_4byte.c: Likewise.
-+ * testsuite/libffi.call/cls_5byte.c: Likewise.
-+ * testsuite/libffi.call/cls_64byte.c: Likewise.
-+ * testsuite/libffi.call/cls_6byte.c: Likewise.
-+ * testsuite/libffi.call/cls_7byte.c: Likewise.
-+ * testsuite/libffi.call/cls_8byte.c: Likewise.
-+ * testsuite/libffi.call/cls_9byte1.c: Likewise.
-+ * testsuite/libffi.call/cls_9byte2.c: Likewise.
-+ * testsuite/libffi.call/cls_double.c: Likewise.
-+ * testsuite/libffi.call/cls_float.c: Likewise.
-+ * testsuite/libffi.call/cls_schar.c: Likewise.
-+ * testsuite/libffi.call/cls_sint.c: Likewise.
-+ * testsuite/libffi.call/cls_sshort.c: Likewise.
-+ * testsuite/libffi.call/cls_uchar.c: Likewise.
-+ * testsuite/libffi.call/cls_uint.c: Likewise.
-+ * testsuite/libffi.call/cls_ulonglong.c: Likewise.
-+ * testsuite/libffi.call/cls_ushort.c: Likewise.
-+ * testsuite/libffi.call/nested_struct.c: Likewise.
-+ * testsuite/libffi.call/nested_struct1.c: Likewise.
-+ * testsuite/libffi.call/nested_struct2.c: Likewise.
-+ * testsuite/libffi.call/nested_struct3.c: Likewise.
-+ * testsuite/libffi.call/problem1.c: Likewise.
-+ * testsuite/libffi.special/unwindtest.cc: Likewise.
-+
-+2003-11-20 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * testsuite/lib/libffi-dg.exp: Make the -lgcc_s conditional.
-+
-+2003-11-19 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * testsuite/lib/libffi-dg.exp: Add DYLD_LIBRARY_PATH for darwin.
-+ Add -lgcc_s to additional flags.
-+
-+2003-11-12 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * configure.in, include/Makefile.am: PR libgcj/11147, install
-+ the ffitarget.h header file in a gcc versioned and target
-+ dependent place.
-+ * configure: Regenerated.
-+ * Makefile.in, include/Makefile.in: Likewise.
-+ * testsuite/Makefile.in: Likewise.
-+
-+2003-11-09 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * testsuite/libffi.call/closure_fn0.c: Print result and check
-+ with dg-output to make debugging easier.
-+ * testsuite/libffi.call/closure_fn1.c: Likewise.
-+ * testsuite/libffi.call/closure_fn2.c: Likewise.
-+ * testsuite/libffi.call/closure_fn3.c: Likewise.
-+ * testsuite/libffi.call/closure_fn4.c: Likewise.
-+ * testsuite/libffi.call/closure_fn5.c: Likewise.
-+ * testsuite/libffi.call/cls_12byte.c: Likewise.
-+ * testsuite/libffi.call/cls_16byte.c: Likewise.
-+ * testsuite/libffi.call/cls_18byte.c: Likewise.
-+ * testsuite/libffi.call/cls_19byte.c: Likewise.
-+ * testsuite/libffi.call/cls_1_1byte.c: Likewise.
-+ * testsuite/libffi.call/cls_20byte.c: Likewise.
-+ * testsuite/libffi.call/cls_20byte1.c: Likewise.
-+ * testsuite/libffi.call/cls_24byte.c: Likewise.
-+ * testsuite/libffi.call/cls_2byte.c: Likewise.
-+ * testsuite/libffi.call/cls_3_1byte.c: Likewise.
-+ * testsuite/libffi.call/cls_3byte1.c: Likewise.
-+ * testsuite/libffi.call/cls_3byte2.c: Likewise.
-+ * testsuite/libffi.call/cls_4_1byte.c: Likewise.
-+ * testsuite/libffi.call/cls_4byte.c: Likewise.
-+ * testsuite/libffi.call/cls_5byte.c: Likewise.
-+ * testsuite/libffi.call/cls_64byte.c: Likewise.
-+ * testsuite/libffi.call/cls_6byte.c: Likewise.
-+ * testsuite/libffi.call/cls_7byte.c: Likewise.
-+ * testsuite/libffi.call/cls_8byte.c: Likewise.
-+ * testsuite/libffi.call/cls_9byte1.c: Likewise.
-+ * testsuite/libffi.call/cls_9byte2.c: Likewise.
-+ * testsuite/libffi.call/cls_double.c: Likewise.
-+ * testsuite/libffi.call/cls_float.c: Likewise.
-+ * testsuite/libffi.call/cls_schar.c: Likewise.
-+ * testsuite/libffi.call/cls_sint.c: Likewise.
-+ * testsuite/libffi.call/cls_sshort.c: Likewise.
-+ * testsuite/libffi.call/cls_uchar.c: Likewise.
-+ * testsuite/libffi.call/cls_uint.c: Likewise.
-+ * testsuite/libffi.call/cls_ulonglong.c: Likewise.
-+ * testsuite/libffi.call/cls_ushort.c: Likewise.
-+ * testsuite/libffi.call/problem1.c: Likewise.
-+
-+ * testsuite/libffi.special/unwindtest.cc: Make ffi_closure
-+ static.
-+
-+2003-11-08 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * testsuite/libffi.call/cls_9byte2.c: New test case.
-+ * testsuite/libffi.call/cls_9byte1.c: Likewise.
-+ * testsuite/libffi.call/cls_64byte.c: Likewise.
-+ * testsuite/libffi.call/cls_20byte1.c: Likewise.
-+ * testsuite/libffi.call/cls_19byte.c: Likewise.
-+ * testsuite/libffi.call/cls_18byte.c: Likewise.
-+ * testsuite/libffi.call/closure_fn4.c: Likewise.
-+ * testsuite/libffi.call/closure_fn5.c: Likewise.
-+ * testsuite/libffi.call/cls_schar.c: Likewise.
-+ * testsuite/libffi.call/cls_sint.c: Likewise.
-+ * testsuite/libffi.call/cls_sshort.c: Likewise.
-+ * testsuite/libffi.call/nested_struct2.c: Likewise.
-+ * testsuite/libffi.call/nested_struct3.c: Likewise.
-+
-+2003-11-08 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * testsuite/libffi.call/cls_double.c: Do a check on the result.
-+ * testsuite/libffi.call/cls_uchar.c: Likewise.
-+ * testsuite/libffi.call/cls_uint.c: Likewise.
-+ * testsuite/libffi.call/cls_ulonglong.c: Likewise.
-+ * testsuite/libffi.call/cls_ushort.c: Likewise.
-+ * testsuite/libffi.call/return_sc.c: Cleanup whitespaces.
-+
-+2003-11-06 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * src/prep_cif.c (ffi_prep_cif): Move the validity check after
-+ the initialization.
-+
-+2003-10-23 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * src/java_raw_api.c (ffi_java_ptrarray_to_raw): Replace
-+ FFI_ASSERT(FALSE) with FFI_ASSERT(0).
-+
-+2003-10-22 David Daney <ddaney@avtrex.com>
-+
-+ * src/mips/ffitarget.h: Replace undefined UINT32 and friends with
-+ __attribute__((__mode__(__SI__))) and friends.
-+
-+2003-10-22 Andreas Schwab <schwab@suse.de>
-+
-+ * src/ia64/ffi.c: Replace FALSE/TRUE with false/true.
-+
-+2003-10-21 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * configure.in: AC_LINK_FILES(ffitarget.h).
-+ * configure: Regenerate.
-+ * Makefile.in: Likewise.
-+ * include/Makefile.in: Likewise.
-+ * testsuite/Makefile.in: Likewise.
-+ * fficonfig.h.in: Likewise.
-+
-+2003-10-21 Paolo Bonzini <bonzini@gnu.org>
-+ Richard Henderson <rth@redhat.com>
-+
-+ Avoid that ffi.h includes fficonfig.h.
-+
-+ * Makefile.am (EXTRA_DIST): Include ffitarget.h files
-+ (TARGET_SRC_MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX.
-+ (TARGET_SRC_MIPS_SGI): Removed.
-+ (MIPS_GCC): Renamed to TARGET_SRC_MIPS_IRIX.
-+ (MIPS_SGI): Removed.
-+ (CLEANFILES): Removed.
-+ (mostlyclean-am, clean-am, mostlyclean-sub, clean-sub): New
-+ targets.
-+ * acconfig.h: Removed.
-+ * configure.in: Compute sizeofs only for double and long double.
-+ Use them to define and subst HAVE_LONG_DOUBLE. Include comments
-+ into AC_DEFINE instead of using acconfig.h. Create
-+ include/ffitarget.h instead of include/fficonfig.h. Rename
-+ MIPS_GCC to MIPS_IRIX, drop MIPS_SGI since we are in gcc's tree.
-+ AC_DEFINE EH_FRAME_FLAGS.
-+ * include/Makefile.am (DISTCLEANFILES): New automake macro.
-+ (hack_DATA): Add ffitarget.h.
-+ * include/ffi.h.in: Remove all system specific definitions.
-+ Declare raw API even if it is not installed, why bother?
-+ Use limits.h instead of SIZEOF_* to define ffi_type_*. Do
-+ not define EH_FRAME_FLAGS, it is in fficonfig.h now. Include
-+ ffitarget.h instead of fficonfig.h. Remove ALIGN macro.
-+ (UINT_ARG, INT_ARG): Removed, use ffi_arg and ffi_sarg instead.
-+ * include/ffi_common.h (bool): Do not define.
-+ (ffi_assert): Accept failed assertion.
-+ (ffi_type_test): Return void and accept file/line.
-+ (FFI_ASSERT): Pass stringized failed assertion.
-+ (FFI_ASSERT_AT): New macro.
-+ (FFI_ASSERT_VALID_TYPE): New macro.
-+ (UINT8, SINT8, UINT16, SINT16, UINT32, SINT32,
-+ UINT64, SINT64): Define here with gcc's __attribute__ macro
-+ instead of in ffi.h
-+ (FLOAT32, ALIGN): Define here instead of in ffi.h
-+ * include/ffi-mips.h: Removed. Its content moved to
-+ src/mips/ffitarget.h after separating assembly and C sections.
-+ * src/alpha/ffi.c, src/alpha/ffi.c, src/java_raw_api.c
-+ src/prep_cif.c, src/raw_api.c, src/ia64/ffi.c,
-+ src/mips/ffi.c, src/mips/n32.S, src/mips/o32.S,
-+ src/mips/ffitarget.h, src/sparc/ffi.c, src/x86/ffi64.c:
-+ SIZEOF_ARG -> FFI_SIZEOF_ARG.
-+ * src/ia64/ffi.c: Include stdbool.h (provided by GCC 2.95+).
-+ * src/debug.c (ffi_assert): Accept stringized failed assertion.
-+ (ffi_type_test): Rewritten.
-+ * src/prep-cif.c (initialize_aggregate, ffi_prep_cif): Call
-+ FFI_ASSERT_VALID_TYPE.
-+ * src/alpha/ffitarget.h, src/arm/ffitarget.h,
-+ src/ia64/ffitarget.h, src/m68k/ffitarget.h,
-+ src/mips/ffitarget.h, src/powerpc/ffitarget.h,
-+ src/s390/ffitarget.h, src/sh/ffitarget.h,
-+ src/sh64/ffitarget.h, src/sparc/ffitarget.h,
-+ src/x86/ffitarget.h: New files.
-+ * src/alpha/osf.S, src/arm/sysv.S, src/ia64/unix.S,
-+ src/m68k/sysv.S, src/mips/n32.S, src/mips/o32.S,
-+ src/powerpc/aix.S, src/powerpc/darwin.S,
-+ src/powerpc/ffi_darwin.c, src/powerpc/linux64.S,
-+ src/powerpc/linux64_closure.S, src/powerpc/ppc_closure.S,
-+ src/powerpc/sysv.S, src/s390/sysv.S, src/sh/sysv.S,
-+ src/sh64/sysv.S, src/sparc/v8.S, src/sparc/v9.S,
-+ src/x86/sysv.S, src/x86/unix64.S, src/x86/win32.S:
-+ include fficonfig.h
-+
-+2003-10-20 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-+
-+ * src/mips/ffi.c: Use _ABIN32, _ABIO32 instead of external
-+ _MIPS_SIM_NABI32, _MIPS_SIM_ABI32.
-+
-+2003-10-19 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Declare bytes again.
-+ Used when FFI_DEBUG = 1.
-+
-+2003-10-14 Alan Modra <amodra@bigpond.net.au>
-+
-+ * src/types.c (double, longdouble): Default POWERPC64 to 8 byte size
-+ and align.
-+
-+2003-10-06 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-+
-+ * include/ffi_mips.h: Define FFI_MIPS_N32 for N32/N64 ABIs,
-+ FFI_MIPS_O32 for O32 ABI.
-+
-+2003-10-01 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * testsuite/lib/libffi-dg.exp: Set LD_LIBRARY_PATH_64 for
-+ SPARC64. Cleanup whitespaces.
-+
-+2003-09-19 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * testsuite/libffi.call/closure_fn0.c: Xfail mips, arm,
-+ strongarm, xscale. Cleanup whitespaces.
-+ * testsuite/libffi.call/closure_fn1.c: Likewise.
-+ * testsuite/libffi.call/closure_fn2.c: Likewise.
-+ * testsuite/libffi.call/closure_fn3.c: Likewise.
-+ * testsuite/libffi.call/cls_12byte.c: Likewise.
-+ * testsuite/libffi.call/cls_16byte.c: Likewise.
-+ * testsuite/libffi.call/cls_1_1byte.c: Likewise.
-+ * testsuite/libffi.call/cls_20byte.c: Likewise.
-+ * testsuite/libffi.call/cls_24byte.c: Likewise.
-+ * testsuite/libffi.call/cls_2byte.c: Likewise.
-+ * testsuite/libffi.call/cls_3_1byte.c: Likewise.
-+ * testsuite/libffi.call/cls_3byte1.c: Likewise.
-+ * testsuite/libffi.call/cls_3byte2.c: Likewise.
-+ * testsuite/libffi.call/cls_4_1byte.c: Likewise.
-+ * testsuite/libffi.call/cls_4byte.c: Likewise.
-+ * testsuite/libffi.call/cls_5byte.c: Likewise.
-+ * testsuite/libffi.call/cls_6byte.c: Likewise.
-+ * testsuite/libffi.call/cls_7byte.c: Likewise.
-+ * testsuite/libffi.call/cls_8byte.c: Likewise.
-+ * testsuite/libffi.call/cls_double.c: Likewise.
-+ * testsuite/libffi.call/cls_float.c: Likewise.
-+ * testsuite/libffi.call/cls_uchar.c: Likewise.
-+ * testsuite/libffi.call/cls_uint.c: Likewise.
-+ * testsuite/libffi.call/cls_ulonglong.c: Likewise.
-+ * testsuite/libffi.call/cls_ushort.c: Likewise.
-+ * testsuite/libffi.call/nested_struct.c: Likewise.
-+ * testsuite/libffi.call/nested_struct1.c: Likewise.
-+ * testsuite/libffi.call/problem1.c: Likewise.
-+ * testsuite/libffi.special/unwindtest.cc: Likewise.
-+ * testsuite/libffi.call/pyobjc-tc.c: Cleanup whitespaces.
-+
-+2003-09-18 David Edelsohn <edelsohn@gnu.org>
-+
-+ * src/powerpc/aix.S: Cleanup whitespaces.
-+ * src/powerpc/aix_closure.S: Likewise.
-+
-+2003-09-18 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * src/powerpc/darwin.S: Cleanup whitespaces, comment formatting.
-+ * src/powerpc/darwin_closure.S: Likewise.
-+ * src/powerpc/ffi_darwin.c: Likewise.
-+
-+2003-09-18 Andreas Tobler <a.tobler@schweiz.ch>
-+ David Edelsohn <edelsohn@gnu.org>
-+
-+ * src/types.c (double): Add AIX and Darwin to the right TYPEDEF.
-+ * src/powerpc/aix_closure.S: Remove the pointer to the outgoing
-+ parameter stack.
-+ * src/powerpc/darwin_closure.S: Likewise.
-+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Handle structures
-+ according to the Darwin/AIX ABI.
-+ (ffi_prep_cif_machdep): Likewise.
-+ (ffi_closure_helper_DARWIN): Likewise.
-+ Remove the outgoing parameter stack logic. Simplify the evaluation
-+ of the different CASE types.
-+ (ffi_prep_clousure): Avoid the casts on lvalues. Change the branch
-+ statement in the trampoline code.
-+
-+2003-09-18 Kaz Kojima <kkojima@gcc.gnu.org>
-+
-+ * src/sh/ffi.c (ffi_prep_args): Take account into the alignement
-+ for the register size.
-+ (ffi_closure_helper_SYSV): Handle the structure return value
-+ address correctly.
-+ (ffi_closure_helper_SYSV): Return the appropriate type when
-+ the registers are used for the structure return value.
-+ * src/sh/sysv.S (ffi_closure_SYSV): Fix the stack layout for
-+ the 64-bit return value. Update copyright years.
-+
-+2003-09-17 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-+
-+ * testsuite/lib/libffi-dg.exp (libffi_target_compile): Search in
-+ srcdir for ffi_mips.h.
-+
-+2003-09-12 Alan Modra <amodra@bigpond.net.au>
-+
-+ * src/prep_cif.c (initialize_aggregate): Include tail padding in
-+ structure size.
-+ * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Correct
-+ placement of float result.
-+ * testsuite/libffi.special/unwindtest.cc (closure_test_fn1): Correct
-+ cast of "resp" for big-endian 64 bit machines.
-+
-+2003-09-11 Alan Modra <amodra@bigpond.net.au>
-+
-+ * src/types.c (double, longdouble): Merge identical SH and ARM
-+ typedefs, and add POWERPC64.
-+ * src/powerpc/ffi.c (ffi_prep_args64): Correct next_arg calc for
-+ struct split over gpr and rest.
-+ (ffi_prep_cif_machdep): Correct intarg_count for structures.
-+ * src/powerpc/linux64.S (ffi_call_LINUX64): Fix gpr offsets.
-+
-+2003-09-09 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * src/powerpc/ffi.c (ffi_closure_helper_SYSV) Handle struct
-+ passing correctly.
-+
-+2003-09-09 Alan Modra <amodra@bigpond.net.au>
-+
-+ * configure: Regenerate.
-+
-+2003-09-04 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * Makefile.am: Remove build rules for ffitest.
-+ * Makefile.in: Rebuilt.
-+
-+2003-09-04 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * src/java_raw_api.c: Include <stdlib.h> to fix compiler warning
-+ about implicit declaration of abort().
-+
-+2003-09-04 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * Makefile.am: Add dejagnu test framework. Fixes PR other/11411.
-+ * Makefile.in: Rebuilt.
-+ * configure.in: Add dejagnu test framework.
-+ * configure: Rebuilt.
-+
-+ * testsuite/Makefile.am: New file.
-+ * testsuite/Makefile.in: Built
-+ * testsuite/lib/libffi-dg.exp: New file.
-+ * testsuite/config/default.exp: Likewise.
-+ * testsuite/libffi.call/call.exp: Likewise.
-+ * testsuite/libffi.call/ffitest.h: Likewise.
-+ * testsuite/libffi.call/closure_fn0.c: Likewise.
-+ * testsuite/libffi.call/closure_fn1.c: Likewise.
-+ * testsuite/libffi.call/closure_fn2.c: Likewise.
-+ * testsuite/libffi.call/closure_fn3.c: Likewise.
-+ * testsuite/libffi.call/cls_1_1byte.c: Likewise.
-+ * testsuite/libffi.call/cls_3_1byte.c: Likewise.
-+ * testsuite/libffi.call/cls_4_1byte.c: Likewise.
-+ * testsuite/libffi.call/cls_2byte.c: Likewise.
-+ * testsuite/libffi.call/cls_3byte1.c: Likewise.
-+ * testsuite/libffi.call/cls_3byte2.c: Likewise.
-+ * testsuite/libffi.call/cls_4byte.c: Likewise.
-+ * testsuite/libffi.call/cls_5byte.c: Likewise.
-+ * testsuite/libffi.call/cls_6byte.c: Likewise.
-+ * testsuite/libffi.call/cls_7byte.c: Likewise.
-+ * testsuite/libffi.call/cls_8byte.c: Likewise.
-+ * testsuite/libffi.call/cls_12byte.c: Likewise.
-+ * testsuite/libffi.call/cls_16byte.c: Likewise.
-+ * testsuite/libffi.call/cls_20byte.c: Likewise.
-+ * testsuite/libffi.call/cls_24byte.c: Likewise.
-+ * testsuite/libffi.call/cls_double.c: Likewise.
-+ * testsuite/libffi.call/cls_float.c: Likewise.
-+ * testsuite/libffi.call/cls_uchar.c: Likewise.
-+ * testsuite/libffi.call/cls_uint.c: Likewise.
-+ * testsuite/libffi.call/cls_ulonglong.c: Likewise.
-+ * testsuite/libffi.call/cls_ushort.c: Likewise.
-+ * testsuite/libffi.call/float.c: Likewise.
-+ * testsuite/libffi.call/float1.c: Likewise.
-+ * testsuite/libffi.call/float2.c: Likewise.
-+ * testsuite/libffi.call/many.c: Likewise.
-+ * testsuite/libffi.call/many_win32.c: Likewise.
-+ * testsuite/libffi.call/nested_struct.c: Likewise.
-+ * testsuite/libffi.call/nested_struct1.c: Likewise.
-+ * testsuite/libffi.call/pyobjc-tc.c: Likewise.
-+ * testsuite/libffi.call/problem1.c: Likewise.
-+ * testsuite/libffi.call/promotion.c: Likewise.
-+ * testsuite/libffi.call/return_ll.c: Likewise.
-+ * testsuite/libffi.call/return_sc.c: Likewise.
-+ * testsuite/libffi.call/return_uc.c: Likewise.
-+ * testsuite/libffi.call/strlen.c: Likewise.
-+ * testsuite/libffi.call/strlen_win32.c: Likewise.
-+ * testsuite/libffi.call/struct1.c: Likewise.
-+ * testsuite/libffi.call/struct2.c: Likewise.
-+ * testsuite/libffi.call/struct3.c: Likewise.
-+ * testsuite/libffi.call/struct4.c: Likewise.
-+ * testsuite/libffi.call/struct5.c: Likewise.
-+ * testsuite/libffi.call/struct6.c: Likewise.
-+ * testsuite/libffi.call/struct7.c: Likewise.
-+ * testsuite/libffi.call/struct8.c: Likewise.
-+ * testsuite/libffi.call/struct9.c: Likewise.
-+ * testsuite/libffi.special/special.exp: New file.
-+ * testsuite/libffi.special/ffitestcxx.h: Likewise.
-+ * testsuite/libffi.special/unwindtest.cc: Likewise.
-+
-+
-+2003-08-13 Kaz Kojima <kkojima@gcc.gnu.org>
-+
-+ * src/sh/ffi.c (OFS_INT16): Set 0 for little endian case. Update
-+ copyright years.
-+
-+2003-08-02 Alan Modra <amodra@bigpond.net.au>
-+
-+ * src/powerpc/ffi.c (ffi_prep_args64): Modify for changed gcc
-+ structure passing.
-+ (ffi_closure_helper_LINUX64): Likewise.
-+ * src/powerpc/linux64.S: Remove code writing to parm save area.
-+ * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Use return
-+ address in lr from ffi_closure_helper_LINUX64 call to calculate
-+ table address. Optimize function tail.
-+
-+2003-07-28 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * src/sparc/ffi.c: Handle all floating point registers.
-+ * src/sparc/v9.S: Likewise. Fixes second part of PR target/11410.
-+
-+2003-07-11 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
-+
-+ * README: Note that libffi is not part of GCC. Update the project
-+ URL and status.
-+
-+2003-06-19 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
-+
-+ * src/powerpc/ppc_closure.S: Include ffi.h.
-+
-+2003-06-13 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-+
-+ * src/x86/sysv.S: Avoid gas-only .uleb128/.sleb128 directives.
-+ Use C style comments.
-+
-+2003-06-13 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-+
-+ * Makefile.am: Add SHmedia support. Fix a typo of SH support.
-+ * Makefile.in: Regenerate.
-+ * configure.in (sh64-*-linux*, sh5*-*-linux*): Add target.
-+ * configure: Regenerate.
-+ * include/ffi.h.in: Add SHmedia support.
-+ * src/sh64/ffi.c: New file.
-+ * src/sh64/sysv.S: New file.
-+
-+2003-05-16 Jakub Jelinek <jakub@redhat.com>
-+
-+ * configure.in (HAVE_RO_EH_FRAME): Check whether .eh_frame section
-+ should be read-only.
-+ * configure: Rebuilt.
-+ * fficonfig.h.in: Rebuilt.
-+ * include/ffi.h.in (EH_FRAME_FLAGS): Define.
-+ * src/alpha/osf.S: Use EH_FRAME_FLAGS.
-+ * src/powerpc/linux64.S: Likewise.
-+ * src/powerpc/linux64_closure.S: Likewise. Include ffi.h.
-+ * src/powerpc/sysv.S: Use EH_FRAME_FLAGS. Use pcrel encoding
-+ if -fpic/-fPIC/-mrelocatable.
-+ * src/powerpc/powerpc_closure.S: Likewise.
-+ * src/sparc/v8.S: If HAVE_RO_EH_FRAME is defined, don't include
-+ #write in .eh_frame flags.
-+ * src/sparc/v9.S: Likewise.
-+ * src/x86/unix64.S: Use EH_FRAME_FLAGS.
-+ * src/x86/sysv.S: Likewise. Use pcrel encoding if -fpic/-fPIC.
-+ * src/s390/sysv.S: Use EH_FRAME_FLAGS. Include ffi.h.
-+
-+2003-05-07 Jeff Sturm <jsturm@one-point.com>
-+
-+ Fixes PR bootstrap/10656
-+ * configure.in (HAVE_AS_REGISTER_PSEUDO_OP): Test assembler
-+ support for .register pseudo-op.
-+ * src/sparc/v8.S: Use it.
-+ * fficonfig.h.in: Rebuilt.
-+ * configure: Rebuilt.
-+
-+2003-04-18 Jakub Jelinek <jakub@redhat.com>
-+
-+ * include/ffi.h.in (POWERPC64): Define if 64-bit.
-+ (enum ffi_abi): Add FFI_LINUX64 on POWERPC.
-+ Make it the default on POWERPC64.
-+ (FFI_TRAMPOLINE_SIZE): Define to 24 on POWERPC64.
-+ * configure.in: Change powerpc-*-linux* into powerpc*-*-linux*.
-+ * configure: Rebuilt.
-+ * src/powerpc/ffi.c (hidden): Define.
-+ (ffi_prep_args_SYSV): Renamed from
-+ ffi_prep_args. Cast pointers to unsigned long to shut up warnings.
-+ (NUM_GPR_ARG_REGISTERS64, NUM_FPR_ARG_REGISTERS64,
-+ ASM_NEEDS_REGISTERS64): New.
-+ (ffi_prep_args64): New function.
-+ (ffi_prep_cif_machdep): Handle FFI_LINUX64 ABI.
-+ (ffi_call): Likewise.
-+ (ffi_prep_closure): Likewise.
-+ (flush_icache): Surround by #ifndef POWERPC64.
-+ (ffi_dblfl): New union type.
-+ (ffi_closure_helper_SYSV): Use it to avoid aliasing problems.
-+ (ffi_closure_helper_LINUX64): New function.
-+ * src/powerpc/ppc_closure.S: Surround whole file by #ifndef
-+ __powerpc64__.
-+ * src/powerpc/sysv.S: Likewise.
-+ (ffi_call_SYSV): Rename ffi_prep_args to ffi_prep_args_SYSV.
-+ * src/powerpc/linux64.S: New file.
-+ * src/powerpc/linux64_closure.S: New file.
-+ * Makefile.am (EXTRA_DIST): Add src/powerpc/linux64.S and
-+ src/powerpc/linux64_closure.S.
-+ (TARGET_SRC_POWERPC): Likewise.
-+
-+ * src/ffitest.c (closure_test_fn, closure_test_fn1, closure_test_fn2,
-+ closure_test_fn3): Fix result printing on big-endian 64-bit
-+ machines.
-+ (main): Print tst2_arg instead of uninitialized tst2_result.
-+
-+ * src/ffitest.c (main): Hide what closure pointer really points to
-+ from the compiler.
-+
-+2003-04-16 Richard Earnshaw <rearnsha@arm.com>
-+
-+ * configure.in (arm-*-netbsdelf*): Add configuration.
-+ (configure): Regenerated.
-+
-+2003-04-04 Loren J. Rittle <ljrittle@acm.org>
-+
-+ * include/Makefile.in: Regenerate.
-+
-+2003-03-21 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
-+
-+ * libffi/include/ffi.h.in: Define X86 instead of X86_64 in 32
-+ bit mode.
-+ * libffi/src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV):
-+ Receive closure pointer through parameter, read args using
-+ __builtin_dwarf_cfa.
-+ (FFI_INIT_TRAMPOLINE): Send closure reference through eax.
-+
-+2003-03-12 Andreas Schwab <schwab@suse.de>
-+
-+ * configure.in: Avoid trailing /. in toolexeclibdir.
-+ * configure: Rebuilt.
-+
-+2003-03-03 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * src/powerpc/darwin_closure.S: Recode to fit dynamic libraries.
-+
-+2003-02-06 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * libffi/src/powerpc/darwin_closure.S:
-+ Fix alignement bug, allocate 8 bytes for the result.
-+ * libffi/src/powerpc/aix_closure.S:
-+ Likewise.
-+ * libffi/src/powerpc/ffi_darwin.c:
-+ Update stackframe description for aix/darwin_closure.S.
-+
-+2003-02-06 Jakub Jelinek <jakub@redhat.com>
-+
-+ * src/s390/ffi.c (ffi_closure_helper_SYSV): Add hidden visibility
-+ attribute.
-+
-+2003-01-31 Christian Cornelssen <ccorn@cs.tu-berlin.de>,
-+ Andreas Schwab <schwab@suse.de>
-+
-+ * configure.in: Adjust command to source config-ml.in to account
-+ for changes to the libffi_basedir definition.
-+ (libffi_basedir): Remove ${srcdir} from value and include trailing
-+ slash if nonempty.
-+
-+ * configure: Regenerate.
-+
-+2003-01-29 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
-+
-+ * src/powerpc/ppc_closure.S: Recode to fit shared libs.
-+
-+2003-01-28 Andrew Haley <aph@redhat.com>
-+
-+ * include/ffi.h.in: Enable FFI_CLOSURES for x86_64.
-+ * src/x86/ffi64.c (ffi_prep_closure): New.
-+ (ffi_closure_UNIX64_inner): New.
-+ * src/x86/unix64.S (ffi_closure_UNIX64): New.
-+
-+2003-01-27 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * configure.in (toolexecdir, toolexeclibdir): Set and AC_SUBST.
-+ Remove USE_LIBDIR conditional.
-+ * Makefile.am (toolexecdir, toolexeclibdir): Don't override.
-+ * Makefile.in, configure: Rebuilt.
-+
-+2003-01027 David Edelsohn <edelsohn@gnu.org>
-+
-+ * Makefile.am (TARGET_SRC_POWERPC_AIX): Fix typo.
-+ * Makefile.in: Regenerate.
-+
-+2003-01-22 Andrew Haley <aph@redhat.com>
-+
-+ * src/powerpc/darwin.S (_ffi_call_AIX): Add Augmentation size to
-+ unwind info.
-+
-+2003-01-21 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * src/powerpc/darwin.S: Add unwind info.
-+ * src/powerpc/darwin_closure.S: Likewise.
-+
-+2003-01-14 Andrew Haley <aph@redhat.com>
-+
-+ * src/x86/ffi64.c (ffi_prep_args): Check for void retval.
-+ (ffi_prep_cif_machdep): Likewise.
-+ * src/x86/unix64.S: Add unwind info.
-+
-+2003-01-14 Andreas Jaeger <aj@suse.de>
-+
-+ * src/ffitest.c (main): Only use ffi_closures if those are
-+ supported.
-+
-+2003-01-13 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * libffi/src/ffitest.c
-+ add closure testcases
-+
-+2003-01-13 Kevin B. Hendricks <khendricks@ivey.uwo.ca>
-+
-+ * libffi/src/powerpc/ffi.c
-+ fix alignment bug for float (4 byte aligned iso 8 byte)
-+
-+2003-01-09 Geoffrey Keating <geoffk@apple.com>
-+
-+ * src/powerpc/ffi_darwin.c: Remove RCS version string.
-+ * src/powerpc/darwin.S: Remove RCS version string.
-+
-+2003-01-03 Jeff Sturm <jsturm@one-point.com>
-+
-+ * include/ffi.h.in: Add closure defines for SPARC, SPARC64.
-+ * src/ffitest.c (main): Use static storage for closure.
-+ * src/sparc/ffi.c (ffi_prep_closure, ffi_closure_sparc_inner): New.
-+ * src/sparc/v8.S (ffi_closure_v8): New.
-+ * src/sparc/v9.S (ffi_closure_v9): New.
-+
-+2002-11-10 Ranjit Mathew <rmathew@hotmail.com>
-+
-+ * include/ffi.h.in: Added FFI_STDCALL ffi_type
-+ enumeration for X86_WIN32.
-+ * src/x86/win32.S: Added ffi_call_STDCALL function
-+ definition.
-+ * src/x86/ffi.c (ffi_call/ffi_raw_call): Added
-+ switch cases for recognising FFI_STDCALL and
-+ calling ffi_call_STDCALL if target is X86_WIN32.
-+ * src/ffitest.c (my_stdcall_strlen/stdcall_many):
-+ stdcall versions of the "my_strlen" and "many"
-+ test functions (for X86_WIN32).
-+ Added test cases to test stdcall invocation using
-+ these functions.
-+
-+2002-12-02 Kaz Kojima <kkojima@gcc.gnu.org>
-+
-+ * src/sh/sysv.S: Add DWARF2 unwind info.
-+
-+2002-11-27 Ulrich Weigand <uweigand@de.ibm.com>
-+
-+ * src/s390/sysv.S (.eh_frame section): Make section read-only.
-+
-+2002-11-26 Jim Wilson <wilson@redhat.com>
-+
-+ * src/types.c (FFI_TYPE_POINTER): Has size 8 on IA64.
-+
-+2002-11-23 H.J. Lu <hjl@gnu.org>
-+
-+ * acinclude.m4: Add dummy AM_PROG_LIBTOOL.
-+ Include ../config/accross.m4.
-+ * aclocal.m4; Rebuild.
-+ * configure: Likewise.
-+
-+2002-11-15 Ulrich Weigand <uweigand@de.ibm.com>
-+
-+ * src/s390/sysv.S (.eh_frame section): Adapt to pcrel FDE encoding.
-+
-+2002-11-11 DJ Delorie <dj@redhat.com>
-+
-+ * configure.in: Look for common files in the right place.
-+
-+2002-10-08 Ulrich Weigand <uweigand@de.ibm.com>
-+
-+ * src/java_raw_api.c (ffi_java_raw_to_ptrarray): Interpret
-+ raw data as _Jv_word values, not ffi_raw.
-+ (ffi_java_ptrarray_to_raw): Likewise.
-+ (ffi_java_rvalue_to_raw): New function.
-+ (ffi_java_raw_call): Call it.
-+ (ffi_java_raw_to_rvalue): New function.
-+ (ffi_java_translate_args): Call it.
-+ * src/ffitest.c (closure_test_fn): Interpret return value
-+ as ffi_arg, not int.
-+ * src/s390/ffi.c (ffi_prep_cif_machdep): Add missing
-+ FFI_TYPE_POINTER case.
-+ (ffi_closure_helper_SYSV): Likewise. Also, assume return
-+ values extended to word size.
-+
-+2002-10-02 Andreas Jaeger <aj@suse.de>
-+
-+ * src/x86/ffi64.c (ffi_prep_cif_machdep): Remove debug output.
-+
-+2002-10-01 Bo Thorsen <bo@smetana.suse.de>
-+
-+ * include/ffi.h.in: Fix i386 win32 compilation.
-+
-+2002-09-30 Ulrich Weigand <uweigand@de.ibm.com>
-+
-+ * configure.in: Add s390x-*-linux-* target.
-+ * configure: Regenerate.
-+ * include/ffi.h.in: Define S390X for s390x targets.
-+ (FFI_CLOSURES): Define for s390/s390x.
-+ (FFI_TRAMPOLINE_SIZE): Likewise.
-+ (FFI_NATIVE_RAW_API): Likewise.
-+ * src/prep_cif.c (ffi_prep_cif): Do not compute stack space for s390.
-+ * src/types.c (FFI_TYPE_POINTER): Use 8-byte pointers on s390x.
-+ * src/s390/ffi.c: Major rework of existing code. Add support for
-+ s390x targets. Add closure support.
-+ * src/s390/sysv.S: Likewise.
-+
-+2002-09-29 Richard Earnshaw <rearnsha@arm.com>
-+
-+ * src/arm/sysv.S: Fix typo.
-+
-+2002-09-28 Richard Earnshaw <rearnsha@arm.com>
-+
-+ * src/arm/sysv.S: If we don't have machine/asm.h and the pre-processor
-+ has defined __USER_LABEL_PREFIX__, then use it in CNAME.
-+ (ffi_call_SYSV): Handle soft-float.
-+
-+2002-09-27 Bo Thorsen <bo@suse.de>
-+
-+ * include/ffi.h.in: Fix multilib x86-64 support.
-+
-+2002-09-22 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-+
-+ * Makefile.am (all-multi): Fix multilib parallel build.
-+
-+2002-07-19 Kaz Kojima <kkojima@gcc.gnu.org>
-+
-+ * configure.in (sh[34]*-*-linux*): Add brackets.
-+ * configure: Regenerate.
-+
-+2002-07-18 Kaz Kojima <kkojima@gcc.gnu.org>
-+
-+ * Makefile.am: Add SH support.
-+ * Makefile.in: Regenerate.
-+ * configure.in (sh-*-linux*, sh[34]*-*-linux*): Add target.
-+ * configure: Regenerate.
-+ * include/ffi.h.in: Add SH support.
-+ * src/sh/ffi.c: New file.
-+ * src/sh/sysv.S: New file.
-+ * src/types.c: Add SH support.
-+
-+2002-07-16 Bo Thorsen <bo@suse.de>
-+
-+ * src/x86/ffi64.c: New file that adds x86-64 support.
-+ * src/x86/unix64.S: New file that handles argument setup for
-+ x86-64.
-+ * src/x86/sysv.S: Don't use this on x86-64.
-+ * src/x86/ffi.c: Don't use this on x86-64.
-+ Remove unused vars.
-+ * src/prep_cif.c (ffi_prep_cif): Don't do stack size calculation
-+ for x86-64.
-+ * src/ffitest.c (struct6): New test that tests a special case in
-+ the x86-64 ABI.
-+ (struct7): Likewise.
-+ (struct8): Likewise.
-+ (struct9): Likewise.
-+ (closure_test_fn): Silence warning about this when it's not used.
-+ (main): Add the new tests.
-+ (main): Fix a couple of wrong casts and silence some compiler warnings.
-+ * include/ffi.h.in: Add x86-64 ABI definition.
-+ * fficonfig.h.in: Regenerate.
-+ * Makefile.am: Add x86-64 support.
-+ * configure.in: Likewise.
-+ * Makefile.in: Regenerate.
-+ * configure: Likewise.
-+
-+2002-06-24 Bo Thorsen <bo@suse.de>
-+
-+ * src/types.c: Merge settings for similar architectures.
-+ Add x86-64 sizes and alignments.
-+
-+2002-06-23 Bo Thorsen <bo@suse.de>
-+
-+ * src/arm/ffi.c (ffi_prep_args): Remove unused vars.
-+ * src/sparc/ffi.c (ffi_prep_args_v8): Likewise.
-+ * src/mips/ffi.c (ffi_prep_args): Likewise.
-+ * src/m68k/ffi.c (ffi_prep_args): Likewise.
-+
-+2002-07-18 H.J. Lu (hjl@gnu.org)
-+
-+ * Makefile.am (TARGET_SRC_MIPS_LINUX): New.
-+ (libffi_la_SOURCES): Support MIPS_LINUX.
-+ (libffi_convenience_la_SOURCES): Likewise.
-+ * Makefile.in: Regenerated.
-+
-+ * configure.in (mips64*-*): Skip.
-+ (mips*-*-linux*): New.
-+ * configure: Regenerated.
-+
-+ * src/mips/ffi.c: Include <sgidefs.h>.
-+
-+2002-06-06 Ulrich Weigand <uweigand@de.ibm.com>
-+
-+ * src/s390/sysv.S: Save/restore %r6. Add DWARF-2 unwind info.
-+
-+2002-05-27 Roger Sayle <roger@eyesopen.com>
-+
-+ * src/x86/ffi.c (ffi_prep_args): Remove reference to avn.
-+
-+2002-05-27 Bo Thorsen <bo@suse.de>
-+
-+ * src/x86/ffi.c (ffi_prep_args): Remove unused variable and
-+ fix formatting.
-+
-+2002-05-13 Andreas Tobler <a.tobler@schweiz.ch>
-+
-+ * src/powerpc/ffi_darwin.c (ffi_prep_closure): Declare fd at
-+ beginning of function (for older apple cc).
-+
-+2002-05-08 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * configure.in (ORIGINAL_LD_FOR_MULTILIBS): Preserve LD at
-+ script entry, and set LD to it when configuring multilibs.
-+ * configure: Rebuilt.
-+
-+2002-05-05 Jason Thorpe <thorpej@wasabisystems.com>
-+
-+ * configure.in (sparc64-*-netbsd*): Add target.
-+ (sparc-*-netbsdelf*): Likewise.
-+ * configure: Regenerate.
-+
-+2002-04-28 David S. Miller <davem@redhat.com>
-+
-+ * configure.in, configure: Fix SPARC test in previous change.
-+
-+2002-04-29 Gerhard Tonn <GerhardTonn@swol.de>
-+
-+ * Makefile.am: Add Linux for S/390 support.
-+ * Makefile.in: Regenerate.
-+ * configure.in: Add Linux for S/390 support.
-+ * configure: Regenerate.
-+ * include/ffi.h.in: Add Linux for S/390 support.
-+ * src/s390/ffi.c: New file from libffi CVS tree.
-+ * src/s390/sysv.S: New file from libffi CVS tree.
-+
-+2002-04-28 Jakub Jelinek <jakub@redhat.com>
-+
-+ * configure.in (HAVE_AS_SPARC_UA_PCREL): Check for working
-+ %r_disp32().
-+ * src/sparc/v8.S: Use it.
-+ * src/sparc/v9.S: Likewise.
-+ * fficonfig.h.in: Rebuilt.
-+ * configure: Rebuilt.
-+
-+2002-04-08 Hans Boehm <Hans_Boehm@hp.com>
-+
-+ * src/java_raw_api.c (ffi_java_raw_size): Handle FFI_TYPE_DOUBLE
-+ correctly.
-+ * src/ia64/unix.S: Add unwind information. Fix comments.
-+ Save sp in a way that's compatible with unwind info.
-+ (ffi_call_unix): Correctly restore sp in all cases.
-+ * src/ia64/ffi.c: Add, fix comments.
-+
-+2002-04-08 Jakub Jelinek <jakub@redhat.com>
-+
-+ * src/sparc/v8.S: Make .eh_frame dependent on target word size.
-+
-+2002-04-06 Jason Thorpe <thorpej@wasabisystems.com>
-+
-+ * configure.in (alpha*-*-netbsd*): Add target.
-+ * configure: Regenerate.
-+
-+2002-04-04 Jeff Sturm <jsturm@one-point.com>
-+
-+ * src/sparc/v8.S: Add unwind info.
-+ * src/sparc/v9.S: Likewise.
-+
-+2002-03-30 Krister Walfridsson <cato@df.lth.se>
-+
-+ * configure.in: Enable i*86-*-netbsdelf*.
-+ * configure: Rebuilt.
-+
-+2002-03-29 David Billinghurst <David.Billinghurst@riotinto.com>
-+
-+ PR other/2620
-+ * src/mips/n32.s: Delete
-+ * src/mips/o32.s: Delete
-+
-+2002-03-21 Loren J. Rittle <ljrittle@acm.org>
-+
-+ * configure.in: Enable alpha*-*-freebsd*.
-+ * configure: Rebuilt.
-+
-+2002-03-17 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
-+
-+ * Makefile.am: libfficonvenience -> libffi_convenience.
-+ * Makefile.in: Rebuilt.
-+
-+ * Makefile.am: Define ffitest_OBJECTS.
-+ * Makefile.in: Rebuilt.
-+
-+2002-03-07 Andreas Tobler <toa@pop.agri.ch>
-+ David Edelsohn <edelsohn@gnu.org>
-+
-+ * Makefile.am (EXTRA_DIST): Add Darwin and AIX closure files.
-+ (TARGET_SRC_POWERPC_AIX): Add aix_closure.S.
-+ (TARGET_SRC_POWERPC_DARWIN): Add darwin_closure.S.
-+ * Makefile.in: Regenerate.
-+ * include/ffi.h.in: Add AIX and Darwin closure definitions.
-+ * src/powerpc/ffi_darwin.c (ffi_prep_closure): New function.
-+ (flush_icache, flush_range): New functions.
-+ (ffi_closure_helper_DARWIN): New function.
-+ * src/powerpc/aix_closure.S: New file.
-+ * src/powerpc/darwin_closure.S: New file.
-+
-+2002-02-24 Jeff Sturm <jsturm@one-point.com>
-+
-+ * include/ffi.h.in: Add typedef for ffi_arg.
-+ * src/ffitest.c (main): Declare rint with ffi_arg.
-+
-+2002-02-21 Andreas Tobler <toa@pop.agri.ch>
-+
-+ * src/powerpc/ffi_darwin.c (ffi_prep_args): Skip appropriate
-+ number of GPRs for floating-point arguments.
-+
-+2002-01-31 Anthony Green <green@redhat.com>
-+
-+ * configure: Rebuilt.
-+ * configure.in: Replace CHECK_SIZEOF and endian tests with
-+ cross-compiler friendly macros.
-+ * aclocal.m4 (AC_COMPILE_CHECK_SIZEOF, AC_C_BIGENDIAN_CROSS): New
-+ macros.
-+
-+2002-01-18 David Edelsohn <edelsohn@gnu.org>
-+
-+ * src/powerpc/darwin.S (_ffi_call_AIX): New.
-+ * src/powerpc/aix.S (ffi_call_DARWIN): New.
-+
-+2002-01-17 David Edelsohn <edelsohn@gnu.org>
-+
-+ * Makefile.am (EXTRA_DIST): Add Darwin and AIX files.
-+ (TARGET_SRC_POWERPC_AIX): New.
-+ (POWERPC_AIX): New stanza.
-+ * Makefile.in: Regenerate.
-+ * configure.in: Add AIX case.
-+ * configure: Regenerate.
-+ * include/ffi.h.in (ffi_abi): Add FFI_AIX.
-+ * src/powerpc/ffi_darwin.c (ffi_status): Use "long" to scale frame
-+ size. Fix "long double" support.
-+ (ffi_call): Add FFI_AIX case.
-+ * src/powerpc/aix.S: New.
-+
-+2001-10-09 John Hornkvist <john@toastedmarshmallow.com>
-+
-+ Implement Darwin PowerPC ABI.
-+ * configure.in: Handle powerpc-*-darwin*.
-+ * Makefile.am: Set source files for POWERPC_DARWIN.
-+ * configure: Rebuilt.
-+ * Makefile.in: Rebuilt.
-+ * include/ffi.h.in: Define FFI_DARWIN and FFI_DEFAULT_ABI for
-+ POWERPC_DARWIN.
-+ * src/powerpc/darwin.S: New file.
-+ * src/powerpc/ffi_darwin.c: New file.
-+
-+2001-10-07 Joseph S. Myers <jsm28@cam.ac.uk>
-+
-+ * src/x86/ffi.c: Fix spelling error of "separate" as "seperate".
-+
-+2001-07-16 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-+
-+ * src/x86/sysv.S: Avoid gas-only .balign directive.
-+ Use C style comments.
-+
-+2001-07-16 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-+
-+ * src/alpha/ffi.c (ffi_prep_closure): Avoid gas-only mnemonic.
-+ Fixes PR bootstrap/3563.
-+
-+2001-06-26 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-+
-+ * src/alpha/osf.S (ffi_closure_osf): Use .rdata for ECOFF.
-+
-+2001-06-25 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-+
-+ * configure.in: Recognize sparc*-sun-* host.
-+ * configure: Regenerate.
-+
-+2001-06-06 Andrew Haley <aph@redhat.com>
-+
-+ * src/alpha/osf.S (__FRAME_BEGIN__): Conditionalize for ELF.
-+
-+2001-06-03 Andrew Haley <aph@redhat.com>
-+
-+ * src/alpha/osf.S: Add unwind info.
-+ * src/powerpc/sysv.S: Add unwind info.
-+ * src/powerpc/ppc_closure.S: Likewise.
-+
-+2000-05-31 Jeff Sturm <jsturm@one-point.com>
-+
-+ * configure.in: Fix AC_ARG_ENABLE usage.
-+ * configure: Rebuilt.
-+
-+2001-05-06 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
-+
-+ * configure.in: Remove warning about beta code.
-+ * configure: Rebuilt.
-+
-+2001-04-25 Hans Boehm <Hans_Boehm@hp.com>
-+
-+ * src/ia64/unix.S: Restore stack pointer when returning from
-+ ffi_closure_UNIX.
-+ * src/ia64/ffi.c: Fix typo in comment.
-+
-+2001-04-18 Jim Wilson <wilson@redhat.com>
-+
-+ * src/ia64/unix.S: Delete unnecessary increment and decrement of loc2
-+ to eliminate RAW DV.
-+
-+2001-04-12 Bryce McKinlay <bryce@albatross.co.nz>
-+
-+ * Makefile.am: Make a libtool convenience library.
-+ * Makefile.in: Rebuilt.
-+
-+2001-03-29 Bryce McKinlay <bryce@albatross.co.nz>
-+
-+ * configure.in: Use different syntax for subdirectory creation.
-+ * configure: Rebuilt.
-+
-+2001-03-27 Jon Beniston <jon@beniston.com>
-+
-+ * configure.in: Added X86_WIN32 target (Win32, CygWin, MingW).
-+ * configure: Rebuilt.
-+ * Makefile.am: Added X86_WIN32 target support.
-+ * Makefile.in: Rebuilt.
-+
-+ * include/ffi.h.in: Added X86_WIN32 target support.
-+
-+ * src/ffitest.c: Doesn't run structure tests for X86_WIN32 targets.
-+ * src/types.c: Added X86_WIN32 target support.
-+
-+ * src/x86/win32.S: New file. Based on sysv.S, but with EH
-+ stuff removed and made to work with CygWin's gas.
-+
-+2001-03-26 Bryce McKinlay <bryce@albatross.co.nz>
-+
-+ * configure.in: Make target subdirectory in build dir.
-+ * Makefile.am: Override suffix based rules to specify correct output
-+ subdirectory.
-+ * Makefile.in: Rebuilt.
-+ * configure: Rebuilt.
-+
-+2001-03-23 Kevin B Hendricks <khendricks@ivey.uwo.ca>
-+
-+ * src/powerpc/ppc_closure.S: New file.
-+ * src/powerpc/ffi.c (ffi_prep_args): Fixed ABI compatibility bug
-+ involving long long and register pairs.
-+ (ffi_prep_closure): New function.
-+ (flush_icache): Likewise.
-+ (ffi_closure_helper_SYSV): Likewise.
-+ * include/ffi.h.in (FFI_CLOSURES): Define on PPC.
-+ (FFI_TRAMPOLINE_SIZE): Likewise.
-+ (FFI_NATIVE_RAW_API): Likewise.
-+ * Makefile.in: Rebuilt.
-+ * Makefile.am (EXTRA_DIST): Added src/powerpc/ppc_closure.S.
-+ (TARGET_SRC_POWERPC): Likewise.
-+
-+2001-03-19 Tom Tromey <tromey@redhat.com>
-+
-+ * Makefile.in: Rebuilt.
-+ * Makefile.am (ffitest_LDFLAGS): New macro.
-+
-+2001-03-02 Nick Clifton <nickc@redhat.com>
-+
-+ * include/ffi.h.in: Remove RCS ident string.
-+ * include/ffi_mips.h: Remove RCS ident string.
-+ * src/debug.c: Remove RCS ident string.
-+ * src/ffitest.c: Remove RCS ident string.
-+ * src/prep_cif.c: Remove RCS ident string.
-+ * src/types.c: Remove RCS ident string.
-+ * src/alpha/ffi.c: Remove RCS ident string.
-+ * src/alpha/osf.S: Remove RCS ident string.
-+ * src/arm/ffi.c: Remove RCS ident string.
-+ * src/arm/sysv.S: Remove RCS ident string.
-+ * src/mips/ffi.c: Remove RCS ident string.
-+ * src/mips/n32.S: Remove RCS ident string.
-+ * src/mips/o32.S: Remove RCS ident string.
-+ * src/sparc/ffi.c: Remove RCS ident string.
-+ * src/sparc/v8.S: Remove RCS ident string.
-+ * src/sparc/v9.S: Remove RCS ident string.
-+ * src/x86/ffi.c: Remove RCS ident string.
-+ * src/x86/sysv.S: Remove RCS ident string.
-+
-+2001-02-08 Joseph S. Myers <jsm28@cam.ac.uk>
-+
-+ * include/ffi.h.in: Change sourceware.cygnus.com references to
-+ gcc.gnu.org.
-+
-+2000-12-09 Richard Henderson <rth@redhat.com>
-+
-+ * src/alpha/ffi.c (ffi_call): Simplify struct return test.
-+ (ffi_closure_osf_inner): Index rather than increment avalue
-+ and arg_types. Give ffi_closure_osf the raw return value type.
-+ * src/alpha/osf.S (ffi_closure_osf): Handle return value type
-+ promotion.
-+
-+2000-12-07 Richard Henderson <rth@redhat.com>
-+
-+ * src/raw_api.c (ffi_translate_args): Fix typo.
-+ (ffi_prep_closure): Likewise.
-+
-+ * include/ffi.h.in [ALPHA]: Define FFI_CLOSURES and
-+ FFI_TRAMPOLINE_SIZE.
-+ * src/alpha/ffi.c (ffi_prep_cif_machdep): Adjust minimal
-+ cif->bytes for new ffi_call_osf implementation.
-+ (ffi_prep_args): Absorb into ...
-+ (ffi_call): ... here. Do all stack allocation here and
-+ avoid a callback function.
-+ (ffi_prep_closure, ffi_closure_osf_inner): New.
-+ * src/alpha/osf.S (ffi_call_osf): Reimplement with no callback.
-+ (ffi_closure_osf): New.
-+
-+2000-09-10 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * config.guess, config.sub, install-sh: Removed.
-+ * ltconfig, ltmain.sh, missing, mkinstalldirs: Likewise.
-+ * Makefile.in: Rebuilt.
-+
-+ * acinclude.m4: Include libtool macros from the top level.
-+ * aclocal.m4, configure: Rebuilt.
-+
-+2000-08-22 Alexandre Oliva <aoliva@redhat.com>
-+
-+ * configure.in [i*86-*-freebsd*] (TARGET, TARGETDIR): Set.
-+ * configure: Rebuilt.
-+
-+2000-05-11 Scott Bambrough <scottb@netwinder.org>
-+
-+ * libffi/src/arm/sysv.S (ffi_call_SYSV): Doubles are not saved to
-+ memory correctly. Use conditional instructions, not branches where
-+ possible.
-+
-+2000-05-04 Tom Tromey <tromey@cygnus.com>
-+
-+ * configure: Rebuilt.
-+ * configure.in: Match `arm*-*-linux-*'.
-+ From Chris Dornan <cdornan@arm.com>.
-+
-+2000-04-28 Jakub Jelinek <jakub@redhat.com>
-+
-+ * Makefile.am (SUBDIRS): Define.
-+ (AM_MAKEFLAGS): Likewise.
-+ (Multilib support.): Add section.
-+ * Makefile.in: Rebuilt.
-+ * ltconfig (extra_compiler_flags, extra_compiler_flags_value):
-+ New variables. Set for gcc using -print-multi-lib. Export them
-+ to libtool.
-+ (sparc64-*-linux-gnu*): Use libsuff 64 for search paths.
-+ * ltmain.sh (B|b|V): Don't throw away gcc's -B, -b and -V options
-+ for -shared links.
-+ (extra_compiler_flags_value, extra_compiler_flags): Check these
-+ for extra compiler options which need to be passed down in
-+ compiler_flags.
-+
-+2000-04-16 Anthony Green <green@redhat.com>
-+
-+ * configure: Rebuilt.
-+ * configure.in: Change i*86-pc-linux* to i*86-*-linux*.
-+
-+2000-04-14 Jakub Jelinek <jakub@redhat.com>
-+
-+ * include/ffi.h.in (SPARC64): Define for 64bit SPARC builds.
-+ Set SPARC FFI_DEFAULT_ABI based on SPARC64 define.
-+ * src/sparc/ffi.c (ffi_prep_args_v8): Renamed from ffi_prep_args.
-+ Replace all void * sizeofs with sizeof(int).
-+ Only compare type with FFI_TYPE_LONGDOUBLE if LONGDOUBLE is
-+ different than DOUBLE.
-+ Remove FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases (handled elsewhere).
-+ (ffi_prep_args_v9): New function.
-+ (ffi_prep_cif_machdep): Handle V9 ABI and long long on V8.
-+ (ffi_V9_return_struct): New function.
-+ (ffi_call): Handle FFI_V9 ABI from 64bit code and FFI_V8 ABI from
-+ 32bit code (not yet cross-arch calls).
-+ * src/sparc/v8.S: Add struct return delay nop.
-+ Handle long long.
-+ * src/sparc/v9.S: New file.
-+ * src/prep_cif.c (ffi_prep_cif): Return structure pointer
-+ is used on sparc64 only for structures larger than 32 bytes.
-+ Pass by reference for structures is done for structure arguments
-+ larger than 16 bytes.
-+ * src/ffitest.c (main): Use 64bit rint on sparc64.
-+ Run long long tests on sparc.
-+ * src/types.c (FFI_TYPE_POINTER): Pointer is 64bit on alpha and
-+ sparc64.
-+ (FFI_TYPE_LONGDOUBLE): long double is 128 bit aligned to 128 bits
-+ on sparc64.
-+ * configure.in (sparc-*-linux*): New supported target.
-+ (sparc64-*-linux*): Likewise.
-+ * configure: Rebuilt.
-+ * Makefile.am: Add v9.S to SPARC files.
-+ * Makefile.in: Likewise.
-+ (LINK): Surround $(CCLD) into double quotes, so that multilib
-+ compiles work correctly.
-+
-+2000-04-04 Alexandre Petit-Bianco <apbianco@cygnus.com>
-+
-+ * configure: Rebuilt.
-+ * configure.in: (i*86-*-solaris*): New libffi target. Patch
-+ proposed by Bryce McKinlay.
-+
-+2000-03-20 Tom Tromey <tromey@cygnus.com>
-+
-+ * Makefile.in: Hand edit for java_raw_api.lo.
-+
-+2000-03-08 Bryce McKinlay <bryce@albatross.co.nz>
-+
-+ * config.guess, config.sub: Update from the gcc tree.
-+ Fix for PR libgcj/168.
-+
-+2000-03-03 Tom Tromey <tromey@cygnus.com>
-+
-+ * Makefile.in: Fixed ia64 by hand.
-+
-+ * configure: Rebuilt.
-+ * configure.in (--enable-multilib): New option.
-+ (libffi_basedir): New subst.
-+ (AC_OUTPUT): Added multilib code.
-+
-+2000-03-02 Tom Tromey <tromey@cygnus.com>
-+
-+ * Makefile.in: Rebuilt.
-+ * Makefile.am (TARGET_SRC_IA64): Use `ia64', not `alpha', as
-+ directory name.
-+
-+2000-02-25 Hans Boehm <boehm@acm.org>
-+
-+ * src/ia64/ffi.c, src/ia64/ia64_flags.h, src/ia64/unix.S: New
-+ files.
-+ * src/raw_api.c (ffi_translate_args): Fixed typo in argument
-+ list.
-+ (ffi_prep_raw_closure): Use ffi_translate_args, not
-+ ffi_closure_translate.
-+ * src/java_raw_api.c: New file.
-+ * src/ffitest.c (closure_test_fn): New function.
-+ (main): Define `rint' as long long on IA64. Added new test when
-+ FFI_CLOSURES is defined.
-+ * include/ffi.h.in (ALIGN): Use size_t, not unsigned.
-+ (ffi_abi): Recognize IA64.
-+ (ffi_raw): Added `flt' field.
-+ Added "Java raw API" code.
-+ * configure.in: Recognize ia64.
-+ * Makefile.am (TARGET_SRC_IA64): New macro.
-+ (libffi_la_common_SOURCES): Added java_raw_api.c.
-+ (libffi_la_SOURCES): Define in IA64 case.
-+
-+2000-01-04 Tom Tromey <tromey@cygnus.com>
-+
-+ * Makefile.in: Rebuilt with newer automake.
-+
-+1999-12-31 Tom Tromey <tromey@cygnus.com>
-+
-+ * Makefile.am (INCLUDES): Added -I$(top_srcdir)/src.
-+
-+1999-09-01 Tom Tromey <tromey@cygnus.com>
-+
-+ * include/ffi.h.in: Removed PACKAGE and VERSION defines and
-+ undefs.
-+ * fficonfig.h.in: Rebuilt.
-+ * configure: Rebuilt.
-+ * configure.in: Pass 3rd argument to AM_INIT_AUTOMAKE.
-+ Use AM_PROG_LIBTOOL (automake 1.4 compatibility).
-+ * acconfig.h: Don't #undef PACKAGE or VERSION.
-+
-+1999-08-09 Anthony Green <green@cygnus.com>
-+
-+ * include/ffi.h.in: Try to work around messy header problem
-+ with PACKAGE and VERSION.
-+
-+ * configure: Rebuilt.
-+ * configure.in: Change version to 2.00-beta.
-+
-+ * fficonfig.h.in: Rebuilt.
-+ * acconfig.h (FFI_NO_STRUCTS, FFI_NO_RAW_API): Define.
-+
-+ * src/x86/ffi.c (ffi_raw_call): Rename.
-+
-+1999-08-02 Kresten Krab Thorup <krab@dominiq.is.s.u-tokyo.ac.jp>
-+
-+ * src/x86/ffi.c (ffi_closure_SYSV): New function.
-+ (ffi_prep_incoming_args_SYSV): Ditto.
-+ (ffi_prep_closure): Ditto.
-+ (ffi_closure_raw_SYSV): Ditto.
-+ (ffi_prep_raw_closure): More ditto.
-+ (ffi_call_raw): Final ditto.
-+
-+ * include/ffi.h.in: Add definitions for closure and raw API.
-+
-+ * src/x86/ffi.c (ffi_prep_cif_machdep): Added case for
-+ FFI_TYPE_UINT64.
-+
-+ * Makefile.am (libffi_la_common_SOURCES): Added raw_api.c
-+
-+ * src/raw_api.c: New file.
-+
-+ * include/ffi.h.in (ffi_raw): New type.
-+ (UINT_ARG, SINT_ARG): New defines.
-+ (ffi_closure, ffi_raw_closure): New types.
-+ (ffi_prep_closure, ffi_prep_raw_closure): New declarations.
-+
-+ * configure.in: Add check for endianness and sizeof void*.
-+
-+ * src/x86/sysv.S (ffi_call_SYSV): Call fixup routine via argument,
-+ instead of directly.
-+
-+ * configure: Rebuilt.
-+
-+Thu Jul 8 14:28:42 1999 Anthony Green <green@cygnus.com>
-+
-+ * configure.in: Add x86 and powerpc BeOS configurations.
-+ From Makoto Kato <m_kato@ga2.so-net.ne.jp>.
-+
-+1999-05-09 Anthony Green <green@cygnus.com>
-+
-+ * configure.in: Add warning about this being beta code.
-+ Remove src/Makefile.am from the picture.
-+ * configure: Rebuilt.
-+
-+ * Makefile.am: Move logic from src/Makefile.am. Add changes
-+ to support libffi as a target library.
-+ * Makefile.in: Rebuilt.
-+
-+ * aclocal.m4, config.guess, config.sub, ltconfig, ltmain.sh:
-+ Upgraded to new autoconf, automake, libtool.
-+
-+ * README: Tweaks.
-+
-+ * LICENSE: Update copyright date.
-+
-+ * src/Makefile.am, src/Makefile.in: Removed.
-+
-+1998-11-29 Anthony Green <green@cygnus.com>
-+
-+ * include/ChangeLog: Removed.
-+ * src/ChangeLog: Removed.
-+ * src/mips/ChangeLog: Removed.
-+ * src/sparc/ChangeLog: Remboved.
-+ * src/x86/ChangeLog: Removed.
-+
-+ * ChangeLog.v1: Created.
+ 2011-02-15 Anthony Green <green@moxielogic.com>
+
+ * m4/ax_cc_maxopt.m4: Don't -malign-double or use -ffast-math.
Index: libffi/src/powerpc/ffi.c
===================================================================
---- /dev/null
+--- libffi.orig/src/powerpc/ffi.c
+++ libffi/src/powerpc/ffi.c
-@@ -0,0 +1,1448 @@
-+/* -----------------------------------------------------------------------
-+ ffi.c - Copyright (C) 2011 Anthony Green
-+ Copyright (C) 2008 Red Hat, Inc
-+ Copyright (C) 2007, 2008 Free Software Foundation, Inc
-+ Copyright (c) 1998 Geoffrey Keating
-+
-+ PowerPC Foreign Function Interface
-+
-+ Permission is hereby granted, free of charge, to any person obtaining
-+ a copy of this software and associated documentation files (the
-+ ``Software''), to deal in the Software without restriction, including
-+ without limitation the rights to use, copy, modify, merge, publish,
-+ distribute, sublicense, and/or sell copies of the Software, and to
-+ permit persons to whom the Software is furnished to do so, subject to
-+ the following conditions:
-+
-+ The above copyright notice and this permission notice shall be included
-+ in all copies or substantial portions of the Software.
-+
-+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR
-+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+ OTHER DEALINGS IN THE SOFTWARE.
-+ ----------------------------------------------------------------------- */
-+
-+#include <ffi.h>
-+#include <ffi_common.h>
-+
-+#include <stdlib.h>
-+#include <stdio.h>
-+
-+
-+extern void ffi_closure_SYSV (void);
-+extern void FFI_HIDDEN ffi_closure_LINUX64 (void);
-+
-+enum {
-+ /* The assembly depends on these exact flags. */
-+ FLAG_RETURNS_SMST = 1 << (31-31), /* Used for FFI_SYSV small structs. */
-+ FLAG_RETURNS_NOTHING = 1 << (31-30), /* These go in cr7 */
-+ FLAG_RETURNS_FP = 1 << (31-29),
-+ FLAG_RETURNS_64BITS = 1 << (31-28),
-+
-+ FLAG_RETURNS_128BITS = 1 << (31-27), /* cr6 */
-+ FLAG_SYSV_SMST_R4 = 1 << (31-26), /* use r4 for FFI_SYSV 8 byte
-+ structs. */
-+ FLAG_SYSV_SMST_R3 = 1 << (31-25), /* use r3 for FFI_SYSV 4 byte
-+ structs. */
-+ /* Bits (31-24) through (31-19) store shift value for SMST */
-+
-+ FLAG_ARG_NEEDS_COPY = 1 << (31- 7),
-+ FLAG_FP_ARGUMENTS = 1 << (31- 6), /* cr1.eq; specified by ABI */
-+ FLAG_4_GPR_ARGUMENTS = 1 << (31- 5),
-+ FLAG_RETVAL_REFERENCE = 1 << (31- 4)
-+};
-+
-+/* About the SYSV ABI. */
-+unsigned int NUM_GPR_ARG_REGISTERS = 8;
-+#ifndef __NO_FPRS__
-+unsigned int NUM_FPR_ARG_REGISTERS = 8;
-+#else
-+unsigned int NUM_FPR_ARG_REGISTERS = 0;
-+#endif
-+
-+enum { ASM_NEEDS_REGISTERS = 4 };
-+
-+/* ffi_prep_args_SYSV is called by the assembly routine once stack space
-+ has been allocated for the function's arguments.
-+
-+ The stack layout we want looks like this:
-+
-+ | Return address from ffi_call_SYSV 4bytes | higher addresses
-+ |--------------------------------------------|
-+ | Previous backchain pointer 4 | stack pointer here
-+ |--------------------------------------------|<+ <<< on entry to
-+ | Saved r28-r31 4*4 | | ffi_call_SYSV
-+ |--------------------------------------------| |
-+ | GPR registers r3-r10 8*4 | | ffi_call_SYSV
-+ |--------------------------------------------| |
-+ | FPR registers f1-f8 (optional) 8*8 | |
-+ |--------------------------------------------| | stack |
-+ | Space for copied structures | | grows |
-+ |--------------------------------------------| | down V
-+ | Parameters that didn't fit in registers | |
-+ |--------------------------------------------| | lower addresses
-+ | Space for callee's LR 4 | |
-+ |--------------------------------------------| | stack pointer here
-+ | Current backchain pointer 4 |-/ during
-+ |--------------------------------------------| <<< ffi_call_SYSV
-+
-+*/
-+
-+void
-+ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack)
-+{
-+ const unsigned bytes = ecif->cif->bytes;
-+ const unsigned flags = ecif->cif->flags;
-+
-+ typedef union {
-+ char *c;
-+ unsigned *u;
-+ long long *ll;
-+ float *f;
-+ double *d;
-+ } valp;
-+
-+ /* 'stacktop' points at the previous backchain pointer. */
-+ valp stacktop;
-+
-+ /* 'gpr_base' points at the space for gpr3, and grows upwards as
-+ we use GPR registers. */
-+ valp gpr_base;
-+ int intarg_count;
-+
-+ /* 'fpr_base' points at the space for fpr1, and grows upwards as
-+ we use FPR registers. */
-+ valp fpr_base;
-+ int fparg_count;
-+
-+ /* 'copy_space' grows down as we put structures in it. It should
-+ stay 16-byte aligned. */
-+ valp copy_space;
-+
-+ /* 'next_arg' grows up as we put parameters in it. */
-+ valp next_arg;
-+
-+ int i, ii MAYBE_UNUSED;
-+ ffi_type **ptr;
-+ double double_tmp;
-+ union {
-+ void **v;
-+ char **c;
-+ signed char **sc;
-+ unsigned char **uc;
-+ signed short **ss;
-+ unsigned short **us;
-+ unsigned int **ui;
-+ long long **ll;
-+ float **f;
-+ double **d;
-+ } p_argv;
-+ size_t struct_copy_size;
-+ unsigned gprvalue;
-+
-+ if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT)
-+ NUM_FPR_ARG_REGISTERS = 0;
-+
-+ stacktop.c = (char *) stack + bytes;
-+ gpr_base.u = stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS;
-+ intarg_count = 0;
-+ fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS;
-+ fparg_count = 0;
-+ copy_space.c = ((flags & FLAG_FP_ARGUMENTS) ? fpr_base.c : gpr_base.c);
-+ next_arg.u = stack + 2;
-+
-+ /* Check that everything starts aligned properly. */
-+ FFI_ASSERT (((unsigned) (char *) stack & 0xF) == 0);
-+ FFI_ASSERT (((unsigned) copy_space.c & 0xF) == 0);
-+ FFI_ASSERT (((unsigned) stacktop.c & 0xF) == 0);
-+ FFI_ASSERT ((bytes & 0xF) == 0);
-+ FFI_ASSERT (copy_space.c >= next_arg.c);
-+
-+ /* Deal with return values that are actually pass-by-reference. */
-+ if (flags & FLAG_RETVAL_REFERENCE)
-+ {
-+ *gpr_base.u++ = (unsigned long) (char *) ecif->rvalue;
-+ intarg_count++;
-+ }
-+
-+ /* Now for the arguments. */
-+ p_argv.v = ecif->avalue;
-+ for (ptr = ecif->cif->arg_types, i = ecif->cif->nargs;
-+ i > 0;
-+ i--, ptr++, p_argv.v++)
-+ {
-+ switch ((*ptr)->type)
-+ {
-+ case FFI_TYPE_FLOAT:
-+ /* With FFI_LINUX_SOFT_FLOAT floats are handled like UINT32. */
-+ if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT)
-+ goto soft_float_prep;
-+ double_tmp = **p_argv.f;
-+ if (fparg_count >= NUM_FPR_ARG_REGISTERS)
-+ {
-+ *next_arg.f = (float) double_tmp;
-+ next_arg.u += 1;
-+ intarg_count++;
-+ }
-+ else
-+ *fpr_base.d++ = double_tmp;
-+ fparg_count++;
-+ FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
-+ break;
-+
-+ case FFI_TYPE_DOUBLE:
-+ /* With FFI_LINUX_SOFT_FLOAT doubles are handled like UINT64. */
-+ if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT)
-+ goto soft_double_prep;
-+ double_tmp = **p_argv.d;
-+
-+ if (fparg_count >= NUM_FPR_ARG_REGISTERS)
-+ {
-+ if (intarg_count >= NUM_GPR_ARG_REGISTERS
-+ && intarg_count % 2 != 0)
-+ {
-+ intarg_count++;
-+ next_arg.u++;
-+ }
-+ *next_arg.d = double_tmp;
-+ next_arg.u += 2;
-+ }
-+ else
-+ *fpr_base.d++ = double_tmp;
-+ fparg_count++;
-+ FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
-+ break;
-+
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+ case FFI_TYPE_LONGDOUBLE:
-+ if ((ecif->cif->abi != FFI_LINUX)
-+ && (ecif->cif->abi != FFI_LINUX_SOFT_FLOAT))
-+ goto do_struct;
-+ /* The soft float ABI for long doubles works like this,
-+ a long double is passed in four consecutive gprs if available.
-+ A maximum of 2 long doubles can be passed in gprs.
-+ If we do not have 4 gprs left, the long double is passed on the
-+ stack, 4-byte aligned. */
-+ if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT)
-+ {
-+ unsigned int int_tmp = (*p_argv.ui)[0];
-+ if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3)
-+ {
-+ if (intarg_count < NUM_GPR_ARG_REGISTERS)
-+ intarg_count += NUM_GPR_ARG_REGISTERS - intarg_count;
-+ *next_arg.u = int_tmp;
-+ next_arg.u++;
-+ for (ii = 1; ii < 4; ii++)
-+ {
-+ int_tmp = (*p_argv.ui)[ii];
-+ *next_arg.u = int_tmp;
-+ next_arg.u++;
-+ }
-+ }
-+ else
-+ {
-+ *gpr_base.u++ = int_tmp;
-+ for (ii = 1; ii < 4; ii++)
-+ {
-+ int_tmp = (*p_argv.ui)[ii];
-+ *gpr_base.u++ = int_tmp;
-+ }
-+ }
-+ intarg_count +=4;
-+ }
-+ else
-+ {
-+ double_tmp = (*p_argv.d)[0];
-+
-+ if (fparg_count >= NUM_FPR_ARG_REGISTERS - 1)
-+ {
-+ if (intarg_count >= NUM_GPR_ARG_REGISTERS
-+ && intarg_count % 2 != 0)
-+ {
-+ intarg_count++;
-+ next_arg.u++;
-+ }
-+ *next_arg.d = double_tmp;
-+ next_arg.u += 2;
-+ double_tmp = (*p_argv.d)[1];
-+ *next_arg.d = double_tmp;
-+ next_arg.u += 2;
-+ }
-+ else
-+ {
-+ *fpr_base.d++ = double_tmp;
-+ double_tmp = (*p_argv.d)[1];
-+ *fpr_base.d++ = double_tmp;
-+ }
-+
-+ fparg_count += 2;
-+ FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
-+ }
-+ break;
-+#endif
-+
-+ case FFI_TYPE_UINT64:
-+ case FFI_TYPE_SINT64:
-+ soft_double_prep:
-+ if (intarg_count == NUM_GPR_ARG_REGISTERS-1)
-+ intarg_count++;
-+ if (intarg_count >= NUM_GPR_ARG_REGISTERS)
-+ {
-+ if (intarg_count % 2 != 0)
-+ {
-+ intarg_count++;
-+ next_arg.u++;
-+ }
-+ *next_arg.ll = **p_argv.ll;
-+ next_arg.u += 2;
-+ }
-+ else
-+ {
-+ /* whoops: abi states only certain register pairs
-+ * can be used for passing long long int
-+ * specifically (r3,r4), (r5,r6), (r7,r8),
-+ * (r9,r10) and if next arg is long long but
-+ * not correct starting register of pair then skip
-+ * until the proper starting register
-+ */
-+ if (intarg_count % 2 != 0)
-+ {
-+ intarg_count ++;
-+ gpr_base.u++;
-+ }
-+ *gpr_base.ll++ = **p_argv.ll;
-+ }
-+ intarg_count += 2;
-+ break;
-+
-+ case FFI_TYPE_STRUCT:
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+ do_struct:
-+#endif
-+ struct_copy_size = ((*ptr)->size + 15) & ~0xF;
-+ copy_space.c -= struct_copy_size;
-+ memcpy (copy_space.c, *p_argv.c, (*ptr)->size);
-+
-+ gprvalue = (unsigned long) copy_space.c;
-+
-+ FFI_ASSERT (copy_space.c > next_arg.c);
-+ FFI_ASSERT (flags & FLAG_ARG_NEEDS_COPY);
-+ goto putgpr;
-+
-+ case FFI_TYPE_UINT8:
-+ gprvalue = **p_argv.uc;
-+ goto putgpr;
-+ case FFI_TYPE_SINT8:
-+ gprvalue = **p_argv.sc;
-+ goto putgpr;
-+ case FFI_TYPE_UINT16:
-+ gprvalue = **p_argv.us;
-+ goto putgpr;
-+ case FFI_TYPE_SINT16:
-+ gprvalue = **p_argv.ss;
-+ goto putgpr;
-+
-+ case FFI_TYPE_INT:
-+ case FFI_TYPE_UINT32:
-+ case FFI_TYPE_SINT32:
-+ case FFI_TYPE_POINTER:
-+ soft_float_prep:
-+
-+ gprvalue = **p_argv.ui;
-+
-+ putgpr:
-+ if (intarg_count >= NUM_GPR_ARG_REGISTERS)
-+ *next_arg.u++ = gprvalue;
-+ else
-+ *gpr_base.u++ = gprvalue;
-+ intarg_count++;
-+ break;
-+ }
-+ }
-+
-+ /* Check that we didn't overrun the stack... */
-+ FFI_ASSERT (copy_space.c >= next_arg.c);
-+ FFI_ASSERT (gpr_base.u <= stacktop.u - ASM_NEEDS_REGISTERS);
-+ FFI_ASSERT (fpr_base.u
-+ <= stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS);
-+ FFI_ASSERT (flags & FLAG_4_GPR_ARGUMENTS || intarg_count <= 4);
-+}
-+
-+/* About the LINUX64 ABI. */
-+enum {
-+ NUM_GPR_ARG_REGISTERS64 = 8,
-+ NUM_FPR_ARG_REGISTERS64 = 13
-+};
-+enum { ASM_NEEDS_REGISTERS64 = 4 };
-+
-+/* ffi_prep_args64 is called by the assembly routine once stack space
-+ has been allocated for the function's arguments.
-+
-+ The stack layout we want looks like this:
-+
-+ | Ret addr from ffi_call_LINUX64 8bytes | higher addresses
-+ |--------------------------------------------|
-+ | CR save area 8bytes |
-+ |--------------------------------------------|
-+ | Previous backchain pointer 8 | stack pointer here
-+ |--------------------------------------------|<+ <<< on entry to
-+ | Saved r28-r31 4*8 | | ffi_call_LINUX64
-+ |--------------------------------------------| |
-+ | GPR registers r3-r10 8*8 | |
-+ |--------------------------------------------| |
-+ | FPR registers f1-f13 (optional) 13*8 | |
-+ |--------------------------------------------| |
-+ | Parameter save area | |
-+ |--------------------------------------------| |
-+ | TOC save area 8 | |
-+ |--------------------------------------------| | stack |
-+ | Linker doubleword 8 | | grows |
-+ |--------------------------------------------| | down V
-+ | Compiler doubleword 8 | |
-+ |--------------------------------------------| | lower addresses
-+ | Space for callee's LR 8 | |
-+ |--------------------------------------------| |
-+ | CR save area 8 | |
-+ |--------------------------------------------| | stack pointer here
-+ | Current backchain pointer 8 |-/ during
-+ |--------------------------------------------| <<< ffi_call_LINUX64
-+
-+*/
-+
-+void FFI_HIDDEN
-+ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack)
-+{
-+ const unsigned long bytes = ecif->cif->bytes;
-+ const unsigned long flags = ecif->cif->flags;
-+
-+ typedef union {
-+ char *c;
-+ unsigned long *ul;
-+ float *f;
-+ double *d;
-+ } valp;
-+
-+ /* 'stacktop' points at the previous backchain pointer. */
-+ valp stacktop;
-+
-+ /* 'next_arg' points at the space for gpr3, and grows upwards as
-+ we use GPR registers, then continues at rest. */
-+ valp gpr_base;
-+ valp gpr_end;
-+ valp rest;
-+ valp next_arg;
-+
-+ /* 'fpr_base' points at the space for fpr3, and grows upwards as
-+ we use FPR registers. */
-+ valp fpr_base;
-+ int fparg_count;
-+
-+ int i, words;
-+ ffi_type **ptr;
-+ double double_tmp;
-+ union {
-+ void **v;
-+ char **c;
-+ signed char **sc;
-+ unsigned char **uc;
-+ signed short **ss;
-+ unsigned short **us;
-+ signed int **si;
-+ unsigned int **ui;
-+ unsigned long **ul;
-+ float **f;
-+ double **d;
-+ } p_argv;
-+ unsigned long gprvalue;
-+
-+ stacktop.c = (char *) stack + bytes;
-+ gpr_base.ul = stacktop.ul - ASM_NEEDS_REGISTERS64 - NUM_GPR_ARG_REGISTERS64;
-+ gpr_end.ul = gpr_base.ul + NUM_GPR_ARG_REGISTERS64;
-+ rest.ul = stack + 6 + NUM_GPR_ARG_REGISTERS64;
-+ fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS64;
-+ fparg_count = 0;
-+ next_arg.ul = gpr_base.ul;
-+
-+ /* Check that everything starts aligned properly. */
-+ FFI_ASSERT (((unsigned long) (char *) stack & 0xF) == 0);
-+ FFI_ASSERT (((unsigned long) stacktop.c & 0xF) == 0);
-+ FFI_ASSERT ((bytes & 0xF) == 0);
-+
-+ /* Deal with return values that are actually pass-by-reference. */
-+ if (flags & FLAG_RETVAL_REFERENCE)
-+ *next_arg.ul++ = (unsigned long) (char *) ecif->rvalue;
-+
-+ /* Now for the arguments. */
-+ p_argv.v = ecif->avalue;
-+ for (ptr = ecif->cif->arg_types, i = ecif->cif->nargs;
-+ i > 0;
-+ i--, ptr++, p_argv.v++)
-+ {
-+ switch ((*ptr)->type)
-+ {
-+ case FFI_TYPE_FLOAT:
-+ double_tmp = **p_argv.f;
-+ *next_arg.f = (float) double_tmp;
-+ if (++next_arg.ul == gpr_end.ul)
-+ next_arg.ul = rest.ul;
-+ if (fparg_count < NUM_FPR_ARG_REGISTERS64)
-+ *fpr_base.d++ = double_tmp;
-+ fparg_count++;
-+ FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
-+ break;
-+
-+ case FFI_TYPE_DOUBLE:
-+ double_tmp = **p_argv.d;
-+ *next_arg.d = double_tmp;
-+ if (++next_arg.ul == gpr_end.ul)
-+ next_arg.ul = rest.ul;
-+ if (fparg_count < NUM_FPR_ARG_REGISTERS64)
-+ *fpr_base.d++ = double_tmp;
-+ fparg_count++;
-+ FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
-+ break;
-+
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+ case FFI_TYPE_LONGDOUBLE:
-+ double_tmp = (*p_argv.d)[0];
-+ *next_arg.d = double_tmp;
-+ if (++next_arg.ul == gpr_end.ul)
-+ next_arg.ul = rest.ul;
-+ if (fparg_count < NUM_FPR_ARG_REGISTERS64)
-+ *fpr_base.d++ = double_tmp;
-+ fparg_count++;
-+ double_tmp = (*p_argv.d)[1];
-+ *next_arg.d = double_tmp;
-+ if (++next_arg.ul == gpr_end.ul)
-+ next_arg.ul = rest.ul;
-+ if (fparg_count < NUM_FPR_ARG_REGISTERS64)
-+ *fpr_base.d++ = double_tmp;
-+ fparg_count++;
-+ FFI_ASSERT (__LDBL_MANT_DIG__ == 106);
-+ FFI_ASSERT (flags & FLAG_FP_ARGUMENTS);
-+ break;
-+#endif
-+
-+ case FFI_TYPE_STRUCT:
-+ words = ((*ptr)->size + 7) / 8;
-+ if (next_arg.ul >= gpr_base.ul && next_arg.ul + words > gpr_end.ul)
-+ {
-+ size_t first = gpr_end.c - next_arg.c;
-+ memcpy (next_arg.c, *p_argv.c, first);
-+ memcpy (rest.c, *p_argv.c + first, (*ptr)->size - first);
-+ next_arg.c = rest.c + words * 8 - first;
-+ }
-+ else
-+ {
-+ char *where = next_arg.c;
-+
-+ /* Structures with size less than eight bytes are passed
-+ left-padded. */
-+ if ((*ptr)->size < 8)
-+ where += 8 - (*ptr)->size;
-+
-+ memcpy (where, *p_argv.c, (*ptr)->size);
-+ next_arg.ul += words;
-+ if (next_arg.ul == gpr_end.ul)
-+ next_arg.ul = rest.ul;
-+ }
-+ break;
-+
-+ case FFI_TYPE_UINT8:
-+ gprvalue = **p_argv.uc;
-+ goto putgpr;
-+ case FFI_TYPE_SINT8:
-+ gprvalue = **p_argv.sc;
-+ goto putgpr;
-+ case FFI_TYPE_UINT16:
-+ gprvalue = **p_argv.us;
-+ goto putgpr;
-+ case FFI_TYPE_SINT16:
-+ gprvalue = **p_argv.ss;
-+ goto putgpr;
-+ case FFI_TYPE_UINT32:
-+ gprvalue = **p_argv.ui;
-+ goto putgpr;
-+ case FFI_TYPE_INT:
-+ case FFI_TYPE_SINT32:
-+ gprvalue = **p_argv.si;
-+ goto putgpr;
-+
-+ case FFI_TYPE_UINT64:
-+ case FFI_TYPE_SINT64:
-+ case FFI_TYPE_POINTER:
-+ gprvalue = **p_argv.ul;
-+ putgpr:
-+ *next_arg.ul++ = gprvalue;
-+ if (next_arg.ul == gpr_end.ul)
-+ next_arg.ul = rest.ul;
-+ break;
-+ }
-+ }
-+
-+ FFI_ASSERT (flags & FLAG_4_GPR_ARGUMENTS
-+ || (next_arg.ul >= gpr_base.ul
-+ && next_arg.ul <= gpr_base.ul + 4));
-+}
-+
-+
-+
-+/* Perform machine dependent cif processing */
-+ffi_status
-+ffi_prep_cif_machdep (ffi_cif *cif)
-+{
-+ /* All this is for the SYSV and LINUX64 ABI. */
-+ int i;
-+ ffi_type **ptr;
-+ unsigned bytes;
-+ int fparg_count = 0, intarg_count = 0;
-+ unsigned flags = 0;
-+ unsigned struct_copy_size = 0;
-+ unsigned type = cif->rtype->type;
-+ unsigned size = cif->rtype->size;
-+
-+ if (cif->abi == FFI_LINUX_SOFT_FLOAT)
-+ NUM_FPR_ARG_REGISTERS = 0;
-+
-+ if (cif->abi != FFI_LINUX64)
-+ {
-+ /* All the machine-independent calculation of cif->bytes will be wrong.
-+ Redo the calculation for SYSV. */
-+
-+ /* Space for the frame pointer, callee's LR, and the asm's temp regs. */
-+ bytes = (2 + ASM_NEEDS_REGISTERS) * sizeof (int);
-+
-+ /* Space for the GPR registers. */
-+ bytes += NUM_GPR_ARG_REGISTERS * sizeof (int);
-+ }
-+ else
-+ {
-+ /* 64-bit ABI. */
-+
-+ /* Space for backchain, CR, LR, cc/ld doubleword, TOC and the asm's temp
-+ regs. */
-+ bytes = (6 + ASM_NEEDS_REGISTERS64) * sizeof (long);
-+
-+ /* Space for the mandatory parm save area and general registers. */
-+ bytes += 2 * NUM_GPR_ARG_REGISTERS64 * sizeof (long);
-+ }
-+
-+ /* Return value handling. The rules for SYSV are as follows:
-+ - 32-bit (or less) integer values are returned in gpr3;
-+ - Structures of size <= 4 bytes also returned in gpr3;
-+ - 64-bit integer values and structures between 5 and 8 bytes are returned
-+ in gpr3 and gpr4;
-+ - Single/double FP values are returned in fpr1;
-+ - Larger structures are allocated space and a pointer is passed as
-+ the first argument.
-+ - long doubles (if not equivalent to double) are returned in
-+ fpr1,fpr2 for Linux and as for large structs for SysV.
-+ For LINUX64:
-+ - integer values in gpr3;
-+ - Structures/Unions by reference;
-+ - Single/double FP values in fpr1, long double in fpr1,fpr2.
-+ - soft-float float/doubles are treated as UINT32/UINT64 respectivley.
-+ - soft-float long doubles are returned in gpr3-gpr6. */
-+ switch (type)
-+ {
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+ case FFI_TYPE_LONGDOUBLE:
-+ if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX64
-+ && cif->abi != FFI_LINUX_SOFT_FLOAT)
-+ goto byref;
-+ flags |= FLAG_RETURNS_128BITS;
-+ /* Fall through. */
-+#endif
-+ case FFI_TYPE_DOUBLE:
-+ flags |= FLAG_RETURNS_64BITS;
-+ /* Fall through. */
-+ case FFI_TYPE_FLOAT:
-+ /* With FFI_LINUX_SOFT_FLOAT no fp registers are used. */
-+ if (cif->abi != FFI_LINUX_SOFT_FLOAT)
-+ flags |= FLAG_RETURNS_FP;
-+ break;
-+
-+ case FFI_TYPE_UINT64:
-+ case FFI_TYPE_SINT64:
-+ flags |= FLAG_RETURNS_64BITS;
-+ break;
-+
-+ case FFI_TYPE_STRUCT:
-+ if (cif->abi == FFI_SYSV)
-+ {
-+ /* The final SYSV ABI says that structures smaller or equal 8 bytes
-+ are returned in r3/r4. The FFI_GCC_SYSV ABI instead returns them
-+ in memory. */
-+
-+ /* Treat structs with size <= 8 bytes. */
-+ if (size <= 8)
-+ {
-+ flags |= FLAG_RETURNS_SMST;
-+ /* These structs are returned in r3. We pack the type and the
-+ precalculated shift value (needed in the sysv.S) into flags.
-+ The same applies for the structs returned in r3/r4. */
-+ if (size <= 4)
-+ {
-+ flags |= FLAG_SYSV_SMST_R3;
-+ flags |= 8 * (4 - size) << 8;
-+ break;
-+ }
-+ /* These structs are returned in r3 and r4. See above. */
-+ if (size <= 8)
-+ {
-+ flags |= FLAG_SYSV_SMST_R3 | FLAG_SYSV_SMST_R4;
-+ flags |= 8 * (8 - size) << 8;
-+ break;
-+ }
-+ }
-+ }
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+ byref:
-+#endif
-+ intarg_count++;
-+ flags |= FLAG_RETVAL_REFERENCE;
-+ /* Fall through. */
-+ case FFI_TYPE_VOID:
-+ flags |= FLAG_RETURNS_NOTHING;
-+ break;
-+
-+ default:
-+ /* Returns 32-bit integer, or similar. Nothing to do here. */
-+ break;
-+ }
-+
-+ if (cif->abi != FFI_LINUX64)
-+ /* The first NUM_GPR_ARG_REGISTERS words of integer arguments, and the
-+ first NUM_FPR_ARG_REGISTERS fp arguments, go in registers; the rest
-+ goes on the stack. Structures and long doubles (if not equivalent
-+ to double) are passed as a pointer to a copy of the structure.
-+ Stuff on the stack needs to keep proper alignment. */
-+ for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
-+ {
-+ switch ((*ptr)->type)
-+ {
-+ case FFI_TYPE_FLOAT:
-+ /* With FFI_LINUX_SOFT_FLOAT floats are handled like UINT32. */
-+ if (cif->abi == FFI_LINUX_SOFT_FLOAT)
-+ goto soft_float_cif;
-+ fparg_count++;
-+ /* floating singles are not 8-aligned on stack */
-+ break;
-+
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+ case FFI_TYPE_LONGDOUBLE:
-+ if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX_SOFT_FLOAT)
-+ goto do_struct;
-+ if (cif->abi == FFI_LINUX_SOFT_FLOAT)
-+ {
-+ if (intarg_count >= NUM_GPR_ARG_REGISTERS - 3
-+ || intarg_count < NUM_GPR_ARG_REGISTERS)
-+ /* A long double in FFI_LINUX_SOFT_FLOAT can use only
-+ a set of four consecutive gprs. If we have not enough,
-+ we have to adjust the intarg_count value. */
-+ intarg_count += NUM_GPR_ARG_REGISTERS - intarg_count;
-+ intarg_count += 4;
-+ break;
-+ }
-+ else
-+ fparg_count++;
-+ /* Fall thru */
-+#endif
-+ case FFI_TYPE_DOUBLE:
-+ /* With FFI_LINUX_SOFT_FLOAT doubles are handled like UINT64. */
-+ if (cif->abi == FFI_LINUX_SOFT_FLOAT)
-+ goto soft_double_cif;
-+ fparg_count++;
-+ /* If this FP arg is going on the stack, it must be
-+ 8-byte-aligned. */
-+ if (fparg_count > NUM_FPR_ARG_REGISTERS
-+ && intarg_count >= NUM_GPR_ARG_REGISTERS
-+ && intarg_count % 2 != 0)
-+ intarg_count++;
-+ break;
-+
-+ case FFI_TYPE_UINT64:
-+ case FFI_TYPE_SINT64:
-+ soft_double_cif:
-+ /* 'long long' arguments are passed as two words, but
-+ either both words must fit in registers or both go
-+ on the stack. If they go on the stack, they must
-+ be 8-byte-aligned.
-+
-+ Also, only certain register pairs can be used for
-+ passing long long int -- specifically (r3,r4), (r5,r6),
-+ (r7,r8), (r9,r10).
-+ */
-+ if (intarg_count == NUM_GPR_ARG_REGISTERS-1
-+ || intarg_count % 2 != 0)
-+ intarg_count++;
-+ intarg_count += 2;
-+ break;
-+
-+ case FFI_TYPE_STRUCT:
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+ do_struct:
-+#endif
-+ /* We must allocate space for a copy of these to enforce
-+ pass-by-value. Pad the space up to a multiple of 16
-+ bytes (the maximum alignment required for anything under
-+ the SYSV ABI). */
-+ struct_copy_size += ((*ptr)->size + 15) & ~0xF;
-+ /* Fall through (allocate space for the pointer). */
-+
-+ default:
-+ soft_float_cif:
-+ /* Everything else is passed as a 4-byte word in a GPR, either
-+ the object itself or a pointer to it. */
-+ intarg_count++;
-+ break;
-+ }
-+ }
-+ else
-+ for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
-+ {
-+ switch ((*ptr)->type)
-+ {
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+ case FFI_TYPE_LONGDOUBLE:
-+ if (cif->abi == FFI_LINUX_SOFT_FLOAT)
-+ intarg_count += 4;
-+ else
-+ {
-+ fparg_count += 2;
-+ intarg_count += 2;
-+ }
-+ break;
-+#endif
-+ case FFI_TYPE_FLOAT:
-+ case FFI_TYPE_DOUBLE:
-+ fparg_count++;
-+ intarg_count++;
-+ break;
-+
-+ case FFI_TYPE_STRUCT:
-+ intarg_count += ((*ptr)->size + 7) / 8;
-+ break;
-+
-+ default:
-+ /* Everything else is passed as a 8-byte word in a GPR, either
-+ the object itself or a pointer to it. */
-+ intarg_count++;
-+ break;
-+ }
-+ }
-+
-+ if (fparg_count != 0)
-+ flags |= FLAG_FP_ARGUMENTS;
-+ if (intarg_count > 4)
-+ flags |= FLAG_4_GPR_ARGUMENTS;
-+ if (struct_copy_size != 0)
-+ flags |= FLAG_ARG_NEEDS_COPY;
-+
-+ if (cif->abi != FFI_LINUX64)
-+ {
-+ /* Space for the FPR registers, if needed. */
-+ if (fparg_count != 0)
-+ bytes += NUM_FPR_ARG_REGISTERS * sizeof (double);
-+
-+ /* Stack space. */
-+ if (intarg_count > NUM_GPR_ARG_REGISTERS)
-+ bytes += (intarg_count - NUM_GPR_ARG_REGISTERS) * sizeof (int);
-+ if (fparg_count > NUM_FPR_ARG_REGISTERS)
-+ bytes += (fparg_count - NUM_FPR_ARG_REGISTERS) * sizeof (double);
-+ }
-+ else
-+ {
-+ /* Space for the FPR registers, if needed. */
-+ if (fparg_count != 0)
-+ bytes += NUM_FPR_ARG_REGISTERS64 * sizeof (double);
-+
-+ /* Stack space. */
-+ if (intarg_count > NUM_GPR_ARG_REGISTERS64)
-+ bytes += (intarg_count - NUM_GPR_ARG_REGISTERS64) * sizeof (long);
-+ }
-+
-+ /* The stack space allocated needs to be a multiple of 16 bytes. */
-+ bytes = (bytes + 15) & ~0xF;
-+
-+ /* Add in the space for the copied structures. */
-+ bytes += struct_copy_size;
-+
-+ cif->flags = flags;
-+ cif->bytes = bytes;
-+
-+ return FFI_OK;
-+}
-+
-+extern void ffi_call_SYSV(extended_cif *, unsigned, unsigned, unsigned *,
-+ void (*fn)(void));
-+extern void FFI_HIDDEN ffi_call_LINUX64(extended_cif *, unsigned long,
-+ unsigned long, unsigned long *,
-+ void (*fn)(void));
-+
-+void
-+ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
-+{
-+ extended_cif ecif;
-+
-+ ecif.cif = cif;
-+ ecif.avalue = avalue;
-+
-+ /* If the return value is a struct and we don't have a return */
-+ /* value address then we need to make one */
-+
-+ if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT))
-+ {
-+ ecif.rvalue = alloca(cif->rtype->size);
-+ }
-+ else
-+ ecif.rvalue = rvalue;
-+
-+
-+ switch (cif->abi)
-+ {
-+#ifndef POWERPC64
-+ case FFI_SYSV:
-+ case FFI_GCC_SYSV:
-+ case FFI_LINUX:
-+ case FFI_LINUX_SOFT_FLOAT:
-+ ffi_call_SYSV (&ecif, -cif->bytes, cif->flags, ecif.rvalue, fn);
-+ break;
-+#else
-+ case FFI_LINUX64:
-+ ffi_call_LINUX64 (&ecif, -(long) cif->bytes, cif->flags, ecif.rvalue, fn);
-+ break;
-+#endif
-+ default:
-+ FFI_ASSERT (0);
-+ break;
-+ }
-+}
-+
-+
-+#ifndef POWERPC64
-+#define MIN_CACHE_LINE_SIZE 8
-+
-+static void
-+flush_icache (char *wraddr, char *xaddr, int size)
-+{
-+ int i;
-+ for (i = 0; i < size; i += MIN_CACHE_LINE_SIZE)
-+ __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;"
-+ : : "r" (xaddr + i), "r" (wraddr + i) : "memory");
-+ __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" "sync;" "isync;"
-+ : : "r"(xaddr + size - 1), "r"(wraddr + size - 1)
-+ : "memory");
-+}
-+#endif
-+
-+ffi_status
-+ffi_prep_closure_loc (ffi_closure *closure,
-+ ffi_cif *cif,
-+ void (*fun) (ffi_cif *, void *, void **, void *),
-+ void *user_data,
-+ void *codeloc)
-+{
-+#ifdef POWERPC64
-+ void **tramp = (void **) &closure->tramp[0];
-+
-+ if (cif->abi != FFI_LINUX64)
-+ return FFI_BAD_ABI;
-+ /* Copy function address and TOC from ffi_closure_LINUX64. */
-+ memcpy (tramp, (char *) ffi_closure_LINUX64, 16);
-+ tramp[2] = codeloc;
-+#else
-+ unsigned int *tramp;
-+
+@@ -958,7 +958,10 @@ ffi_prep_closure_loc (ffi_closure *closu
+ #else
+ unsigned int *tramp;
+
+- if (! (cif->abi == FFI_GCC_SYSV || cif->abi == FFI_SYSV))
+ if (! (cif->abi == FFI_GCC_SYSV
+ || cif->abi == FFI_SYSV
+ || cif->abi == FFI_LINUX
-+ || cif->abi == FFI_LINUX_SOFT_FLOAT))
-+ return FFI_BAD_ABI;
-+
-+ tramp = (unsigned int *) &closure->tramp[0];
-+ tramp[0] = 0x7c0802a6; /* mflr r0 */
-+ tramp[1] = 0x4800000d; /* bl 10 <trampoline_initial+0x10> */
-+ tramp[4] = 0x7d6802a6; /* mflr r11 */
-+ tramp[5] = 0x7c0803a6; /* mtlr r0 */
-+ tramp[6] = 0x800b0000; /* lwz r0,0(r11) */
-+ tramp[7] = 0x816b0004; /* lwz r11,4(r11) */
-+ tramp[8] = 0x7c0903a6; /* mtctr r0 */
-+ tramp[9] = 0x4e800420; /* bctr */
-+ *(void **) &tramp[2] = (void *) ffi_closure_SYSV; /* function */
-+ *(void **) &tramp[3] = codeloc; /* context */
-+
-+ /* Flush the icache. */
-+ flush_icache ((char *)tramp, (char *)codeloc, FFI_TRAMPOLINE_SIZE);
-+#endif
-+
-+ closure->cif = cif;
-+ closure->fun = fun;
-+ closure->user_data = user_data;
-+
-+ return FFI_OK;
-+}
-+
-+typedef union
-+{
-+ float f;
-+ double d;
-+} ffi_dblfl;
-+
-+int ffi_closure_helper_SYSV (ffi_closure *, void *, unsigned long *,
-+ ffi_dblfl *, unsigned long *);
-+
-+/* Basically the trampoline invokes ffi_closure_SYSV, and on
-+ * entry, r11 holds the address of the closure.
-+ * After storing the registers that could possibly contain
-+ * parameters to be passed into the stack frame and setting
-+ * up space for a return value, ffi_closure_SYSV invokes the
-+ * following helper function to do most of the work
-+ */
-+
-+int
-+ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue,
-+ unsigned long *pgr, ffi_dblfl *pfr,
-+ unsigned long *pst)
-+{
-+ /* rvalue is the pointer to space for return value in closure assembly */
-+ /* pgr is the pointer to where r3-r10 are stored in ffi_closure_SYSV */
-+ /* pfr is the pointer to where f1-f8 are stored in ffi_closure_SYSV */
-+ /* pst is the pointer to outgoing parameter stack in original caller */
-+
-+ void ** avalue;
-+ ffi_type ** arg_types;
-+ long i, avn;
-+ long nf; /* number of floating registers already used */
-+ long ng; /* number of general registers already used */
-+ ffi_cif * cif;
-+ double temp;
-+ unsigned size;
-+
-+ cif = closure->cif;
-+ avalue = alloca (cif->nargs * sizeof (void *));
-+ size = cif->rtype->size;
-+
-+ nf = 0;
-+ ng = 0;
-+
-+ /* Copy the caller's structure return value address so that the closure
-+ returns the data directly to the caller.
-+ For FFI_SYSV the result is passed in r3/r4 if the struct size is less
-+ or equal 8 bytes. */
-+
-+ if ((cif->rtype->type == FFI_TYPE_STRUCT
-+ && !((cif->abi == FFI_SYSV) && (size <= 8)))
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+ || (cif->rtype->type == FFI_TYPE_LONGDOUBLE
-+ && cif->abi != FFI_LINUX && cif->abi != FFI_LINUX_SOFT_FLOAT)
-+#endif
-+ )
-+ {
-+ rvalue = (void *) *pgr;
-+ ng++;
-+ pgr++;
-+ }
-+
-+ i = 0;
-+ avn = cif->nargs;
-+ arg_types = cif->arg_types;
-+
-+ /* Grab the addresses of the arguments from the stack frame. */
-+ while (i < avn)
-+ {
-+ switch (arg_types[i]->type)
-+ {
-+ case FFI_TYPE_SINT8:
-+ case FFI_TYPE_UINT8:
-+ /* there are 8 gpr registers used to pass values */
-+ if (ng < 8)
-+ {
-+ avalue[i] = (char *) pgr + 3;
-+ ng++;
-+ pgr++;
-+ }
-+ else
-+ {
-+ avalue[i] = (char *) pst + 3;
-+ pst++;
-+ }
-+ break;
-+
-+ case FFI_TYPE_SINT16:
-+ case FFI_TYPE_UINT16:
-+ /* there are 8 gpr registers used to pass values */
-+ if (ng < 8)
-+ {
-+ avalue[i] = (char *) pgr + 2;
-+ ng++;
-+ pgr++;
-+ }
-+ else
-+ {
-+ avalue[i] = (char *) pst + 2;
-+ pst++;
-+ }
-+ break;
-+
-+ case FFI_TYPE_SINT32:
-+ case FFI_TYPE_UINT32:
-+ case FFI_TYPE_POINTER:
-+ soft_float_closure:
-+ /* there are 8 gpr registers used to pass values */
-+ if (ng < 8)
-+ {
-+ avalue[i] = pgr;
-+ ng++;
-+ pgr++;
-+ }
-+ else
-+ {
-+ avalue[i] = pst;
-+ pst++;
-+ }
-+ break;
-+
-+ case FFI_TYPE_STRUCT:
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+ do_struct:
-+#endif
-+ /* Structs are passed by reference. The address will appear in a
-+ gpr if it is one of the first 8 arguments. */
-+ if (ng < 8)
-+ {
-+ avalue[i] = (void *) *pgr;
-+ ng++;
-+ pgr++;
-+ }
-+ else
-+ {
-+ avalue[i] = (void *) *pst;
-+ pst++;
-+ }
-+ break;
-+
-+ case FFI_TYPE_SINT64:
-+ case FFI_TYPE_UINT64:
-+ soft_double_closure:
-+ /* passing long long ints are complex, they must
-+ * be passed in suitable register pairs such as
-+ * (r3,r4) or (r5,r6) or (r6,r7), or (r7,r8) or (r9,r10)
-+ * and if the entire pair aren't available then the outgoing
-+ * parameter stack is used for both but an alignment of 8
-+ * must will be kept. So we must either look in pgr
-+ * or pst to find the correct address for this type
-+ * of parameter.
-+ */
-+ if (ng < 7)
-+ {
-+ if (ng & 0x01)
-+ {
-+ /* skip r4, r6, r8 as starting points */
-+ ng++;
-+ pgr++;
-+ }
-+ avalue[i] = pgr;
-+ ng += 2;
-+ pgr += 2;
-+ }
-+ else
-+ {
-+ if (((long) pst) & 4)
-+ pst++;
-+ avalue[i] = pst;
-+ pst += 2;
-+ ng = 8;
-+ }
-+ break;
-+
-+ case FFI_TYPE_FLOAT:
-+ /* With FFI_LINUX_SOFT_FLOAT floats are handled like UINT32. */
-+ if (cif->abi == FFI_LINUX_SOFT_FLOAT)
-+ goto soft_float_closure;
-+ /* unfortunately float values are stored as doubles
-+ * in the ffi_closure_SYSV code (since we don't check
-+ * the type in that routine).
-+ */
-+
-+ /* there are 8 64bit floating point registers */
-+
-+ if (nf < 8)
-+ {
-+ temp = pfr->d;
-+ pfr->f = (float) temp;
-+ avalue[i] = pfr;
-+ nf++;
-+ pfr++;
-+ }
-+ else
-+ {
-+ /* FIXME? here we are really changing the values
-+ * stored in the original calling routines outgoing
-+ * parameter stack. This is probably a really
-+ * naughty thing to do but...
-+ */
-+ avalue[i] = pst;
-+ pst += 1;
-+ }
-+ break;
-+
-+ case FFI_TYPE_DOUBLE:
-+ /* With FFI_LINUX_SOFT_FLOAT doubles are handled like UINT64. */
-+ if (cif->abi == FFI_LINUX_SOFT_FLOAT)
-+ goto soft_double_closure;
-+ /* On the outgoing stack all values are aligned to 8 */
-+ /* there are 8 64bit floating point registers */
-+
-+ if (nf < 8)
-+ {
-+ avalue[i] = pfr;
-+ nf++;
-+ pfr++;
-+ }
-+ else
-+ {
-+ if (((long) pst) & 4)
-+ pst++;
-+ avalue[i] = pst;
-+ pst += 2;
-+ }
-+ break;
-+
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+ case FFI_TYPE_LONGDOUBLE:
-+ if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX_SOFT_FLOAT)
-+ goto do_struct;
-+ if (cif->abi == FFI_LINUX_SOFT_FLOAT)
-+ { /* Test if for the whole long double, 4 gprs are available.
-+ otherwise the stuff ends up on the stack. */
-+ if (ng < 5)
-+ {
-+ avalue[i] = pgr;
-+ pgr += 4;
-+ ng += 4;
-+ }
-+ else
-+ {
-+ avalue[i] = pst;
-+ pst += 4;
-+ ng = 8;
-+ }
-+ break;
-+ }
-+ if (nf < 7)
-+ {
-+ avalue[i] = pfr;
-+ pfr += 2;
-+ nf += 2;
-+ }
-+ else
-+ {
-+ if (((long) pst) & 4)
-+ pst++;
-+ avalue[i] = pst;
-+ pst += 4;
-+ nf = 8;
-+ }
-+ break;
-+#endif
-+
-+ default:
-+ FFI_ASSERT (0);
-+ }
-+
-+ i++;
-+ }
-+
-+
-+ (closure->fun) (cif, rvalue, avalue, closure->user_data);
-+
-+ /* Tell ffi_closure_SYSV how to perform return type promotions.
-+ Because the FFI_SYSV ABI returns the structures <= 8 bytes in r3/r4
-+ we have to tell ffi_closure_SYSV how to treat them. We combine the base
-+ type FFI_SYSV_TYPE_SMALL_STRUCT - 1 with the size of the struct.
-+ So a one byte struct gets the return type 16. Return type 1 to 15 are
-+ already used and we never have a struct with size zero. That is the reason
-+ for the subtraction of 1. See the comment in ffitarget.h about ordering.
-+ */
-+ if (cif->abi == FFI_SYSV && cif->rtype->type == FFI_TYPE_STRUCT
-+ && size <= 8)
-+ return (FFI_SYSV_TYPE_SMALL_STRUCT - 1) + size;
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+ else if (cif->rtype->type == FFI_TYPE_LONGDOUBLE
-+ && cif->abi != FFI_LINUX && cif->abi != FFI_LINUX_SOFT_FLOAT)
-+ return FFI_TYPE_STRUCT;
-+#endif
-+ /* With FFI_LINUX_SOFT_FLOAT floats and doubles are handled like UINT32
-+ respectivley UINT64. */
-+ if (cif->abi == FFI_LINUX_SOFT_FLOAT)
-+ {
-+ switch (cif->rtype->type)
-+ {
-+ case FFI_TYPE_FLOAT:
-+ return FFI_TYPE_UINT32;
-+ break;
-+ case FFI_TYPE_DOUBLE:
-+ return FFI_TYPE_UINT64;
-+ break;
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+ case FFI_TYPE_LONGDOUBLE:
-+ return FFI_TYPE_UINT128;
-+ break;
-+#endif
-+ default:
-+ return cif->rtype->type;
-+ }
-+ }
-+ else
-+ {
-+ return cif->rtype->type;
-+ }
-+}
-+
-+int FFI_HIDDEN ffi_closure_helper_LINUX64 (ffi_closure *, void *,
-+ unsigned long *, ffi_dblfl *);
-+
-+int FFI_HIDDEN
-+ffi_closure_helper_LINUX64 (ffi_closure *closure, void *rvalue,
-+ unsigned long *pst, ffi_dblfl *pfr)
-+{
-+ /* rvalue is the pointer to space for return value in closure assembly */
-+ /* pst is the pointer to parameter save area
-+ (r3-r10 are stored into its first 8 slots by ffi_closure_LINUX64) */
-+ /* pfr is the pointer to where f1-f13 are stored in ffi_closure_LINUX64 */
-+
-+ void **avalue;
-+ ffi_type **arg_types;
-+ long i, avn;
-+ ffi_cif *cif;
-+ ffi_dblfl *end_pfr = pfr + NUM_FPR_ARG_REGISTERS64;
-+
-+ cif = closure->cif;
-+ avalue = alloca (cif->nargs * sizeof (void *));
-+
-+ /* Copy the caller's structure return value address so that the closure
-+ returns the data directly to the caller. */
-+ if (cif->rtype->type == FFI_TYPE_STRUCT)
-+ {
-+ rvalue = (void *) *pst;
-+ pst++;
-+ }
-+
-+ i = 0;
-+ avn = cif->nargs;
-+ arg_types = cif->arg_types;
-+
-+ /* Grab the addresses of the arguments from the stack frame. */
-+ while (i < avn)
-+ {
-+ switch (arg_types[i]->type)
-+ {
-+ case FFI_TYPE_SINT8:
-+ case FFI_TYPE_UINT8:
-+ avalue[i] = (char *) pst + 7;
-+ pst++;
-+ break;
-+
-+ case FFI_TYPE_SINT16:
-+ case FFI_TYPE_UINT16:
-+ avalue[i] = (char *) pst + 6;
-+ pst++;
-+ break;
-+
-+ case FFI_TYPE_SINT32:
-+ case FFI_TYPE_UINT32:
-+ avalue[i] = (char *) pst + 4;
-+ pst++;
-+ break;
-+
-+ case FFI_TYPE_SINT64:
-+ case FFI_TYPE_UINT64:
-+ case FFI_TYPE_POINTER:
-+ avalue[i] = pst;
-+ pst++;
-+ break;
-+
-+ case FFI_TYPE_STRUCT:
-+ /* Structures with size less than eight bytes are passed
-+ left-padded. */
-+ if (arg_types[i]->size < 8)
-+ avalue[i] = (char *) pst + 8 - arg_types[i]->size;
-+ else
-+ avalue[i] = pst;
-+ pst += (arg_types[i]->size + 7) / 8;
-+ break;
-+
-+ case FFI_TYPE_FLOAT:
-+ /* unfortunately float values are stored as doubles
-+ * in the ffi_closure_LINUX64 code (since we don't check
-+ * the type in that routine).
-+ */
-+
-+ /* there are 13 64bit floating point registers */
-+
-+ if (pfr < end_pfr)
-+ {
-+ double temp = pfr->d;
-+ pfr->f = (float) temp;
-+ avalue[i] = pfr;
-+ pfr++;
-+ }
-+ else
-+ avalue[i] = pst;
-+ pst++;
-+ break;
-+
-+ case FFI_TYPE_DOUBLE:
-+ /* On the outgoing stack all values are aligned to 8 */
-+ /* there are 13 64bit floating point registers */
-+
-+ if (pfr < end_pfr)
-+ {
-+ avalue[i] = pfr;
-+ pfr++;
-+ }
-+ else
-+ avalue[i] = pst;
-+ pst++;
-+ break;
-+
-+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE
-+ case FFI_TYPE_LONGDOUBLE:
-+ if (pfr + 1 < end_pfr)
-+ {
-+ avalue[i] = pfr;
-+ pfr += 2;
-+ }
-+ else
-+ {
-+ if (pfr < end_pfr)
-+ {
-+ /* Passed partly in f13 and partly on the stack.
-+ Move it all to the stack. */
-+ *pst = *(unsigned long *) pfr;
-+ pfr++;
-+ }
-+ avalue[i] = pst;
-+ }
-+ pst += 2;
-+ break;
-+#endif
-+
-+ default:
-+ FFI_ASSERT (0);
-+ }
-+
-+ i++;
-+ }
-+
-+
-+ (closure->fun) (cif, rvalue, avalue, closure->user_data);
-+
-+ /* Tell ffi_closure_LINUX64 how to perform return type promotions. */
-+ return cif->rtype->type;
-+}
++ || cit->abi == FFI_LINUX_SOFT_FLOAT))
+ return FFI_BAD_ABI;
+
+ tramp = (unsigned int *) &closure->tramp[0];
===================================================================
--- libffi.orig/configure
+++ libffi/configure
-@@ -12240,45 +12240,6 @@ $as_echo "$icc_archflag" >&6; }
- # default optimization flags for gcc on all systems
- CFLAGS="-O3 -fomit-frame-pointer"
+@@ -621,6 +621,9 @@ FFI_DEBUG_FALSE
+ FFI_DEBUG_TRUE
+ TARGETDIR
+ TARGET
++FFI_EXEC_TRAMPOLINE_TABLE
++FFI_EXEC_TRAMPOLINE_TABLE_FALSE
++FFI_EXEC_TRAMPOLINE_TABLE_TRUE
+ sys_symbol_underscore
+ HAVE_LONG_DOUBLE
+ ALLOCA
+@@ -685,6 +688,7 @@ TESTSUBDIR_TRUE
+ MAINT
+ MAINTAINER_MODE_FALSE
+ MAINTAINER_MODE_TRUE
++PRTDIAG
+ CPP
+ OTOOL64
+ OTOOL
+@@ -751,6 +755,7 @@ am__isrc
+ INSTALL_DATA
+ INSTALL_SCRIPT
+ INSTALL_PROGRAM
++ax_enable_builddir_sed
+ target_os
+ target_vendor
+ target_cpu
+@@ -804,6 +809,7 @@ SHELL'
+ ac_subst_files=''
+ ac_user_opts='
+ enable_option_checking
++enable_builddir
+ enable_dependency_tracking
+ enable_shared
+ enable_static
+@@ -812,6 +818,8 @@ enable_fast_install
+ with_gnu_ld
+ with_sysroot
+ enable_libtool_lock
++enable_portable_binary
++with_gcc_arch
+ enable_maintainer_mode
+ enable_debug
+ enable_structs
+@@ -1446,6 +1454,8 @@ Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
++ --disable-builddir disable automatic build in subdir of sources
++
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+ --enable-shared[=PKGS] build shared libraries [default=yes]
+@@ -1453,6 +1463,9 @@ Optional Features:
+ --enable-fast-install[=PKGS]
+ optimize for fast installation [default=yes]
+ --disable-libtool-lock avoid locking (might break parallel builds)
++ --enable-portable-binary
++ disable compiler optimizations that would produce
++ unportable binaries
+ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer
+ --enable-debug debugging mode
+@@ -1468,6 +1481,8 @@ Optional Packages:
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --with-sysroot=DIR Search for dependent libraries within DIR
+ (or the compiler's sysroot if not specified).
++ --with-gcc-arch=<arch> use architecture <arch> for gcc -march/-mtune,
++ instead of guessing
-- # -malign-double for x86 systems
-- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -malign-double" >&5
--$as_echo_n "checking whether C compiler accepts -malign-double... " >&6; }
--if ${ax_cv_c_flags__malign_double+:} false; then :
-- $as_echo_n "(cached) " >&6
+ Some influential environment variables:
+ CC C compiler command
+@@ -2643,6 +2658,110 @@ target_alias=${target_alias-$host_alias}
+
+ . ${srcdir}/configure.host
+
++
++ # [$]@ is unsable in 2.60+ but earlier autoconf had no ac_configure_args
++ if test "${ac_configure_args+set}" != "set" ; then
++ ac_configure_args=
++ for ac_arg in ${1+"$@"}; do
++ ac_configure_args="$ac_configure_args '$ac_arg'"
++ done
++ fi
++
++# expand $ac_aux_dir to an absolute path
++am_aux_dir=`cd $ac_aux_dir && pwd`
++
++
++ax_enable_builddir="."
++# Check whether --enable-builddir was given.
++if test "${enable_builddir+set}" = set; then :
++ enableval=$enable_builddir; ax_enable_builddir="$enableval"
++else
++ ax_enable_builddir="auto"
++fi
++
++if test ".$ac_srcdir_defaulted" != ".no" ; then
++if test ".$srcdir" = ".." ; then
++ if test -f config.status ; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: toplevel srcdir already configured... skipping subdir build" >&5
++$as_echo "$as_me: toplevel srcdir already configured... skipping subdir build" >&6;}
++ else
++ test ".$ax_enable_builddir" = "." && ax_enable_builddir="."
++ test ".$ax_enable_builddir" = ".no" && ax_enable_builddir="."
++ test ".$TARGET" = "." && TARGET="$target"
++ test ".$ax_enable_builddir" = ".auto" && ax_enable_builddir="$TARGET"
++ if test ".$ax_enable_builddir" != ".." ; then # we know where to go and
++ as_dir=$ax_enable_builddir; as_fn_mkdir_p
++ echo __.$ax_enable_builddir.__ > $ax_enable_builddir/conftest.tmp
++ cd $ax_enable_builddir
++ if grep __.$ax_enable_builddir.__ conftest.tmp >/dev/null 2>/dev/null ; then
++ rm conftest.tmp
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: continue configure in default builddir \"./$ax_enable_builddir\"" >&5
++$as_echo "continue configure in default builddir \"./$ax_enable_builddir\"" >&6; }
++ else
++ as_fn_error $? "could not change to default builddir \"./$ax_enable_builddir\"" "$LINENO" 5
++ fi
++ srcdir=`echo "$ax_enable_builddir" |
++ sed -e 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g;s,[/]$,,;'`
++ # going to restart from subdirectory location
++ test -f $srcdir/config.log && mv $srcdir/config.log .
++ test -f $srcdir/confdefs.h && mv $srcdir/confdefs.h .
++ test -f $srcdir/conftest.log && mv $srcdir/conftest.log .
++ test -f $srcdir/$cache_file && mv $srcdir/$cache_file .
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ....exec $SHELL $srcdir/$0 \"--srcdir=$srcdir\" \"--enable-builddir=$ax_enable_builddir\" ${1+\"$@\"}" >&5
++$as_echo "....exec $SHELL $srcdir/$0 \"--srcdir=$srcdir\" \"--enable-builddir=$ax_enable_builddir\" ${1+\"$@\"}" >&6; }
++ case "$0" in # restart
++ /\\*) eval $SHELL "'$0'" "'--srcdir=$srcdir'" "'--enable-builddir=$ax_enable_builddir'" $ac_configure_args ;;
++ *) eval $SHELL "'$srcdir/$0'" "'--srcdir=$srcdir'" "'--enable-builddir=$ax_enable_builddir'" $ac_configure_args ;;
++ esac ; exit $?
++ fi
++ fi
++fi fi
++test ".$ax_enable_builddir" = ".auto" && ax_enable_builddir="."
++# Extract the first word of "gsed sed", so it can be a program name with args.
++set dummy gsed sed; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_path_ax_enable_builddir_sed+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ case $ax_enable_builddir_sed in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_ax_enable_builddir_sed="$ax_enable_builddir_sed" # Let the user override the test with a path.
++ ;;
++ *)
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_path_ax_enable_builddir_sed="$as_dir/$ac_word$ac_exec_ext"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++ test -z "$ac_cv_path_ax_enable_builddir_sed" && ac_cv_path_ax_enable_builddir_sed="sed"
++ ;;
++esac
++fi
++ax_enable_builddir_sed=$ac_cv_path_ax_enable_builddir_sed
++if test -n "$ax_enable_builddir_sed"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_enable_builddir_sed" >&5
++$as_echo "$ax_enable_builddir_sed" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++ax_enable_builddir_auxdir="$am_aux_dir"
++ac_config_commands="$ac_config_commands buildir"
++
++
+ am__api_version='1.11'
+
+ # Find a good install program. We prefer a C program (faster),
+@@ -2800,9 +2919,6 @@ test "$program_suffix" != NONE &&
+ ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+ program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+-# expand $ac_aux_dir to an absolute path
+-am_aux_dir=`cd $ac_aux_dir && pwd`
+-
+ if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+@@ -11835,205 +11951,1090 @@ CC="$lt_save_CC"
+
+
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+-$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+- # Check whether --enable-maintainer-mode was given.
+-if test "${enable_maintainer_mode+set}" = set; then :
+- enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
-else
+- USE_MAINTAINER_MODE=no
+-fi
-
-- ax_save_FLAGS=$CFLAGS
-- CFLAGS="-malign-double"
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
--/* end confdefs.h. */
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+-$as_echo "$USE_MAINTAINER_MODE" >&6; }
+- if test $USE_MAINTAINER_MODE = yes; then
+- MAINTAINER_MODE_TRUE=
+- MAINTAINER_MODE_FALSE='#'
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler vendor" >&5
++$as_echo_n "checking for C compiler vendor... " >&6; }
++if ${ax_cv_c_compiler_vendor+:} false; then :
++ $as_echo_n "(cached) " >&6
+ else
+- MAINTAINER_MODE_TRUE='#'
+- MAINTAINER_MODE_FALSE=
+-fi
-
--int
--main ()
--{
+- MAINT=$MAINTAINER_MODE_TRUE
++ ax_cv_c_compiler_vendor=unknown
++ # note: don't check for gcc first since some other compilers define __GNUC__
++ for ventest in intel:__ICC,__ECC,__INTEL_COMPILER ibm:__xlc__,__xlC__,__IBMC__,__IBMCPP__ pathscale:__PATHCC__,__PATHSCALE__ clang:__clang__ gnu:__GNUC__ sun:__SUNPRO_C,__SUNPRO_CC hp:__HP_cc,__HP_aCC dec:__DECC,__DECCXX,__DECC_VER,__DECCXX_VER borland:__BORLANDC__,__TURBOC__ comeau:__COMO__ cray:_CRAYC kai:__KCC lcc:__LCC__ metrowerks:__MWERKS__ sgi:__sgi,sgi microsoft:_MSC_VER watcom:__WATCOMC__ portland:__PGI; do
++ vencpp="defined("`echo $ventest | cut -d: -f2 | sed 's/,/) || defined(/g'`")"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
+
++int
++main ()
++{
+
++#if !($vencpp)
++ thisisanerror;
++#endif
+
+-for ac_header in sys/mman.h
+-do :
+- ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default"
+-if test "x$ac_cv_header_sys_mman_h" = xyes; then :
+- cat >>confdefs.h <<_ACEOF
+-#define HAVE_SYS_MMAN_H 1
++ ;
++ return 0;
++}
+ _ACEOF
-
-- ;
-- return 0;
--}
++if ac_fn_c_try_compile "$LINENO"; then :
++ ax_cv_c_compiler_vendor=`echo $ventest | cut -d: -f1`; break
+ fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ done
+
+-done
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_compiler_vendor" >&5
++$as_echo "$ax_cv_c_compiler_vendor" >&6; }
+
+-for ac_func in mmap
+-do :
+- ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
+-if test "x$ac_cv_func_mmap" = xyes; then :
+- cat >>confdefs.h <<_ACEOF
+-#define HAVE_MMAP 1
-_ACEOF
--if ac_fn_c_try_compile "$LINENO"; then :
-- ax_cv_c_flags__malign_double=yes
+
+-fi
+-done
+
+
+-ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default"
+-if test "x$ac_cv_header_sys_mman_h" = xyes; then :
+- libffi_header_sys_mman_h=yes
-else
-- ax_cv_c_flags__malign_double=no
+- libffi_header_sys_mman_h=no
-fi
--rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-- CFLAGS=$ax_save_FLAGS
+
+
+-ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
+-if test "x$ac_cv_func_mmap" = xyes; then :
+- libffi_func_mmap=yes
++# Check whether --enable-portable-binary was given.
++if test "${enable_portable_binary+set}" = set; then :
++ enableval=$enable_portable_binary; acx_maxopt_portable=$withval
+ else
+- libffi_func_mmap=no
++ acx_maxopt_portable=no
+ fi
+
+-if test "$libffi_header_sys_mman_h" != yes \
+- || test "$libffi_func_mmap" != yes; then
+- ac_cv_func_mmap_file=no
+- ac_cv_func_mmap_dev_zero=no
+- ac_cv_func_mmap_anon=no
+-else
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether read-only mmap of a plain file works" >&5
+-$as_echo_n "checking whether read-only mmap of a plain file works... " >&6; }
+-if ${ac_cv_func_mmap_file+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+- # Add a system to this blacklist if
+- # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a
+- # memory area containing the same data that you'd get if you applied
+- # read() to the same fd. The only system known to have a problem here
+- # is VMS, where text files have record structure.
+- case "$host_os" in
+- vms* | ultrix*)
+- ac_cv_func_mmap_file=no ;;
+- *)
+- ac_cv_func_mmap_file=yes;;
+- esac
-fi
--
--eval ax_check_compiler_flags=$ax_cv_c_flags__malign_double
--{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
--$as_echo "$ax_check_compiler_flags" >&6; }
--if test "x$ax_check_compiler_flags" = xyes; then
-- CFLAGS="$CFLAGS -malign-double"
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_file" >&5
+-$as_echo "$ac_cv_func_mmap_file" >&6; }
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap from /dev/zero works" >&5
+-$as_echo_n "checking whether mmap from /dev/zero works... " >&6; }
+-if ${ac_cv_func_mmap_dev_zero+:} false; then :
+- $as_echo_n "(cached) " >&6
-else
-- :
+- # Add a system to this blacklist if it has mmap() but /dev/zero
+- # does not exist, or if mmapping /dev/zero does not give anonymous
+- # zeroed pages with both the following properties:
+- # 1. If you map N consecutive pages in with one call, and then
+- # unmap any subset of those pages, the pages that were not
+- # explicitly unmapped remain accessible.
+- # 2. If you map two adjacent blocks of memory and then unmap them
+- # both at once, they must both go away.
+- # Systems known to be in this category are Windows (all variants),
+- # VMS, and Darwin.
+- case "$host_os" in
+- vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00)
+- ac_cv_func_mmap_dev_zero=no ;;
+- *)
+- ac_cv_func_mmap_dev_zero=yes;;
+- esac
-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_dev_zero" >&5
+-$as_echo "$ac_cv_func_mmap_dev_zero" >&6; }
+
+- # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for.
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAP_ANON(YMOUS)" >&5
+-$as_echo_n "checking for MAP_ANON(YMOUS)... " >&6; }
+-if ${ac_cv_decl_map_anon+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++# Try to determine "good" native compiler flags if none specified via CFLAGS
++if test "$ac_test_CFLAGS" != "set"; then
++ CFLAGS=""
++ case $ax_cv_c_compiler_vendor in
++ dec) CFLAGS="-newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host"
++ if test "x$acx_maxopt_portable" = xno; then
++ CFLAGS="$CFLAGS -arch host"
++ fi;;
++
++ sun) CFLAGS="-native -fast -xO5 -dalign"
++ if test "x$acx_maxopt_portable" = xyes; then
++ CFLAGS="$CFLAGS -xarch=generic"
++ fi;;
++
++ hp) CFLAGS="+Oall +Optrs_ansi +DSnative"
++ if test "x$acx_maxopt_portable" = xyes; then
++ CFLAGS="$CFLAGS +DAportable"
++ fi;;
++
++ ibm) if test "x$acx_maxopt_portable" = xno; then
++ xlc_opt="-qarch=auto -qtune=auto"
++ else
++ xlc_opt="-qtune=auto"
++ fi
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $xlc_opt" >&5
++$as_echo_n "checking whether C compiler accepts $xlc_opt... " >&6; }
++ax_save_FLAGS=$CFLAGS
++ CFLAGS="$xlc_opt"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+-#include <sys/types.h>
+-#include <sys/mman.h>
+-#include <unistd.h>
-
+-#ifndef MAP_ANONYMOUS
+-#define MAP_ANONYMOUS MAP_ANON
+-#endif
+
+ int
+ main ()
+ {
+-int n = MAP_ANONYMOUS;
++
+ ;
+ return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+- ac_cv_decl_map_anon=yes
++ eval `$as_echo "ax_cv_c_flags_$xlc_opt" | $as_tr_sh`=yes
+ else
+- ac_cv_decl_map_anon=no
++ eval `$as_echo "ax_cv_c_flags_$xlc_opt" | $as_tr_sh`=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_decl_map_anon" >&5
+-$as_echo "$ac_cv_decl_map_anon" >&6; }
++ CFLAGS=$ax_save_FLAGS
++eval ax_check_compiler_flags=$`$as_echo "ax_cv_c_flags_$xlc_opt" | $as_tr_sh`
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
++$as_echo "$ax_check_compiler_flags" >&6; }
++if test "x$ax_check_compiler_flags" = xyes; then
++ CFLAGS="-O3 -qansialias -w $xlc_opt"
++else
++ CFLAGS="-O3 -qansialias -w"
++ echo "******************************************************"
++ echo "* You seem to have the IBM C compiler. It is *"
++ echo "* recommended for best performance that you use: *"
++ echo "* *"
++ echo "* CFLAGS=-O3 -qarch=xxx -qtune=xxx -qansialias -w *"
++ echo "* ^^^ ^^^ *"
++ echo "* where xxx is pwr2, pwr3, 604, or whatever kind of *"
++ echo "* CPU you have. (Set the CFLAGS environment var. *"
++ echo "* and re-run configure.) For more info, man cc. *"
++ echo "******************************************************"
++fi
++
++ ;;
++
++ intel) CFLAGS="-O3 -ansi_alias"
++ if test "x$acx_maxopt_portable" = xno; then
++ icc_archflag=unknown
++ icc_flags=""
++ case $host_cpu in
++ i686*|x86_64*)
++ # icc accepts gcc assembly syntax, so these should work:
+
+- if test $ac_cv_decl_map_anon = no; then
+- ac_cv_func_mmap_anon=no
+- else
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap with MAP_ANON(YMOUS) works" >&5
+-$as_echo_n "checking whether mmap with MAP_ANON(YMOUS) works... " >&6; }
+-if ${ac_cv_func_mmap_anon+:} false; then :
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5
++$as_echo_n "checking for x86 cpuid 0 output... " >&6; }
++if ${ax_cv_gcc_x86_cpuid_0+:} false; then :
+ $as_echo_n "(cached) " >&6
+ else
+- # Add a system to this blacklist if it has mmap() and MAP_ANON or
+- # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
+- # doesn't give anonymous zeroed pages with the same properties listed
+- # above for use of /dev/zero.
+- # Systems known to be in this category are Windows, VMS, and SCO Unix.
+- case "$host_os" in
+- vms* | cygwin* | pe | mingw* | sco* | udk* )
+- ac_cv_func_mmap_anon=no ;;
+- *)
+- ac_cv_func_mmap_anon=yes;;
+- esac
+-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_anon" >&5
+-$as_echo "$ac_cv_func_mmap_anon" >&6; }
+- fi
+-fi
-
- # -fstrict-aliasing for gcc-2.95+
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fstrict-aliasing" >&5
- $as_echo_n "checking whether C compiler accepts -fstrict-aliasing... " >&6; }
-@@ -12318,7 +12279,6 @@ else
+-if test $ac_cv_func_mmap_file = yes; then
++ if test "$cross_compiling" = yes; then :
++ ax_cv_gcc_x86_cpuid_0=unknown
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <stdio.h>
++int
++main ()
++{
+
+-$as_echo "#define HAVE_MMAP_FILE 1" >>confdefs.h
++ int op = 0, eax, ebx, ecx, edx;
++ FILE *f;
++ __asm__("cpuid"
++ : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
++ : "a" (op));
++ f = fopen("conftest_cpuid", "w"); if (!f) return 1;
++ fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
++ fclose(f);
++ return 0;
+
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_run "$LINENO"; then :
++ ax_cv_gcc_x86_cpuid_0=`cat conftest_cpuid`; rm -f conftest_cpuid
++else
++ ax_cv_gcc_x86_cpuid_0=unknown; rm -f conftest_cpuid
fi
+-if test $ac_cv_func_mmap_dev_zero = yes; then
+-
+-$as_echo "#define HAVE_MMAP_DEV_ZERO 1" >>confdefs.h
+-
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++ conftest.$ac_objext conftest.beam conftest.$ac_ext
+ fi
+-if test $ac_cv_func_mmap_anon = yes; then
+-
+-$as_echo "#define HAVE_MMAP_ANON 1" >>confdefs.h
+ fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5
++$as_echo "$ax_cv_gcc_x86_cpuid_0" >&6; }
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
-- # note that we enable "unsafe" fp optimization with other compilers, too
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -ffast-math" >&5
- $as_echo_n "checking whether C compiler accepts -ffast-math... " >&6; }
- if ${ax_cv_c_flags__ffast_math+:} false; then :
+
+- if test -d $srcdir/testsuite; then
+- TESTSUBDIR_TRUE=
+- TESTSUBDIR_FALSE='#'
+-else
+- TESTSUBDIR_TRUE='#'
+- TESTSUBDIR_FALSE=
+-fi
+
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+-TARGETDIR="unknown"
+-case "$host" in
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5
++$as_echo_n "checking for x86 cpuid 1 output... " >&6; }
++if ${ax_cv_gcc_x86_cpuid_1+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test "$cross_compiling" = yes; then :
++ ax_cv_gcc_x86_cpuid_1=unknown
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <stdio.h>
++int
++main ()
++{
++
++ int op = 1, eax, ebx, ecx, edx;
++ FILE *f;
++ __asm__("cpuid"
++ : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
++ : "a" (op));
++ f = fopen("conftest_cpuid", "w"); if (!f) return 1;
++ fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
++ fclose(f);
++ return 0;
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_run "$LINENO"; then :
++ ax_cv_gcc_x86_cpuid_1=`cat conftest_cpuid`; rm -f conftest_cpuid
++else
++ ax_cv_gcc_x86_cpuid_1=unknown; rm -f conftest_cpuid
++fi
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++ conftest.$ac_objext conftest.beam conftest.$ac_ext
++fi
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5
++$as_echo "$ax_cv_gcc_x86_cpuid_1" >&6; }
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++
++ case $ax_cv_gcc_x86_cpuid_0 in # see AX_GCC_ARCHFLAG
++ *:756e6547:*:*) # Intel
++ case $ax_cv_gcc_x86_cpuid_1 in
++ *6a?:*[234]:*:*|*6[789b]?:*:*:*) icc_flags="-xK";;
++ *f3[347]:*:*:*|*f41347:*:*:*) icc_flags="-xP -xN -xW -xK";;
++ *f??:*:*:*) icc_flags="-xN -xW -xK";;
++ esac ;;
++ esac ;;
++ esac
++ if test "x$icc_flags" != x; then
++ for flag in $icc_flags; do
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
++$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
++ax_save_FLAGS=$CFLAGS
++ CFLAGS="$flag"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ eval `$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`=yes
++else
++ eval `$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ CFLAGS=$ax_save_FLAGS
++eval ax_check_compiler_flags=$`$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
++$as_echo "$ax_check_compiler_flags" >&6; }
++if test "x$ax_check_compiler_flags" = xyes; then
++ icc_archflag=$flag; break
++else
++ :
++fi
++
++ done
++ fi
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for icc architecture flag" >&5
++$as_echo_n "checking for icc architecture flag... " >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $icc_archflag" >&5
++$as_echo "$icc_archflag" >&6; }
++ if test "x$icc_archflag" != xunknown; then
++ CFLAGS="$CFLAGS $icc_archflag"
++ fi
++ fi
++ ;;
++
++ gnu)
++ # default optimization flags for gcc on all systems
++ CFLAGS="-O3 -fomit-frame-pointer"
++
++ # -fstrict-aliasing for gcc-2.95+
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fstrict-aliasing" >&5
++$as_echo_n "checking whether C compiler accepts -fstrict-aliasing... " >&6; }
++if ${ax_cv_c_flags__fstrict_aliasing+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++
++ ax_save_FLAGS=$CFLAGS
++ CFLAGS="-fstrict-aliasing"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ ax_cv_c_flags__fstrict_aliasing=yes
++else
++ ax_cv_c_flags__fstrict_aliasing=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ CFLAGS=$ax_save_FLAGS
++fi
++
++eval ax_check_compiler_flags=$ax_cv_c_flags__fstrict_aliasing
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
++$as_echo "$ax_check_compiler_flags" >&6; }
++if test "x$ax_check_compiler_flags" = xyes; then
++ CFLAGS="$CFLAGS -fstrict-aliasing"
++else
++ :
++fi
++
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -ffast-math" >&5
++$as_echo_n "checking whether C compiler accepts -ffast-math... " >&6; }
++if ${ax_cv_c_flags__ffast_math+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++
++ ax_save_FLAGS=$CFLAGS
++ CFLAGS="-ffast-math"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ ax_cv_c_flags__ffast_math=yes
++else
++ ax_cv_c_flags__ffast_math=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ CFLAGS=$ax_save_FLAGS
++fi
++
++eval ax_check_compiler_flags=$ax_cv_c_flags__ffast_math
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
++$as_echo "$ax_check_compiler_flags" >&6; }
++if test "x$ax_check_compiler_flags" = xyes; then
++ CFLAGS="$CFLAGS -ffast-math"
++else
++ :
++fi
++
++
++
++
++
++
++# Check whether --with-gcc-arch was given.
++if test "${with_gcc_arch+set}" = set; then :
++ withval=$with_gcc_arch; ax_gcc_arch=$withval
++else
++ ax_gcc_arch=yes
++fi
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5
++$as_echo_n "checking for gcc architecture flag... " >&6; }
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
++$as_echo "" >&6; }
++if ${ax_cv_gcc_archflag+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++
++ax_cv_gcc_archflag="unknown"
++
++if test "$GCC" = yes; then
++
++if test "x$ax_gcc_arch" = xyes; then
++ax_gcc_arch=""
++if test "$cross_compiling" = no; then
++case $host_cpu in
++ i[3456]86*|x86_64*) # use cpuid codes, in part from x86info-1.7 by D. Jones
++
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5
++$as_echo_n "checking for x86 cpuid 0 output... " >&6; }
++if ${ax_cv_gcc_x86_cpuid_0+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test "$cross_compiling" = yes; then :
++ ax_cv_gcc_x86_cpuid_0=unknown
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <stdio.h>
++int
++main ()
++{
++
++ int op = 0, eax, ebx, ecx, edx;
++ FILE *f;
++ __asm__("cpuid"
++ : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
++ : "a" (op));
++ f = fopen("conftest_cpuid", "w"); if (!f) return 1;
++ fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
++ fclose(f);
++ return 0;
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_run "$LINENO"; then :
++ ax_cv_gcc_x86_cpuid_0=`cat conftest_cpuid`; rm -f conftest_cpuid
++else
++ ax_cv_gcc_x86_cpuid_0=unknown; rm -f conftest_cpuid
++fi
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++ conftest.$ac_objext conftest.beam conftest.$ac_ext
++fi
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5
++$as_echo "$ax_cv_gcc_x86_cpuid_0" >&6; }
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++
++
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5
++$as_echo_n "checking for x86 cpuid 1 output... " >&6; }
++if ${ax_cv_gcc_x86_cpuid_1+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test "$cross_compiling" = yes; then :
++ ax_cv_gcc_x86_cpuid_1=unknown
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <stdio.h>
++int
++main ()
++{
++
++ int op = 1, eax, ebx, ecx, edx;
++ FILE *f;
++ __asm__("cpuid"
++ : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
++ : "a" (op));
++ f = fopen("conftest_cpuid", "w"); if (!f) return 1;
++ fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
++ fclose(f);
++ return 0;
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_run "$LINENO"; then :
++ ax_cv_gcc_x86_cpuid_1=`cat conftest_cpuid`; rm -f conftest_cpuid
++else
++ ax_cv_gcc_x86_cpuid_1=unknown; rm -f conftest_cpuid
++fi
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++ conftest.$ac_objext conftest.beam conftest.$ac_ext
++fi
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5
++$as_echo "$ax_cv_gcc_x86_cpuid_1" >&6; }
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++
++ case $ax_cv_gcc_x86_cpuid_0 in
++ *:756e6547:*:*) # Intel
++ case $ax_cv_gcc_x86_cpuid_1 in
++ *5[48]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;;
++ *5??:*:*:*) ax_gcc_arch=pentium ;;
++ *6[3456]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
++ *6a?:*[01]:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
++ *6a?:*[234]:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
++ *6[9d]?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;;
++ *6[78b]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
++ *6??:*:*:*) ax_gcc_arch=pentiumpro ;;
++ *f3[347]:*:*:*|*f41347:*:*:*)
++ case $host_cpu in
++ x86_64*) ax_gcc_arch="nocona pentium4 pentiumpro" ;;
++ *) ax_gcc_arch="prescott pentium4 pentiumpro" ;;
++ esac ;;
++ *f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro";;
++ esac ;;
++ *:68747541:*:*) # AMD
++ case $ax_cv_gcc_x86_cpuid_1 in
++ *5[67]?:*:*:*) ax_gcc_arch=k6 ;;
++ *5[8d]?:*:*:*) ax_gcc_arch="k6-2 k6" ;;
++ *5[9]?:*:*:*) ax_gcc_arch="k6-3 k6" ;;
++ *60?:*:*:*) ax_gcc_arch=k7 ;;
++ *6[12]?:*:*:*) ax_gcc_arch="athlon k7" ;;
++ *6[34]?:*:*:*) ax_gcc_arch="athlon-tbird k7" ;;
++ *67?:*:*:*) ax_gcc_arch="athlon-4 athlon k7" ;;
++ *6[68a]?:*:*:*)
++
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0x80000006 output" >&5
++$as_echo_n "checking for x86 cpuid 0x80000006 output... " >&6; }
++if ${ax_cv_gcc_x86_cpuid_0x80000006+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test "$cross_compiling" = yes; then :
++ ax_cv_gcc_x86_cpuid_0x80000006=unknown
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <stdio.h>
++int
++main ()
++{
++
++ int op = 0x80000006, eax, ebx, ecx, edx;
++ FILE *f;
++ __asm__("cpuid"
++ : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
++ : "a" (op));
++ f = fopen("conftest_cpuid", "w"); if (!f) return 1;
++ fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
++ fclose(f);
++ return 0;
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_run "$LINENO"; then :
++ ax_cv_gcc_x86_cpuid_0x80000006=`cat conftest_cpuid`; rm -f conftest_cpuid
++else
++ ax_cv_gcc_x86_cpuid_0x80000006=unknown; rm -f conftest_cpuid
++fi
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++ conftest.$ac_objext conftest.beam conftest.$ac_ext
++fi
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0x80000006" >&5
++$as_echo "$ax_cv_gcc_x86_cpuid_0x80000006" >&6; }
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++ # L2 cache size
++ case $ax_cv_gcc_x86_cpuid_0x80000006 in
++ *:*:*[1-9a-f]??????:*) # (L2 = ecx >> 16) >= 256
++ ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;;
++ *) ax_gcc_arch="athlon-4 athlon k7" ;;
++ esac ;;
++ *f[4cef8b]?:*:*:*) ax_gcc_arch="athlon64 k8" ;;
++ *f5?:*:*:*) ax_gcc_arch="opteron k8" ;;
++ *f7?:*:*:*) ax_gcc_arch="athlon-fx opteron k8" ;;
++ *f??:*:*:*) ax_gcc_arch="k8" ;;
++ esac ;;
++ *:746e6543:*:*) # IDT
++ case $ax_cv_gcc_x86_cpuid_1 in
++ *54?:*:*:*) ax_gcc_arch=winchip-c6 ;;
++ *58?:*:*:*) ax_gcc_arch=winchip2 ;;
++ *6[78]?:*:*:*) ax_gcc_arch=c3 ;;
++ *69?:*:*:*) ax_gcc_arch="c3-2 c3" ;;
++ esac ;;
++ esac
++ if test x"$ax_gcc_arch" = x; then # fallback
++ case $host_cpu in
++ i586*) ax_gcc_arch=pentium ;;
++ i686*) ax_gcc_arch=pentiumpro ;;
++ esac
++ fi
++ ;;
++
++ sparc*)
++ # Extract the first word of "prtdiag", so it can be a program name with args.
++set dummy prtdiag; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_path_PRTDIAG+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ case $PRTDIAG in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_PRTDIAG="$PRTDIAG" # Let the user override the test with a path.
++ ;;
++ *)
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++as_dummy="$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/"
++for as_dir in $as_dummy
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_path_PRTDIAG="$as_dir/$ac_word$ac_exec_ext"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++ test -z "$ac_cv_path_PRTDIAG" && ac_cv_path_PRTDIAG="prtdiag"
++ ;;
++esac
++fi
++PRTDIAG=$ac_cv_path_PRTDIAG
++if test -n "$PRTDIAG"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PRTDIAG" >&5
++$as_echo "$PRTDIAG" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++ cputype=`(((grep cpu /proc/cpuinfo | cut -d: -f2) ; ($PRTDIAG -v |grep -i sparc) ; grep -i cpu /var/run/dmesg.boot ) | head -n 1) 2> /dev/null`
++ cputype=`echo "$cputype" | tr -d ' -' |tr $as_cr_LETTERS $as_cr_letters`
++ case $cputype in
++ *ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;;
++ *ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;;
++ *ultrasparc*) ax_gcc_arch="ultrasparc v9" ;;
++ *supersparc*|*tms390z5[05]*) ax_gcc_arch="supersparc v8" ;;
++ *hypersparc*|*rt62[056]*) ax_gcc_arch="hypersparc v8" ;;
++ *cypress*) ax_gcc_arch=cypress ;;
++ esac ;;
++
++ alphaev5) ax_gcc_arch=ev5 ;;
++ alphaev56) ax_gcc_arch=ev56 ;;
++ alphapca56) ax_gcc_arch="pca56 ev56" ;;
++ alphapca57) ax_gcc_arch="pca57 pca56 ev56" ;;
++ alphaev6) ax_gcc_arch=ev6 ;;
++ alphaev67) ax_gcc_arch=ev67 ;;
++ alphaev68) ax_gcc_arch="ev68 ev67" ;;
++ alphaev69) ax_gcc_arch="ev69 ev68 ev67" ;;
++ alphaev7) ax_gcc_arch="ev7 ev69 ev68 ev67" ;;
++ alphaev79) ax_gcc_arch="ev79 ev7 ev69 ev68 ev67" ;;
++
++ powerpc*)
++ cputype=`((grep cpu /proc/cpuinfo | head -n 1 | cut -d: -f2 | cut -d, -f1 | sed 's/ //g') ; /usr/bin/machine ; /bin/machine; grep CPU /var/run/dmesg.boot | head -n 1 | cut -d" " -f2) 2> /dev/null`
++ cputype=`echo $cputype | sed -e 's/ppc//g;s/ *//g'`
++ case $cputype in
++ *750*) ax_gcc_arch="750 G3" ;;
++ *740[0-9]*) ax_gcc_arch="$cputype 7400 G4" ;;
++ *74[4-5][0-9]*) ax_gcc_arch="$cputype 7450 G4" ;;
++ *74[0-9][0-9]*) ax_gcc_arch="$cputype G4" ;;
++ *970*) ax_gcc_arch="970 G5 power4";;
++ *POWER4*|*power4*|*gq*) ax_gcc_arch="power4 970";;
++ *POWER5*|*power5*|*gr*|*gs*) ax_gcc_arch="power5 power4 970";;
++ 603ev|8240) ax_gcc_arch="$cputype 603e 603";;
++ *) ax_gcc_arch=$cputype ;;
++ esac
++ ax_gcc_arch="$ax_gcc_arch powerpc"
++ ;;
++esac
++fi # not cross-compiling
++fi # guess arch
++
++if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then
++for arch in $ax_gcc_arch; do
++ if test "x$acx_maxopt_portable" = xyes; then # if we require portable code
++ flags="-mtune=$arch"
++ # -mcpu=$arch and m$arch generate nonportable code on every arch except
++ # x86. And some other arches (e.g. Alpha) don't accept -mtune. Grrr.
++ case $host_cpu in i*86|x86_64*) flags="$flags -mcpu=$arch -m$arch";; esac
++ else
++ flags="-march=$arch -mcpu=$arch -m$arch"
++ fi
++ for flag in $flags; do
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
++$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
++ax_save_FLAGS=$CFLAGS
++ CFLAGS="$flag"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ eval `$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`=yes
++else
++ eval `$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ CFLAGS=$ax_save_FLAGS
++eval ax_check_compiler_flags=$`$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
++$as_echo "$ax_check_compiler_flags" >&6; }
++if test "x$ax_check_compiler_flags" = xyes; then
++ ax_cv_gcc_archflag=$flag; break
++else
++ :
++fi
++
++ done
++ test "x$ax_cv_gcc_archflag" = xunknown || break
++done
++fi
++
++fi # $GCC=yes
++
++fi
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5
++$as_echo_n "checking for gcc architecture flag... " >&6; }
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_archflag" >&5
++$as_echo "$ax_cv_gcc_archflag" >&6; }
++if test "x$ax_cv_gcc_archflag" = xunknown; then
++ :
++else
++ CFLAGS="$CFLAGS $ax_cv_gcc_archflag"
++fi
++
++ ;;
++ esac
++
++ if test -z "$CFLAGS"; then
++ echo ""
++ echo "********************************************************"
++ echo "* WARNING: Don't know the best CFLAGS for this system *"
++ echo "* Use ./configure CFLAGS=... to specify your own flags *"
++ echo "* (otherwise, a default of CFLAGS=-O3 will be used) *"
++ echo "********************************************************"
++ echo ""
++ CFLAGS="-O3"
++ fi
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CFLAGS" >&5
++$as_echo_n "checking whether C compiler accepts $CFLAGS... " >&6; }
++ax_save_FLAGS=$CFLAGS
++ CFLAGS="$CFLAGS"
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ eval `$as_echo "ax_cv_c_flags_$CFLAGS" | $as_tr_sh`=yes
++else
++ eval `$as_echo "ax_cv_c_flags_$CFLAGS" | $as_tr_sh`=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ CFLAGS=$ax_save_FLAGS
++eval ax_check_compiler_flags=$`$as_echo "ax_cv_c_flags_$CFLAGS" | $as_tr_sh`
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
++$as_echo "$ax_check_compiler_flags" >&6; }
++if test "x$ax_check_compiler_flags" = xyes; then
++ :
++else
++
++ echo ""
++ echo "********************************************************"
++ echo "* WARNING: The guessed CFLAGS don't seem to work with *"
++ echo "* your compiler. *"
++ echo "* Use ./configure CFLAGS=... to specify your own flags *"
++ echo "********************************************************"
++ echo ""
++ CFLAGS=""
++
++fi
++
++
++fi
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for maximum warnings" >&5
++$as_echo_n "checking CFLAGS for maximum warnings... " >&6; }
++if ${ac_cv_cflags_warn_all+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ ac_cv_cflags_warn_all="no, unknown"
++ ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++ ac_save_CFLAGS="$CFLAGS"
++for ac_arg in "-pedantic % -Wall" "-xstrconst % -v" "-std1 % -verbose -w0 -warnprotos" "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" "-ansi -ansiE % -fullwarn" "+ESlit % +w1" "-Xc % -pvctl,fullmsg" "-h conform % -h msglevel 2" #
++do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ ac_cv_cflags_warn_all=`echo $ac_arg | sed -e 's,.*% *,,'` ; break
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++done
++ CFLAGS="$ac_save_CFLAGS"
++ ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags_warn_all" >&5
++$as_echo "$ac_cv_cflags_warn_all" >&6; }
++case ".$ac_cv_cflags_warn_all" in
++ .ok|.ok,*) ;;
++ .|.no|.no,*)
++ ;;
++ *)
++ if echo " $CFLAGS " | grep " $ac_cv_cflags_warn_all " 2>&1 >/dev/null
++ then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ac_cv_cflags_warn_all"; } >&5
++ (: CFLAGS does contain $ac_cv_cflags_warn_all) 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ac_cv_cflags_warn_all\""; } >&5
++ (: CFLAGS="$CFLAGS $ac_cv_cflags_warn_all") 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }
++ CFLAGS="$CFLAGS $ac_cv_cflags_warn_all"
++ fi
++ ;;
++esac
++
++if test "x$GCC" = "xyes"; then
++ CFLAGS="$CFLAGS -fexceptions"
++fi
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
++$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
++ # Check whether --enable-maintainer-mode was given.
++if test "${enable_maintainer_mode+set}" = set; then :
++ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
++else
++ USE_MAINTAINER_MODE=no
++fi
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
++$as_echo "$USE_MAINTAINER_MODE" >&6; }
++ if test $USE_MAINTAINER_MODE = yes; then
++ MAINTAINER_MODE_TRUE=
++ MAINTAINER_MODE_FALSE='#'
++else
++ MAINTAINER_MODE_TRUE='#'
++ MAINTAINER_MODE_FALSE=
++fi
++
++ MAINT=$MAINTAINER_MODE_TRUE
++
++
++
++for ac_header in sys/mman.h
++do :
++ ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default"
++if test "x$ac_cv_header_sys_mman_h" = xyes; then :
++ cat >>confdefs.h <<_ACEOF
++#define HAVE_SYS_MMAN_H 1
++_ACEOF
++
++fi
++
++done
++
++for ac_func in mmap
++do :
++ ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
++if test "x$ac_cv_func_mmap" = xyes; then :
++ cat >>confdefs.h <<_ACEOF
++#define HAVE_MMAP 1
++_ACEOF
++
++fi
++done
++
++
++ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default"
++if test "x$ac_cv_header_sys_mman_h" = xyes; then :
++ libffi_header_sys_mman_h=yes
++else
++ libffi_header_sys_mman_h=no
++fi
++
++
++ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
++if test "x$ac_cv_func_mmap" = xyes; then :
++ libffi_func_mmap=yes
++else
++ libffi_func_mmap=no
++fi
++
++if test "$libffi_header_sys_mman_h" != yes \
++ || test "$libffi_func_mmap" != yes; then
++ ac_cv_func_mmap_file=no
++ ac_cv_func_mmap_dev_zero=no
++ ac_cv_func_mmap_anon=no
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether read-only mmap of a plain file works" >&5
++$as_echo_n "checking whether read-only mmap of a plain file works... " >&6; }
++if ${ac_cv_func_mmap_file+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ # Add a system to this blacklist if
++ # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a
++ # memory area containing the same data that you'd get if you applied
++ # read() to the same fd. The only system known to have a problem here
++ # is VMS, where text files have record structure.
++ case "$host_os" in
++ vms* | ultrix*)
++ ac_cv_func_mmap_file=no ;;
++ *)
++ ac_cv_func_mmap_file=yes;;
++ esac
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_file" >&5
++$as_echo "$ac_cv_func_mmap_file" >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap from /dev/zero works" >&5
++$as_echo_n "checking whether mmap from /dev/zero works... " >&6; }
++if ${ac_cv_func_mmap_dev_zero+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ # Add a system to this blacklist if it has mmap() but /dev/zero
++ # does not exist, or if mmapping /dev/zero does not give anonymous
++ # zeroed pages with both the following properties:
++ # 1. If you map N consecutive pages in with one call, and then
++ # unmap any subset of those pages, the pages that were not
++ # explicitly unmapped remain accessible.
++ # 2. If you map two adjacent blocks of memory and then unmap them
++ # both at once, they must both go away.
++ # Systems known to be in this category are Windows (all variants),
++ # VMS, and Darwin.
++ case "$host_os" in
++ vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00)
++ ac_cv_func_mmap_dev_zero=no ;;
++ *)
++ ac_cv_func_mmap_dev_zero=yes;;
++ esac
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_dev_zero" >&5
++$as_echo "$ac_cv_func_mmap_dev_zero" >&6; }
++
++ # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for.
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAP_ANON(YMOUS)" >&5
++$as_echo_n "checking for MAP_ANON(YMOUS)... " >&6; }
++if ${ac_cv_decl_map_anon+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <sys/types.h>
++#include <sys/mman.h>
++#include <unistd.h>
++
++#ifndef MAP_ANONYMOUS
++#define MAP_ANONYMOUS MAP_ANON
++#endif
++
++int
++main ()
++{
++int n = MAP_ANONYMOUS;
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ ac_cv_decl_map_anon=yes
++else
++ ac_cv_decl_map_anon=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_decl_map_anon" >&5
++$as_echo "$ac_cv_decl_map_anon" >&6; }
++
++ if test $ac_cv_decl_map_anon = no; then
++ ac_cv_func_mmap_anon=no
++ else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap with MAP_ANON(YMOUS) works" >&5
++$as_echo_n "checking whether mmap with MAP_ANON(YMOUS) works... " >&6; }
++if ${ac_cv_func_mmap_anon+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ # Add a system to this blacklist if it has mmap() and MAP_ANON or
++ # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
++ # doesn't give anonymous zeroed pages with the same properties listed
++ # above for use of /dev/zero.
++ # Systems known to be in this category are Windows, VMS, and SCO Unix.
++ case "$host_os" in
++ vms* | cygwin* | pe | mingw* | sco* | udk* )
++ ac_cv_func_mmap_anon=no ;;
++ *)
++ ac_cv_func_mmap_anon=yes;;
++ esac
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_anon" >&5
++$as_echo "$ac_cv_func_mmap_anon" >&6; }
++ fi
++fi
++
++if test $ac_cv_func_mmap_file = yes; then
++
++$as_echo "#define HAVE_MMAP_FILE 1" >>confdefs.h
++
++fi
++if test $ac_cv_func_mmap_dev_zero = yes; then
++
++$as_echo "#define HAVE_MMAP_DEV_ZERO 1" >>confdefs.h
++
++fi
++if test $ac_cv_func_mmap_anon = yes; then
++
++$as_echo "#define HAVE_MMAP_ANON 1" >>confdefs.h
++
++fi
++
++
++ if test -d $srcdir/testsuite; then
++ TESTSUBDIR_TRUE=
++ TESTSUBDIR_FALSE='#'
++else
++ TESTSUBDIR_TRUE='#'
++ TESTSUBDIR_FALSE=
++fi
++
++
++TARGETDIR="unknown"
++case "$host" in
+ alpha*-*-*)
+ TARGET=ALPHA; TARGETDIR=alpha;
+ # Support 128-bit long double, changeable via command-line switch.
+@@ -13282,13 +14283,30 @@ $as_echo "#define SYMBOL_UNDERSCORE 1" >
+ fi
+ fi
+
++
++FFI_EXEC_TRAMPOLINE_TABLE=0
+ case "$target" in
++ *arm*-apple-darwin*)
++ FFI_EXEC_TRAMPOLINE_TABLE=1
++
++$as_echo "#define FFI_EXEC_TRAMPOLINE_TABLE 1" >>confdefs.h
++
++ ;;
+ *-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
+
+ $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h
+
+ ;;
+ esac
++ if test x$FFI_EXEC_TRAMPOLINE_TABLE = x1; then
++ FFI_EXEC_TRAMPOLINE_TABLE_TRUE=
++ FFI_EXEC_TRAMPOLINE_TABLE_FALSE='#'
++else
++ FFI_EXEC_TRAMPOLINE_TABLE_TRUE='#'
++ FFI_EXEC_TRAMPOLINE_TABLE_FALSE=
++fi
++
++
+
+ if test x$TARGET = xX86_64; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports unwind section type" >&5
+@@ -13716,6 +14734,10 @@ if test -z "${PA64_HPUX_TRUE}" && test -
+ Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ fi
+
++if test -z "${FFI_EXEC_TRAMPOLINE_TABLE_TRUE}" && test -z "${FFI_EXEC_TRAMPOLINE_TABLE_FALSE}"; then
++ as_fn_error $? "conditional \"FFI_EXEC_TRAMPOLINE_TABLE\" was never defined.
++Usually this means the macro was only invoked conditionally." "$LINENO" 5
++fi
+ if test -z "${FFI_DEBUG_TRUE}" && test -z "${FFI_DEBUG_FALSE}"; then
+ as_fn_error $? "conditional \"FFI_DEBUG\" was never defined.
+ Usually this means the macro was only invoked conditionally." "$LINENO" 5
+@@ -14318,6 +15340,14 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
+ #
+ # INIT-COMMANDS
+ #
++ax_enable_builddir_srcdir="$srcdir" # $srcdir
++ax_enable_builddir_host="$HOST" # $HOST / $host
++ax_enable_builddir_version="$VERSION" # $VERSION
++ax_enable_builddir_package="$PACKAGE" # $PACKAGE
++ax_enable_builddir_auxdir="$ax_enable_builddir_auxdir" # $AUX
++ax_enable_builddir_sed="$ax_enable_builddir_sed" # $SED
++ax_enable_builddir="$ax_enable_builddir" # $SUB
++
+ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+
+@@ -14607,6 +15637,7 @@ for ac_config_target in $ac_config_targe
+ do
+ case $ac_config_target in
+ "fficonfig.h") CONFIG_HEADERS="$CONFIG_HEADERS fficonfig.h" ;;
++ "buildir") CONFIG_COMMANDS="$CONFIG_COMMANDS buildir" ;;
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+ "include") CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;;
+@@ -15245,6 +16276,150 @@ $as_echo "$as_me: executing $ac_file com
+
+
+ case $ac_file$ac_mode in
++ "buildir":C) ac_top_srcdir="$ax_enable_builddir_srcdir"
++ if test ".$ax_enable_builddir" = ".." ; then
++ if test -f "$top_srcdir/Makefile" ; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: skipping top_srcdir/Makefile - left untouched" >&5
++$as_echo "$as_me: skipping top_srcdir/Makefile - left untouched" >&6;}
++ else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: skipping top_srcdir/Makefile - not created" >&5
++$as_echo "$as_me: skipping top_srcdir/Makefile - not created" >&6;}
++ fi
++ else
++ if test -f "$ac_top_srcdir/Makefile" ; then
++ a=`grep "^VERSION " "$ac_top_srcdir/Makefile"` ; b=`grep "^VERSION " Makefile`
++ test "$a" != "$b" && rm "$ac_top_srcdir/Makefile"
++ fi
++ if test -f "$ac_top_srcdir/Makefile" ; then
++ echo "$ac_top_srcdir/Makefile : $ac_top_srcdir/Makefile.in" > $tmp/conftemp.mk
++ echo " @ echo 'REMOVED,,,' >\$@" >> $tmp/conftemp.mk
++ eval "${MAKE-make} -f $tmp/conftemp.mk 2>/dev/null >/dev/null"
++ if grep '^REMOVED,,,' "$ac_top_srcdir/Makefile" >/dev/null
++ then rm $ac_top_srcdir/Makefile ; fi
++ cp $tmp/conftemp.mk $ac_top_srcdir/makefiles.mk~ ## DEBUGGING
++ fi
++ if test ! -f "$ac_top_srcdir/Makefile" ; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: create top_srcdir/Makefile guessed from local Makefile" >&5
++$as_echo "$as_me: create top_srcdir/Makefile guessed from local Makefile" >&6;}
++ x='`' ; cat >$tmp/conftemp.sed <<_EOF
++/^\$/n
++x
++/^\$/bS
++x
++/\\\\\$/{H;d;}
++{H;s/.*//;x;}
++bM
++:S
++x
++/\\\\\$/{h;d;}
++{h;s/.*//;x;}
++:M
++s/\\(\\n\\) /\\1 /g
++/^ /d
++/^[ ]*[\\#]/d
++/^VPATH *=/d
++s/^srcdir *=.*/srcdir = ./
++s/^top_srcdir *=.*/top_srcdir = ./
++/[:=]/!d
++/^\\./d
++/ = /b
++/ .= /b
++/:/!b
++s/:.*/:/
++s/ / /g
++s/ \\([a-z][a-z-]*[a-zA-Z0-9]\\)\\([ :]\\)/ \\1 \\1-all\\2/g
++s/^\\([a-z][a-z-]*[a-zA-Z0-9]\\)\\([ :]\\)/\\1 \\1-all\\2/
++s/ / /g
++/^all all-all[ :]/i\\
++all-configured : all-all
++s/ [a-zA-Z0-9-]*-all [a-zA-Z0-9-]*-all-all//g
++/-all-all/d
++a\\
++ @ HOST="\$(HOST)\" \\\\\\
++ ; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\
++ ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
++ ; use=$x basename "\$\@" -all $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\
++ ; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test "\$\$n" = "0" ; then : \\\\\\
++ ; BUILD=$x grep "^####.*|" Makefile |tail -1| sed -e 's/.*|//' $x ; fi \\\\\\
++ ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\
++ ; test "\$\$use" = "\$\@" && BUILD=$x echo "\$\$BUILD" | tail -1 $x \\\\\\
++ ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
++ ; (cd "\$\$i" && test ! -f configure && \$(MAKE) \$\$use) || exit; done
++/dist-all *:/a\\
++ @ HOST="\$(HOST)\" \\\\\\
++ ; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\
++ ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
++ ; found=$x echo \$\$BUILD | wc -w $x \\\\\\
++ ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).tar.*" \\\\\\
++ ; if test "\$\$found" = "0" ; then : \\\\\\
++ ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\
++ ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
++ ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).tar.* \\\\\\
++ ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done
++/dist-[a-zA-Z0-9]*-all *:/a\\
++ @ HOST="\$(HOST)\" \\\\\\
++ ; test ".\$\$HOST" = "." && HOST=$x sh ./config.guess $x \\\\\\
++ ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
++ ; found=$x echo \$\$BUILD | wc -w $x \\\\\\
++ ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).*" \\\\\\
++ ; if test "\$\$found" = "0" ; then : \\\\\\
++ ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\
++ ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
++ ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).* \\\\\\
++ ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done
++/distclean-all *:/a\\
++ @ HOST="\$(HOST)\" \\\\\\
++ ; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\
++ ; BUILD=$x grep "^#### .*|" Makefile | sed -e 's/.*|//' $x \\\\\\
++ ; use=$x basename "\$\@" -all $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\
++ ; echo "MAKE \$\$HOST : \$\$n * \$\@ (all local builds)" \\\\\\
++ ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\
++ ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
++ ; echo "# rm -r \$\$i"; done ; echo "# (sleep 3)" ; sleep 3 \\\\\\
++ ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
++ ; echo "\$\$i" | grep "^/" > /dev/null && continue \\\\\\
++ ; echo "\$\$i" | grep "^../" > /dev/null && continue \\\\\\
++ ; echo "rm -r \$\$i"; (rm -r "\$\$i") ; done ; rm Makefile
++_EOF
++ cp "$tmp/conftemp.sed" "$ac_top_srcdir/makefile.sed~" ## DEBUGGING
++ $ax_enable_builddir_sed -f $tmp/conftemp.sed Makefile >$ac_top_srcdir/Makefile
++ if test -f "$ac_top_srcdir/Makefile.mk" ; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: extend top_srcdir/Makefile with top_srcdir/Makefile.mk" >&5
++$as_echo "$as_me: extend top_srcdir/Makefile with top_srcdir/Makefile.mk" >&6;}
++ cat $ac_top_srcdir/Makefile.mk >>$ac_top_srcdir/Makefile
++ fi ; xxxx="####"
++ echo "$xxxx CONFIGURATIONS FOR TOPLEVEL MAKEFILE: " >>$ac_top_srcdir/Makefile
++ # sanity check
++ if grep '^; echo "MAKE ' $ac_top_srcdir/Makefile >/dev/null ; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: buggy sed found - it deletes tab in \"a\" text parts" >&5
++$as_echo "$as_me: buggy sed found - it deletes tab in \"a\" text parts" >&6;}
++ $ax_enable_builddir_sed -e '/^@ HOST=/s/^/ /' -e '/^; /s/^/ /' $ac_top_srcdir/Makefile \
++ >$ac_top_srcdir/Makefile~
++ (test -s $ac_top_srcdir/Makefile~ && mv $ac_top_srcdir/Makefile~ $ac_top_srcdir/Makefile) 2>/dev/null
++ fi
++ else
++ xxxx="\\#\\#\\#\\#"
++ # echo "/^$xxxx *$ax_enable_builddir_host /d" >$tmp/conftemp.sed
++ echo "s!^$xxxx [^|]* | *$ax_enable_builddir *\$!$xxxx ...... $ax_enable_builddir!" >$tmp/conftemp.sed
++ $ax_enable_builddir_sed -f "$tmp/conftemp.sed" "$ac_top_srcdir/Makefile" >$tmp/mkfile.tmp
++ cp "$tmp/conftemp.sed" "$ac_top_srcdir/makefiles.sed~" ## DEBUGGING
++ cp "$tmp/mkfile.tmp" "$ac_top_srcdir/makefiles.out~" ## DEBUGGING
++ if cmp -s "$ac_top_srcdir/Makefile" "$tmp/mkfile.tmp" 2>/dev/null ; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: keeping top_srcdir/Makefile from earlier configure" >&5
++$as_echo "$as_me: keeping top_srcdir/Makefile from earlier configure" >&6;}
++ rm "$tmp/mkfile.tmp"
++ else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: reusing top_srcdir/Makefile from earlier configure" >&5
++$as_echo "$as_me: reusing top_srcdir/Makefile from earlier configure" >&6;}
++ mv "$tmp/mkfile.tmp" "$ac_top_srcdir/Makefile"
++ fi
++ fi
++ { $as_echo "$as_me:${as_lineno-$LINENO}: build in $ax_enable_builddir (HOST=$ax_enable_builddir_host)" >&5
++$as_echo "$as_me: build in $ax_enable_builddir (HOST=$ax_enable_builddir_host)" >&6;}
++ xxxx="####"
++ echo "$xxxx" "$ax_enable_builddir_host" "|$ax_enable_builddir" >>$ac_top_srcdir/Makefile
++ fi
++ ;;
+ "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
Index: libffi/m4/ax_cc_maxopt.m4
===================================================================
--- libffi.orig/m4/ax_cc_maxopt.m4
FGREP = @FGREP@
GREP = @GREP@
HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@
-@@ -386,6 +389,7 @@ psdir = @psdir@
- sbindir = @sbindir@
- sharedstatedir = @sharedstatedir@
- srcdir = @srcdir@
-+sys_symbol_underscore = @sys_symbol_underscore@
- sysconfdir = @sysconfdir@
- target = @target@
- target_alias = @target_alias@
-@@ -399,37 +403,34 @@ top_builddir = @top_builddir@
+@@ -399,37 +402,34 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = foreign subdir-objects
SUBDIRS = include testsuite man
info_TEXINFOS = doc/libffi.texi
-@@ -488,10 +489,10 @@ nodist_libffi_la_SOURCES = $(am__append_
+@@ -488,10 +488,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) \
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)
-@@ -727,6 +728,8 @@ src/arm/sysv.lo: src/arm/$(am__dirstamp)
+@@ -727,6 +727,8 @@ src/arm/sysv.lo: src/arm/$(am__dirstamp)
src/arm/$(DEPDIR)/$(am__dirstamp)
src/arm/ffi.lo: src/arm/$(am__dirstamp) \
src/arm/$(DEPDIR)/$(am__dirstamp)
src/avr32/$(am__dirstamp):
@$(MKDIR_P) src/avr32
@: > src/avr32/$(am__dirstamp)
-@@ -814,6 +817,8 @@ mostlyclean-compile:
+@@ -814,6 +816,8 @@ mostlyclean-compile:
-rm -f src/arm/ffi.lo
-rm -f src/arm/sysv.$(OBJEXT)
-rm -f src/arm/sysv.lo
-rm -f src/avr32/ffi.$(OBJEXT)
-rm -f src/avr32/ffi.lo
-rm -f src/avr32/sysv.$(OBJEXT)
-@@ -932,6 +937,7 @@ distclean-compile:
+@@ -932,6 +936,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@src/alpha/$(DEPDIR)/osf.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/arm/$(DEPDIR)/ffi.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/arm/$(DEPDIR)/sysv.Plo@am__quote@
/* Cannot use malloc on this target, so, we revert to alternative means */
#undef FFI_MMAP_EXEC_WRIT
-@@ -157,6 +160,9 @@
- /* 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
Index: libffi/src/arm/ffi.c
===================================================================
--- libffi.orig/src/arm/ffi.c
===================================================================
--- libffi.orig/Makefile.in
+++ libffi/Makefile.in
-@@ -441,7 +441,8 @@ EXTRA_DIST = LICENSE ChangeLog.v1 Change
+@@ -440,7 +440,8 @@ EXTRA_DIST = LICENSE ChangeLog.v1 Change
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 \
libffi_convenience_la_OBJECTS = $(am_libffi_convenience_la_OBJECTS) \
$(nodist_libffi_convenience_la_OBJECTS)
DEFAULT_INCLUDES = -I.@am__isrc@
-@@ -430,7 +433,7 @@ EXTRA_DIST = LICENSE ChangeLog.v1 Change
+@@ -429,7 +432,7 @@ EXTRA_DIST = LICENSE ChangeLog.v1 Change
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 \
info_TEXINFOS = doc/libffi.texi
-@@ -476,7 +479,7 @@ MAKEOVERRIDES =
+@@ -475,7 +478,7 @@ MAKEOVERRIDES =
ACLOCAL_AMFLAGS = $(ACLOCAL_AMFLAGS) -I m4
lib_LTLIBRARIES = libffi.la
noinst_LTLIBRARIES = libffi_convenience.la
src/raw_api.c src/java_raw_api.c src/closures.c
pkgconfigdir = $(libdir)/pkgconfig
-@@ -489,10 +492,11 @@ nodist_libffi_la_SOURCES = $(am__append_
+@@ -488,10 +491,11 @@ 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) \
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)
-@@ -600,12 +604,12 @@ src/$(am__dirstamp):
+@@ -599,12 +603,12 @@ src/$(am__dirstamp):
src/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) src/$(DEPDIR)
@: > src/$(DEPDIR)/$(am__dirstamp)
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)
-Index: libffi/configure
-===================================================================
---- libffi.orig/configure
-+++ libffi/configure
-@@ -621,6 +621,9 @@ FFI_DEBUG_FALSE
- FFI_DEBUG_TRUE
- TARGETDIR
- TARGET
-+FFI_EXEC_TRAMPOLINE_TABLE
-+FFI_EXEC_TRAMPOLINE_TABLE_FALSE
-+FFI_EXEC_TRAMPOLINE_TABLE_TRUE
- sys_symbol_underscore
- HAVE_LONG_DOUBLE
- ALLOCA
-@@ -685,6 +688,7 @@ TESTSUBDIR_TRUE
- MAINT
- MAINTAINER_MODE_FALSE
- MAINTAINER_MODE_TRUE
-+PRTDIAG
- CPP
- OTOOL64
- OTOOL
-@@ -751,6 +755,7 @@ am__isrc
- INSTALL_DATA
- INSTALL_SCRIPT
- INSTALL_PROGRAM
-+ax_enable_builddir_sed
- target_os
- target_vendor
- target_cpu
-@@ -804,6 +809,7 @@ SHELL'
- ac_subst_files=''
- ac_user_opts='
- enable_option_checking
-+enable_builddir
- enable_dependency_tracking
- enable_shared
- enable_static
-@@ -812,6 +818,8 @@ enable_fast_install
- with_gnu_ld
- with_sysroot
- enable_libtool_lock
-+enable_portable_binary
-+with_gcc_arch
- enable_maintainer_mode
- enable_debug
- enable_structs
-@@ -1446,6 +1454,8 @@ Optional Features:
- --disable-option-checking ignore unrecognized --enable/--with options
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
-+ --disable-builddir disable automatic build in subdir of sources
-+
- --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors
- --enable-shared[=PKGS] build shared libraries [default=yes]
-@@ -1453,6 +1463,9 @@ Optional Features:
- --enable-fast-install[=PKGS]
- optimize for fast installation [default=yes]
- --disable-libtool-lock avoid locking (might break parallel builds)
-+ --enable-portable-binary
-+ disable compiler optimizations that would produce
-+ unportable binaries
- --enable-maintainer-mode enable make rules and dependencies not useful
- (and sometimes confusing) to the casual installer
- --enable-debug debugging mode
-@@ -1468,6 +1481,8 @@ Optional Packages:
- --with-gnu-ld assume the C compiler uses GNU ld [default=no]
- --with-sysroot=DIR Search for dependent libraries within DIR
- (or the compiler's sysroot if not specified).
-+ --with-gcc-arch=<arch> use architecture <arch> for gcc -march/-mtune,
-+ instead of guessing
-
- Some influential environment variables:
- CC C compiler command
-@@ -2643,6 +2658,110 @@ target_alias=${target_alias-$host_alias}
-
- . ${srcdir}/configure.host
-
-+
-+ # [$]@ is unsable in 2.60+ but earlier autoconf had no ac_configure_args
-+ if test "${ac_configure_args+set}" != "set" ; then
-+ ac_configure_args=
-+ for ac_arg in ${1+"$@"}; do
-+ ac_configure_args="$ac_configure_args '$ac_arg'"
-+ done
-+ fi
-+
-+# expand $ac_aux_dir to an absolute path
-+am_aux_dir=`cd $ac_aux_dir && pwd`
-+
-+
-+ax_enable_builddir="."
-+# Check whether --enable-builddir was given.
-+if test "${enable_builddir+set}" = set; then :
-+ enableval=$enable_builddir; ax_enable_builddir="$enableval"
-+else
-+ ax_enable_builddir="auto"
-+fi
-+
-+if test ".$ac_srcdir_defaulted" != ".no" ; then
-+if test ".$srcdir" = ".." ; then
-+ if test -f config.status ; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: toplevel srcdir already configured... skipping subdir build" >&5
-+$as_echo "$as_me: toplevel srcdir already configured... skipping subdir build" >&6;}
-+ else
-+ test ".$ax_enable_builddir" = "." && ax_enable_builddir="."
-+ test ".$ax_enable_builddir" = ".no" && ax_enable_builddir="."
-+ test ".$TARGET" = "." && TARGET="$target"
-+ test ".$ax_enable_builddir" = ".auto" && ax_enable_builddir="$TARGET"
-+ if test ".$ax_enable_builddir" != ".." ; then # we know where to go and
-+ as_dir=$ax_enable_builddir; as_fn_mkdir_p
-+ echo __.$ax_enable_builddir.__ > $ax_enable_builddir/conftest.tmp
-+ cd $ax_enable_builddir
-+ if grep __.$ax_enable_builddir.__ conftest.tmp >/dev/null 2>/dev/null ; then
-+ rm conftest.tmp
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: continue configure in default builddir \"./$ax_enable_builddir\"" >&5
-+$as_echo "continue configure in default builddir \"./$ax_enable_builddir\"" >&6; }
-+ else
-+ as_fn_error $? "could not change to default builddir \"./$ax_enable_builddir\"" "$LINENO" 5
-+ fi
-+ srcdir=`echo "$ax_enable_builddir" |
-+ sed -e 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g;s,[/]$,,;'`
-+ # going to restart from subdirectory location
-+ test -f $srcdir/config.log && mv $srcdir/config.log .
-+ test -f $srcdir/confdefs.h && mv $srcdir/confdefs.h .
-+ test -f $srcdir/conftest.log && mv $srcdir/conftest.log .
-+ test -f $srcdir/$cache_file && mv $srcdir/$cache_file .
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ....exec $SHELL $srcdir/$0 \"--srcdir=$srcdir\" \"--enable-builddir=$ax_enable_builddir\" ${1+\"$@\"}" >&5
-+$as_echo "....exec $SHELL $srcdir/$0 \"--srcdir=$srcdir\" \"--enable-builddir=$ax_enable_builddir\" ${1+\"$@\"}" >&6; }
-+ case "$0" in # restart
-+ /\\*) eval $SHELL "'$0'" "'--srcdir=$srcdir'" "'--enable-builddir=$ax_enable_builddir'" $ac_configure_args ;;
-+ *) eval $SHELL "'$srcdir/$0'" "'--srcdir=$srcdir'" "'--enable-builddir=$ax_enable_builddir'" $ac_configure_args ;;
-+ esac ; exit $?
-+ fi
-+ fi
-+fi fi
-+test ".$ax_enable_builddir" = ".auto" && ax_enable_builddir="."
-+# Extract the first word of "gsed sed", so it can be a program name with args.
-+set dummy gsed sed; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_path_ax_enable_builddir_sed+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ case $ax_enable_builddir_sed in
-+ [\\/]* | ?:[\\/]*)
-+ ac_cv_path_ax_enable_builddir_sed="$ax_enable_builddir_sed" # Let the user override the test with a path.
-+ ;;
-+ *)
-+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+ ac_cv_path_ax_enable_builddir_sed="$as_dir/$ac_word$ac_exec_ext"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+ test -z "$ac_cv_path_ax_enable_builddir_sed" && ac_cv_path_ax_enable_builddir_sed="sed"
-+ ;;
-+esac
-+fi
-+ax_enable_builddir_sed=$ac_cv_path_ax_enable_builddir_sed
-+if test -n "$ax_enable_builddir_sed"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_enable_builddir_sed" >&5
-+$as_echo "$ax_enable_builddir_sed" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+ax_enable_builddir_auxdir="$am_aux_dir"
-+ac_config_commands="$ac_config_commands buildir"
-+
-+
- am__api_version='1.11'
-
- # Find a good install program. We prefer a C program (faster),
-@@ -2800,9 +2919,6 @@ test "$program_suffix" != NONE &&
- ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
- program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-
--# expand $ac_aux_dir to an absolute path
--am_aux_dir=`cd $ac_aux_dir && pwd`
--
- if test x"${MISSING+set}" != xset; then
- case $am_aux_dir in
- *\ * | *\ *)
-@@ -11835,205 +11951,1130 @@ CC="$lt_save_CC"
-
-
-
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
--$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
-- # Check whether --enable-maintainer-mode was given.
--if test "${enable_maintainer_mode+set}" = set; then :
-- enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
--else
-- USE_MAINTAINER_MODE=no
--fi
--
-- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
--$as_echo "$USE_MAINTAINER_MODE" >&6; }
-- if test $USE_MAINTAINER_MODE = yes; then
-- MAINTAINER_MODE_TRUE=
-- MAINTAINER_MODE_FALSE='#'
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler vendor" >&5
-+$as_echo_n "checking for C compiler vendor... " >&6; }
-+if ${ax_cv_c_compiler_vendor+:} false; then :
-+ $as_echo_n "(cached) " >&6
- else
-- MAINTAINER_MODE_TRUE='#'
-- MAINTAINER_MODE_FALSE=
--fi
--
-- MAINT=$MAINTAINER_MODE_TRUE
-+ ax_cv_c_compiler_vendor=unknown
-+ # note: don't check for gcc first since some other compilers define __GNUC__
-+ for ventest in intel:__ICC,__ECC,__INTEL_COMPILER ibm:__xlc__,__xlC__,__IBMC__,__IBMCPP__ pathscale:__PATHCC__,__PATHSCALE__ clang:__clang__ gnu:__GNUC__ sun:__SUNPRO_C,__SUNPRO_CC hp:__HP_cc,__HP_aCC dec:__DECC,__DECCXX,__DECC_VER,__DECCXX_VER borland:__BORLANDC__,__TURBOC__ comeau:__COMO__ cray:_CRAYC kai:__KCC lcc:__LCC__ metrowerks:__MWERKS__ sgi:__sgi,sgi microsoft:_MSC_VER watcom:__WATCOMC__ portland:__PGI; do
-+ vencpp="defined("`echo $ventest | cut -d: -f2 | sed 's/,/) || defined(/g'`")"
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-
-+int
-+main ()
-+{
-
-+#if !($vencpp)
-+ thisisanerror;
-+#endif
-
--for ac_header in sys/mman.h
--do :
-- ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default"
--if test "x$ac_cv_header_sys_mman_h" = xyes; then :
-- cat >>confdefs.h <<_ACEOF
--#define HAVE_SYS_MMAN_H 1
-+ ;
-+ return 0;
-+}
- _ACEOF
--
-+if ac_fn_c_try_compile "$LINENO"; then :
-+ ax_cv_c_compiler_vendor=`echo $ventest | cut -d: -f1`; break
- fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+ done
-
--done
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_compiler_vendor" >&5
-+$as_echo "$ax_cv_c_compiler_vendor" >&6; }
-
--for ac_func in mmap
--do :
-- ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
--if test "x$ac_cv_func_mmap" = xyes; then :
-- cat >>confdefs.h <<_ACEOF
--#define HAVE_MMAP 1
--_ACEOF
-
--fi
--done
-
-
--ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default"
--if test "x$ac_cv_header_sys_mman_h" = xyes; then :
-- libffi_header_sys_mman_h=yes
--else
-- libffi_header_sys_mman_h=no
--fi
-
-
--ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
--if test "x$ac_cv_func_mmap" = xyes; then :
-- libffi_func_mmap=yes
-+# Check whether --enable-portable-binary was given.
-+if test "${enable_portable_binary+set}" = set; then :
-+ enableval=$enable_portable_binary; acx_maxopt_portable=$withval
- else
-- libffi_func_mmap=no
-+ acx_maxopt_portable=no
- fi
-
--if test "$libffi_header_sys_mman_h" != yes \
-- || test "$libffi_func_mmap" != yes; then
-- ac_cv_func_mmap_file=no
-- ac_cv_func_mmap_dev_zero=no
-- ac_cv_func_mmap_anon=no
--else
-- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether read-only mmap of a plain file works" >&5
--$as_echo_n "checking whether read-only mmap of a plain file works... " >&6; }
--if ${ac_cv_func_mmap_file+:} false; then :
-- $as_echo_n "(cached) " >&6
--else
-- # Add a system to this blacklist if
-- # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a
-- # memory area containing the same data that you'd get if you applied
-- # read() to the same fd. The only system known to have a problem here
-- # is VMS, where text files have record structure.
-- case "$host_os" in
-- vms* | ultrix*)
-- ac_cv_func_mmap_file=no ;;
-- *)
-- ac_cv_func_mmap_file=yes;;
-- esac
--fi
--{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_file" >&5
--$as_echo "$ac_cv_func_mmap_file" >&6; }
-- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap from /dev/zero works" >&5
--$as_echo_n "checking whether mmap from /dev/zero works... " >&6; }
--if ${ac_cv_func_mmap_dev_zero+:} false; then :
-- $as_echo_n "(cached) " >&6
--else
-- # Add a system to this blacklist if it has mmap() but /dev/zero
-- # does not exist, or if mmapping /dev/zero does not give anonymous
-- # zeroed pages with both the following properties:
-- # 1. If you map N consecutive pages in with one call, and then
-- # unmap any subset of those pages, the pages that were not
-- # explicitly unmapped remain accessible.
-- # 2. If you map two adjacent blocks of memory and then unmap them
-- # both at once, they must both go away.
-- # Systems known to be in this category are Windows (all variants),
-- # VMS, and Darwin.
-- case "$host_os" in
-- vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00)
-- ac_cv_func_mmap_dev_zero=no ;;
-- *)
-- ac_cv_func_mmap_dev_zero=yes;;
-- esac
--fi
--{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_dev_zero" >&5
--$as_echo "$ac_cv_func_mmap_dev_zero" >&6; }
-
-- # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for.
-- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAP_ANON(YMOUS)" >&5
--$as_echo_n "checking for MAP_ANON(YMOUS)... " >&6; }
--if ${ac_cv_decl_map_anon+:} false; then :
-- $as_echo_n "(cached) " >&6
--else
-- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+# Try to determine "good" native compiler flags if none specified via CFLAGS
-+if test "$ac_test_CFLAGS" != "set"; then
-+ CFLAGS=""
-+ case $ax_cv_c_compiler_vendor in
-+ dec) CFLAGS="-newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host"
-+ if test "x$acx_maxopt_portable" = xno; then
-+ CFLAGS="$CFLAGS -arch host"
-+ fi;;
-+
-+ sun) CFLAGS="-native -fast -xO5 -dalign"
-+ if test "x$acx_maxopt_portable" = xyes; then
-+ CFLAGS="$CFLAGS -xarch=generic"
-+ fi;;
-+
-+ hp) CFLAGS="+Oall +Optrs_ansi +DSnative"
-+ if test "x$acx_maxopt_portable" = xyes; then
-+ CFLAGS="$CFLAGS +DAportable"
-+ fi;;
-+
-+ ibm) if test "x$acx_maxopt_portable" = xno; then
-+ xlc_opt="-qarch=auto -qtune=auto"
-+ else
-+ xlc_opt="-qtune=auto"
-+ fi
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $xlc_opt" >&5
-+$as_echo_n "checking whether C compiler accepts $xlc_opt... " >&6; }
-+ax_save_FLAGS=$CFLAGS
-+ CFLAGS="$xlc_opt"
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
--#include <sys/types.h>
--#include <sys/mman.h>
--#include <unistd.h>
--
--#ifndef MAP_ANONYMOUS
--#define MAP_ANONYMOUS MAP_ANON
--#endif
-
- int
- main ()
- {
--int n = MAP_ANONYMOUS;
-+
- ;
- return 0;
- }
- _ACEOF
- if ac_fn_c_try_compile "$LINENO"; then :
-- ac_cv_decl_map_anon=yes
-+ eval `$as_echo "ax_cv_c_flags_$xlc_opt" | $as_tr_sh`=yes
- else
-- ac_cv_decl_map_anon=no
-+ eval `$as_echo "ax_cv_c_flags_$xlc_opt" | $as_tr_sh`=no
- fi
- rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
--fi
--{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_decl_map_anon" >&5
--$as_echo "$ac_cv_decl_map_anon" >&6; }
-+ CFLAGS=$ax_save_FLAGS
-+eval ax_check_compiler_flags=$`$as_echo "ax_cv_c_flags_$xlc_opt" | $as_tr_sh`
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
-+$as_echo "$ax_check_compiler_flags" >&6; }
-+if test "x$ax_check_compiler_flags" = xyes; then
-+ CFLAGS="-O3 -qansialias -w $xlc_opt"
-+else
-+ CFLAGS="-O3 -qansialias -w"
-+ echo "******************************************************"
-+ echo "* You seem to have the IBM C compiler. It is *"
-+ echo "* recommended for best performance that you use: *"
-+ echo "* *"
-+ echo "* CFLAGS=-O3 -qarch=xxx -qtune=xxx -qansialias -w *"
-+ echo "* ^^^ ^^^ *"
-+ echo "* where xxx is pwr2, pwr3, 604, or whatever kind of *"
-+ echo "* CPU you have. (Set the CFLAGS environment var. *"
-+ echo "* and re-run configure.) For more info, man cc. *"
-+ echo "******************************************************"
-+fi
-+
-+ ;;
-+
-+ intel) CFLAGS="-O3 -ansi_alias"
-+ if test "x$acx_maxopt_portable" = xno; then
-+ icc_archflag=unknown
-+ icc_flags=""
-+ case $host_cpu in
-+ i686*|x86_64*)
-+ # icc accepts gcc assembly syntax, so these should work:
-
-- if test $ac_cv_decl_map_anon = no; then
-- ac_cv_func_mmap_anon=no
-- else
-- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap with MAP_ANON(YMOUS) works" >&5
--$as_echo_n "checking whether mmap with MAP_ANON(YMOUS) works... " >&6; }
--if ${ac_cv_func_mmap_anon+:} false; then :
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5
-+$as_echo_n "checking for x86 cpuid 0 output... " >&6; }
-+if ${ax_cv_gcc_x86_cpuid_0+:} false; then :
- $as_echo_n "(cached) " >&6
- else
-- # Add a system to this blacklist if it has mmap() and MAP_ANON or
-- # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
-- # doesn't give anonymous zeroed pages with the same properties listed
-- # above for use of /dev/zero.
-- # Systems known to be in this category are Windows, VMS, and SCO Unix.
-- case "$host_os" in
-- vms* | cygwin* | pe | mingw* | sco* | udk* )
-- ac_cv_func_mmap_anon=no ;;
-- *)
-- ac_cv_func_mmap_anon=yes;;
-- esac
--fi
--{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_anon" >&5
--$as_echo "$ac_cv_func_mmap_anon" >&6; }
-- fi
--fi
--
--if test $ac_cv_func_mmap_file = yes; then
-+ if test "$cross_compiling" = yes; then :
-+ ax_cv_gcc_x86_cpuid_0=unknown
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+#include <stdio.h>
-+int
-+main ()
-+{
-
--$as_echo "#define HAVE_MMAP_FILE 1" >>confdefs.h
-+ int op = 0, eax, ebx, ecx, edx;
-+ FILE *f;
-+ __asm__("cpuid"
-+ : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
-+ : "a" (op));
-+ f = fopen("conftest_cpuid", "w"); if (!f) return 1;
-+ fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
-+ fclose(f);
-+ return 0;
-
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_run "$LINENO"; then :
-+ ax_cv_gcc_x86_cpuid_0=`cat conftest_cpuid`; rm -f conftest_cpuid
-+else
-+ ax_cv_gcc_x86_cpuid_0=unknown; rm -f conftest_cpuid
- fi
--if test $ac_cv_func_mmap_dev_zero = yes; then
--
--$as_echo "#define HAVE_MMAP_DEV_ZERO 1" >>confdefs.h
--
-+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-+ conftest.$ac_objext conftest.beam conftest.$ac_ext
- fi
--if test $ac_cv_func_mmap_anon = yes; then
--
--$as_echo "#define HAVE_MMAP_ANON 1" >>confdefs.h
-
- fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5
-+$as_echo "$ax_cv_gcc_x86_cpuid_0" >&6; }
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-- if test -d $srcdir/testsuite; then
-- TESTSUBDIR_TRUE=
-- TESTSUBDIR_FALSE='#'
--else
-- TESTSUBDIR_TRUE='#'
-- TESTSUBDIR_FALSE=
--fi
-
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
--TARGETDIR="unknown"
--case "$host" in
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5
-+$as_echo_n "checking for x86 cpuid 1 output... " >&6; }
-+if ${ax_cv_gcc_x86_cpuid_1+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test "$cross_compiling" = yes; then :
-+ ax_cv_gcc_x86_cpuid_1=unknown
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+#include <stdio.h>
-+int
-+main ()
-+{
-+
-+ int op = 1, eax, ebx, ecx, edx;
-+ FILE *f;
-+ __asm__("cpuid"
-+ : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
-+ : "a" (op));
-+ f = fopen("conftest_cpuid", "w"); if (!f) return 1;
-+ fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
-+ fclose(f);
-+ return 0;
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_run "$LINENO"; then :
-+ ax_cv_gcc_x86_cpuid_1=`cat conftest_cpuid`; rm -f conftest_cpuid
-+else
-+ ax_cv_gcc_x86_cpuid_1=unknown; rm -f conftest_cpuid
-+fi
-+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-+ conftest.$ac_objext conftest.beam conftest.$ac_ext
-+fi
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5
-+$as_echo "$ax_cv_gcc_x86_cpuid_1" >&6; }
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+ case $ax_cv_gcc_x86_cpuid_0 in # see AX_GCC_ARCHFLAG
-+ *:756e6547:*:*) # Intel
-+ case $ax_cv_gcc_x86_cpuid_1 in
-+ *6a?:*[234]:*:*|*6[789b]?:*:*:*) icc_flags="-xK";;
-+ *f3[347]:*:*:*|*f41347:*:*:*) icc_flags="-xP -xN -xW -xK";;
-+ *f??:*:*:*) icc_flags="-xN -xW -xK";;
-+ esac ;;
-+ esac ;;
-+ esac
-+ if test "x$icc_flags" != x; then
-+ for flag in $icc_flags; do
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
-+$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
-+ax_save_FLAGS=$CFLAGS
-+ CFLAGS="$flag"
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+ eval `$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`=yes
-+else
-+ eval `$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`=no
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+ CFLAGS=$ax_save_FLAGS
-+eval ax_check_compiler_flags=$`$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
-+$as_echo "$ax_check_compiler_flags" >&6; }
-+if test "x$ax_check_compiler_flags" = xyes; then
-+ icc_archflag=$flag; break
-+else
-+ :
-+fi
-+
-+ done
-+ fi
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for icc architecture flag" >&5
-+$as_echo_n "checking for icc architecture flag... " >&6; }
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $icc_archflag" >&5
-+$as_echo "$icc_archflag" >&6; }
-+ if test "x$icc_archflag" != xunknown; then
-+ CFLAGS="$CFLAGS $icc_archflag"
-+ fi
-+ fi
-+ ;;
-+
-+ gnu)
-+ # default optimization flags for gcc on all systems
-+ CFLAGS="-O3 -fomit-frame-pointer"
-+
-+ # -malign-double for x86 systems
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -malign-double" >&5
-+$as_echo_n "checking whether C compiler accepts -malign-double... " >&6; }
-+if ${ax_cv_c_flags__malign_double+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+
-+ ax_save_FLAGS=$CFLAGS
-+ CFLAGS="-malign-double"
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+ ax_cv_c_flags__malign_double=yes
-+else
-+ ax_cv_c_flags__malign_double=no
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+ CFLAGS=$ax_save_FLAGS
-+fi
-+
-+eval ax_check_compiler_flags=$ax_cv_c_flags__malign_double
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
-+$as_echo "$ax_check_compiler_flags" >&6; }
-+if test "x$ax_check_compiler_flags" = xyes; then
-+ CFLAGS="$CFLAGS -malign-double"
-+else
-+ :
-+fi
-+
-+
-+ # -fstrict-aliasing for gcc-2.95+
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fstrict-aliasing" >&5
-+$as_echo_n "checking whether C compiler accepts -fstrict-aliasing... " >&6; }
-+if ${ax_cv_c_flags__fstrict_aliasing+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+
-+ ax_save_FLAGS=$CFLAGS
-+ CFLAGS="-fstrict-aliasing"
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+ ax_cv_c_flags__fstrict_aliasing=yes
-+else
-+ ax_cv_c_flags__fstrict_aliasing=no
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+ CFLAGS=$ax_save_FLAGS
-+fi
-+
-+eval ax_check_compiler_flags=$ax_cv_c_flags__fstrict_aliasing
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
-+$as_echo "$ax_check_compiler_flags" >&6; }
-+if test "x$ax_check_compiler_flags" = xyes; then
-+ CFLAGS="$CFLAGS -fstrict-aliasing"
-+else
-+ :
-+fi
-+
-+
-+ # note that we enable "unsafe" fp optimization with other compilers, too
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -ffast-math" >&5
-+$as_echo_n "checking whether C compiler accepts -ffast-math... " >&6; }
-+if ${ax_cv_c_flags__ffast_math+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+
-+ ax_save_FLAGS=$CFLAGS
-+ CFLAGS="-ffast-math"
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+ ax_cv_c_flags__ffast_math=yes
-+else
-+ ax_cv_c_flags__ffast_math=no
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+ CFLAGS=$ax_save_FLAGS
-+fi
-+
-+eval ax_check_compiler_flags=$ax_cv_c_flags__ffast_math
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
-+$as_echo "$ax_check_compiler_flags" >&6; }
-+if test "x$ax_check_compiler_flags" = xyes; then
-+ CFLAGS="$CFLAGS -ffast-math"
-+else
-+ :
-+fi
-+
-+
-+
-+
-+
-+
-+# Check whether --with-gcc-arch was given.
-+if test "${with_gcc_arch+set}" = set; then :
-+ withval=$with_gcc_arch; ax_gcc_arch=$withval
-+else
-+ ax_gcc_arch=yes
-+fi
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5
-+$as_echo_n "checking for gcc architecture flag... " >&6; }
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
-+$as_echo "" >&6; }
-+if ${ax_cv_gcc_archflag+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+
-+ax_cv_gcc_archflag="unknown"
-+
-+if test "$GCC" = yes; then
-+
-+if test "x$ax_gcc_arch" = xyes; then
-+ax_gcc_arch=""
-+if test "$cross_compiling" = no; then
-+case $host_cpu in
-+ i[3456]86*|x86_64*) # use cpuid codes, in part from x86info-1.7 by D. Jones
-+
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5
-+$as_echo_n "checking for x86 cpuid 0 output... " >&6; }
-+if ${ax_cv_gcc_x86_cpuid_0+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test "$cross_compiling" = yes; then :
-+ ax_cv_gcc_x86_cpuid_0=unknown
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+#include <stdio.h>
-+int
-+main ()
-+{
-+
-+ int op = 0, eax, ebx, ecx, edx;
-+ FILE *f;
-+ __asm__("cpuid"
-+ : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
-+ : "a" (op));
-+ f = fopen("conftest_cpuid", "w"); if (!f) return 1;
-+ fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
-+ fclose(f);
-+ return 0;
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_run "$LINENO"; then :
-+ ax_cv_gcc_x86_cpuid_0=`cat conftest_cpuid`; rm -f conftest_cpuid
-+else
-+ ax_cv_gcc_x86_cpuid_0=unknown; rm -f conftest_cpuid
-+fi
-+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-+ conftest.$ac_objext conftest.beam conftest.$ac_ext
-+fi
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5
-+$as_echo "$ax_cv_gcc_x86_cpuid_0" >&6; }
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5
-+$as_echo_n "checking for x86 cpuid 1 output... " >&6; }
-+if ${ax_cv_gcc_x86_cpuid_1+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test "$cross_compiling" = yes; then :
-+ ax_cv_gcc_x86_cpuid_1=unknown
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+#include <stdio.h>
-+int
-+main ()
-+{
-+
-+ int op = 1, eax, ebx, ecx, edx;
-+ FILE *f;
-+ __asm__("cpuid"
-+ : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
-+ : "a" (op));
-+ f = fopen("conftest_cpuid", "w"); if (!f) return 1;
-+ fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
-+ fclose(f);
-+ return 0;
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_run "$LINENO"; then :
-+ ax_cv_gcc_x86_cpuid_1=`cat conftest_cpuid`; rm -f conftest_cpuid
-+else
-+ ax_cv_gcc_x86_cpuid_1=unknown; rm -f conftest_cpuid
-+fi
-+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-+ conftest.$ac_objext conftest.beam conftest.$ac_ext
-+fi
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5
-+$as_echo "$ax_cv_gcc_x86_cpuid_1" >&6; }
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+ case $ax_cv_gcc_x86_cpuid_0 in
-+ *:756e6547:*:*) # Intel
-+ case $ax_cv_gcc_x86_cpuid_1 in
-+ *5[48]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;;
-+ *5??:*:*:*) ax_gcc_arch=pentium ;;
-+ *6[3456]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
-+ *6a?:*[01]:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
-+ *6a?:*[234]:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
-+ *6[9d]?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;;
-+ *6[78b]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
-+ *6??:*:*:*) ax_gcc_arch=pentiumpro ;;
-+ *f3[347]:*:*:*|*f41347:*:*:*)
-+ case $host_cpu in
-+ x86_64*) ax_gcc_arch="nocona pentium4 pentiumpro" ;;
-+ *) ax_gcc_arch="prescott pentium4 pentiumpro" ;;
-+ esac ;;
-+ *f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro";;
-+ esac ;;
-+ *:68747541:*:*) # AMD
-+ case $ax_cv_gcc_x86_cpuid_1 in
-+ *5[67]?:*:*:*) ax_gcc_arch=k6 ;;
-+ *5[8d]?:*:*:*) ax_gcc_arch="k6-2 k6" ;;
-+ *5[9]?:*:*:*) ax_gcc_arch="k6-3 k6" ;;
-+ *60?:*:*:*) ax_gcc_arch=k7 ;;
-+ *6[12]?:*:*:*) ax_gcc_arch="athlon k7" ;;
-+ *6[34]?:*:*:*) ax_gcc_arch="athlon-tbird k7" ;;
-+ *67?:*:*:*) ax_gcc_arch="athlon-4 athlon k7" ;;
-+ *6[68a]?:*:*:*)
-+
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0x80000006 output" >&5
-+$as_echo_n "checking for x86 cpuid 0x80000006 output... " >&6; }
-+if ${ax_cv_gcc_x86_cpuid_0x80000006+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ if test "$cross_compiling" = yes; then :
-+ ax_cv_gcc_x86_cpuid_0x80000006=unknown
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+#include <stdio.h>
-+int
-+main ()
-+{
-+
-+ int op = 0x80000006, eax, ebx, ecx, edx;
-+ FILE *f;
-+ __asm__("cpuid"
-+ : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
-+ : "a" (op));
-+ f = fopen("conftest_cpuid", "w"); if (!f) return 1;
-+ fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
-+ fclose(f);
-+ return 0;
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_run "$LINENO"; then :
-+ ax_cv_gcc_x86_cpuid_0x80000006=`cat conftest_cpuid`; rm -f conftest_cpuid
-+else
-+ ax_cv_gcc_x86_cpuid_0x80000006=unknown; rm -f conftest_cpuid
-+fi
-+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-+ conftest.$ac_objext conftest.beam conftest.$ac_ext
-+fi
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0x80000006" >&5
-+$as_echo "$ax_cv_gcc_x86_cpuid_0x80000006" >&6; }
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+ # L2 cache size
-+ case $ax_cv_gcc_x86_cpuid_0x80000006 in
-+ *:*:*[1-9a-f]??????:*) # (L2 = ecx >> 16) >= 256
-+ ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;;
-+ *) ax_gcc_arch="athlon-4 athlon k7" ;;
-+ esac ;;
-+ *f[4cef8b]?:*:*:*) ax_gcc_arch="athlon64 k8" ;;
-+ *f5?:*:*:*) ax_gcc_arch="opteron k8" ;;
-+ *f7?:*:*:*) ax_gcc_arch="athlon-fx opteron k8" ;;
-+ *f??:*:*:*) ax_gcc_arch="k8" ;;
-+ esac ;;
-+ *:746e6543:*:*) # IDT
-+ case $ax_cv_gcc_x86_cpuid_1 in
-+ *54?:*:*:*) ax_gcc_arch=winchip-c6 ;;
-+ *58?:*:*:*) ax_gcc_arch=winchip2 ;;
-+ *6[78]?:*:*:*) ax_gcc_arch=c3 ;;
-+ *69?:*:*:*) ax_gcc_arch="c3-2 c3" ;;
-+ esac ;;
-+ esac
-+ if test x"$ax_gcc_arch" = x; then # fallback
-+ case $host_cpu in
-+ i586*) ax_gcc_arch=pentium ;;
-+ i686*) ax_gcc_arch=pentiumpro ;;
-+ esac
-+ fi
-+ ;;
-+
-+ sparc*)
-+ # Extract the first word of "prtdiag", so it can be a program name with args.
-+set dummy prtdiag; ac_word=$2
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
-+if ${ac_cv_path_PRTDIAG+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ case $PRTDIAG in
-+ [\\/]* | ?:[\\/]*)
-+ ac_cv_path_PRTDIAG="$PRTDIAG" # Let the user override the test with a path.
-+ ;;
-+ *)
-+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+as_dummy="$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/"
-+for as_dir in $as_dummy
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-+ ac_cv_path_PRTDIAG="$as_dir/$ac_word$ac_exec_ext"
-+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+ done
-+IFS=$as_save_IFS
-+
-+ test -z "$ac_cv_path_PRTDIAG" && ac_cv_path_PRTDIAG="prtdiag"
-+ ;;
-+esac
-+fi
-+PRTDIAG=$ac_cv_path_PRTDIAG
-+if test -n "$PRTDIAG"; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PRTDIAG" >&5
-+$as_echo "$PRTDIAG" >&6; }
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+
-+ cputype=`(((grep cpu /proc/cpuinfo | cut -d: -f2) ; ($PRTDIAG -v |grep -i sparc) ; grep -i cpu /var/run/dmesg.boot ) | head -n 1) 2> /dev/null`
-+ cputype=`echo "$cputype" | tr -d ' -' |tr $as_cr_LETTERS $as_cr_letters`
-+ case $cputype in
-+ *ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;;
-+ *ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;;
-+ *ultrasparc*) ax_gcc_arch="ultrasparc v9" ;;
-+ *supersparc*|*tms390z5[05]*) ax_gcc_arch="supersparc v8" ;;
-+ *hypersparc*|*rt62[056]*) ax_gcc_arch="hypersparc v8" ;;
-+ *cypress*) ax_gcc_arch=cypress ;;
-+ esac ;;
-+
-+ alphaev5) ax_gcc_arch=ev5 ;;
-+ alphaev56) ax_gcc_arch=ev56 ;;
-+ alphapca56) ax_gcc_arch="pca56 ev56" ;;
-+ alphapca57) ax_gcc_arch="pca57 pca56 ev56" ;;
-+ alphaev6) ax_gcc_arch=ev6 ;;
-+ alphaev67) ax_gcc_arch=ev67 ;;
-+ alphaev68) ax_gcc_arch="ev68 ev67" ;;
-+ alphaev69) ax_gcc_arch="ev69 ev68 ev67" ;;
-+ alphaev7) ax_gcc_arch="ev7 ev69 ev68 ev67" ;;
-+ alphaev79) ax_gcc_arch="ev79 ev7 ev69 ev68 ev67" ;;
-+
-+ powerpc*)
-+ cputype=`((grep cpu /proc/cpuinfo | head -n 1 | cut -d: -f2 | cut -d, -f1 | sed 's/ //g') ; /usr/bin/machine ; /bin/machine; grep CPU /var/run/dmesg.boot | head -n 1 | cut -d" " -f2) 2> /dev/null`
-+ cputype=`echo $cputype | sed -e 's/ppc//g;s/ *//g'`
-+ case $cputype in
-+ *750*) ax_gcc_arch="750 G3" ;;
-+ *740[0-9]*) ax_gcc_arch="$cputype 7400 G4" ;;
-+ *74[4-5][0-9]*) ax_gcc_arch="$cputype 7450 G4" ;;
-+ *74[0-9][0-9]*) ax_gcc_arch="$cputype G4" ;;
-+ *970*) ax_gcc_arch="970 G5 power4";;
-+ *POWER4*|*power4*|*gq*) ax_gcc_arch="power4 970";;
-+ *POWER5*|*power5*|*gr*|*gs*) ax_gcc_arch="power5 power4 970";;
-+ 603ev|8240) ax_gcc_arch="$cputype 603e 603";;
-+ *) ax_gcc_arch=$cputype ;;
-+ esac
-+ ax_gcc_arch="$ax_gcc_arch powerpc"
-+ ;;
-+esac
-+fi # not cross-compiling
-+fi # guess arch
-+
-+if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then
-+for arch in $ax_gcc_arch; do
-+ if test "x$acx_maxopt_portable" = xyes; then # if we require portable code
-+ flags="-mtune=$arch"
-+ # -mcpu=$arch and m$arch generate nonportable code on every arch except
-+ # x86. And some other arches (e.g. Alpha) don't accept -mtune. Grrr.
-+ case $host_cpu in i*86|x86_64*) flags="$flags -mcpu=$arch -m$arch";; esac
-+ else
-+ flags="-march=$arch -mcpu=$arch -m$arch"
-+ fi
-+ for flag in $flags; do
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
-+$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
-+ax_save_FLAGS=$CFLAGS
-+ CFLAGS="$flag"
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+ eval `$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`=yes
-+else
-+ eval `$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`=no
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+ CFLAGS=$ax_save_FLAGS
-+eval ax_check_compiler_flags=$`$as_echo "ax_cv_c_flags_$flag" | $as_tr_sh`
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
-+$as_echo "$ax_check_compiler_flags" >&6; }
-+if test "x$ax_check_compiler_flags" = xyes; then
-+ ax_cv_gcc_archflag=$flag; break
-+else
-+ :
-+fi
-+
-+ done
-+ test "x$ax_cv_gcc_archflag" = xunknown || break
-+done
-+fi
-+
-+fi # $GCC=yes
-+
-+fi
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5
-+$as_echo_n "checking for gcc architecture flag... " >&6; }
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_archflag" >&5
-+$as_echo "$ax_cv_gcc_archflag" >&6; }
-+if test "x$ax_cv_gcc_archflag" = xunknown; then
-+ :
-+else
-+ CFLAGS="$CFLAGS $ax_cv_gcc_archflag"
-+fi
-+
-+ ;;
-+ esac
-+
-+ if test -z "$CFLAGS"; then
-+ echo ""
-+ echo "********************************************************"
-+ echo "* WARNING: Don't know the best CFLAGS for this system *"
-+ echo "* Use ./configure CFLAGS=... to specify your own flags *"
-+ echo "* (otherwise, a default of CFLAGS=-O3 will be used) *"
-+ echo "********************************************************"
-+ echo ""
-+ CFLAGS="-O3"
-+ fi
-+
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CFLAGS" >&5
-+$as_echo_n "checking whether C compiler accepts $CFLAGS... " >&6; }
-+ax_save_FLAGS=$CFLAGS
-+ CFLAGS="$CFLAGS"
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+ eval `$as_echo "ax_cv_c_flags_$CFLAGS" | $as_tr_sh`=yes
-+else
-+ eval `$as_echo "ax_cv_c_flags_$CFLAGS" | $as_tr_sh`=no
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+ CFLAGS=$ax_save_FLAGS
-+eval ax_check_compiler_flags=$`$as_echo "ax_cv_c_flags_$CFLAGS" | $as_tr_sh`
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_check_compiler_flags" >&5
-+$as_echo "$ax_check_compiler_flags" >&6; }
-+if test "x$ax_check_compiler_flags" = xyes; then
-+ :
-+else
-+
-+ echo ""
-+ echo "********************************************************"
-+ echo "* WARNING: The guessed CFLAGS don't seem to work with *"
-+ echo "* your compiler. *"
-+ echo "* Use ./configure CFLAGS=... to specify your own flags *"
-+ echo "********************************************************"
-+ echo ""
-+ CFLAGS=""
-+
-+fi
-+
-+
-+fi
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for maximum warnings" >&5
-+$as_echo_n "checking CFLAGS for maximum warnings... " >&6; }
-+if ${ac_cv_cflags_warn_all+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ ac_cv_cflags_warn_all="no, unknown"
-+ ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+ ac_save_CFLAGS="$CFLAGS"
-+for ac_arg in "-pedantic % -Wall" "-xstrconst % -v" "-std1 % -verbose -w0 -warnprotos" "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" "-ansi -ansiE % -fullwarn" "+ESlit % +w1" "-Xc % -pvctl,fullmsg" "-h conform % -h msglevel 2" #
-+do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+ ac_cv_cflags_warn_all=`echo $ac_arg | sed -e 's,.*% *,,'` ; break
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+done
-+ CFLAGS="$ac_save_CFLAGS"
-+ ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags_warn_all" >&5
-+$as_echo "$ac_cv_cflags_warn_all" >&6; }
-+case ".$ac_cv_cflags_warn_all" in
-+ .ok|.ok,*) ;;
-+ .|.no|.no,*)
-+ ;;
-+ *)
-+ if echo " $CFLAGS " | grep " $ac_cv_cflags_warn_all " 2>&1 >/dev/null
-+ then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ac_cv_cflags_warn_all"; } >&5
-+ (: CFLAGS does contain $ac_cv_cflags_warn_all) 2>&5
-+ ac_status=$?
-+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+ test $ac_status = 0; }
-+ else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ac_cv_cflags_warn_all\""; } >&5
-+ (: CFLAGS="$CFLAGS $ac_cv_cflags_warn_all") 2>&5
-+ ac_status=$?
-+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+ test $ac_status = 0; }
-+ CFLAGS="$CFLAGS $ac_cv_cflags_warn_all"
-+ fi
-+ ;;
-+esac
-+
-+if test "x$GCC" = "xyes"; then
-+ CFLAGS="$CFLAGS -fexceptions"
-+fi
-+
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
-+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
-+ # Check whether --enable-maintainer-mode was given.
-+if test "${enable_maintainer_mode+set}" = set; then :
-+ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
-+else
-+ USE_MAINTAINER_MODE=no
-+fi
-+
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
-+$as_echo "$USE_MAINTAINER_MODE" >&6; }
-+ if test $USE_MAINTAINER_MODE = yes; then
-+ MAINTAINER_MODE_TRUE=
-+ MAINTAINER_MODE_FALSE='#'
-+else
-+ MAINTAINER_MODE_TRUE='#'
-+ MAINTAINER_MODE_FALSE=
-+fi
-+
-+ MAINT=$MAINTAINER_MODE_TRUE
-+
-+
-+
-+for ac_header in sys/mman.h
-+do :
-+ ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default"
-+if test "x$ac_cv_header_sys_mman_h" = xyes; then :
-+ cat >>confdefs.h <<_ACEOF
-+#define HAVE_SYS_MMAN_H 1
-+_ACEOF
-+
-+fi
-+
-+done
-+
-+for ac_func in mmap
-+do :
-+ ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
-+if test "x$ac_cv_func_mmap" = xyes; then :
-+ cat >>confdefs.h <<_ACEOF
-+#define HAVE_MMAP 1
-+_ACEOF
-+
-+fi
-+done
-+
-+
-+ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default"
-+if test "x$ac_cv_header_sys_mman_h" = xyes; then :
-+ libffi_header_sys_mman_h=yes
-+else
-+ libffi_header_sys_mman_h=no
-+fi
-+
-+
-+ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap"
-+if test "x$ac_cv_func_mmap" = xyes; then :
-+ libffi_func_mmap=yes
-+else
-+ libffi_func_mmap=no
-+fi
-+
-+if test "$libffi_header_sys_mman_h" != yes \
-+ || test "$libffi_func_mmap" != yes; then
-+ ac_cv_func_mmap_file=no
-+ ac_cv_func_mmap_dev_zero=no
-+ ac_cv_func_mmap_anon=no
-+else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether read-only mmap of a plain file works" >&5
-+$as_echo_n "checking whether read-only mmap of a plain file works... " >&6; }
-+if ${ac_cv_func_mmap_file+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ # Add a system to this blacklist if
-+ # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a
-+ # memory area containing the same data that you'd get if you applied
-+ # read() to the same fd. The only system known to have a problem here
-+ # is VMS, where text files have record structure.
-+ case "$host_os" in
-+ vms* | ultrix*)
-+ ac_cv_func_mmap_file=no ;;
-+ *)
-+ ac_cv_func_mmap_file=yes;;
-+ esac
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_file" >&5
-+$as_echo "$ac_cv_func_mmap_file" >&6; }
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap from /dev/zero works" >&5
-+$as_echo_n "checking whether mmap from /dev/zero works... " >&6; }
-+if ${ac_cv_func_mmap_dev_zero+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ # Add a system to this blacklist if it has mmap() but /dev/zero
-+ # does not exist, or if mmapping /dev/zero does not give anonymous
-+ # zeroed pages with both the following properties:
-+ # 1. If you map N consecutive pages in with one call, and then
-+ # unmap any subset of those pages, the pages that were not
-+ # explicitly unmapped remain accessible.
-+ # 2. If you map two adjacent blocks of memory and then unmap them
-+ # both at once, they must both go away.
-+ # Systems known to be in this category are Windows (all variants),
-+ # VMS, and Darwin.
-+ case "$host_os" in
-+ vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00)
-+ ac_cv_func_mmap_dev_zero=no ;;
-+ *)
-+ ac_cv_func_mmap_dev_zero=yes;;
-+ esac
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_dev_zero" >&5
-+$as_echo "$ac_cv_func_mmap_dev_zero" >&6; }
-+
-+ # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for.
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAP_ANON(YMOUS)" >&5
-+$as_echo_n "checking for MAP_ANON(YMOUS)... " >&6; }
-+if ${ac_cv_decl_map_anon+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+#include <sys/types.h>
-+#include <sys/mman.h>
-+#include <unistd.h>
-+
-+#ifndef MAP_ANONYMOUS
-+#define MAP_ANONYMOUS MAP_ANON
-+#endif
-+
-+int
-+main ()
-+{
-+int n = MAP_ANONYMOUS;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+ ac_cv_decl_map_anon=yes
-+else
-+ ac_cv_decl_map_anon=no
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_decl_map_anon" >&5
-+$as_echo "$ac_cv_decl_map_anon" >&6; }
-+
-+ if test $ac_cv_decl_map_anon = no; then
-+ ac_cv_func_mmap_anon=no
-+ else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap with MAP_ANON(YMOUS) works" >&5
-+$as_echo_n "checking whether mmap with MAP_ANON(YMOUS) works... " >&6; }
-+if ${ac_cv_func_mmap_anon+:} false; then :
-+ $as_echo_n "(cached) " >&6
-+else
-+ # Add a system to this blacklist if it has mmap() and MAP_ANON or
-+ # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
-+ # doesn't give anonymous zeroed pages with the same properties listed
-+ # above for use of /dev/zero.
-+ # Systems known to be in this category are Windows, VMS, and SCO Unix.
-+ case "$host_os" in
-+ vms* | cygwin* | pe | mingw* | sco* | udk* )
-+ ac_cv_func_mmap_anon=no ;;
-+ *)
-+ ac_cv_func_mmap_anon=yes;;
-+ esac
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_anon" >&5
-+$as_echo "$ac_cv_func_mmap_anon" >&6; }
-+ fi
-+fi
-+
-+if test $ac_cv_func_mmap_file = yes; then
-+
-+$as_echo "#define HAVE_MMAP_FILE 1" >>confdefs.h
-+
-+fi
-+if test $ac_cv_func_mmap_dev_zero = yes; then
-+
-+$as_echo "#define HAVE_MMAP_DEV_ZERO 1" >>confdefs.h
-+
-+fi
-+if test $ac_cv_func_mmap_anon = yes; then
-+
-+$as_echo "#define HAVE_MMAP_ANON 1" >>confdefs.h
-+
-+fi
-+
-+
-+ if test -d $srcdir/testsuite; then
-+ TESTSUBDIR_TRUE=
-+ TESTSUBDIR_FALSE='#'
-+else
-+ TESTSUBDIR_TRUE='#'
-+ TESTSUBDIR_FALSE=
-+fi
-+
-+
-+TARGETDIR="unknown"
-+case "$host" in
- alpha*-*-*)
- TARGET=ALPHA; TARGETDIR=alpha;
- # Support 128-bit long double, changeable via command-line switch.
-@@ -13282,13 +14323,30 @@ $as_echo "#define SYMBOL_UNDERSCORE 1" >
- fi
- fi
-
-+
-+FFI_EXEC_TRAMPOLINE_TABLE=0
- case "$target" in
-+ *arm*-apple-darwin*)
-+ FFI_EXEC_TRAMPOLINE_TABLE=1
-+
-+$as_echo "#define FFI_EXEC_TRAMPOLINE_TABLE 1" >>confdefs.h
-+
-+ ;;
- *-apple-darwin10* | *-*-freebsd* | *-*-openbsd* | *-pc-solaris*)
-
- $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h
-
- ;;
- esac
-+ if test x$FFI_EXEC_TRAMPOLINE_TABLE = x1; then
-+ FFI_EXEC_TRAMPOLINE_TABLE_TRUE=
-+ FFI_EXEC_TRAMPOLINE_TABLE_FALSE='#'
-+else
-+ FFI_EXEC_TRAMPOLINE_TABLE_TRUE='#'
-+ FFI_EXEC_TRAMPOLINE_TABLE_FALSE=
-+fi
-+
-+
-
- if test x$TARGET = xX86_64; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports unwind section type" >&5
-@@ -13714,6 +14772,10 @@ if test -z "${PA64_HPUX_TRUE}" && test -
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
- fi
-
-+if test -z "${FFI_EXEC_TRAMPOLINE_TABLE_TRUE}" && test -z "${FFI_EXEC_TRAMPOLINE_TABLE_FALSE}"; then
-+ as_fn_error $? "conditional \"FFI_EXEC_TRAMPOLINE_TABLE\" was never defined.
-+Usually this means the macro was only invoked conditionally." "$LINENO" 5
-+fi
- if test -z "${FFI_DEBUG_TRUE}" && test -z "${FFI_DEBUG_FALSE}"; then
- as_fn_error $? "conditional \"FFI_DEBUG\" was never defined.
- Usually this means the macro was only invoked conditionally." "$LINENO" 5
-@@ -14316,6 +15378,14 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
- #
- # INIT-COMMANDS
- #
-+ax_enable_builddir_srcdir="$srcdir" # $srcdir
-+ax_enable_builddir_host="$HOST" # $HOST / $host
-+ax_enable_builddir_version="$VERSION" # $VERSION
-+ax_enable_builddir_package="$PACKAGE" # $PACKAGE
-+ax_enable_builddir_auxdir="$ax_enable_builddir_auxdir" # $AUX
-+ax_enable_builddir_sed="$ax_enable_builddir_sed" # $SED
-+ax_enable_builddir="$ax_enable_builddir" # $SUB
-+
- AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-
-
-@@ -14605,6 +15675,7 @@ for ac_config_target in $ac_config_targe
- do
- case $ac_config_target in
- "fficonfig.h") CONFIG_HEADERS="$CONFIG_HEADERS fficonfig.h" ;;
-+ "buildir") CONFIG_COMMANDS="$CONFIG_COMMANDS buildir" ;;
- "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
- "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
- "include") CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;;
-@@ -15243,6 +16314,150 @@ $as_echo "$as_me: executing $ac_file com
-
-
- case $ac_file$ac_mode in
-+ "buildir":C) ac_top_srcdir="$ax_enable_builddir_srcdir"
-+ if test ".$ax_enable_builddir" = ".." ; then
-+ if test -f "$top_srcdir/Makefile" ; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: skipping top_srcdir/Makefile - left untouched" >&5
-+$as_echo "$as_me: skipping top_srcdir/Makefile - left untouched" >&6;}
-+ else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: skipping top_srcdir/Makefile - not created" >&5
-+$as_echo "$as_me: skipping top_srcdir/Makefile - not created" >&6;}
-+ fi
-+ else
-+ if test -f "$ac_top_srcdir/Makefile" ; then
-+ a=`grep "^VERSION " "$ac_top_srcdir/Makefile"` ; b=`grep "^VERSION " Makefile`
-+ test "$a" != "$b" && rm "$ac_top_srcdir/Makefile"
-+ fi
-+ if test -f "$ac_top_srcdir/Makefile" ; then
-+ echo "$ac_top_srcdir/Makefile : $ac_top_srcdir/Makefile.in" > $tmp/conftemp.mk
-+ echo " @ echo 'REMOVED,,,' >\$@" >> $tmp/conftemp.mk
-+ eval "${MAKE-make} -f $tmp/conftemp.mk 2>/dev/null >/dev/null"
-+ if grep '^REMOVED,,,' "$ac_top_srcdir/Makefile" >/dev/null
-+ then rm $ac_top_srcdir/Makefile ; fi
-+ cp $tmp/conftemp.mk $ac_top_srcdir/makefiles.mk~ ## DEBUGGING
-+ fi
-+ if test ! -f "$ac_top_srcdir/Makefile" ; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: create top_srcdir/Makefile guessed from local Makefile" >&5
-+$as_echo "$as_me: create top_srcdir/Makefile guessed from local Makefile" >&6;}
-+ x='`' ; cat >$tmp/conftemp.sed <<_EOF
-+/^\$/n
-+x
-+/^\$/bS
-+x
-+/\\\\\$/{H;d;}
-+{H;s/.*//;x;}
-+bM
-+:S
-+x
-+/\\\\\$/{h;d;}
-+{h;s/.*//;x;}
-+:M
-+s/\\(\\n\\) /\\1 /g
-+/^ /d
-+/^[ ]*[\\#]/d
-+/^VPATH *=/d
-+s/^srcdir *=.*/srcdir = ./
-+s/^top_srcdir *=.*/top_srcdir = ./
-+/[:=]/!d
-+/^\\./d
-+/ = /b
-+/ .= /b
-+/:/!b
-+s/:.*/:/
-+s/ / /g
-+s/ \\([a-z][a-z-]*[a-zA-Z0-9]\\)\\([ :]\\)/ \\1 \\1-all\\2/g
-+s/^\\([a-z][a-z-]*[a-zA-Z0-9]\\)\\([ :]\\)/\\1 \\1-all\\2/
-+s/ / /g
-+/^all all-all[ :]/i\\
-+all-configured : all-all
-+s/ [a-zA-Z0-9-]*-all [a-zA-Z0-9-]*-all-all//g
-+/-all-all/d
-+a\\
-+ @ HOST="\$(HOST)\" \\\\\\
-+ ; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\
-+ ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
-+ ; use=$x basename "\$\@" -all $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\
-+ ; echo "MAKE \$\$HOST : \$\$n * \$\@"; if test "\$\$n" = "0" ; then : \\\\\\
-+ ; BUILD=$x grep "^####.*|" Makefile |tail -1| sed -e 's/.*|//' $x ; fi \\\\\\
-+ ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\
-+ ; test "\$\$use" = "\$\@" && BUILD=$x echo "\$\$BUILD" | tail -1 $x \\\\\\
-+ ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
-+ ; (cd "\$\$i" && test ! -f configure && \$(MAKE) \$\$use) || exit; done
-+/dist-all *:/a\\
-+ @ HOST="\$(HOST)\" \\\\\\
-+ ; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\
-+ ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
-+ ; found=$x echo \$\$BUILD | wc -w $x \\\\\\
-+ ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).tar.*" \\\\\\
-+ ; if test "\$\$found" = "0" ; then : \\\\\\
-+ ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\
-+ ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
-+ ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).tar.* \\\\\\
-+ ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done
-+/dist-[a-zA-Z0-9]*-all *:/a\\
-+ @ HOST="\$(HOST)\" \\\\\\
-+ ; test ".\$\$HOST" = "." && HOST=$x sh ./config.guess $x \\\\\\
-+ ; BUILD=$x grep "^#### \$\$HOST " Makefile | sed -e 's/.*|//' $x \\\\\\
-+ ; found=$x echo \$\$BUILD | wc -w $x \\\\\\
-+ ; echo "MAKE \$\$HOST : \$\$found \$(PACKAGE)-\$(VERSION).*" \\\\\\
-+ ; if test "\$\$found" = "0" ; then : \\\\\\
-+ ; BUILD=$x grep "^#### .*|" Makefile |tail -1| sed -e 's/.*|//' $x \\\\\\
-+ ; fi ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
-+ ; for f in \$\$i/\$(PACKAGE)-\$(VERSION).* \\\\\\
-+ ; do test -f "\$\$f" && mv "\$\$f" \$(PUB). ; done ; break ; done
-+/distclean-all *:/a\\
-+ @ HOST="\$(HOST)\" \\\\\\
-+ ; test ".\$\$HOST" = "." && HOST=$x sh $ax_enable_builddir_auxdir/config.guess $x \\\\\\
-+ ; BUILD=$x grep "^#### .*|" Makefile | sed -e 's/.*|//' $x \\\\\\
-+ ; use=$x basename "\$\@" -all $x; n=$x echo \$\$BUILD | wc -w $x \\\\\\
-+ ; echo "MAKE \$\$HOST : \$\$n * \$\@ (all local builds)" \\\\\\
-+ ; test ".\$\$BUILD" = "." && BUILD="." \\\\\\
-+ ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
-+ ; echo "# rm -r \$\$i"; done ; echo "# (sleep 3)" ; sleep 3 \\\\\\
-+ ; for i in \$\$BUILD ; do test ".\$\$i" = "." && continue \\\\\\
-+ ; echo "\$\$i" | grep "^/" > /dev/null && continue \\\\\\
-+ ; echo "\$\$i" | grep "^../" > /dev/null && continue \\\\\\
-+ ; echo "rm -r \$\$i"; (rm -r "\$\$i") ; done ; rm Makefile
-+_EOF
-+ cp "$tmp/conftemp.sed" "$ac_top_srcdir/makefile.sed~" ## DEBUGGING
-+ $ax_enable_builddir_sed -f $tmp/conftemp.sed Makefile >$ac_top_srcdir/Makefile
-+ if test -f "$ac_top_srcdir/Makefile.mk" ; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: extend top_srcdir/Makefile with top_srcdir/Makefile.mk" >&5
-+$as_echo "$as_me: extend top_srcdir/Makefile with top_srcdir/Makefile.mk" >&6;}
-+ cat $ac_top_srcdir/Makefile.mk >>$ac_top_srcdir/Makefile
-+ fi ; xxxx="####"
-+ echo "$xxxx CONFIGURATIONS FOR TOPLEVEL MAKEFILE: " >>$ac_top_srcdir/Makefile
-+ # sanity check
-+ if grep '^; echo "MAKE ' $ac_top_srcdir/Makefile >/dev/null ; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: buggy sed found - it deletes tab in \"a\" text parts" >&5
-+$as_echo "$as_me: buggy sed found - it deletes tab in \"a\" text parts" >&6;}
-+ $ax_enable_builddir_sed -e '/^@ HOST=/s/^/ /' -e '/^; /s/^/ /' $ac_top_srcdir/Makefile \
-+ >$ac_top_srcdir/Makefile~
-+ (test -s $ac_top_srcdir/Makefile~ && mv $ac_top_srcdir/Makefile~ $ac_top_srcdir/Makefile) 2>/dev/null
-+ fi
-+ else
-+ xxxx="\\#\\#\\#\\#"
-+ # echo "/^$xxxx *$ax_enable_builddir_host /d" >$tmp/conftemp.sed
-+ echo "s!^$xxxx [^|]* | *$ax_enable_builddir *\$!$xxxx ...... $ax_enable_builddir!" >$tmp/conftemp.sed
-+ $ax_enable_builddir_sed -f "$tmp/conftemp.sed" "$ac_top_srcdir/Makefile" >$tmp/mkfile.tmp
-+ cp "$tmp/conftemp.sed" "$ac_top_srcdir/makefiles.sed~" ## DEBUGGING
-+ cp "$tmp/mkfile.tmp" "$ac_top_srcdir/makefiles.out~" ## DEBUGGING
-+ if cmp -s "$ac_top_srcdir/Makefile" "$tmp/mkfile.tmp" 2>/dev/null ; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: keeping top_srcdir/Makefile from earlier configure" >&5
-+$as_echo "$as_me: keeping top_srcdir/Makefile from earlier configure" >&6;}
-+ rm "$tmp/mkfile.tmp"
-+ else
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: reusing top_srcdir/Makefile from earlier configure" >&5
-+$as_echo "$as_me: reusing top_srcdir/Makefile from earlier configure" >&6;}
-+ mv "$tmp/mkfile.tmp" "$ac_top_srcdir/Makefile"
-+ fi
-+ fi
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: build in $ax_enable_builddir (HOST=$ax_enable_builddir_host)" >&5
-+$as_echo "$as_me: build in $ax_enable_builddir (HOST=$ax_enable_builddir_host)" >&6;}
-+ xxxx="####"
-+ echo "$xxxx" "$ax_enable_builddir_host" "|$ax_enable_builddir" >>$ac_top_srcdir/Makefile
-+ fi
-+ ;;
- "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
Index: libffi/configure.ac
===================================================================
--- libffi.orig/configure.ac
if (! (cif->abi == FFI_GCC_SYSV
|| cif->abi == FFI_SYSV
|| cif->abi == FFI_LINUX
- || cif->abi == FFI_LINUX_SOFT_FLOAT))
+ || cit->abi == FFI_LINUX_SOFT_FLOAT))
return FFI_BAD_ABI;
tramp = (unsigned int *) &closure->tramp[0];
subdir = testsuite
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(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__aclocal_m4_deps = $(top_srcdir)/m4/ax_cc_maxopt.m4 \
+ $(top_srcdir)/m4/ax_cflags_warn_all.m4 \
+ $(top_srcdir)/m4/ax_check_compiler_flags.m4 \
+ $(top_srcdir)/m4/ax_compiler_vendor.m4 \
+ $(top_srcdir)/m4/ax_configure_args.m4 \
+ $(top_srcdir)/m4/ax_enable_builddir.m4 \
+ $(top_srcdir)/m4/ax_gcc_archflag.m4 \
+ $(top_srcdir)/m4/ax_gcc_x86_cpuid.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)
mkinstalldirs = $(install_sh) -d
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@
FGREP = @FGREP@
GREP = @GREP@
HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
+PRTDIAG = @PRTDIAG@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
+ax_enable_builddir_sed = @ax_enable_builddir_sed@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
+sys_symbol_underscore = @sys_symbol_underscore@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@