mirror of
https://github.com/partic2/libffi
synced 2026-11-11 02:27:19 +00:00
Rebase from GCC
This commit is contained in:
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
+20
-6
@@ -1,3 +1,22 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Anthony Green <green@moxielogic.com>
|
||||
Chris Young <cdyoung@ntlworld.com>
|
||||
|
||||
@@ -8,16 +27,11 @@
|
||||
|
||||
* include/ffi_common.h (LIKELY, UNLIKELY): Fix definitions.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-23 Alan Hourihane <alanh@fairlite.co.uk>
|
||||
|
||||
* src/m68k/ffi.c (ffi_prep_closure_loc): Fix ABI check.
|
||||
* testsuite/libffi.call/return_sc.c (main): Fix test check.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
+20
-6
@@ -1,18 +1,32 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Anthony Green <green@moxielogic.com>
|
||||
Dmitry Nadezhin <dmitry.nadezhin@gmail.com>
|
||||
|
||||
* include/ffi_common.h (LIKELY, UNLIKELY): Fix definitions.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-23 Alan Hourihane <alanh@fairlite.co.uk>
|
||||
|
||||
* src/m68k/ffi.c (ffi_prep_closure_loc): Fix ABI check.
|
||||
* testsuite/libffi.call/return_sc.c (main): Fix test check.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
Vendored
+7
-1150
File diff suppressed because it is too large
Load Diff
@@ -339,7 +339,7 @@ case "$target" in
|
||||
[Cannot use PROT_EXEC on this target, so, we revert to
|
||||
alternative means])
|
||||
;;
|
||||
*-apple-darwin1* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris*)
|
||||
*-apple-darwin1[[10]]* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris*)
|
||||
AC_DEFINE(FFI_MMAP_EXEC_WRIT, 1,
|
||||
[Cannot use malloc on this target, so, we revert to
|
||||
alternative means])
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
Vendored
-24
@@ -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
|
||||
@@ -13290,30 +13287,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
|
||||
@@ -13741,10 +13721,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
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -64,6 +64,8 @@ typedef enum ffi_abi {
|
||||
#ifdef X86_WIN32
|
||||
FFI_SYSV,
|
||||
FFI_STDCALL,
|
||||
FFI_THISCALL,
|
||||
FFI_FASTCALL,
|
||||
/* TODO: Add fastcall support for the sake of completeness */
|
||||
FFI_DEFAULT_ABI = FFI_SYSV,
|
||||
#endif
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
Vendored
-24
@@ -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
|
||||
@@ -13290,30 +13287,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
|
||||
@@ -13741,10 +13721,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
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -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@
|
||||
|
||||
@@ -176,9 +176,6 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||
#undef size_t
|
||||
|
||||
|
||||
#ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
|
||||
#ifdef LIBFFI_ASM
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -1,270 +0,0 @@
|
||||
/* -----------------------------------------------------------------------
|
||||
|
||||
sysv.S - Copyright (c) 1998 Andreas Schwab
|
||||
Copyright (c) 2008 Red Hat, Inc.
|
||||
|
||||
m68k 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 AUTHORS OR COPYRIGHT
|
||||
HOLDERS 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.
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
#define LIBFFI_ASM
|
||||
#include <fficonfig.h>
|
||||
#include <ffi.h>
|
||||
|
||||
#ifdef HAVE_AS_CFI_PSEUDO_OP
|
||||
#define CFI_STARTPROC() .cfi_startproc
|
||||
#define CFI_OFFSET(reg,off) .cfi_offset reg,off
|
||||
#define CFI_DEF_CFA(reg,off) .cfi_def_cfa reg,off
|
||||
#define CFI_ENDPROC() .cfi_endproc
|
||||
#else
|
||||
#define CFI_STARTPROC()
|
||||
#define CFI_OFFSET(reg,off)
|
||||
#define CFI_DEF_CFA(reg,off)
|
||||
#define CFI_ENDPROC()
|
||||
#endif
|
||||
|
||||
.text
|
||||
|
||||
.globl ffi_call_SYSV
|
||||
.type ffi_call_SYSV,@function
|
||||
.align 4
|
||||
|
||||
ffi_call_SYSV:
|
||||
CFI_STARTPROC()
|
||||
link %fp,#0
|
||||
CFI_OFFSET(14,-8)
|
||||
CFI_DEF_CFA(14,8)
|
||||
move.l %d2,-(%sp)
|
||||
CFI_OFFSET(2,-12)
|
||||
|
||||
| Make room for all of the new args.
|
||||
sub.l 12(%fp),%sp
|
||||
|
||||
| Call ffi_prep_args
|
||||
move.l 8(%fp),-(%sp)
|
||||
pea 4(%sp)
|
||||
#if !defined __PIC__
|
||||
jsr ffi_prep_args
|
||||
#else
|
||||
bsr.l ffi_prep_args@PLTPC
|
||||
#endif
|
||||
addq.l #8,%sp
|
||||
|
||||
| Pass pointer to struct value, if any
|
||||
move.l %a0,%a1
|
||||
|
||||
| Call the function
|
||||
move.l 24(%fp),%a0
|
||||
jsr (%a0)
|
||||
|
||||
| Remove the space we pushed for the args
|
||||
add.l 12(%fp),%sp
|
||||
|
||||
| Load the pointer to storage for the return value
|
||||
move.l 20(%fp),%a1
|
||||
|
||||
| Load the return type code
|
||||
move.l 16(%fp),%d2
|
||||
|
||||
| If the return value pointer is NULL, assume no return value.
|
||||
| NOTE: On the mc68000, tst on an address register is not supported.
|
||||
#if defined(__mc68000__) && !defined(__mcoldfire__)
|
||||
cmp.w #0, %a1
|
||||
#else
|
||||
tst.l %a1
|
||||
#endif
|
||||
jbeq noretval
|
||||
|
||||
btst #0,%d2
|
||||
jbeq retlongint
|
||||
move.l %d0,(%a1)
|
||||
jbra epilogue
|
||||
|
||||
retlongint:
|
||||
btst #1,%d2
|
||||
jbeq retfloat
|
||||
move.l %d0,(%a1)
|
||||
move.l %d1,4(%a1)
|
||||
jbra epilogue
|
||||
|
||||
retfloat:
|
||||
btst #2,%d2
|
||||
jbeq retdouble
|
||||
#if defined(__MC68881__)
|
||||
fmove.s %fp0,(%a1)
|
||||
#else
|
||||
move.l %d0,(%a1)
|
||||
#endif
|
||||
jbra epilogue
|
||||
|
||||
retdouble:
|
||||
btst #3,%d2
|
||||
jbeq retlongdouble
|
||||
#if defined(__MC68881__)
|
||||
fmove.d %fp0,(%a1)
|
||||
#else
|
||||
move.l %d0,(%a1)+
|
||||
move.l %d1,(%a1)
|
||||
#endif
|
||||
jbra epilogue
|
||||
|
||||
retlongdouble:
|
||||
btst #4,%d2
|
||||
jbeq retpointer
|
||||
#if defined(__MC68881__)
|
||||
fmove.x %fp0,(%a1)
|
||||
#else
|
||||
move.l %d0,(%a1)+
|
||||
move.l %d1,(%a1)+
|
||||
move.l %d2,(%a1)
|
||||
#endif
|
||||
jbra epilogue
|
||||
|
||||
retpointer:
|
||||
btst #5,%d2
|
||||
jbeq retstruct1
|
||||
move.l %a0,(%a1)
|
||||
jbra epilogue
|
||||
|
||||
retstruct1:
|
||||
btst #6,%d2
|
||||
jbeq retstruct2
|
||||
move.b %d0,(%a1)
|
||||
jbra epilogue
|
||||
|
||||
retstruct2:
|
||||
btst #7,%d2
|
||||
jbeq noretval
|
||||
move.w %d0,(%a1)
|
||||
|
||||
noretval:
|
||||
epilogue:
|
||||
move.l (%sp)+,%d2
|
||||
unlk %fp
|
||||
rts
|
||||
CFI_ENDPROC()
|
||||
.size ffi_call_SYSV,.-ffi_call_SYSV
|
||||
|
||||
.globl ffi_closure_SYSV
|
||||
.type ffi_closure_SYSV, @function
|
||||
.align 4
|
||||
|
||||
ffi_closure_SYSV:
|
||||
CFI_STARTPROC()
|
||||
link %fp,#-12
|
||||
CFI_OFFSET(14,-8)
|
||||
CFI_DEF_CFA(14,8)
|
||||
move.l %sp,-12(%fp)
|
||||
pea 8(%fp)
|
||||
pea -12(%fp)
|
||||
move.l %a0,-(%sp)
|
||||
#if !defined __PIC__
|
||||
jsr ffi_closure_SYSV_inner
|
||||
#else
|
||||
bsr.l ffi_closure_SYSV_inner@PLTPC
|
||||
#endif
|
||||
|
||||
lsr.l #1,%d0
|
||||
jne 1f
|
||||
jcc .Lcls_epilogue
|
||||
move.l -12(%fp),%d0
|
||||
.Lcls_epilogue:
|
||||
unlk %fp
|
||||
rts
|
||||
1:
|
||||
lea -12(%fp),%a0
|
||||
lsr.l #2,%d0
|
||||
jne 1f
|
||||
jcs .Lcls_ret_float
|
||||
move.l (%a0)+,%d0
|
||||
move.l (%a0),%d1
|
||||
jra .Lcls_epilogue
|
||||
.Lcls_ret_float:
|
||||
#if defined(__MC68881__)
|
||||
fmove.s (%a0),%fp0
|
||||
#else
|
||||
move.l (%a0),%d0
|
||||
#endif
|
||||
jra .Lcls_epilogue
|
||||
1:
|
||||
lsr.l #2,%d0
|
||||
jne 1f
|
||||
jcs .Lcls_ret_ldouble
|
||||
#if defined(__MC68881__)
|
||||
fmove.d (%a0),%fp0
|
||||
#else
|
||||
move.l (%a0)+,%d0
|
||||
move.l (%a0),%d1
|
||||
#endif
|
||||
jra .Lcls_epilogue
|
||||
.Lcls_ret_ldouble:
|
||||
#if defined(__MC68881__)
|
||||
fmove.x (%a0),%fp0
|
||||
#else
|
||||
move.l (%a0)+,%d0
|
||||
move.l (%a0)+,%d1
|
||||
move.l (%a0),%d2
|
||||
#endif
|
||||
jra .Lcls_epilogue
|
||||
1:
|
||||
lsr.l #2,%d0
|
||||
jne .Lcls_ret_struct2
|
||||
jcs .Lcls_ret_struct1
|
||||
move.l (%a0),%a0
|
||||
move.l %a0,%d0
|
||||
jra .Lcls_epilogue
|
||||
.Lcls_ret_struct1:
|
||||
move.b (%a0),%d0
|
||||
jra .Lcls_epilogue
|
||||
.Lcls_ret_struct2:
|
||||
move.w (%a0),%d0
|
||||
jra .Lcls_epilogue
|
||||
CFI_ENDPROC()
|
||||
|
||||
.size ffi_closure_SYSV,.-ffi_closure_SYSV
|
||||
|
||||
.globl ffi_closure_struct_SYSV
|
||||
.type ffi_closure_struct_SYSV, @function
|
||||
.align 4
|
||||
|
||||
ffi_closure_struct_SYSV:
|
||||
CFI_STARTPROC()
|
||||
link %fp,#0
|
||||
CFI_OFFSET(14,-8)
|
||||
CFI_DEF_CFA(14,8)
|
||||
move.l %sp,-12(%fp)
|
||||
pea 8(%fp)
|
||||
move.l %a1,-(%sp)
|
||||
move.l %a0,-(%sp)
|
||||
#if !defined __PIC__
|
||||
jsr ffi_closure_SYSV_inner
|
||||
#else
|
||||
bsr.l ffi_closure_SYSV_inner@PLTPC
|
||||
#endif
|
||||
unlk %fp
|
||||
rts
|
||||
CFI_ENDPROC()
|
||||
.size ffi_closure_struct_SYSV,.-ffi_closure_struct_SYSV
|
||||
|
||||
#if defined __ELF__ && defined __linux__
|
||||
.section .note.GNU-stack,"",@progbits
|
||||
#endif
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -391,7 +391,6 @@ psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sys_symbol_underscore = @sys_symbol_underscore@
|
||||
sysconfdir = @sysconfdir@
|
||||
target = @target@
|
||||
target_alias = @target_alias@
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
Vendored
-24
@@ -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
|
||||
@@ -13290,30 +13287,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
|
||||
@@ -13741,10 +13721,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
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -75,14 +75,6 @@ DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||
mdate-sh missing texinfo.tex
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \
|
||||
$(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 \
|
||||
@@ -344,7 +336,6 @@ 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@
|
||||
@@ -365,7 +356,6 @@ 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@
|
||||
@@ -401,7 +391,6 @@ psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sys_symbol_underscore = @sys_symbol_underscore@
|
||||
sysconfdir = @sysconfdir@
|
||||
target = @target@
|
||||
target_alias = @target_alias@
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -48,6 +48,13 @@ void ffi_prep_args(char *stack, extended_cif *ecif)
|
||||
register void **p_argv;
|
||||
register char *argp;
|
||||
register ffi_type **p_arg;
|
||||
#ifdef X86_WIN32
|
||||
size_t p_stack_args[2];
|
||||
void *p_stack_data[2];
|
||||
char *argp2 = stack;
|
||||
int stack_args_count = 0;
|
||||
int cabi = ecif->cif->abi;
|
||||
#endif
|
||||
|
||||
argp = stack;
|
||||
|
||||
@@ -59,6 +66,16 @@ void ffi_prep_args(char *stack, extended_cif *ecif)
|
||||
)
|
||||
{
|
||||
*(void **) argp = ecif->rvalue;
|
||||
#ifdef X86_WIN32
|
||||
/* For fastcall/thiscall this is first register-passed
|
||||
argument. */
|
||||
if (cabi == FFI_THISCALL || cabi == FFI_FASTCALL)
|
||||
{
|
||||
p_stack_args[stack_args_count] = sizeof (void*);
|
||||
p_stack_data[stack_args_count] = argp;
|
||||
++stack_args_count;
|
||||
}
|
||||
#endif
|
||||
argp += sizeof(void*);
|
||||
}
|
||||
|
||||
@@ -134,6 +151,24 @@ void ffi_prep_args(char *stack, extended_cif *ecif)
|
||||
{
|
||||
memcpy(argp, *p_argv, z);
|
||||
}
|
||||
|
||||
#ifdef X86_WIN32
|
||||
/* For thiscall/fastcall convention register-passed arguments
|
||||
are the first two none-floating-point arguments with a size
|
||||
smaller or equal to sizeof (void*). */
|
||||
if ((cabi == FFI_THISCALL && stack_args_count < 1)
|
||||
|| (cabi == FFI_FASTCALL && stack_args_count < 2))
|
||||
{
|
||||
if (z <= 4
|
||||
&& ((*p_arg)->type != FFI_TYPE_FLOAT
|
||||
&& (*p_arg)->type != FFI_TYPE_STRUCT))
|
||||
{
|
||||
p_stack_args[stack_args_count] = z;
|
||||
p_stack_data[stack_args_count] = argp;
|
||||
++stack_args_count;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
p_argv++;
|
||||
#ifdef X86_WIN64
|
||||
argp += (z + sizeof(void*) - 1) & ~(sizeof(void*) - 1);
|
||||
@@ -141,7 +176,45 @@ void ffi_prep_args(char *stack, extended_cif *ecif)
|
||||
argp += z;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#ifdef X86_WIN32
|
||||
/* We need to move the register-passed arguments for thiscall/fastcall
|
||||
on top of stack, so that those can be moved to registers ecx/edx by
|
||||
call-handler. */
|
||||
if (stack_args_count > 0)
|
||||
{
|
||||
size_t zz = (p_stack_args[0] + 3) & ~3;
|
||||
char *h;
|
||||
|
||||
/* Move first argument to top-stack position. */
|
||||
if (p_stack_data[0] != argp2)
|
||||
{
|
||||
h = alloca (zz + 1);
|
||||
memcpy (h, p_stack_data[0], zz);
|
||||
memmove (argp2 + zz, argp2,
|
||||
(size_t) ((char *) p_stack_data[0] - (char*)argp2));
|
||||
memcpy (argp2, h, zz);
|
||||
}
|
||||
|
||||
argp2 += zz;
|
||||
--stack_args_count;
|
||||
if (zz > 4)
|
||||
stack_args_count = 0;
|
||||
|
||||
/* If we have a second argument, then move it on top
|
||||
after the first one. */
|
||||
if (stack_args_count > 0 && p_stack_data[1] != argp2)
|
||||
{
|
||||
zz = p_stack_args[1];
|
||||
zz = (zz + 3) & ~3;
|
||||
h = alloca (zz + 1);
|
||||
h = alloca (zz + 1);
|
||||
memcpy (h, p_stack_data[1], zz);
|
||||
memmove (argp2 + zz, argp2, (size_t) ((char*) p_stack_data[1] - (char*)argp2));
|
||||
memcpy (argp2, h, zz);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -252,7 +325,7 @@ ffi_call_win64(void (*)(char *, extended_cif *), extended_cif *,
|
||||
#elif defined(X86_WIN32)
|
||||
extern void
|
||||
ffi_call_win32(void (*)(char *, extended_cif *), extended_cif *,
|
||||
unsigned, unsigned, unsigned *, void (*fn)(void));
|
||||
unsigned, unsigned, unsigned, unsigned *, void (*fn)(void));
|
||||
#else
|
||||
extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *,
|
||||
unsigned, unsigned, unsigned *, void (*fn)(void));
|
||||
@@ -297,8 +370,37 @@ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
|
||||
#elif defined(X86_WIN32)
|
||||
case FFI_SYSV:
|
||||
case FFI_STDCALL:
|
||||
ffi_call_win32(ffi_prep_args, &ecif, cif->bytes, cif->flags,
|
||||
ecif.rvalue, fn);
|
||||
ffi_call_win32(ffi_prep_args, &ecif, cif->abi, cif->bytes, cif->flags,
|
||||
ecif.rvalue, fn);
|
||||
break;
|
||||
case FFI_THISCALL:
|
||||
case FFI_FASTCALL:
|
||||
{
|
||||
unsigned int abi = cif->abi;
|
||||
unsigned int i, passed_regs = 0;
|
||||
|
||||
if (cif->flags == FFI_TYPE_STRUCT)
|
||||
++passed_regs;
|
||||
|
||||
for (i=0; i < cif->nargs && passed_regs < 2;i++)
|
||||
{
|
||||
size_t sz;
|
||||
|
||||
if (cif->arg_types[i]->type == FFI_TYPE_FLOAT
|
||||
|| cif->arg_types[i]->type == FFI_TYPE_STRUCT)
|
||||
continue;
|
||||
sz = (cif->arg_types[i]->size + 3) & ~3;
|
||||
if (sz == 0 || sz > 4)
|
||||
continue;
|
||||
++passed_regs;
|
||||
}
|
||||
if (passed_regs < 2 && abi == FFI_FASTCALL)
|
||||
abi = FFI_THISCALL;
|
||||
if (passed_regs < 1 && abi == FFI_THISCALL)
|
||||
abi = FFI_STDCALL;
|
||||
ffi_call_win32(ffi_prep_args, &ecif, abi, cif->bytes, cif->flags,
|
||||
ecif.rvalue, fn);
|
||||
}
|
||||
break;
|
||||
#else
|
||||
case FFI_SYSV:
|
||||
@@ -625,8 +727,37 @@ ffi_raw_call(ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_raw *fake_avalue)
|
||||
#ifdef X86_WIN32
|
||||
case FFI_SYSV:
|
||||
case FFI_STDCALL:
|
||||
ffi_call_win32(ffi_prep_args_raw, &ecif, cif->bytes, cif->flags,
|
||||
ecif.rvalue, fn);
|
||||
ffi_call_win32(ffi_prep_args, &ecif, cif->abi, cif->bytes, cif->flags,
|
||||
ecif.rvalue, fn);
|
||||
break;
|
||||
case FFI_THISCALL:
|
||||
case FFI_FASTCALL:
|
||||
{
|
||||
unsigned int abi = cif->abi;
|
||||
unsigned int i, passed_regs = 0;
|
||||
|
||||
if (cif->flags == FFI_TYPE_STRUCT)
|
||||
++passed_regs;
|
||||
|
||||
for (i=0; i < cif->nargs && passed_regs < 2;i++)
|
||||
{
|
||||
size_t sz;
|
||||
|
||||
if (cif->arg_types[i]->type == FFI_TYPE_FLOAT
|
||||
|| cif->arg_types[i]->type == FFI_TYPE_STRUCT)
|
||||
continue;
|
||||
sz = (cif->arg_types[i]->size + 3) & ~3;
|
||||
if (sz == 0 || sz > 4)
|
||||
continue;
|
||||
++passed_regs;
|
||||
}
|
||||
if (passed_regs < 2 && abi == FFI_FASTCALL)
|
||||
cif->abi = abi = FFI_THISCALL;
|
||||
if (passed_regs < 1 && abi == FFI_THISCALL)
|
||||
cif->abi = abi = FFI_STDCALL;
|
||||
ffi_call_win32(ffi_prep_args, &ecif, abi, cif->bytes, cif->flags,
|
||||
ecif.rvalue, fn);
|
||||
}
|
||||
break;
|
||||
#else
|
||||
case FFI_SYSV:
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/* -----------------------------------------------------------------*-C-*-
|
||||
ffitarget.h - Copyright (c) 1996-2003, 2010 Red Hat, Inc.
|
||||
Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
ffitarget.h - Copyright (c) 2012 Anthony Green
|
||||
Copyright (c) 1996-2003, 2010 Red Hat, Inc.
|
||||
Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
|
||||
Target configuration macros for x86 and x86-64.
|
||||
|
||||
@@ -64,6 +65,8 @@ typedef enum ffi_abi {
|
||||
#ifdef X86_WIN32
|
||||
FFI_SYSV,
|
||||
FFI_STDCALL,
|
||||
FFI_THISCALL,
|
||||
FFI_FASTCALL,
|
||||
FFI_LAST_ABI,
|
||||
/* TODO: Add fastcall support for the sake of completeness */
|
||||
FFI_DEFAULT_ABI = FFI_SYSV
|
||||
|
||||
@@ -393,7 +393,6 @@ psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sys_symbol_underscore = @sys_symbol_underscore@
|
||||
sysconfdir = @sysconfdir@
|
||||
target = @target@
|
||||
target_alias = @target_alias@
|
||||
|
||||
+20
-6
@@ -1,13 +1,27 @@
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-23 Alan Hourihane <alanh@fairlite.co.uk>
|
||||
|
||||
* src/m68k/ffi.c (ffi_prep_closure_loc): Fix ABI check.
|
||||
* testsuite/libffi.call/return_sc.c (main): Fix test check.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -48,6 +48,13 @@ void ffi_prep_args(char *stack, extended_cif *ecif)
|
||||
register void **p_argv;
|
||||
register char *argp;
|
||||
register ffi_type **p_arg;
|
||||
#ifdef X86_WIN32
|
||||
size_t p_stack_args[2];
|
||||
void *p_stack_data[2];
|
||||
char *argp2 = stack;
|
||||
int stack_args_count = 0;
|
||||
int cabi = ecif->cif->abi;
|
||||
#endif
|
||||
|
||||
argp = stack;
|
||||
|
||||
@@ -59,6 +66,16 @@ void ffi_prep_args(char *stack, extended_cif *ecif)
|
||||
)
|
||||
{
|
||||
*(void **) argp = ecif->rvalue;
|
||||
#ifdef X86_WIN32
|
||||
/* For fastcall/thiscall this is first register-passed
|
||||
argument. */
|
||||
if (cabi == FFI_THISCALL || cabi == FFI_FASTCALL)
|
||||
{
|
||||
p_stack_args[stack_args_count] = sizeof (void*);
|
||||
p_stack_data[stack_args_count] = argp;
|
||||
++stack_args_count;
|
||||
}
|
||||
#endif
|
||||
argp += sizeof(void*);
|
||||
}
|
||||
|
||||
@@ -134,6 +151,24 @@ void ffi_prep_args(char *stack, extended_cif *ecif)
|
||||
{
|
||||
memcpy(argp, *p_argv, z);
|
||||
}
|
||||
|
||||
#ifdef X86_WIN32
|
||||
/* For thiscall/fastcall convention register-passed arguments
|
||||
are the first two none-floating-point arguments with a size
|
||||
smaller or equal to sizeof (void*). */
|
||||
if ((cabi == FFI_THISCALL && stack_args_count < 1)
|
||||
|| (cabi == FFI_FASTCALL && stack_args_count < 2))
|
||||
{
|
||||
if (z <= 4
|
||||
&& ((*p_arg)->type != FFI_TYPE_FLOAT
|
||||
&& (*p_arg)->type != FFI_TYPE_STRUCT))
|
||||
{
|
||||
p_stack_args[stack_args_count] = z;
|
||||
p_stack_data[stack_args_count] = argp;
|
||||
++stack_args_count;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
p_argv++;
|
||||
#ifdef X86_WIN64
|
||||
argp += (z + sizeof(void*) - 1) & ~(sizeof(void*) - 1);
|
||||
@@ -141,7 +176,45 @@ void ffi_prep_args(char *stack, extended_cif *ecif)
|
||||
argp += z;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#ifdef X86_WIN32
|
||||
/* We need to move the register-passed arguments for thiscall/fastcall
|
||||
on top of stack, so that those can be moved to registers ecx/edx by
|
||||
call-handler. */
|
||||
if (stack_args_count > 0)
|
||||
{
|
||||
size_t zz = (p_stack_args[0] + 3) & ~3;
|
||||
char *h;
|
||||
|
||||
/* Move first argument to top-stack position. */
|
||||
if (p_stack_data[0] != argp2)
|
||||
{
|
||||
h = alloca (zz + 1);
|
||||
memcpy (h, p_stack_data[0], zz);
|
||||
memmove (argp2 + zz, argp2,
|
||||
(size_t) ((char *) p_stack_data[0] - (char*)argp2));
|
||||
memcpy (argp2, h, zz);
|
||||
}
|
||||
|
||||
argp2 += zz;
|
||||
--stack_args_count;
|
||||
if (zz > 4)
|
||||
stack_args_count = 0;
|
||||
|
||||
/* If we have a second argument, then move it on top
|
||||
after the first one. */
|
||||
if (stack_args_count > 0 && p_stack_data[1] != argp2)
|
||||
{
|
||||
zz = p_stack_args[1];
|
||||
zz = (zz + 3) & ~3;
|
||||
h = alloca (zz + 1);
|
||||
h = alloca (zz + 1);
|
||||
memcpy (h, p_stack_data[1], zz);
|
||||
memmove (argp2 + zz, argp2, (size_t) ((char*) p_stack_data[1] - (char*)argp2));
|
||||
memcpy (argp2, h, zz);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -252,7 +325,7 @@ ffi_call_win64(void (*)(char *, extended_cif *), extended_cif *,
|
||||
#elif defined(X86_WIN32)
|
||||
extern void
|
||||
ffi_call_win32(void (*)(char *, extended_cif *), extended_cif *,
|
||||
unsigned, unsigned, unsigned *, void (*fn)(void));
|
||||
unsigned, unsigned, unsigned, unsigned *, void (*fn)(void));
|
||||
#else
|
||||
extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *,
|
||||
unsigned, unsigned, unsigned *, void (*fn)(void));
|
||||
@@ -316,8 +389,37 @@ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
|
||||
#elif defined(X86_WIN32)
|
||||
case FFI_SYSV:
|
||||
case FFI_STDCALL:
|
||||
ffi_call_win32(ffi_prep_args, &ecif, cif->bytes, cif->flags,
|
||||
ecif.rvalue, fn);
|
||||
ffi_call_win32(ffi_prep_args, &ecif, cif->abi, cif->bytes, cif->flags,
|
||||
ecif.rvalue, fn);
|
||||
break;
|
||||
case FFI_THISCALL:
|
||||
case FFI_FASTCALL:
|
||||
{
|
||||
unsigned int abi = cif->abi;
|
||||
unsigned int i, passed_regs = 0;
|
||||
|
||||
if (cif->flags == FFI_TYPE_STRUCT)
|
||||
++passed_regs;
|
||||
|
||||
for (i=0; i < cif->nargs && passed_regs < 2;i++)
|
||||
{
|
||||
size_t sz;
|
||||
|
||||
if (cif->arg_types[i]->type == FFI_TYPE_FLOAT
|
||||
|| cif->arg_types[i]->type == FFI_TYPE_STRUCT)
|
||||
continue;
|
||||
sz = (cif->arg_types[i]->size + 3) & ~3;
|
||||
if (sz == 0 || sz > 4)
|
||||
continue;
|
||||
++passed_regs;
|
||||
}
|
||||
if (passed_regs < 2 && abi == FFI_FASTCALL)
|
||||
abi = FFI_THISCALL;
|
||||
if (passed_regs < 1 && abi == FFI_THISCALL)
|
||||
abi = FFI_STDCALL;
|
||||
ffi_call_win32(ffi_prep_args, &ecif, abi, cif->bytes, cif->flags,
|
||||
ecif.rvalue, fn);
|
||||
}
|
||||
break;
|
||||
#else
|
||||
case FFI_SYSV:
|
||||
@@ -644,8 +746,37 @@ ffi_raw_call(ffi_cif *cif, void (*fn)(void), void *rvalue, ffi_raw *fake_avalue)
|
||||
#ifdef X86_WIN32
|
||||
case FFI_SYSV:
|
||||
case FFI_STDCALL:
|
||||
ffi_call_win32(ffi_prep_args_raw, &ecif, cif->bytes, cif->flags,
|
||||
ecif.rvalue, fn);
|
||||
ffi_call_win32(ffi_prep_args, &ecif, cif->abi, cif->bytes, cif->flags,
|
||||
ecif.rvalue, fn);
|
||||
break;
|
||||
case FFI_THISCALL:
|
||||
case FFI_FASTCALL:
|
||||
{
|
||||
unsigned int abi = cif->abi;
|
||||
unsigned int i, passed_regs = 0;
|
||||
|
||||
if (cif->flags == FFI_TYPE_STRUCT)
|
||||
++passed_regs;
|
||||
|
||||
for (i=0; i < cif->nargs && passed_regs < 2;i++)
|
||||
{
|
||||
size_t sz;
|
||||
|
||||
if (cif->arg_types[i]->type == FFI_TYPE_FLOAT
|
||||
|| cif->arg_types[i]->type == FFI_TYPE_STRUCT)
|
||||
continue;
|
||||
sz = (cif->arg_types[i]->size + 3) & ~3;
|
||||
if (sz == 0 || sz > 4)
|
||||
continue;
|
||||
++passed_regs;
|
||||
}
|
||||
if (passed_regs < 2 && abi == FFI_FASTCALL)
|
||||
cif->abi = abi = FFI_THISCALL;
|
||||
if (passed_regs < 1 && abi == FFI_THISCALL)
|
||||
cif->abi = abi = FFI_STDCALL;
|
||||
ffi_call_win32(ffi_prep_args, &ecif, abi, cif->bytes, cif->flags,
|
||||
ecif.rvalue, fn);
|
||||
}
|
||||
break;
|
||||
#else
|
||||
case FFI_SYSV:
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
2012-01-28 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
|
||||
argument to prototype for specify calling-convention.
|
||||
(ffi_call): Add support for stdcall/thiscall convention.
|
||||
(ffi_prep_args): Likewise.
|
||||
(ffi_raw_call): Likewise.
|
||||
* src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
|
||||
FFI_FASTCALL.
|
||||
* src/x86/win32.S (_ffi_call_win32): Add support for
|
||||
fastcall/thiscall calling-convention calls.
|
||||
* testsuite/libffi.call/fastthis1_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis2_win32.c: New test.
|
||||
* testsuite/libffi.call/fastthis3_win32.c: New test.
|
||||
* testsuite/libffi.call/strlen2_win32.c: New test.
|
||||
* testsuite/libffi.call/many2_win32.c: New test.
|
||||
* testsuite/libffi.call/struct1_win32.c: New test.
|
||||
* testsuite/libffi.call/struct2_win32.c: New test.
|
||||
|
||||
2012-01-23 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
|
||||
mc68000. Test for __HAVE_68881__ in addition to __MC68881__.
|
||||
|
||||
2012-01-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/48496
|
||||
|
||||
Reference in New Issue
Block a user