src/x86/ffi.c


Log

Author Commit Date CI Message
Richard Henderson f27c4e46 2015-01-13T07:22:07 x86: Fix thinko in ffi_raw_call Missed structure initialization for raw path. Apparently there are no tests for this outside gcc.
Richard Henderson 3fa5d70c 2015-01-05T13:03:06 x86: Avoid fastcall when building with pcc Apparently, PCC doesn't support the fastcall calling convention. Nor does it issue a warning or error for the attribute that it does not understand.
Richard Henderson a03d2310 2014-12-24T16:03:34 x86: Load structure return address into eax
Richard Henderson 1b12593d 2014-11-24T12:55:43 x86: Honor alignment of arguments Darwin aligns long-double to 16, and thus all of the long double tests were failing due to not honoring that. We ought to be able to devise a test case for GCC using __attribute__((aligned)) that would have failed too.
Richard Henderson dea49e20 2014-11-14T13:05:14 x86: Fix typo in ffi_prep_go_closure Used the wrong register for THISCALL and FASTCALL.
Richard Henderson f8c64e24 2014-11-05T17:04:29 x86: Add support for Go closures
Richard Henderson 198f469e 2014-11-05T16:34:41 x86: Add support for Complex
Richard Henderson b21ec1ce 2014-11-05T10:15:25 x86: Rewrite closures Move everything into sysv.S, removing win32.S and freebsd.S. Handle all abis with a single ffi_closure_inner function. Move complexity of the raw THISCALL trampoline into assembly instead of the trampoline itself. Only push the context for the REGISTER abi; let the rest receive it in a register.
Richard Henderson b9ac94f3 2014-11-01T15:10:34 x86: Rewrite ffi_call Decouple the assembly from FFI_TYPE_*. Merge prep_args with ffi_call, passing the frame and the stack to the assembly. Note that this patch isn't really standalone, as this breaks closures.
Richard Henderson e7b0056d 2014-10-30T13:57:39 x86: Force FFI_TYPE_LONGDOUBLE different from FFI_TYPE_DOUBLE There are few abis that set double = long double. Eliminate the conditional compilation and let this code simply be unused there.
Richard Henderson 4b2fad8f 2014-10-30T12:41:31 x86: Remove some conditional compilation Removal of ifdefs made possible to due to ffi_abi unification.
Richard Henderson ef762056 2014-10-30T12:13:31 x86: Tidy ffi_abi The x86_64 unix port only handles one ABI; don't define all of the other symbols. The UNIX64 symbol retains the same value. The i386 ports ought to have the same symbols, even if we can't yet unify the values without incrementing the libffi soname.
Richard Henderson ebd82769 2014-10-23T23:57:06 win64: Remove support from ffi.c
Bernd Edlinger bfcbf329 2014-09-20T06:51:45 2014-05-11 Bernd Edlinger <bernd.edlinger@hotmail.de> Fix current cygwin-64 build problems. * src/java_raw_api.c: Remove if !defined(FFI_NO_RAW_API). * src/x86/ffi.c: Add if defined(__CYGWIN__). * src/x86/win64.S (ffi_closure_win64, ffi_call_win64): Added handling for FFI_TYPE_UINT64, FFI_TYPE_POINTER and FFI_TYPE_INT. Added SEH information. Fixed formatting.
nielsAD 5d6340ef 2014-08-25T17:29:44 Determine whether register arguments (THISCALL/FASTCALL/REGISTER) are really passed via register to closures. Use stack if not.
nielsAD 6e346487 2014-08-25T12:23:29 Fixed THISCALL/FASTCALL closures and added basic support for PASCAL/REGISTER closures.
nielsAD 098dca6b 2014-08-23T00:18:47 Support for calling functions with PASCAL and REGISTER calling conventions on x86 Windows/Linux. Also changed indentation to be more consistent throughout the (adjusted) files.
Josh Triplett d3695227 2014-04-20T12:03:25 Support fastcall closures libffi on 32-bit x86 now supports closures for all supported ABIs. Thus, rewrite the last remaining duplicated-by-ABI test (closure_stdcall and closure_thiscall) to use the generic ABI_NUM/ABI_ATTR mechanism.
Ole André Vadla Ravnås 3e2b84d2 2014-04-12T01:04:04 Fix Windows regression Introduced by b5fed601948237037513a9b7f967c8fc6c9ff1f6.
Josh Triplett b5fed601 2014-04-05T17:33:42 Fix ABI on 32-bit non-Windows x86: go back to trampoline size 10 The trampoline size is part of the ABI, so it cannot change. Move the logic from the stdcall and thiscall trampolines to the functions they call, to reduce them both to 10 bytes. This drops the previously added support for raw THISCALL closures on non-Windows. (Non-raw THISCALL closures still work.)
Josh Triplett 56be47f8 2014-03-24T21:24:53 Fix a warning on 64-bit Windows When sizeof(size_t) != sizeof(unsigned), adding a size_t to cif->bytes produces a "possible loss of data" warning. However, the size_t in question refers to the size of a single parameter. Use a cast to avoid the warning.
Josh Triplett 48a8eda7 2014-03-24T21:21:12 Avoid referencing undefined ABIs on 64-bit Windows builds 64-bit Windows does not have FFI_STDCALL, FFI_THISCALL, or FFI_FASTCALL.
Josh Triplett e1911f78 2014-03-16T03:25:53 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. This introduces FFI_STDCALL, FFI_THISCALL, and FFI_FASTCALL on non-Windows x86-32 platforms, as non-default calling conventions.
Zachary Waldowski 13675341 2014-01-09T13:42:08 Darwin/i386: Inhibit Clang previous prototype warnings
Anthony Green 3dc3f32c 2013-12-05T16:23:25 Undo iOS ARM64 changes.
Zachary Waldowski 16ba1b80 2012-04-11T23:26:04 Darwin: Silence Clang warnings.
Vitaly Budovski 6aa15900 2013-09-05T12:05:06 Don't use 16 byte aligned stack for WIN32 This fixes a crash when accessing __stdcall functions in Python ctypes.
Alex Gaynor ee18766b 2013-03-14T15:00:33 Fix for a crasher due to misaligned stack on x86-32. Full information on reproduction (using Python's ctypes available here: http://bugs.python.org/issue17423)
Anthony Green 2d9b3939 2013-01-09T21:14:54 Fix for closures with sunpro compiler
Zachary Waldowski 39dccddb 2012-04-05T12:32:41 Fix building with Clang for Darwin (OS X 10.6+ and iOS 4.0+)
Peter Rosin 0a1ab12a 2012-03-30T08:14:08 Various MSVC-related changes.
Anthony Green 7c5e60b5 2012-03-29T08:48:22 Rebase on fixed GCC sources
Anthony Green dee20f8e 2012-02-10T13:06:46 Rebased from gcc
Anthony Green 1ff9c604 2012-02-01T16:34:30 Rebase from GCC
Anthony Green 0e584399 2011-02-08T07:52:40 Refresh from GCC
Anthony Green c1d28ba8 2010-08-05T08:48:16 stdcall-x86-closure-fix
Anthony Green 10ea8489 2010-08-05T08:24:27 don't copy win64 struct args
Anthony Green f2c2a4fc 2010-04-13T10:19:28 Remove warnings and add OS/2 support
Anthony Green 3de1eb36 2010-03-15T05:57:24 fix-comments patch
Anthony Green cadeba6c 2010-01-15T10:46:51 Microsoft Visual C port
Anthony Green c6dddbd0 2009-10-04T08:11:33 Initial commit