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.
This commit is contained in:
Alan Modra
2013-11-21 21:24:56 -05:00
committed by Anthony Green
parent 69df91cfb4
commit ab79d6e219
21 changed files with 2193 additions and 1777 deletions
+1 -1
View File
@@ -29,7 +29,7 @@
#include <fficonfig.h>
#include <ffi.h>
#ifdef __powerpc64__
#ifdef POWERPC64
.hidden ffi_call_LINUX64
.globl ffi_call_LINUX64
# if _CALL_ELF == 2