diff --git a/ChangeLog b/ChangeLog index 6db04659..83d8e989 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,23 +1,25 @@ -2014-03-16 Josh Triplett +2014-03-16 Josh Triplett - Add support for stdcall, thiscall, and fastcall on non-Windows x86-32. + Add support for stdcall, thiscall, and fastcall on non-Windows + x86-32. - Linux supports the stdcall calling convention, either via functions - explicitly declared with the stdcall attribute, or via code compiled - with -mrtd which effectively makes stdcall the default. + Linux supports the stdcall calling convention, either via + functions explicitly declared with the stdcall attribute, or via + code compiled with -mrtd which effectively makes stdcall the + default. This introduces FFI_STDCALL, FFI_THISCALL, and FFI_FASTCALL on non-Windows x86-32 platforms, as non-default calling conventions. * Makefile.am: Compile in src/x86/win32.S on non-Windows x86-32. - * src/x86/ffitarget.h: Add FFI_STDCALL, FFI_THISCALL, and FFI_FASTCALL - on non-Windows x86-32. Increase trampoline size to accomodate these - calling conventions, and unify some ifdeffery. + * src/x86/ffitarget.h: Add FFI_STDCALL, FFI_THISCALL, and + FFI_FASTCALL on non-Windows x86-32. Increase trampoline size to + accomodate these calling conventions, and unify some ifdeffery. * src/x86/ffi.c: Add support for FFI_STDCALL, FFI_THISCALL, and FFI_FASTCALL on non-Windows x86-32 platforms; update ifdeffery. - * src/x86/win32.S: Support compiling on non-Windows x86-32 platforms. - On those platforms, avoid redefining the SYSV symbols already provided - by src/x86/sysv.S. + * src/x86/win32.S: Support compiling on non-Windows x86-32 + platforms. On those platforms, avoid redefining the SYSV symbols + already provided by src/x86/sysv.S. * testsuite/libffi.call/closure_stdcall.c: Run on non-Windows. #define __stdcall if needed. * testsuite/libffi.call/closure_thiscall.c: Run on non-Windows. @@ -32,30 +34,31 @@ * testsuite/libffi.call/struct1_win32.c: Ditto. * testsuite/libffi.call/struct2_win32.c: Ditto. -2014-03-16 Josh Triplett +2014-03-16 Josh Triplett * prep_cif.c: Remove unnecessary ifdef for X86_WIN32. ffi_prep_cif_core had a special case for X86_WIN32, checking for - FFI_THISCALL in addition to the FFI_FIRST_ABI-to-FFI_LAST_ABI range - before returning FFI_BAD_ABI. However, on X86_WIN32, FFI_THISCALL - already falls in that range, making the special case unnecessary. - Remove it. + FFI_THISCALL in addition to the FFI_FIRST_ABI-to-FFI_LAST_ABI + range before returning FFI_BAD_ABI. However, on X86_WIN32, + FFI_THISCALL already falls in that range, making the special case + unnecessary. Remove it. -2014-03-16 Josh Triplett +2014-03-16 Josh Triplett * testsuite/libffi.call/closure_stdcall.c, - testsuite/libffi.call/closure_thiscall.c: Remove fragile stack pointer - checks. These files included inline assembly to save the stack - pointer before and after the call, and compare the values. However, - compilers can and do leave the stack in different states for these two - pieces of inline assembly, such as by saving a temporary value on the - stack across the call; observed with gcc -Os, and verified as spurious - through careful inspection of disassembly. + testsuite/libffi.call/closure_thiscall.c: Remove fragile stack + pointer checks. These files included inline assembly to save the + stack pointer before and after the call, and compare the values. + However, compilers can and do leave the stack in different states + for these two pieces of inline assembly, such as by saving a + temporary value on the stack across the call; observed with gcc + -Os, and verified as spurious through careful inspection of + disassembly. -2014-03-16 Josh Triplett +2014-03-16 Josh Triplett - * testsuite/libffi.call/many.c: Avoid spurious failure due to excess - floating-point precision. + * testsuite/libffi.call/many.c: Avoid spurious failure due to + excess floating-point precision. * testsuite/libffi.call/many_win32.c: Ditto. 2014-03-16 Josh Triplett @@ -65,11 +68,11 @@ 2014-03-16 Josh Triplett * Makefile.in, aclocal.m4, compile, config.guess, config.sub, - configure, depcomp, include/Makefile.in, install-sh, libtool-ldflags, - ltmain.sh, m4/libtool.m4, m4/ltoptions.m4, m4/ltsugar.m4, - m4/ltversion.m4, m4/lt~obsolete.m4, man/Makefile.in, mdate-sh, - missing, testsuite/Makefile.in: Delete autogenerated files from - version control. + configure, depcomp, include/Makefile.in, install-sh, + libtool-ldflags, ltmain.sh, m4/libtool.m4, m4/ltoptions.m4, + m4/ltsugar.m4, m4/ltversion.m4, m4/lt~obsolete.m4, + man/Makefile.in, mdate-sh, missing, testsuite/Makefile.in: Delete + autogenerated files from version control. * .gitignore: Add autogenerated files. * autogen.sh: New script to generate the autogenerated files. * README: Document requirement to run autogen.sh when building @@ -83,7 +86,8 @@ 2014-03-10 Mike Hommey * configure.ac: Allow building for mipsel with Android NDK r8. - * Makefile.am (AM_MAKEFLAGS): Replace double quotes with single quotes. + * Makefile.am (AM_MAKEFLAGS): Replace double quotes with single + quotes. 2014-03-10 Landry Breuil @@ -142,6 +146,11 @@ * src/aarch64/sysv.S (ffi_closure_SYSV): Use x29 as the main CFA reg; update cfi_rel_offset. +2014-02-15 Marcus Comstedt + + * src/powerpc/ffi_linux64.c, src/powerpc/linux64_closure.S: Remove + assumption on contents of r11 in closure. + 2014-02-09 Heiher * src/mips/n32.S: Fix call floating point va function.