summaryrefslogtreecommitdiff
path: root/include/ffi.h.in
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2013-11-21 06:12:35 -0500
committerAnthony Green <green@moxielogic.com>2013-11-21 21:24:56 -0500
commitab79d6e21992dd86139ba07530ff888833b78a04 (patch)
tree3ed261655ba53cd2269dba583d6f3bf561adb34d /include/ffi.h.in
parent69df91cfb4fa6bcb644350a80bff970f27478a6a (diff)
downloadlibffi-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.in5
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,