gcc/libffi/src
Jakub Jelinek 37be80af29 libffi: Fix up x86_64 classify_argument
As the following testcase shows, libffi didn't handle properly
classify_arguments of structures at byte offsets not divisible by
UNITS_PER_WORD.  The following patch adjusts it to match what
config/i386/ classify_argument does for that and also ports the
PR38781 fix there (the second chunk).

This has been committed to upstream libffi already:
5651bea284

2021-06-16  Jakub Jelinek  <jakub@redhat.com>

	* src/x86/ffi64.c (classify_argument): For FFI_TYPE_STRUCT set words
	to number of words needed for type->size + byte_offset bytes rather
	than just type->size bytes.  Compute pos before the loop and check
	total size of the structure.
	* testsuite/libffi.call/nested_struct12.c: New test.

(cherry picked from commit 041f741770)
2022-05-11 07:58:19 +02:00
..
aarch64 Summary: libffi: define FFI_SIZEOF_JAVA_RAW for aarch64 ILP32 2016-03-17 10:47:58 +00:00
alpha Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
arc Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
arm Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
avr32 Merge upstream libffi 2012-03-04 21:11:09 +00:00
bfin Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
cris Merge upstream libffi 2012-03-04 21:11:09 +00:00
frv Merge upstream libffi 2012-03-04 21:11:09 +00:00
ia64 Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
m32r Merge upstream libffi 2012-03-04 21:11:09 +00:00
m68k Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
m88k Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
metag Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
microblaze Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
mips Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
moxie Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
nios2 Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
or1k Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
pa ffi.c (ffi_struct_type): Put type declaration on separate line. 2016-09-04 17:39:05 +00:00
powerpc libffi PowerPC64 ELFv1 fp arg fixes 2018-05-04 23:17:11 +09:30
riscv backport: ffi.c (ffi_call_go, [...]): New functions. 2018-08-15 06:57:45 +00:00
s390 Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
sh Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
sh64 ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test, just return FFI_BAD_ABI when things are wrong. 2012-03-13 22:50:16 +00:00
sparc Merge with upstream libffi db1b34b7e1f5e473d17557e454a29933dfecd1af 2015-01-28 15:23:55 -08:00
tile Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
vax Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
x86 libffi: Fix up x86_64 classify_argument 2022-05-11 07:58:19 +02:00
xtensa Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
closures.c Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
debug.c Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
dlmalloc.c Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
java_raw_api.c Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
prep_cif.c Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
raw_api.c Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00
types.c Merge libffi to upstream commit c82cc159426d8d4402375fa1ae3f045b9cf82e16 2015-01-12 08:19:59 -08:00