diff options
35 files changed, 8781 insertions, 9379 deletions
diff --git a/.pc/ungccify/configure b/.pc/aix-ibm-xlc/configure index 2539e67..67125ba 100755 --- a/.pc/ungccify/configure +++ b/.pc/aix-ibm-xlc/configure @@ -1,6 +1,6 @@ #! /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>. # @@ -570,8 +570,8 @@ MAKEFLAGS= # 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='' @@ -1367,7 +1367,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libffi 3.0.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]... @@ -1438,7 +1438,7 @@ fi 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 @@ -1547,7 +1547,7 @@ fi 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. @@ -2148,7 +2148,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libffi $as_me 3.0.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 $@ @@ -3081,7 +3081,7 @@ fi # Define the identity of the package. PACKAGE='libffi' - VERSION='3.0.10rc6' + VERSION='3.0.10rc7' cat >>confdefs.h <<_ACEOF @@ -12077,7 +12077,7 @@ case "$host" in 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 @@ -12126,7 +12126,7 @@ case "$host" in powerpc-*-beos*) TARGET=POWERPC; TARGETDIR=powerpc ;; - powerpc-*-darwin* | powerpc64-*-darwin*) + powerpc-*-darwin*) TARGET=POWERPC_DARWIN; TARGETDIR=powerpc ;; powerpc-*-aix* | rs6000-*-aix*) @@ -12135,7 +12135,7 @@ case "$host" in powerpc-*-freebsd*) TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc ;; - powerpc64-*-freebsd*) + powerpc64-*-freebsd*) TARGET=POWERPC; TARGETDIR=powerpc ;; powerpc*-*-rtems*) @@ -14127,7 +14127,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libffi $as_me 3.0.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 @@ -14197,7 +14197,7 @@ _ACEOF 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\\" diff --git a/.pc/aix-ibm-xlc/configure.ac b/.pc/aix-ibm-xlc/configure.ac new file mode 100644 index 0000000..5a6e084 --- /dev/null +++ b/.pc/aix-ibm-xlc/configure.ac @@ -0,0 +1,476 @@ +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 diff --git a/.pc/debug-build/configure b/.pc/debug-build/configure index b6f3f15..0554674 100755 --- a/.pc/debug-build/configure +++ b/.pc/debug-build/configure @@ -1,6 +1,6 @@ #! /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>. # @@ -570,8 +570,8 @@ MAKEFLAGS= # 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='' @@ -1364,7 +1364,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libffi 3.0.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]... @@ -1435,7 +1435,7 @@ fi 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 @@ -1544,7 +1544,7 @@ fi 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. @@ -2145,7 +2145,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libffi $as_me 3.0.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 $@ @@ -3078,7 +3078,7 @@ fi # Define the identity of the package. PACKAGE='libffi' - VERSION='3.0.10rc6' + VERSION='3.0.10rc7' cat >>confdefs.h <<_ACEOF @@ -14053,7 +14053,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libffi $as_me 3.0.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 @@ -14123,7 +14123,7 @@ _ACEOF 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\\" diff --git a/.pc/debug-build/configure.ac b/.pc/debug-build/configure.ac index 3f2ce98..8fe9aec 100644 --- a/.pc/debug-build/configure.ac +++ b/.pc/debug-build/configure.ac @@ -2,7 +2,7 @@ dnl Process this with autoconf to create configure 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 diff --git a/.pc/fix-ppc32/ChangeLog b/.pc/fix-ppc32/ChangeLog index e69de29..e164096 100644 --- a/.pc/fix-ppc32/ChangeLog +++ b/.pc/fix-ppc32/ChangeLog @@ -0,0 +1,4551 @@ +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. diff --git a/.pc/fix-ppc32/src/powerpc/ffi.c b/.pc/fix-ppc32/src/powerpc/ffi.c index e69de29..dd1594e 100644 --- a/.pc/fix-ppc32/src/powerpc/ffi.c +++ b/.pc/fix-ppc32/src/powerpc/ffi.c @@ -0,0 +1,1445 @@ +/* ----------------------------------------------------------------------- + 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; +} diff --git a/.pc/fix_maxopt/configure b/.pc/fix_maxopt/configure index 5aa9e85..c75b2f6 100755 --- a/.pc/fix_maxopt/configure +++ b/.pc/fix_maxopt/configure @@ -1,6 +1,6 @@ #! /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>. # @@ -570,8 +570,8 @@ MAKEFLAGS= # 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='' @@ -621,9 +621,6 @@ 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 @@ -688,7 +685,6 @@ TESTSUBDIR_TRUE MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE -PRTDIAG CPP OTOOL64 OTOOL @@ -755,7 +751,6 @@ am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM -ax_enable_builddir_sed target_os target_vendor target_cpu @@ -809,7 +804,6 @@ SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking -enable_builddir enable_dependency_tracking enable_shared enable_static @@ -818,8 +812,6 @@ enable_fast_install with_gnu_ld with_sysroot enable_libtool_lock -enable_portable_binary -with_gcc_arch enable_maintainer_mode enable_debug enable_structs @@ -1375,7 +1367,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libffi 3.0.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]... @@ -1446,7 +1438,7 @@ fi 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 @@ -1454,8 +1446,6 @@ 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] @@ -1463,9 +1453,6 @@ 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 @@ -1481,8 +1468,6 @@ 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 @@ -1562,7 +1547,7 @@ fi 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. @@ -2163,7 +2148,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libffi $as_me 3.0.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 $@ @@ -2658,110 +2643,6 @@ 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), @@ -2919,6 +2800,9 @@ 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 *\ * | *\ *) @@ -3197,7 +3081,7 @@ fi # Define the identity of the package. PACKAGE='libffi' - VERSION='3.0.10rc6' + VERSION='3.0.10rc7' cat >>confdefs.h <<_ACEOF @@ -11951,931 +11835,6 @@ CC="$lt_save_CC" -{ $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 - 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 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_compiler_vendor" >&5 -$as_echo "$ax_cv_c_compiler_vendor" >&6; } - - - - - - -# 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 - - -# 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; -} -_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: - -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 # 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. @@ -14323,30 +13282,13 @@ $as_echo "#define SYMBOL_UNDERSCORE 1" >>confdefs.h 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 @@ -14371,67 +13313,69 @@ $as_echo "#define HAVE_AS_X86_64_UNWIND_SECTION_TYPE 1" >>confdefs.h 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 @@ -14772,10 +13716,6 @@ if test -z "${PA64_HPUX_TRUE}" && test -z "${PA64_HPUX_FALSE}"; then 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 @@ -15189,7 +14129,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libffi $as_me 3.0.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 @@ -15259,7 +14199,7 @@ _ACEOF 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\\" @@ -15378,14 +14318,6 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # 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" @@ -15675,7 +14607,6 @@ for ac_config_target in $ac_config_targets 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" ;; @@ -16314,150 +15245,6 @@ $as_echo "$as_me: executing $ac_file commands" >&6;} 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 diff --git a/.pc/interix/configure b/.pc/interix/configure index c53c8b4..82208b2 100755 --- a/.pc/interix/configure +++ b/.pc/interix/configure @@ -1,6 +1,6 @@ #! /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>. # @@ -570,8 +570,8 @@ MAKEFLAGS= # 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='' @@ -1367,7 +1367,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libffi 3.0.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]... @@ -1438,7 +1438,7 @@ fi 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 @@ -1547,7 +1547,7 @@ fi 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. @@ -2148,7 +2148,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libffi $as_me 3.0.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 $@ @@ -3081,7 +3081,7 @@ fi # Define the identity of the package. PACKAGE='libffi' - VERSION='3.0.10rc6' + VERSION='3.0.10rc7' cat >>confdefs.h <<_ACEOF @@ -13313,67 +13313,69 @@ $as_echo "#define HAVE_AS_X86_64_UNWIND_SECTION_TYPE 1" >>confdefs.h 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 @@ -14127,7 +14129,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libffi $as_me 3.0.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 @@ -14197,7 +14199,7 @@ _ACEOF 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\\" diff --git a/.pc/interix/configure.ac b/.pc/interix/configure.ac index 43ceaef..3add7c1 100644 --- a/.pc/interix/configure.ac +++ b/.pc/interix/configure.ac @@ -2,7 +2,7 @@ dnl Process this with autoconf to create configure 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 @@ -361,44 +361,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([ diff --git a/.pc/ios/configure.ac b/.pc/ios/configure.ac index d163679..c2cfb36 100644 --- a/.pc/ios/configure.ac +++ b/.pc/ios/configure.ac @@ -2,7 +2,7 @@ dnl Process this with autoconf to create configure 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 @@ -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([ diff --git a/.pc/msvcc/Makefile.in b/.pc/msvcc/Makefile.in index 427b457..e1ce82b 100644 --- a/.pc/msvcc/Makefile.in +++ b/.pc/msvcc/Makefile.in @@ -400,7 +400,6 @@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ -sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ diff --git a/.pc/ppc64-darwin/configure b/.pc/ppc64-darwin/configure index 5b59cb8..6c82735 100755 --- a/.pc/ppc64-darwin/configure +++ b/.pc/ppc64-darwin/configure @@ -1,6 +1,6 @@ #! /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>. # @@ -570,8 +570,8 @@ MAKEFLAGS= # 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='' @@ -1367,7 +1367,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libffi 3.0.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]... @@ -1438,7 +1438,7 @@ fi 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 @@ -1547,7 +1547,7 @@ fi 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. @@ -2148,7 +2148,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libffi $as_me 3.0.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 $@ @@ -3081,7 +3081,7 @@ fi # Define the identity of the package. PACKAGE='libffi' - VERSION='3.0.10rc6' + VERSION='3.0.10rc7' cat >>confdefs.h <<_ACEOF @@ -13313,67 +13313,69 @@ $as_echo "#define HAVE_AS_X86_64_UNWIND_SECTION_TYPE 1" >>confdefs.h 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 @@ -14127,7 +14129,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libffi $as_me 3.0.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 @@ -14197,7 +14199,7 @@ _ACEOF 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\\" diff --git a/.pc/ppc64-darwin/configure.ac b/.pc/ppc64-darwin/configure.ac index df174b9..00b9ffd 100644 --- a/.pc/ppc64-darwin/configure.ac +++ b/.pc/ppc64-darwin/configure.ac @@ -2,7 +2,7 @@ dnl Process this with autoconf to create configure 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 @@ -361,44 +361,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([ diff --git a/.pc/remove-debug-code/Makefile.in b/.pc/remove-debug-code/Makefile.in index b1ec810..8e94646 100644 --- a/.pc/remove-debug-code/Makefile.in +++ b/.pc/remove-debug-code/Makefile.in @@ -389,7 +389,6 @@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ -sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ diff --git a/.pc/ungccify/Makefile.in b/.pc/ungccify/Makefile.in index 54fbb6d..1347da6 100644 --- a/.pc/ungccify/Makefile.in +++ b/.pc/ungccify/Makefile.in @@ -392,7 +392,6 @@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ -sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ diff --git a/.pc/ungccify/configure.ac b/.pc/ungccify/configure.ac index 2f3e938..dead87c 100644 --- a/.pc/ungccify/configure.ac +++ b/.pc/ungccify/configure.ac @@ -2,7 +2,7 @@ dnl Process this with autoconf to create configure 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 @@ -361,44 +361,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([ diff --git a/.pc/win64-underscore/configure b/.pc/win64-underscore/configure index a0959a9..3ffe236 100755 --- a/.pc/win64-underscore/configure +++ b/.pc/win64-underscore/configure @@ -1,6 +1,6 @@ #! /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>. # @@ -570,8 +570,8 @@ MAKEFLAGS= # 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='' @@ -1366,7 +1366,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libffi 3.0.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]... @@ -1437,7 +1437,7 @@ fi 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 @@ -1546,7 +1546,7 @@ fi 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. @@ -2147,7 +2147,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libffi $as_me 3.0.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 $@ @@ -3080,7 +3080,7 @@ fi # Define the identity of the package. PACKAGE='libffi' - VERSION='3.0.10rc6' + VERSION='3.0.10rc7' cat >>confdefs.h <<_ACEOF @@ -14071,7 +14071,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libffi $as_me 3.0.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 @@ -14141,7 +14141,7 @@ _ACEOF 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\\" diff --git a/.pc/win64-underscore/configure.ac b/.pc/win64-underscore/configure.ac index 6ab93d0..8300819 100644 --- a/.pc/win64-underscore/configure.ac +++ b/.pc/win64-underscore/configure.ac @@ -2,7 +2,7 @@ dnl Process this with autoconf to create configure 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 diff --git a/.pc/x86_pcrel_test/configure b/.pc/x86_pcrel_test/configure index 6e64919..a5b9348 100755 --- a/.pc/x86_pcrel_test/configure +++ b/.pc/x86_pcrel_test/configure @@ -1,6 +1,6 @@ #! /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>. # @@ -570,8 +570,8 @@ MAKEFLAGS= # 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='' @@ -1367,7 +1367,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libffi 3.0.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]... @@ -1438,7 +1438,7 @@ fi 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 @@ -1547,7 +1547,7 @@ fi 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. @@ -2148,7 +2148,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libffi $as_me 3.0.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 $@ @@ -3081,7 +3081,7 @@ fi # Define the identity of the package. PACKAGE='libffi' - VERSION='3.0.10rc6' + VERSION='3.0.10rc7' cat >>confdefs.h <<_ACEOF @@ -14127,7 +14127,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libffi $as_me 3.0.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 @@ -14197,7 +14197,7 @@ _ACEOF 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\\" diff --git a/.pc/x86_pcrel_test/configure.ac b/.pc/x86_pcrel_test/configure.ac index ae830da..7288378 100644 --- a/.pc/x86_pcrel_test/configure.ac +++ b/.pc/x86_pcrel_test/configure.ac @@ -2,7 +2,7 @@ dnl Process this with autoconf to create configure 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 @@ -1,7 +1,7 @@ 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> @@ -1857,6 +1857,14 @@ AC_SUBST([am__tar]) 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]) @@ -1,6 +1,6 @@ #! /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>. # @@ -570,8 +570,8 @@ MAKEFLAGS= # 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='' @@ -1375,7 +1375,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libffi 3.0.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]... @@ -1446,7 +1446,7 @@ fi 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 @@ -1562,7 +1562,7 @@ fi 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. @@ -2163,7 +2163,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libffi $as_me 3.0.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 $@ @@ -3197,7 +3197,7 @@ fi # Define the identity of the package. PACKAGE='libffi' - VERSION='3.0.10rc6' + VERSION='3.0.10rc7' cat >>confdefs.h <<_ACEOF @@ -14331,67 +14331,69 @@ $as_echo "#define HAVE_AS_X86_64_UNWIND_SECTION_TYPE 1" >>confdefs.h 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 @@ -15149,7 +15151,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libffi $as_me 3.0.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 @@ -15219,7 +15221,7 @@ _ACEOF 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\\" diff --git a/configure.ac b/configure.ac index 9bc9ff1..0e3ddb5 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ dnl Process this with autoconf to create configure 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 @@ -369,44 +369,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([ diff --git a/include/Makefile.in b/include/Makefile.in index d3805b2..f3d3ef2 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -39,10 +39,18 @@ subdir = include 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 @@ -106,6 +114,7 @@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ +FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@ FGREP = @FGREP@ GREP = @GREP@ HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@ @@ -140,6 +149,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PRTDIAG = @PRTDIAG@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -160,6 +170,7 @@ am__leading_dot = @am__leading_dot@ 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@ @@ -195,6 +206,7 @@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ +sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ diff --git a/man/Makefile.in b/man/Makefile.in index e607ea3..2cb5ea8 100644 --- a/man/Makefile.in +++ b/man/Makefile.in @@ -37,10 +37,18 @@ target_triplet = @target@ 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 @@ -104,6 +112,7 @@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ +FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@ FGREP = @FGREP@ GREP = @GREP@ HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@ @@ -138,6 +147,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PRTDIAG = @PRTDIAG@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -158,6 +168,7 @@ am__leading_dot = @am__leading_dot@ 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@ @@ -193,6 +204,7 @@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ +sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ diff --git a/patches/aix-ibm-xlc b/patches/aix-ibm-xlc index 14e70a8..2e0869d 100644 --- a/patches/aix-ibm-xlc +++ b/patches/aix-ibm-xlc @@ -156,3 +156,190 @@ Index: libffi/src/powerpc/aix_closure.S #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([ diff --git a/patches/fix-ppc32 b/patches/fix-ppc32 index c05e43b..73f5e65 100644 --- a/patches/fix-ppc32 +++ b/patches/fix-ppc32 @@ -1,6014 +1,29 @@ 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]; diff --git a/patches/fix_maxopt b/patches/fix_maxopt index 96f0192..2cccae0 100644 --- a/patches/fix_maxopt +++ b/patches/fix_maxopt @@ -15,60 +15,1661 @@ Index: libffi/configure =================================================================== --- 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 diff --git a/patches/ios b/patches/ios index 4d780ef..627ecf1 100644 --- a/patches/ios +++ b/patches/ios @@ -214,15 +214,7 @@ Index: libffi/Makefile.in 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 @@ -288,7 +280,7 @@ Index: libffi/Makefile.in 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) \ @@ -301,7 +293,7 @@ Index: libffi/Makefile.in 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) @@ -310,7 +302,7 @@ Index: libffi/Makefile.in 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 @@ -319,7 +311,7 @@ Index: libffi/Makefile.in -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@ @@ -369,16 +361,6 @@ Index: libffi/fficonfig.h.in /* 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 diff --git a/patches/msvcc b/patches/msvcc index e624506..adf2474 100644 --- a/patches/msvcc +++ b/patches/msvcc @@ -16,7 +16,7 @@ Index: libffi/Makefile.in =================================================================== --- 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 \ diff --git a/patches/remove-debug-code b/patches/remove-debug-code index 2f7681c..92acc9f 100644 --- a/patches/remove-debug-code +++ b/patches/remove-debug-code @@ -233,7 +233,7 @@ Index: libffi/Makefile.in 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 \ @@ -242,7 +242,7 @@ Index: libffi/Makefile.in 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 @@ -251,7 +251,7 @@ Index: libffi/Makefile.in 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) \ @@ -265,7 +265,7 @@ Index: libffi/Makefile.in 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) diff --git a/patches/ungccify b/patches/ungccify index 962671d..ee44e64 100644 --- a/patches/ungccify +++ b/patches/ungccify @@ -79,1705 +79,6 @@ Index: libffi/Makefile.in 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 diff --git a/src/powerpc/ffi.c b/src/powerpc/ffi.c index fb2a39f..077f56b 100644 --- a/src/powerpc/ffi.c +++ b/src/powerpc/ffi.c @@ -961,7 +961,7 @@ ffi_prep_closure_loc (ffi_closure *closure, 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]; diff --git a/testsuite/Makefile.in b/testsuite/Makefile.in index 3b62825..53de9c0 100644 --- a/testsuite/Makefile.in +++ b/testsuite/Makefile.in @@ -37,10 +37,18 @@ target_triplet = @target@ 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 @@ -81,6 +89,7 @@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ +FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@ FGREP = @FGREP@ GREP = @GREP@ HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@ @@ -115,6 +124,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PRTDIAG = @PRTDIAG@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -135,6 +145,7 @@ am__leading_dot = @am__leading_dot@ 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@ @@ -170,6 +181,7 @@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ +sys_symbol_underscore = @sys_symbol_underscore@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ |