diff options
author | Alan Modra <amodra@gmail.com> | 2013-11-21 06:12:35 -0500 |
---|---|---|
committer | Anthony Green <green@moxielogic.com> | 2013-11-21 21:24:56 -0500 |
commit | ab79d6e21992dd86139ba07530ff888833b78a04 (patch) | |
tree | 3ed261655ba53cd2269dba583d6f3bf561adb34d /include/ffi.h.in | |
parent | 69df91cfb4fa6bcb644350a80bff970f27478a6a (diff) | |
download | libffi-ab79d6e21992dd86139ba07530ff888833b78a04.tar.gz |
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.
Diffstat (limited to 'include/ffi.h.in')
-rw-r--r-- | include/ffi.h.in | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/include/ffi.h.in b/include/ffi.h.in index a51583b..93c776f 100644 --- a/include/ffi.h.in +++ b/include/ffi.h.in @@ -221,6 +221,11 @@ typedef struct { #endif } ffi_cif; +#if HAVE_LONG_DOUBLE_VARIANT +/* Used to adjust size/alignment of ffi types. */ +void ffi_prep_types (ffi_abi abi); +# endif + /* Used internally, but overridden by some architectures */ ffi_status ffi_prep_cif_core(ffi_cif *cif, ffi_abi abi, |