Commit Graph

203 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
Zachary Waldowski
f466aad0d9 AArch64: Fix missing semicolons when assertions are enabled 2014-02-05 14:28:59 -05:00
Zachary Waldowski
0a0f12ce1f AArch64: Remove duplicitous element_count call.
This inhibits an analyzer warning by Clang.
2014-02-05 14:28:59 -05:00
Zachary Waldowski
4330fdcd92 Darwin/aarch64: Respect iOS ABI re: stack argument alignment 2014-02-05 14:28:59 -05:00
Zachary Waldowski
0a333d6c39 Darwin/aarch64: Fix size_t assumptions 2014-02-05 14:28:59 -05:00
Zachary Waldowski
2c18e3c76a Darwin/aarch64: Fix "shadows declaration" warnings 2014-02-05 14:28:58 -05:00
Zachary Waldowski
1b8a8e20e3 Darwin/aarch64: Use Clang cache invalidation builtin 2014-02-05 14:28:58 -05:00
Zachary Waldowski
6030cdcae7 Darwin/aarch64: Account for long double being equal to double 2014-02-05 14:28:58 -05:00
Zachary Waldowski
5658b08926 Darwin/aarch64: Use CNAME, restrict .size like ARM 2014-02-05 14:28:58 -05:00
Zachary Waldowski
0717578080 Darwin/aarch64: Fix invalid reference in assembly 2014-02-05 14:28:58 -05:00
Zachary Waldowski
9da28b4427 Darwin/x86_64: Fix 64-bit type shortening warnings 2014-02-05 14:28:58 -05:00
Zachary Waldowski
6eff9ff9e7 Darwin/iOS: Improve unified syntax use for LLVM 2014-02-05 14:28:58 -05:00
Zachary Waldowski
ba0ea99c82 Fix dlmalloc warnings due to set_segment_flags, sizeof(size_t) 2014-02-05 14:28:58 -05:00
Zachary Waldowski
994be3a5c1 Darwin/iOS: Fix mis-typing of vfp_reg_free 2014-02-05 14:28:58 -05:00
Zachary Waldowski
a8e0a835ab Darwin/ARM: Assert on NULL dereference
This inhibits an analyzer warning by Clang on all platforms.
2014-02-05 14:28:58 -05:00
Zachary Waldowski
1367534158 Darwin/i386: Inhibit Clang previous prototype warnings 2014-02-05 14:28:53 -05:00
Zachary Waldowski
66469c381e Darwin/ARM: Inhibit Clang previous prototype warnings 2014-02-05 14:28:49 -05:00
Zachary Waldowski
5bfe62a00d Darwin/AArch64: Inhibit Clang previous prototype warnings 2014-01-09 13:41:27 -05:00
Marcus Comstedt
fa5f25c20f Linux/ppc64: Remove assumption on contents of r11 in closure 2014-01-04 19:00:08 +01:00
Paulo Pizarro
1a0b01e171 When the function called by the ffi called a function defined in a shared library generate a fatal error
The correction was to take into consideration the GOT.
2014-01-02 16:17:59 -02:00
Anthony Green
3dc3f32c35 Undo iOS ARM64 changes. 2013-12-05 16:23:25 -05:00
Zachary Waldowski
0278284e47 Darwin/aarch64: size_t assumptions 2013-11-30 12:02:18 -05:00
Zachary Waldowski
9775446b64 Darwin/aarch64: Fix “shadows declaration” warnings 2013-11-30 04:17:00 -05:00
Zachary Waldowski
4260badc37 Darwin/aarch64: Use Clang cache invalidation builtin 2013-11-30 04:16:58 -05:00
Zachary Waldowski
9fa7998d5f Darwin/aarch64: Inhibit Xcode warning 2013-11-30 04:16:56 -05:00
Zachary Waldowski
0e832048a9 Darwin/aarch64: double == long double 2013-11-30 04:16:53 -05:00
Zachary Waldowski
b513dfe79d Darwin/aarch64: Restrict .size to ELF like arm32. 2013-11-30 04:16:50 -05:00
Zachary Waldowski
bc978099bf Darwin/aarch64: Potentially(?) fix compile error 2013-11-30 04:16:48 -05:00
Zachary Waldowski
d6bb931446 Darwin/aarch64: Use CNAME refs 2013-11-30 04:16:45 -05:00
Zachary Waldowski
33c46ce568 Darwin/Mac: Fix 64/32 shortening warnings 2013-11-30 04:14:10 -05:00
Zachary Waldowski
0612081e6c Darwin: Misc size_t warnings 2013-11-30 04:14:10 -05:00
Zachary Waldowski
6a6247d179 Darwin: Fix dlmalloc warnings due to sizeof(size_t) 2013-11-30 04:14:10 -05:00
Zachary Waldowski
953b6f14c6 Darwin/iOS: More unified syntax support w/ Clang.
Signed-off-by: Zachary Waldowski <zwaldowski@gmail.com>
2013-11-30 03:48:45 -05:00
Zachary Waldowski
c713a55379 Darwin/iOS: Simplify RETLDM arguments for LLVM 3.1
Signed-off-by: Zachary Waldowski <zwaldowski@gmail.com>
2013-11-30 03:48:05 -05:00
Zachary Waldowski
16ba1b8002 Darwin: Silence Clang warnings. 2013-11-30 03:47:58 -05:00
Alan Modra
ac75368893 This separates the 32-bit sysv/linux/bsd code from the 64-bit linux
code, and makes it possible to link code compiled with different
options to those used to compile libffi.  For example, a
-mlong-double-128 libffi can be used with -mlong-double-64 code.

Using the return value area as a place to pass parameters wasn't such
a good idea, causing a failure of cls_ulonglong.c.  I didn't see this
when running the mainline gcc libffi testsuite because that version of
the test is inferior to the upstreamm libffi test.

Using NUM_FPR_ARG_REGISTERS rather than NUM_FPR_ARG_REGISTERS64 meant
that a parameter save area could be allocated before it was strictly
necessary.  Wrong but harmless.  Found when splitting apart ffi.c
into 32-bit and 64-bit support.
2013-11-21 06:12:35 -05:00
Iain Sandoe
aa1f62c0a0 Fix PowerPC Darwin FDE encodings to use pcrel correctly. Modernise the picbase labels. 2013-11-18 13:11:56 +00:00
Anthony Green
2f450822a8 Clean up code to appease modern GCC compiler. 2013-11-18 06:52:29 -05:00
Alan Modra
16d56c51ad An #endif in the wrong place would cause compile failure on powerpcle.
Using bl instead of b doesn't cause runtime failures as you might think,
but does mess the processor branch prediction.
2013-11-18 06:36:03 -05:00