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