Commit Graph

633 Commits

Author SHA1 Message Date
Josh Triplett
45a6c21efa .travis.yml: Test "make dist" too. 2014-03-16 05:29:08 -07:00
Anthony Green
fdc87f3b2e Merge pull request #85 from joshtriplett/stdcall
stdcall support on Linux
2014-03-16 08:05:51 -04:00
Josh Triplett
e1911f78df 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.
2014-03-16 05:05:06 -07:00
Anthony Green
7412b838d5 Merge pull request #90 from joshtriplett/win32-unifdef
prep_cif.c: Remove unnecessary ifdef for X86_WIN32
2014-03-16 07:58:16 -04:00
Anthony Green
c0cc5fdaa2 Merge pull request #89 from joshtriplett/travis32
.travis.yml: Test on both 32-bit and 64-bit
2014-03-16 07:57:59 -04:00
Josh Triplett
9531d05f64 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.
2014-03-16 04:56:57 -07:00
Josh Triplett
b3a5da068a .travis.yml: Test on both 32-bit and 64-bit 2014-03-16 04:53:41 -07:00
Anthony Green
98b5296048 Merge pull request #94 from joshtriplett/esp-extra-stackery-perception
ChangeLog: Document testsuite changes to remove fragile stack pointer checks
2014-03-16 07:51:33 -04:00
Josh Triplett
f6dd184543 ChangeLog: Document testsuite changes to remove fragile stack pointer checks 2014-03-16 04:49:36 -07:00
Anthony Green
134ce4c026 Merge pull request #91 from joshtriplett/esp-extra-stackery-perception
testsuite: Remove fragile stack pointer checks
2014-03-16 07:47:17 -04:00
Josh Triplett
9c279328ee testsuite: Remove fragile stack pointer checks
testsuite/libffi.call/closure_stdcall.c and
testsuite/libffi.call/closure_thiscall.c include 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 04:45:37 -07:00
Anthony Green
2680e9ea9b Merge pull request #88 from joshtriplett/such-precision-many-fail-wow
testsuite/libffi.call/many.c: Avoid spurious failure due to excess precision
2014-03-16 07:44:08 -04:00
Josh Triplett
82f8cb24a1 ChangeLog: Document many.c and many_win32.c changes to avoid spurious failures 2014-03-16 04:40:45 -07:00
Josh Triplett
88d562a8b5 testsuite/libffi.call/many_win32.c: Avoid spurious failure due to excess precision
The test case testsuite/libffi.call/many_win32.c can spuriously fail due
to excess floating-point precision.  Instrumenting it with some printf
calls shows differences well above FLT_EPSILON.  (Note when
instrumenting it that multiple computations of the difference, such as
one in a print and another in the conditional, may produce different
results.)

Rather than complicating the test suite with architecture-specific flags
to avoid excess precision, just simplify the floating-point computation
to avoid a dependency on potential excess precision.
2014-03-16 04:39:37 -07:00
Josh Triplett
c00a49ecd1 testsuite/libffi.call/many.c: Avoid spurious failure due to excess precision
The test case testsuite/libffi.call/many.c can spuriously fail due to
excess floating-point precision.  Instrumenting it with some printf
calls shows differences well above FLT_EPSILON.  (Note when
instrumenting it that multiple computations of the difference, such as
one in a print and another in the conditional, may produce different
results.)

Rather than complicating the test suite with architecture-specific flags
to avoid excess precision, just simplify the floating-point computation
to avoid a dependency on potential excess precision.
2014-03-16 04:39:37 -07:00
Anthony Green
071eab32a7 Merge pull request #92 from joshtriplett/autogen
Re-add libtool-ldflags
2014-03-16 07:36:52 -04:00
Josh Triplett
2f44952c95 Re-add libtool-ldflags 2014-03-16 04:35:12 -07:00
Anthony Green
2228c7ab19 Merge pull request #87 from joshtriplett/autogen
Remove autogenerated files from the repository
2014-03-16 07:25:18 -04:00
Josh Triplett
35634dbcea Remove autogenerated files from the repository
Add an autogen.sh to regenerate them.
2014-03-16 04:24:12 -07:00
Anthony Green
76d19d004e Ensure the linker supports @unwind sections in libffi. 2014-03-14 16:54:31 -04:00
Anthony Green
c86d9b6cc6 Fix merge 2014-03-14 16:51:20 -04:00
Anthony Green
4efb7dbfd9 Merge pull request #81 from rvandermeulen/bug-756740
Allow building for mipsel with Android NDK r8.
2014-03-14 16:47:57 -04:00
Ryan VanderMeulen
a1a6f71bfe Remove stray hunk that shouldn't have been included in this patch. 2014-03-10 15:12:47 -04:00
Ryan VanderMeulen
f8cdf11467 Replace double quotes with single quotes in Makefile.in to improve compatibility between some versions of MSYS and gmake. From Mozilla bug 943728.
https://bugzilla.mozilla.org/show_bug.cgi?id=943728
2014-03-10 15:04:58 -04:00
Ryan VanderMeulen
dfa3738732 Ensure the linker supports @unwind sections in libffi. From Mozilla bug 756740.
https://bugzilla.mozilla.org/show_bug.cgi?id=778414

Also tracked as issue #42.
https://github.com/atgreen/libffi/issues/42
2014-03-10 14:53:48 -04:00
Ryan VanderMeulen
18eb81d032 Allow building for mipsel with Android NDK r8. From Mozilla bug 756740.
https://bugzilla.mozilla.org/show_bug.cgi?id=756740
2014-03-10 14:43:37 -04:00
Anthony Green
634a475eaf Update Makefile for new darwin scripts 2014-03-01 18:37:29 -05:00
Anthony Green
c7b67e874b Add README note 2014-03-01 18:34:18 -05:00
Anthony Green
a04e30ba3d Add missing -DFFI_DEBUG flag 2014-02-28 17:20:59 -05:00
Anthony Green
934dc1b5c8 Merge branch 'master' of github.com:/atgreen/libffi 2014-02-28 01:10:17 -05:00
Anthony Green
11d7aa9d7a Merge pull request #46 from makotokato/android-clang
Fix build failure when using clang for Android
2014-02-28 01:09:06 -05:00
Anthony Green
67fbef3b56 Merge pull request #46 from makotokato/android-clang
Fix build failure when using clang for Android
2014-02-28 01:06:48 -05:00
Anthony Green
b40aeda31a Merge branch 'master' of github.com:/atgreen/libffi 2014-02-28 01:02:55 -05:00
Anthony Green
53ceaf14c5 Merge pull request #40 from wojdyr/master
Correct the -L flag in libffi.pc.in
2014-02-28 01:01:02 -05:00
Anthony Green
20698abc6a Merge pull request #66 from ppizarro/master
BlackFin fixes - Fatal error when calling a function defined in a shared library from within the function called by FFI
2014-02-28 00:58:30 -05:00
Anthony Green
860fe6646f Merge pull request #66 from ppizarro/master
BlackFin fixes - Fatal error when calling a function defined in a shared library from within the function called by FFI
2014-02-28 00:56:27 -05:00
Anthony Green
64bd06990a Add ChangeLog entry for Josh's change 2014-02-28 00:52:56 -05:00
Anthony Green
edf29c5169 Merge pull request #75 from joshtriplett/longdouble
Fix build error on x86 without distinct long double
2014-02-28 00:50:25 -05:00
Anthony Green
33c9954f2e Rebuilt with new libtool 2014-02-28 00:38:41 -05:00
Anthony Green
926b6989fb Merge branch 'master' of github.com:/atgreen/libffi
Conflicts:
	ChangeLog
2014-02-28 00:27:23 -05:00
Anthony Green
5a88c85fde Fix spelling errors 2014-02-28 00:26:09 -05:00
Anthony Green
cc82051c7e Fix spelling errors 2014-02-28 00:23:04 -05:00
Anthony Green
001aaf4b1b When no VFP arguments are present the IP register is used
uninitialized. Initialize it to the value of FP.

This fixes a number of testsuite failures when configured for
armv7l-unknown-linux-gnueabihf
2014-02-28 00:20:17 -05:00
Anthony Green
49f7729c3c aarch64 fix 2014-02-28 00:17:16 -05:00
Anthony Green
447483d51c Fix ChangeLog merge 2014-02-27 15:42:41 -05:00
Josh Triplett
3998d2604b Fix build error on x86 without distinct long double
src/x86/ffi64.c: In function 'classify_argument':
src/x86/ffi64.c:205:5: error: duplicate case value
     case FFI_TYPE_LONGDOUBLE:
     ^
src/x86/ffi64.c:202:5: error: previously used here
     case FFI_TYPE_DOUBLE:
     ^
2014-02-17 11:20:33 -08:00
Anthony Green
51377bda9a Merge pull request #72 from heiher/devel
MIPS N32: Fix call floating point va function
2014-02-15 08:06:29 -05:00
Anthony Green
f08da54654 Merge pull request #68 from zeldin/master
Linux/ppc64: Remove assumption on contents of r11 in closure
2014-02-15 08:06:11 -05:00
Heiher
40927bd3e1 Fix call floating point va function
I'm not sure floating-point arguments in GPR or FPR before calling
variable number arguments function. so, load all arguments to GPR and
FPR.
2014-02-09 10:38:24 +08:00
Zachary Waldowski
b4df9cf9cc AArch64: Fix void fall-through case when assertions are enabled 2014-02-05 14:29:08 -05:00