* [PATCH 0/4] libffi: Sync with upstream
@ 2021-08-31 15:36 H.J. Lu
2021-08-31 15:36 ` [PATCH 1/4] libffi: Add HOWTO_MERGE, autogen.sh and merge.sh H.J. Lu
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: H.J. Lu @ 2021-08-31 15:36 UTC (permalink / raw)
To: gcc-patches; +Cc: Jeff Law, Jakub Jelinek, Richard Biener
GCC maintained a copy of libffi snapshot from 2009 and cherry-picked fixes
from upstream over the last 10+ years. In the meantime, libffi upstream
has been changed significantly with new features, bug fixes and new target
support. Here is a set of patches to sync with libffi 3.4.2 release and
make it easier to sync with libffi upstream:
1. Document how to sync with upstream.
2. Add scripts to help sync with upstream.
3. Sync with libffi 3.4.2. This patch is quite big. It is availale at
https://gitlab.com/x86-gcc/gcc/-/commit/667397efc8307e45ca6ddec737b0caf8ca9d0fda
4. Integrate libffi build and testsuite with GCC.
H.J. Lu (4):
libffi: Add HOWTO_MERGE, autogen.sh and merge.sh
libffi: Sync with libffi 3.4.2
libffi: Integrate with GCC
libffi: Integrate testsuite with GCC testsuite
libffi/.gitattributes | 4 +
libffi/ChangeLog.libffi | 7743 ++++++++++++++++-
libffi/HOWTO_MERGE | 13 +
libffi/LICENSE | 2 +-
libffi/LICENSE-BUILDTOOLS | 353 +
libffi/MERGE | 4 +
libffi/Makefile.am | 135 +-
libffi/Makefile.in | 219 +-
libffi/README | 450 -
libffi/README.md | 495 ++
libffi/acinclude.m4 | 38 +-
libffi/autogen.sh | 11 +
libffi/configure | 487 +-
libffi/configure.ac | 91 +-
libffi/configure.host | 97 +-
libffi/doc/Makefile.am | 3 +
libffi/doc/libffi.texi | 382 +-
libffi/doc/version.texi | 8 +-
libffi/fficonfig.h.in | 21 +-
libffi/generate-darwin-source-and-headers.py | 143 +-
libffi/include/Makefile.am | 2 +-
libffi/include/Makefile.in | 3 +-
libffi/include/ffi.h.in | 213 +-
libffi/include/ffi_cfi.h | 21 +
libffi/include/ffi_common.h | 50 +-
libffi/include/tramp.h | 45 +
libffi/libffi.map.in | 24 +-
libffi/libffi.pc.in | 2 +-
libffi/libffi.xcodeproj/project.pbxproj | 530 +-
libffi/libtool-version | 25 +-
libffi/man/Makefile.in | 1 +
libffi/mdate-sh | 39 +-
libffi/merge.sh | 51 +
libffi/msvcc.sh | 134 +-
libffi/src/aarch64/ffi.c | 536 +-
libffi/src/aarch64/ffitarget.h | 35 +-
libffi/src/aarch64/internal.h | 33 +
libffi/src/aarch64/sysv.S | 189 +-
libffi/src/aarch64/win64_armasm.S | 506 ++
libffi/src/alpha/ffi.c | 6 +-
libffi/src/arc/ffi.c | 6 +-
libffi/src/arm/ffi.c | 380 +-
libffi/src/arm/ffitarget.h | 24 +-
libffi/src/arm/internal.h | 10 +
libffi/src/arm/sysv.S | 304 +-
libffi/src/arm/sysv_msvc_arm32.S | 311 +
libffi/src/closures.c | 489 +-
libffi/src/cris/ffi.c | 4 +-
libffi/src/csky/ffi.c | 395 +
libffi/src/csky/ffitarget.h | 63 +
libffi/src/csky/sysv.S | 371 +
libffi/src/dlmalloc.c | 7 +-
libffi/src/frv/ffi.c | 4 +-
libffi/src/ia64/ffi.c | 30 +-
libffi/src/ia64/ffitarget.h | 3 +-
libffi/src/ia64/unix.S | 9 +-
libffi/src/java_raw_api.c | 6 +-
libffi/src/kvx/asm.h | 5 +
libffi/src/kvx/ffi.c | 273 +
libffi/src/kvx/ffitarget.h | 75 +
libffi/src/kvx/sysv.S | 127 +
libffi/src/m32r/ffi.c | 2 +-
libffi/src/m68k/ffi.c | 4 +-
libffi/src/m68k/sysv.S | 29 +-
libffi/src/m88k/ffi.c | 8 +-
libffi/src/metag/ffi.c | 14 +-
libffi/src/microblaze/ffi.c | 10 +-
libffi/src/mips/ffi.c | 146 +-
libffi/src/mips/ffitarget.h | 23 +-
libffi/src/mips/n32.S | 151 +-
libffi/src/mips/o32.S | 177 +-
libffi/src/moxie/eabi.S | 2 +-
libffi/src/moxie/ffi.c | 27 +-
libffi/src/nios2/ffi.c | 4 +-
libffi/src/pa/ffi.c | 216 +-
libffi/src/pa/ffitarget.h | 11 +-
libffi/src/pa/hpux32.S | 76 +-
libffi/src/pa/linux.S | 160 +-
libffi/src/powerpc/asm.h | 4 +-
libffi/src/powerpc/darwin_closure.S | 6 +-
libffi/src/powerpc/ffi.c | 10 +-
libffi/src/powerpc/ffi_darwin.c | 48 +-
libffi/src/powerpc/ffi_linux64.c | 247 +-
libffi/src/powerpc/ffi_powerpc.h | 25 +-
libffi/src/powerpc/ffitarget.h | 14 +-
libffi/src/powerpc/linux64.S | 111 +-
libffi/src/powerpc/linux64_closure.S | 70 +-
libffi/src/powerpc/sysv.S | 12 +-
libffi/src/prep_cif.c | 64 +-
libffi/src/raw_api.c | 10 +-
libffi/src/riscv/ffi.c | 16 +-
libffi/src/sparc/ffi.c | 6 +-
libffi/src/sparc/ffi64.c | 18 +-
libffi/src/tramp.c | 729 ++
libffi/src/types.c | 4 +-
libffi/src/vax/ffi.c | 4 +-
libffi/src/x86/asmnames.h | 30 +
libffi/src/x86/darwin.S | 444 -
libffi/src/x86/darwin64.S | 416 -
libffi/src/x86/darwin64_c.c | 643 --
libffi/src/x86/darwin_c.c | 843 --
libffi/src/x86/ffi.c | 162 +-
libffi/src/x86/ffi64.c | 164 +-
libffi/src/x86/ffitarget.h | 42 +-
libffi/src/x86/ffiw64.c | 114 +-
libffi/src/x86/internal.h | 14 +
libffi/src/x86/internal64.h | 14 +
libffi/src/x86/sysv.S | 215 +-
libffi/src/x86/sysv_intel.S | 995 +++
libffi/src/x86/unix64.S | 204 +-
libffi/src/x86/win64.S | 170 +-
libffi/src/x86/win64_intel.S | 238 +
libffi/src/xtensa/ffi.c | 4 +-
libffi/src/xtensa/sysv.S | 7 +-
libffi/testsuite/Makefile.am | 206 +-
libffi/testsuite/Makefile.in | 210 +-
libffi/testsuite/lib/libffi.exp | 294 +-
libffi/testsuite/libffi.bhaible/Makefile | 28 +
libffi/testsuite/libffi.bhaible/README | 78 +
libffi/testsuite/libffi.bhaible/alignof.h | 50 +
libffi/testsuite/libffi.bhaible/bhaible.exp | 63 +
libffi/testsuite/libffi.bhaible/test-call.c | 1745 ++++
.../testsuite/libffi.bhaible/test-callback.c | 2885 ++++++
libffi/testsuite/libffi.bhaible/testcases.c | 747 ++
libffi/testsuite/libffi.call/align_mixed.c | 46 +
libffi/testsuite/libffi.call/align_stdcall.c | 46 +
libffi/testsuite/libffi.call/call.exp | 28 +-
libffi/testsuite/libffi.call/cls_uchar_va.c | 44 -
libffi/testsuite/libffi.call/cls_ushort_va.c | 44 -
libffi/testsuite/libffi.call/ffitest.h | 13 +-
libffi/testsuite/libffi.call/float2.c | 23 +-
libffi/testsuite/libffi.call/offsets.c | 46 +
libffi/testsuite/libffi.call/struct10.c | 57 +
libffi/testsuite/libffi.call/va_1.c | 120 +-
libffi/testsuite/libffi.call/va_2.c | 196 +
libffi/testsuite/libffi.closures/closure.exp | 67 +
.../closure_fn0.c | 0
.../closure_fn1.c | 0
.../closure_fn2.c | 0
.../closure_fn3.c | 0
.../closure_fn4.c | 0
.../closure_fn5.c | 0
.../closure_fn6.c | 0
.../closure_loc_fn0.c | 3 +
.../closure_simple.c | 0
.../cls_12byte.c | 0
.../cls_16byte.c | 0
.../cls_18byte.c | 0
.../cls_19byte.c | 0
.../cls_1_1byte.c | 0
.../cls_20byte.c | 2 +-
.../cls_20byte1.c | 2 +-
.../cls_24byte.c | 6 +-
.../cls_2byte.c | 0
.../cls_3_1byte.c | 0
.../cls_3byte1.c | 0
.../cls_3byte2.c | 0
libffi/testsuite/libffi.closures/cls_3float.c | 95 +
.../cls_4_1byte.c | 0
.../cls_4byte.c | 0
.../cls_5_1_byte.c | 2 +-
.../cls_5byte.c | 2 +-
.../cls_64byte.c | 0
.../cls_6_1_byte.c | 2 +-
.../cls_6byte.c | 2 +-
.../cls_7_1_byte.c | 2 +-
.../cls_7byte.c | 2 +-
.../cls_8byte.c | 0
.../cls_9byte1.c | 2 +-
.../cls_9byte2.c | 2 +-
.../cls_align_double.c | 2 +-
.../cls_align_float.c | 2 +-
.../cls_align_longdouble.c | 2 +-
.../cls_align_longdouble_split.c | 2 +-
.../cls_align_longdouble_split2.c | 2 +-
.../cls_align_pointer.c | 2 +-
.../cls_align_sint16.c | 2 +-
.../cls_align_sint32.c | 2 +-
.../cls_align_sint64.c | 2 +-
.../cls_align_uint16.c | 2 +-
.../cls_align_uint32.c | 2 +-
.../cls_align_uint64.c | 2 +-
.../cls_dbls_struct.c | 6 +-
.../cls_double.c | 0
.../cls_double_va.c | 0
.../cls_float.c | 0
.../cls_longdouble.c | 0
.../cls_longdouble_va.c | 0
.../cls_many_mixed_args.c | 0
.../cls_many_mixed_float_double.c | 0
.../cls_multi_schar.c | 2 +-
.../cls_multi_sshort.c | 2 +-
.../cls_multi_sshortchar.c | 2 +-
.../cls_multi_uchar.c | 2 +-
.../cls_multi_ushort.c | 2 +-
.../cls_multi_ushortchar.c | 2 +-
.../cls_pointer.c | 0
.../cls_pointer_stack.c | 0
.../cls_schar.c | 0
.../cls_sint.c | 0
.../cls_sshort.c | 0
.../cls_struct_va1.c | 0
.../cls_uchar.c | 0
.../cls_uint.c | 0
.../cls_uint_va.c | 0
.../cls_ulong_va.c | 0
.../cls_ulonglong.c | 0
.../cls_ushort.c | 0
.../err_bad_abi.c | 0
libffi/testsuite/libffi.closures/ffitest.h | 144 +
.../huge_struct.c | 4 +-
.../nested_struct.c | 2 +-
.../nested_struct1.c | 2 +-
.../nested_struct10.c | 1 +
.../nested_struct11.c | 0
.../libffi.closures/nested_struct12.c | 86 +
.../nested_struct13.c} | 14 +-
.../nested_struct2.c | 2 +-
.../nested_struct3.c | 2 +-
.../nested_struct4.c | 0
.../nested_struct5.c | 0
.../nested_struct6.c | 0
.../nested_struct7.c | 0
.../nested_struct8.c | 0
.../nested_struct9.c | 0
.../problem1.c | 0
.../libffi.closures/single_entry_structs1.c | 86 +
.../libffi.closures/single_entry_structs2.c | 102 +
.../libffi.closures/single_entry_structs3.c | 101 +
.../stret_large.c | 0
.../stret_large2.c | 0
.../stret_medium.c | 2 +-
.../stret_medium2.c | 2 +-
.../testclosure.c | 2 +-
.../unwindtest.cc | 13 +-
.../unwindtest_ffi_call.cc | 5 +-
libffi/testsuite/libffi.go/static-chain.h | 6 -
libffi/testsuite/libffi.special/ffitestcxx.h | 96 -
libffi/testsuite/libffi.special/special.exp | 35 -
239 files changed, 24951 insertions(+), 6175 deletions(-)
create mode 100644 libffi/.gitattributes
create mode 100644 libffi/HOWTO_MERGE
create mode 100644 libffi/LICENSE-BUILDTOOLS
create mode 100644 libffi/MERGE
delete mode 100644 libffi/README
create mode 100644 libffi/README.md
create mode 100755 libffi/autogen.sh
create mode 100644 libffi/doc/Makefile.am
mode change 100644 => 100755 libffi/generate-darwin-source-and-headers.py
create mode 100644 libffi/include/tramp.h
mode change 100644 => 100755 libffi/mdate-sh
create mode 100755 libffi/merge.sh
create mode 100644 libffi/src/aarch64/win64_armasm.S
create mode 100644 libffi/src/arm/sysv_msvc_arm32.S
create mode 100644 libffi/src/csky/ffi.c
create mode 100644 libffi/src/csky/ffitarget.h
create mode 100644 libffi/src/csky/sysv.S
create mode 100644 libffi/src/kvx/asm.h
create mode 100644 libffi/src/kvx/ffi.c
create mode 100644 libffi/src/kvx/ffitarget.h
create mode 100644 libffi/src/kvx/sysv.S
create mode 100644 libffi/src/tramp.c
create mode 100644 libffi/src/x86/asmnames.h
delete mode 100644 libffi/src/x86/darwin.S
delete mode 100644 libffi/src/x86/darwin64.S
delete mode 100644 libffi/src/x86/darwin64_c.c
delete mode 100644 libffi/src/x86/darwin_c.c
create mode 100644 libffi/src/x86/sysv_intel.S
create mode 100644 libffi/src/x86/win64_intel.S
create mode 100644 libffi/testsuite/libffi.bhaible/Makefile
create mode 100644 libffi/testsuite/libffi.bhaible/README
create mode 100644 libffi/testsuite/libffi.bhaible/alignof.h
create mode 100644 libffi/testsuite/libffi.bhaible/bhaible.exp
create mode 100644 libffi/testsuite/libffi.bhaible/test-call.c
create mode 100644 libffi/testsuite/libffi.bhaible/test-callback.c
create mode 100644 libffi/testsuite/libffi.bhaible/testcases.c
create mode 100644 libffi/testsuite/libffi.call/align_mixed.c
create mode 100644 libffi/testsuite/libffi.call/align_stdcall.c
delete mode 100644 libffi/testsuite/libffi.call/cls_uchar_va.c
delete mode 100644 libffi/testsuite/libffi.call/cls_ushort_va.c
create mode 100644 libffi/testsuite/libffi.call/offsets.c
create mode 100644 libffi/testsuite/libffi.call/struct10.c
create mode 100644 libffi/testsuite/libffi.call/va_2.c
create mode 100644 libffi/testsuite/libffi.closures/closure.exp
rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn0.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn1.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn2.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn3.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn4.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn5.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn6.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/closure_loc_fn0.c (96%)
rename libffi/testsuite/{libffi.call => libffi.closures}/closure_simple.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_12byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_16byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_18byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_19byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_1_1byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_20byte.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_20byte1.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_24byte.c (95%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_2byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_3_1byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_3byte1.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_3byte2.c (100%)
create mode 100644 libffi/testsuite/libffi.closures/cls_3float.c
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_4_1byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_4byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_5_1_byte.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_5byte.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_64byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_6_1_byte.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_6byte.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_7_1_byte.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_7byte.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_8byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_9byte1.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_9byte2.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_double.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_float.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_longdouble.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_longdouble_split.c (98%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_longdouble_split2.c (98%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_pointer.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_sint16.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_sint32.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_sint64.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_uint16.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_uint32.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_uint64.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_dbls_struct.c (92%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_double.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_double_va.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_float.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_longdouble.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_longdouble_va.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_many_mixed_args.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_many_mixed_float_double.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_multi_schar.c (96%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_multi_sshort.c (96%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_multi_sshortchar.c (96%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_multi_uchar.c (96%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_multi_ushort.c (95%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_multi_ushortchar.c (96%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_pointer.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_pointer_stack.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_schar.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_sint.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_sshort.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_struct_va1.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_uchar.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_uint.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_uint_va.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_ulong_va.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_ulonglong.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_ushort.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/err_bad_abi.c (100%)
create mode 100644 libffi/testsuite/libffi.closures/ffitest.h
rename libffi/testsuite/{libffi.call => libffi.closures}/huge_struct.c (99%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct.c (98%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct1.c (98%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct10.c (99%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct11.c (100%)
create mode 100644 libffi/testsuite/libffi.closures/nested_struct12.c
rename libffi/testsuite/{libffi.call/nested_struct12.c => libffi.closures/nested_struct13.c} (88%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct2.c (98%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct3.c (98%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct4.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct5.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct6.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct7.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct8.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct9.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/problem1.c (100%)
create mode 100644 libffi/testsuite/libffi.closures/single_entry_structs1.c
create mode 100644 libffi/testsuite/libffi.closures/single_entry_structs2.c
create mode 100644 libffi/testsuite/libffi.closures/single_entry_structs3.c
rename libffi/testsuite/{libffi.call => libffi.closures}/stret_large.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/stret_large2.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/stret_medium.c (98%)
rename libffi/testsuite/{libffi.call => libffi.closures}/stret_medium2.c (98%)
rename libffi/testsuite/{libffi.call => libffi.closures}/testclosure.c (95%)
rename libffi/testsuite/{libffi.special => libffi.closures}/unwindtest.cc (95%)
rename libffi/testsuite/{libffi.special => libffi.closures}/unwindtest_ffi_call.cc (94%)
delete mode 100644 libffi/testsuite/libffi.special/ffitestcxx.h
delete mode 100644 libffi/testsuite/libffi.special/special.exp
--
2.31.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/4] libffi: Add HOWTO_MERGE, autogen.sh and merge.sh
2021-08-31 15:36 [PATCH 0/4] libffi: Sync with upstream H.J. Lu
@ 2021-08-31 15:36 ` H.J. Lu
2021-08-31 15:36 ` [PATCH 2/4] libffi: Sync with libffi 3.4.2 H.J. Lu
` (2 subsequent siblings)
3 siblings, 0 replies; 7+ messages in thread
From: H.J. Lu @ 2021-08-31 15:36 UTC (permalink / raw)
To: gcc-patches; +Cc: Jeff Law, Jakub Jelinek, Richard Biener
Add scripts for syncing with libffi upstream:
1. Clone libffi repo.
2. Checkout the specific commit.
3. Remove the unused files.
4. Add new files if needed.
* HOWTO_MERGE: New file.
* autogen.sh: Likewise.
* merge.sh: Likewise.
---
libffi/HOWTO_MERGE | 13 ++++++++++++
libffi/autogen.sh | 11 ++++++++++
libffi/merge.sh | 51 ++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 75 insertions(+)
create mode 100644 libffi/HOWTO_MERGE
create mode 100755 libffi/autogen.sh
create mode 100755 libffi/merge.sh
diff --git a/libffi/HOWTO_MERGE b/libffi/HOWTO_MERGE
new file mode 100644
index 00000000000..6821c6dee3f
--- /dev/null
+++ b/libffi/HOWTO_MERGE
@@ -0,0 +1,13 @@
+In general, merging process should not be very difficult, but we need to
+track GCC-specific patches carefully. Here is a general list of actions
+required to perform the merge:
+
+* Checkout recent GCC tree.
+* Run merge.sh script from the libffi directory.
+* Add new files if needed.
+* Apply all needed GCC-specific patches to libffi (note that some of
+ them might be already included to upstream). The list of these patches
+ is stored into LOCAL_PATCHES file. May need to re-run autogen.sh to
+ regenerate configure and Makefile.in files.
+* Send your patches for review to GCC Patches Mailing List (gcc-patches@gcc.gnu.org).
+* Update LOCAL_PATCHES file when you've committed the whole patch set with new revisions numbers.
diff --git a/libffi/autogen.sh b/libffi/autogen.sh
new file mode 100755
index 00000000000..95bfc389faf
--- /dev/null
+++ b/libffi/autogen.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+#exec autoreconf -v -i
+
+rm -rf autom4te.cache
+aclocal -I .. -I ../config
+autoheader -I .. -I ../config
+autoconf
+automake --foreign --add-missing --copy Makefile
+automake --foreign include/Makefile
+automake --foreign man/Makefile
+automake --foreign testsuite/Makefile
diff --git a/libffi/merge.sh b/libffi/merge.sh
new file mode 100755
index 00000000000..b36fbb92185
--- /dev/null
+++ b/libffi/merge.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+
+# FIXME: do we need a license (or whatever else) header here?
+
+# This script merges libffi sources from upstream.
+
+# Default to the tip of master branch.
+commit=${1-master}
+
+fatal() {
+ echo "$1"
+ exit 1;
+}
+
+get_upstream() {
+ rm -rf upstream
+ git clone https://github.com/libffi/libffi.git upstream
+ pushd upstream
+ git checkout $commit || fatal "Failed to checkout $commit"
+ popd
+}
+
+get_current_rev() {
+ cd upstream
+ git rev-parse HEAD
+}
+
+pwd | grep 'libffi$' || \
+ fatal "Run this script from the libffi directory"
+get_upstream
+CUR_REV=$(get_current_rev)
+echo Current upstream revision: $CUR_REV
+
+# Remove the unused files.
+pushd upstream
+rm -rf ChangeLog.old .appveyor* .ci .github .gitignore .travis* \
+ config.guess config.sub libtool-ldflags m4 make_sunver.pl \
+ msvc_build
+rm -rf .git autogen.sh
+cp -a . ..
+popd
+
+rm -rf upstream
+
+# Update the MERGE file.
+cat << EOF > MERGE
+$CUR_REV
+
+The first line of this file holds the git revision number of the
+last merge done from the master library sources.
+EOF
--
2.31.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/4] libffi: Sync with libffi 3.4.2
2021-08-31 15:36 [PATCH 0/4] libffi: Sync with upstream H.J. Lu
2021-08-31 15:36 ` [PATCH 1/4] libffi: Add HOWTO_MERGE, autogen.sh and merge.sh H.J. Lu
@ 2021-08-31 15:36 ` H.J. Lu
2021-08-31 16:32 ` Xi Ruoyao
2021-08-31 15:36 ` [PATCH 3/4] libffi: Integrate with GCC H.J. Lu
2021-08-31 15:36 ` [PATCH 4/4] libffi: Integrate testsuite with GCC testsuite H.J. Lu
3 siblings, 1 reply; 7+ messages in thread
From: H.J. Lu @ 2021-08-31 15:36 UTC (permalink / raw)
To: gcc-patches; +Cc: Jeff Law, Jakub Jelinek, Richard Biener
Merged commit: f9ea41683444ebe11cfa45b05223899764df28fb
---
libffi/.gitattributes | 4 +
libffi/ChangeLog.libffi | 7743 +++++-
libffi/LICENSE | 2 +-
libffi/LICENSE-BUILDTOOLS | 353 +
libffi/MERGE | 4 +
libffi/Makefile.am | 249 +-
libffi/Makefile.in | 1944 --
libffi/README | 450 -
libffi/README.md | 495 +
libffi/acinclude.m4 | 38 +-
libffi/aclocal.m4 | 1202 -
libffi/configure | 19411 ----------------
libffi/configure.ac | 199 +-
libffi/configure.host | 97 +-
libffi/doc/Makefile.am | 3 +
libffi/doc/libffi.texi | 382 +-
libffi/doc/version.texi | 8 +-
libffi/fficonfig.h.in | 208 -
libffi/generate-darwin-source-and-headers.py | 143 +-
libffi/include/Makefile.am | 8 +-
libffi/include/Makefile.in | 565 -
libffi/include/ffi.h.in | 213 +-
libffi/include/ffi_cfi.h | 21 +
libffi/include/ffi_common.h | 50 +-
libffi/include/tramp.h | 45 +
libffi/libffi.map.in | 24 +-
libffi/libffi.pc.in | 2 +-
libffi/libffi.xcodeproj/project.pbxproj | 530 +-
libffi/libtool-version | 25 +-
libffi/man/Makefile.in | 515 -
libffi/mdate-sh | 205 -
libffi/msvcc.sh | 134 +-
libffi/src/aarch64/ffi.c | 536 +-
libffi/src/aarch64/ffitarget.h | 35 +-
libffi/src/aarch64/internal.h | 33 +
libffi/src/aarch64/sysv.S | 189 +-
libffi/src/aarch64/win64_armasm.S | 506 +
libffi/src/alpha/ffi.c | 6 +-
libffi/src/arc/ffi.c | 6 +-
libffi/src/arm/ffi.c | 380 +-
libffi/src/arm/ffitarget.h | 24 +-
libffi/src/arm/internal.h | 10 +
libffi/src/arm/sysv.S | 304 +-
libffi/src/arm/sysv_msvc_arm32.S | 311 +
libffi/src/closures.c | 489 +-
libffi/src/cris/ffi.c | 4 +-
libffi/src/csky/ffi.c | 395 +
libffi/src/csky/ffitarget.h | 63 +
libffi/src/csky/sysv.S | 371 +
libffi/src/dlmalloc.c | 7 +-
libffi/src/frv/ffi.c | 4 +-
libffi/src/ia64/ffi.c | 30 +-
libffi/src/ia64/ffitarget.h | 3 +-
libffi/src/ia64/unix.S | 9 +-
libffi/src/java_raw_api.c | 6 +-
libffi/src/kvx/asm.h | 5 +
libffi/src/kvx/ffi.c | 273 +
libffi/src/kvx/ffitarget.h | 75 +
libffi/src/kvx/sysv.S | 127 +
libffi/src/m32r/ffi.c | 2 +-
libffi/src/m68k/ffi.c | 4 +-
libffi/src/m68k/sysv.S | 29 +-
libffi/src/m88k/ffi.c | 8 +-
libffi/src/metag/ffi.c | 14 +-
libffi/src/microblaze/ffi.c | 10 +-
libffi/src/mips/ffi.c | 146 +-
libffi/src/mips/ffitarget.h | 23 +-
libffi/src/mips/n32.S | 151 +-
libffi/src/mips/o32.S | 177 +-
libffi/src/moxie/eabi.S | 2 +-
libffi/src/moxie/ffi.c | 27 +-
libffi/src/nios2/ffi.c | 4 +-
libffi/src/pa/ffi.c | 216 +-
libffi/src/pa/ffitarget.h | 11 +-
libffi/src/pa/hpux32.S | 76 +-
libffi/src/pa/linux.S | 160 +-
libffi/src/powerpc/asm.h | 4 +-
libffi/src/powerpc/darwin_closure.S | 6 +-
libffi/src/powerpc/ffi.c | 10 +-
libffi/src/powerpc/ffi_darwin.c | 48 +-
libffi/src/powerpc/ffi_linux64.c | 247 +-
libffi/src/powerpc/ffi_powerpc.h | 25 +-
libffi/src/powerpc/ffitarget.h | 14 +-
libffi/src/powerpc/linux64.S | 111 +-
libffi/src/powerpc/linux64_closure.S | 70 +-
libffi/src/powerpc/sysv.S | 12 +-
libffi/src/prep_cif.c | 64 +-
libffi/src/raw_api.c | 10 +-
libffi/src/riscv/ffi.c | 16 +-
libffi/src/sparc/ffi.c | 6 +-
libffi/src/sparc/ffi64.c | 18 +-
libffi/src/tramp.c | 729 +
libffi/src/types.c | 4 +-
libffi/src/vax/ffi.c | 4 +-
libffi/src/x86/asmnames.h | 30 +
libffi/src/x86/darwin.S | 444 -
libffi/src/x86/darwin64.S | 416 -
libffi/src/x86/darwin64_c.c | 643 -
libffi/src/x86/darwin_c.c | 843 -
libffi/src/x86/ffi.c | 162 +-
libffi/src/x86/ffi64.c | 164 +-
libffi/src/x86/ffitarget.h | 42 +-
libffi/src/x86/ffiw64.c | 114 +-
libffi/src/x86/internal.h | 14 +
libffi/src/x86/internal64.h | 14 +
libffi/src/x86/sysv.S | 215 +-
libffi/src/x86/sysv_intel.S | 995 +
libffi/src/x86/unix64.S | 204 +-
libffi/src/x86/win64.S | 170 +-
libffi/src/x86/win64_intel.S | 238 +
libffi/src/xtensa/ffi.c | 4 +-
libffi/src/xtensa/sysv.S | 7 +-
libffi/testsuite/Makefile.am | 206 +-
libffi/testsuite/Makefile.in | 572 -
libffi/testsuite/lib/libffi.exp | 314 +-
libffi/testsuite/libffi.bhaible/Makefile | 28 +
libffi/testsuite/libffi.bhaible/README | 78 +
libffi/testsuite/libffi.bhaible/alignof.h | 50 +
libffi/testsuite/libffi.bhaible/bhaible.exp | 63 +
libffi/testsuite/libffi.bhaible/test-call.c | 1745 ++
.../testsuite/libffi.bhaible/test-callback.c | 2885 +++
libffi/testsuite/libffi.bhaible/testcases.c | 747 +
libffi/testsuite/libffi.call/align_mixed.c | 46 +
libffi/testsuite/libffi.call/align_stdcall.c | 46 +
libffi/testsuite/libffi.call/call.exp | 28 +-
libffi/testsuite/libffi.call/cls_uchar_va.c | 44 -
libffi/testsuite/libffi.call/cls_ushort_va.c | 44 -
libffi/testsuite/libffi.call/ffitest.h | 13 +-
libffi/testsuite/libffi.call/float2.c | 23 +-
libffi/testsuite/libffi.call/offsets.c | 46 +
libffi/testsuite/libffi.call/struct10.c | 57 +
libffi/testsuite/libffi.call/va_1.c | 120 +-
libffi/testsuite/libffi.call/va_2.c | 196 +
libffi/testsuite/libffi.closures/closure.exp | 67 +
.../closure_fn0.c | 0
.../closure_fn1.c | 0
.../closure_fn2.c | 0
.../closure_fn3.c | 0
.../closure_fn4.c | 0
.../closure_fn5.c | 0
.../closure_fn6.c | 0
.../closure_loc_fn0.c | 3 +
.../closure_simple.c | 0
.../cls_12byte.c | 0
.../cls_16byte.c | 0
.../cls_18byte.c | 0
.../cls_19byte.c | 0
.../cls_1_1byte.c | 0
.../cls_20byte.c | 2 +-
.../cls_20byte1.c | 2 +-
.../cls_24byte.c | 6 +-
.../cls_2byte.c | 0
.../cls_3_1byte.c | 0
.../cls_3byte1.c | 0
.../cls_3byte2.c | 0
libffi/testsuite/libffi.closures/cls_3float.c | 95 +
.../cls_4_1byte.c | 0
.../cls_4byte.c | 0
.../cls_5_1_byte.c | 2 +-
.../cls_5byte.c | 2 +-
.../cls_64byte.c | 0
.../cls_6_1_byte.c | 2 +-
.../cls_6byte.c | 2 +-
.../cls_7_1_byte.c | 2 +-
.../cls_7byte.c | 2 +-
.../cls_8byte.c | 0
.../cls_9byte1.c | 2 +-
.../cls_9byte2.c | 2 +-
.../cls_align_double.c | 2 +-
.../cls_align_float.c | 2 +-
.../cls_align_longdouble.c | 2 +-
.../cls_align_longdouble_split.c | 2 +-
.../cls_align_longdouble_split2.c | 2 +-
.../cls_align_pointer.c | 2 +-
.../cls_align_sint16.c | 2 +-
.../cls_align_sint32.c | 2 +-
.../cls_align_sint64.c | 2 +-
.../cls_align_uint16.c | 2 +-
.../cls_align_uint32.c | 2 +-
.../cls_align_uint64.c | 2 +-
.../cls_dbls_struct.c | 6 +-
.../cls_double.c | 0
.../cls_double_va.c | 0
.../cls_float.c | 0
.../cls_longdouble.c | 0
.../cls_longdouble_va.c | 0
.../cls_many_mixed_args.c | 0
.../cls_many_mixed_float_double.c | 0
.../cls_multi_schar.c | 2 +-
.../cls_multi_sshort.c | 2 +-
.../cls_multi_sshortchar.c | 2 +-
.../cls_multi_uchar.c | 2 +-
.../cls_multi_ushort.c | 2 +-
.../cls_multi_ushortchar.c | 2 +-
.../cls_pointer.c | 0
.../cls_pointer_stack.c | 0
.../cls_schar.c | 0
.../cls_sint.c | 0
.../cls_sshort.c | 0
.../cls_struct_va1.c | 0
.../cls_uchar.c | 0
.../cls_uint.c | 0
.../cls_uint_va.c | 0
.../cls_ulong_va.c | 0
.../cls_ulonglong.c | 0
.../cls_ushort.c | 0
.../err_bad_abi.c | 0
libffi/testsuite/libffi.closures/ffitest.h | 144 +
.../huge_struct.c | 4 +-
.../nested_struct.c | 2 +-
.../nested_struct1.c | 2 +-
.../nested_struct10.c | 1 +
.../nested_struct11.c | 0
.../libffi.closures/nested_struct12.c | 86 +
.../nested_struct13.c} | 14 +-
.../nested_struct2.c | 2 +-
.../nested_struct3.c | 2 +-
.../nested_struct4.c | 0
.../nested_struct5.c | 0
.../nested_struct6.c | 0
.../nested_struct7.c | 0
.../nested_struct8.c | 0
.../nested_struct9.c | 0
.../problem1.c | 0
.../libffi.closures/single_entry_structs1.c | 86 +
.../libffi.closures/single_entry_structs2.c | 102 +
.../libffi.closures/single_entry_structs3.c | 101 +
.../stret_large.c | 0
.../stret_large2.c | 0
.../stret_medium.c | 2 +-
.../stret_medium2.c | 2 +-
.../testclosure.c | 2 +-
.../unwindtest.cc | 13 +-
.../unwindtest_ffi_call.cc | 5 +-
libffi/testsuite/libffi.go/static-chain.h | 6 -
libffi/testsuite/libffi.special/ffitestcxx.h | 96 -
libffi/testsuite/libffi.special/special.exp | 35 -
237 files changed, 24334 insertions(+), 30607 deletions(-)
create mode 100644 libffi/.gitattributes
create mode 100644 libffi/LICENSE-BUILDTOOLS
create mode 100644 libffi/MERGE
delete mode 100644 libffi/Makefile.in
delete mode 100644 libffi/README
create mode 100644 libffi/README.md
delete mode 100644 libffi/aclocal.m4
delete mode 100755 libffi/configure
create mode 100644 libffi/doc/Makefile.am
delete mode 100644 libffi/fficonfig.h.in
mode change 100644 => 100755 libffi/generate-darwin-source-and-headers.py
delete mode 100644 libffi/include/Makefile.in
create mode 100644 libffi/include/tramp.h
delete mode 100644 libffi/man/Makefile.in
delete mode 100644 libffi/mdate-sh
create mode 100644 libffi/src/aarch64/win64_armasm.S
create mode 100644 libffi/src/arm/sysv_msvc_arm32.S
create mode 100644 libffi/src/csky/ffi.c
create mode 100644 libffi/src/csky/ffitarget.h
create mode 100644 libffi/src/csky/sysv.S
create mode 100644 libffi/src/kvx/asm.h
create mode 100644 libffi/src/kvx/ffi.c
create mode 100644 libffi/src/kvx/ffitarget.h
create mode 100644 libffi/src/kvx/sysv.S
create mode 100644 libffi/src/tramp.c
create mode 100644 libffi/src/x86/asmnames.h
delete mode 100644 libffi/src/x86/darwin.S
delete mode 100644 libffi/src/x86/darwin64.S
delete mode 100644 libffi/src/x86/darwin64_c.c
delete mode 100644 libffi/src/x86/darwin_c.c
create mode 100644 libffi/src/x86/sysv_intel.S
create mode 100644 libffi/src/x86/win64_intel.S
delete mode 100644 libffi/testsuite/Makefile.in
create mode 100644 libffi/testsuite/libffi.bhaible/Makefile
create mode 100644 libffi/testsuite/libffi.bhaible/README
create mode 100644 libffi/testsuite/libffi.bhaible/alignof.h
create mode 100644 libffi/testsuite/libffi.bhaible/bhaible.exp
create mode 100644 libffi/testsuite/libffi.bhaible/test-call.c
create mode 100644 libffi/testsuite/libffi.bhaible/test-callback.c
create mode 100644 libffi/testsuite/libffi.bhaible/testcases.c
create mode 100644 libffi/testsuite/libffi.call/align_mixed.c
create mode 100644 libffi/testsuite/libffi.call/align_stdcall.c
delete mode 100644 libffi/testsuite/libffi.call/cls_uchar_va.c
delete mode 100644 libffi/testsuite/libffi.call/cls_ushort_va.c
create mode 100644 libffi/testsuite/libffi.call/offsets.c
create mode 100644 libffi/testsuite/libffi.call/struct10.c
create mode 100644 libffi/testsuite/libffi.call/va_2.c
create mode 100644 libffi/testsuite/libffi.closures/closure.exp
rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn0.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn1.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn2.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn3.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn4.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn5.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn6.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/closure_loc_fn0.c (96%)
rename libffi/testsuite/{libffi.call => libffi.closures}/closure_simple.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_12byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_16byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_18byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_19byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_1_1byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_20byte.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_20byte1.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_24byte.c (95%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_2byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_3_1byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_3byte1.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_3byte2.c (100%)
create mode 100644 libffi/testsuite/libffi.closures/cls_3float.c
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_4_1byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_4byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_5_1_byte.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_5byte.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_64byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_6_1_byte.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_6byte.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_7_1_byte.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_7byte.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_8byte.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_9byte1.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_9byte2.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_double.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_float.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_longdouble.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_longdouble_split.c (98%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_longdouble_split2.c (98%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_pointer.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_sint16.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_sint32.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_sint64.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_uint16.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_uint32.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_align_uint64.c (97%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_dbls_struct.c (92%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_double.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_double_va.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_float.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_longdouble.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_longdouble_va.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_many_mixed_args.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_many_mixed_float_double.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_multi_schar.c (96%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_multi_sshort.c (96%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_multi_sshortchar.c (96%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_multi_uchar.c (96%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_multi_ushort.c (95%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_multi_ushortchar.c (96%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_pointer.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_pointer_stack.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_schar.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_sint.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_sshort.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_struct_va1.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_uchar.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_uint.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_uint_va.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_ulong_va.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_ulonglong.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/cls_ushort.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/err_bad_abi.c (100%)
create mode 100644 libffi/testsuite/libffi.closures/ffitest.h
rename libffi/testsuite/{libffi.call => libffi.closures}/huge_struct.c (99%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct.c (98%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct1.c (98%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct10.c (99%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct11.c (100%)
create mode 100644 libffi/testsuite/libffi.closures/nested_struct12.c
rename libffi/testsuite/{libffi.call/nested_struct12.c => libffi.closures/nested_struct13.c} (88%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct2.c (98%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct3.c (98%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct4.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct5.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct6.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct7.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct8.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/nested_struct9.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/problem1.c (100%)
create mode 100644 libffi/testsuite/libffi.closures/single_entry_structs1.c
create mode 100644 libffi/testsuite/libffi.closures/single_entry_structs2.c
create mode 100644 libffi/testsuite/libffi.closures/single_entry_structs3.c
rename libffi/testsuite/{libffi.call => libffi.closures}/stret_large.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/stret_large2.c (100%)
rename libffi/testsuite/{libffi.call => libffi.closures}/stret_medium.c (98%)
rename libffi/testsuite/{libffi.call => libffi.closures}/stret_medium2.c (98%)
rename libffi/testsuite/{libffi.call => libffi.closures}/testclosure.c (95%)
rename libffi/testsuite/{libffi.special => libffi.closures}/unwindtest.cc (95%)
rename libffi/testsuite/{libffi.special => libffi.closures}/unwindtest_ffi_call.cc (94%)
delete mode 100644 libffi/testsuite/libffi.special/ffitestcxx.h
delete mode 100644 libffi/testsuite/libffi.special/special.exp
https://gitlab.com/x86-gcc/gcc/-/commit/667397efc8307e45ca6ddec737b0caf8ca9d0fda
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 3/4] libffi: Integrate with GCC
2021-08-31 15:36 [PATCH 0/4] libffi: Sync with upstream H.J. Lu
2021-08-31 15:36 ` [PATCH 1/4] libffi: Add HOWTO_MERGE, autogen.sh and merge.sh H.J. Lu
2021-08-31 15:36 ` [PATCH 2/4] libffi: Sync with libffi 3.4.2 H.J. Lu
@ 2021-08-31 15:36 ` H.J. Lu
2021-08-31 15:36 ` [PATCH 4/4] libffi: Integrate testsuite with GCC testsuite H.J. Lu
3 siblings, 0 replies; 7+ messages in thread
From: H.J. Lu @ 2021-08-31 15:36 UTC (permalink / raw)
To: gcc-patches; +Cc: Jeff Law, Jakub Jelinek, Richard Biener
1. Integrate with GCC.
2. Support multilib.
* Makefile.am (AUTOMAKE_OPTIONS): Add info-in-builddir.
(ACLOCAL_AMFLAGS): Set to -I .. -I ../config.
(SUBDIRS): Don't add doc.
(TEXINFO_TEX): New.
(MAKEINFOFLAGS): Likewise.
(info_TEXINFOS): Likewise.
(STAMP_GENINSRC): Likewise.
(STAMP_BUILD_INFO): Likewise.
(all-local): Likewise.
(stamp-geninsrc): Likewise.
(doc/libffi.info): Likewise.
(stamp-build-info:): Likewise.
(CLEANFILES): Likewise.
(MAINTAINERCLEANFILES): Likewise.
(AM_MAKEFLAGS): Likewise.
(all-recursive): Likewise.
(install-recursive): Likewise.
(mostlyclean-recursive): Likewise.
(clean-recursive): Likewise.
(distclean-recursive): Likewise.
(maintainer-clean-recursive): Likewise.
(LTLDFLAGS): Replace libtool-ldflags with ../libtool-ldflags.
(AM_CFLAGS): Add -g -fexceptions.
(libffi.map-sun): Replace make_sunver.pl with
../contrib/make_sunver.pl.
(dist-hook): Removed.
Include $(top_srcdir)/../multilib.am.
* configure.ac: Add AM_ENABLE_MULTILIB.
Remove the frv*-elf check.
(AX_ENABLE_BUILDDIR): Removed.
(AM_INIT_AUTOMAKE): Add [no-dist].
Add --enable-generated-files-in-srcdir.
(C_CONFIG_MACRO_DIR): Removed.
(AX_COMPILER_VENDOR): Likewise.
(AX_CC_MAXOPT): Likewise.
(AX_CFLAGS_WARN_ALL): Likewise.
Remove the GCC check.
(SYMBOL_UNDERSCORE): Removed.
(AX_CHECK_COMPILE_FLAG): Likewise.
Remove --disable-docs.
(ACX_CHECK_PROG_VER): Check makeinfo.
(BUILD_DOCS): Updated.
Remove --disable-multi-os-directory.
(GCC_WITH_TOOLEXECLIBDIR): New.
Support cross host.
Support --enable-multilib.
* include/Makefile.am (nodist_include_HEADERS): Removed.
(gcc_version): New.
(toollibffidir): Likewise.
(toollibffi_HEADERS): Likewise.
* Makefile.in: Regenerate.
(GCC_BASE_VER): New.
(AC_CONFIG_FILES): Remove doc/Makefile.
(AC_CONFIG_LINKS): New.
* aclocal.m4: Likewise.
* configure: Likewise.
* fficonfig.h.in: Likewise.
* mdate-sh: Likewise.
* include/Makefile.in: Likewise.
* man/Makefile.in: Likewise.
* testsuite/Makefile.in: Likewise.
---
libffi/Makefile.am | 116 +-
libffi/Makefile.in | 1963 ++++
libffi/aclocal.m4 | 1202 ++
libffi/configure | 19584 +++++++++++++++++++++++++++++++++
libffi/configure.ac | 126 +-
libffi/fficonfig.h.in | 227 +
libffi/include/Makefile.am | 6 +-
libffi/include/Makefile.in | 566 +
libffi/man/Makefile.in | 516 +
libffi/mdate-sh | 224 +
libffi/testsuite/Makefile.in | 606 +
11 files changed, 25052 insertions(+), 84 deletions(-)
create mode 100644 libffi/Makefile.in
create mode 100644 libffi/aclocal.m4
create mode 100755 libffi/configure
create mode 100644 libffi/fficonfig.h.in
create mode 100644 libffi/include/Makefile.in
create mode 100644 libffi/man/Makefile.in
create mode 100755 libffi/mdate-sh
create mode 100644 libffi/testsuite/Makefile.in
diff --git a/libffi/Makefile.am b/libffi/Makefile.am
index 1b18198ad18..02e36176c67 100644
--- a/libffi/Makefile.am
+++ b/libffi/Makefile.am
@@ -1,18 +1,10 @@
## Process this with automake to create Makefile.in
-AUTOMAKE_OPTIONS = foreign subdir-objects
+AUTOMAKE_OPTIONS = foreign subdir-objects info-in-builddir
-ACLOCAL_AMFLAGS = -I m4
+ACLOCAL_AMFLAGS = -I .. -I ../config
SUBDIRS = include testsuite man
-if BUILD_DOCS
-## This hack is needed because it doesn't seem possible to make a
-## conditional info_TEXINFOS in Automake. At least Automake 1.14
-## either gives errors -- if this attempted in the most
-## straightforward way -- or simply unconditionally tries to build the
-## info file.
-SUBDIRS += doc
-endif
EXTRA_DIST = LICENSE ChangeLog.old \
m4/libtool.m4 m4/lt~obsolete.m4 \
@@ -26,6 +18,90 @@ EXTRA_DIST = LICENSE ChangeLog.old \
# local.exp is generated by configure
DISTCLEANFILES = local.exp
+# Automake Documentation:
+# If your package has Texinfo files in many directories, you can use the
+# variable TEXINFO_TEX to tell Automake where to find the canonical
+# `texinfo.tex' for your package. The value of this variable should be
+# the relative path from the current `Makefile.am' to `texinfo.tex'.
+TEXINFO_TEX = ../gcc/doc/include/texinfo.tex
+
+# Defines info, dvi, pdf and html targets
+MAKEINFOFLAGS = -I $(srcdir)/../gcc/doc/include
+info_TEXINFOS = doc/libffi.texi
+
+# AM_CONDITIONAL on configure option --generated-files-in-srcdir
+if GENINSRC
+STAMP_GENINSRC = stamp-geninsrc
+else
+STAMP_GENINSRC =
+endif
+
+# AM_CONDITIONAL on configure check ACX_CHECK_PROG_VER([MAKEINFO])
+if BUILD_DOCS
+STAMP_BUILD_INFO = stamp-build-info
+else
+STAMP_BUILD_INFO =
+endif
+
+all-local: $(STAMP_GENINSRC)
+
+stamp-geninsrc: doc/libffi.info
+ cp -p $(top_builddir)/doc/libffi.info $(srcdir)/doc/libffi.info
+ @touch $@
+
+doc/libffi.info: $(STAMP_BUILD_INFO)
+
+stamp-build-info: doc/libffi.texi $(srcdir)/doc/version.texi doc/$(am__dirstamp)
+ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)/doc -o doc/libffi.info $(srcdir)/doc/libffi.texi
+ @touch $@
+
+CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO)
+MAINTAINERCLEANFILES = $(srcdir)/doc/libffi.info
+
+## ################################################################
+
+##
+## This section is for make and multilib madness.
+##
+
+# Work around what appears to be a GNU make bug handling MAKEFLAGS
+# values defined in terms of make variables, as is the case for CC and
+# friends when we are called from the top level Makefile.
+AM_MAKEFLAGS = \
+ "AR_FLAGS=$(AR_FLAGS)" \
+ "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
+ "CFLAGS=$(CFLAGS)" \
+ "CXXFLAGS=$(CXXFLAGS)" \
+ "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
+ "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
+ "INSTALL=$(INSTALL)" \
+ "INSTALL_DATA=$(INSTALL_DATA)" \
+ "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
+ "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
+ "JC1FLAGS=$(JC1FLAGS)" \
+ "LDFLAGS=$(LDFLAGS)" \
+ "LIBCFLAGS=$(LIBCFLAGS)" \
+ "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
+ "MAKE=$(MAKE)" \
+ "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
+ "PICFLAG=$(PICFLAG)" \
+ "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
+ "RUNTESTFLAGS=$(RUNTESTFLAGS)" \
+ "SHELL=$(SHELL)" \
+ "exec_prefix=$(exec_prefix)" \
+ "infodir=$(infodir)" \
+ "libdir=$(libdir)" \
+ "mandir=$(mandir)" \
+ "prefix=$(prefix)" \
+ "AR=$(AR)" \
+ "AS=$(AS)" \
+ "CC=$(CC)" \
+ "CXX=$(CXX)" \
+ "LD=$(LD)" \
+ "NM=$(NM)" \
+ "RANLIB=$(RANLIB)" \
+ "DESTDIR=$(DESTDIR)"
+
# Subdir rules rely on $(FLAGS_TO_PASS)
FLAGS_TO_PASS = $(AM_MAKEFLAGS)
@@ -104,9 +180,9 @@ libffi_convenience_la_LIBADD = $(libffi_la_LIBADD)
libffi_convenience_la_DEPENDENCIES = $(libffi_la_DEPENDENCIES)
nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES)
-LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/libtool-ldflags $(LDFLAGS))
+LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
-AM_CFLAGS =
+AM_CFLAGS = -Wall -g -fexceptions
if FFI_DEBUG
# Build debug. Define FFI_DEBUG on the commandline so that, when building with
# MSVC, it can link against the debug CRT.
@@ -121,9 +197,9 @@ endif
if LIBFFI_BUILD_VERSIONED_SHLIB_SUN
libffi_version_script = -Wl,-M,libffi.map-sun
libffi_version_dep = libffi.map-sun
-libffi.map-sun : libffi.map $(top_srcdir)/make_sunver.pl \
+libffi.map-sun : libffi.map $(top_srcdir)/../contrib/make_sunver.pl \
$(libffi_la_OBJECTS) $(libffi_la_LIBADD)
- perl $(top_srcdir)/make_sunver.pl libffi.map \
+ perl $(top_srcdir)/../contrib/make_sunver.pl libffi.map \
`echo $(libffi_la_OBJECTS) $(libffi_la_LIBADD) | \
sed 's,\([^/ ]*\)\.l\([ao]\),.libs/\1.\2,g'` \
> $@ || (rm -f $@ ; exit 1)
@@ -144,8 +220,12 @@ libffi_la_DEPENDENCIES = $(libffi_la_LIBADD) $(libffi_version_dep)
AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src
AM_CCASFLAGS = $(AM_CPPFLAGS)
-dist-hook:
- d=`(cd $(distdir); pwd)`; (cd doc; make pdf; cp *.pdf $$d/doc)
- if [ -d $(top_srcdir)/.git ] ; then (cd $(top_srcdir); git log --no-decorate) ; else echo 'See git log for history.' ; fi > $(distdir)/ChangeLog
- s=`awk '/was released on/{ print NR; exit}' $(top_srcdir)/README.md`; tail -n +$$(($$s-1)) $(top_srcdir)/README.md > $(distdir)/README.md
+# Multilib support. Automake should provide these on its own.
+all-recursive: all-multi
+install-recursive: install-multi
+mostlyclean-recursive: mostlyclean-multi
+clean-recursive: clean-multi
+distclean-recursive: distclean-multi
+maintainer-clean-recursive: maintainer-clean-multi
+include $(top_srcdir)/../multilib.am
diff --git a/libffi/configure.ac b/libffi/configure.ac
index 70f6d2c2ea4..d67b205ea92 100644
--- a/libffi/configure.ac
+++ b/libffi/configure.ac
@@ -5,18 +5,30 @@ AC_PREREQ(2.68)
AC_INIT([libffi], [3.4.2], [http://github.com/libffi/libffi/issues])
AC_CONFIG_HEADERS([fficonfig.h])
+AM_ENABLE_MULTILIB(, ..)
+
AC_CANONICAL_SYSTEM
target_alias=${target_alias-$host_alias}
-case "${host}" in
- frv*-elf)
- LDFLAGS=`echo $LDFLAGS | sed "s/\-B[^ ]*libgloss\/frv\///"`\ -B`pwd`/../libgloss/frv/
- ;;
-esac
-
-AX_ENABLE_BUILDDIR
-
-AM_INIT_AUTOMAKE
+AM_INIT_AUTOMAKE([no-dist])
+
+# We would like our source tree to be readonly. However when releases or
+# pre-releases are generated, the flex/bison generated files as well as the
+# various formats of manuals need to be included along with the rest of the
+# sources. Therefore we have --enable-generated-files-in-srcdir to do
+# just that.
+AC_MSG_CHECKING(generated-files-in-srcdir)
+AC_ARG_ENABLE(generated-files-in-srcdir,
+AS_HELP_STRING([--enable-generated-files-in-srcdir],
+ [put copies of generated files in source dir intended for creating source tarballs for users without texinfo bison or flex]),
+[case "$enableval" in
+ yes) enable_generated_files_in_srcdir=yes ;;
+ no) enable_generated_files_in_srcdir=no ;;
+ *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
+ esac],
+[enable_generated_files_in_srcdir=no])
+AC_MSG_RESULT($enable_generated_files_in_srcdir)
+AM_CONDITIONAL(GENINSRC, test "$enable_generated_files_in_srcdir" = yes)
# The same as in boehm-gc and libstdc++. Have to borrow it from there.
# We must force CC to /not/ be precious variables; otherwise
@@ -39,25 +51,12 @@ AC_SUBST(CFLAGS)
AM_PROG_AS
AM_PROG_CC_C_O
AC_PROG_LIBTOOL
-AC_CONFIG_MACRO_DIR([m4])
AC_CHECK_TOOL(READELF, readelf)
# Test for 64-bit build.
AC_CHECK_SIZEOF([size_t])
-AX_COMPILER_VENDOR
-AX_CC_MAXOPT
-# The AX_CFLAGS_WARN_ALL macro doesn't currently work for sunpro
-# compiler.
-if test "$ax_cv_c_compiler_vendor" != "sun"; then
- AX_CFLAGS_WARN_ALL
-fi
-
-if test "x$GCC" = "xyes"; then
- CFLAGS="$CFLAGS -fexceptions"
-fi
-
cat > local.exp <<EOF
set CC_FOR_TARGET "$CC"
set CXX_FOR_TARGET "$CXX"
@@ -212,11 +211,6 @@ AC_ARG_ENABLE(pax_emutramp,
[Define this if you want to enable pax emulated trampolines])
fi)
-LT_SYS_SYMBOL_USCORE
-if test "x$sys_symbol_underscore" = xyes; then
- AC_DEFINE(SYMBOL_UNDERSCORE, 1, [Define if symbols are underscored.])
-fi
-
FFI_EXEC_TRAMPOLINE_TABLE=0
case "$target" in
*arm*-apple-* | aarch64-apple-*)
@@ -266,13 +260,11 @@ EOF
fi
if test "x$GCC" = "xyes"; then
- AX_CHECK_COMPILE_FLAG(-fno-lto, libffi_cv_no_lto=-fno-lto)
-
AC_CACHE_CHECK([whether .eh_frame section should be read-only],
libffi_cv_ro_eh_frame, [
libffi_cv_ro_eh_frame=yes
echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c
- if $CC $CFLAGS -c -fpic -fexceptions $libffi_cv_no_lto -o conftest.o conftest.c > /dev/null 2>&1; then
+ if $CC $CFLAGS -c -fpic -fexceptions -fno-lto -o conftest.o conftest.c > /dev/null 2>&1; then
if $READELF -WS conftest.o | grep -q -n 'eh_frame .* WA'; then
libffi_cv_ro_eh_frame=no
fi
@@ -306,12 +298,12 @@ if test "x$GCC" = "xyes"; then
fi
fi
-AC_ARG_ENABLE(docs,
- AC_HELP_STRING([--disable-docs],
- [Disable building of docs (default: no)]),
- [enable_docs=no],
- [enable_docs=yes])
-AM_CONDITIONAL(BUILD_DOCS, [test x$enable_docs = xyes])
+# See if makeinfo has been installed and is modern enough
+# that we can use it.
+ACX_CHECK_PROG_VER([MAKEINFO], [makeinfo], [--version],
+ [GNU texinfo.* \([0-9][0-9.]*\)],
+ [4.[4-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
+AM_CONDITIONAL(BUILD_DOCS, test $gcc_cv_prog_makeinfo_modern = "yes")
AH_BOTTOM([
#ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
@@ -386,47 +378,51 @@ AC_ARG_ENABLE(purify-safety,
AC_DEFINE(USING_PURIFY, 1, [Define this if you are using Purify and want to suppress spurious messages.])
fi)
-AC_ARG_ENABLE(multi-os-directory,
-[ --disable-multi-os-directory
- disable use of gcc --print-multi-os-directory to change the library installation directory])
-
-# These variables are only ever used when we cross-build to X86_WIN32.
-# And we only support this with GCC, so...
-if test "x$GCC" = "xyes"; then
- if test -n "$with_cross_host" &&
- test x"$with_cross_host" != x"no"; then
- toolexecdir='${exec_prefix}'/'$(target_alias)'
- toolexeclibdir='${toolexecdir}'/lib
- else
- toolexecdir='${libdir}'/gcc-lib/'$(target_alias)'
- toolexeclibdir='${libdir}'
- fi
- if test x"$enable_multi_os_directory" != x"no"; then
- multi_os_directory=`$CC $CFLAGS -print-multi-os-directory`
- case $multi_os_directory in
- .) ;; # Avoid trailing /.
- ../*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
- esac
- fi
- AC_SUBST(toolexecdir)
+GCC_WITH_TOOLEXECLIBDIR
+
+if test -n "$with_cross_host" &&
+ test x"$with_cross_host" != x"no"; then
+ toolexecdir='$(exec_prefix)/$(target_alias)'
+ case ${with_toolexeclibdir} in
+ no)
+ toolexeclibdir='$(toolexecdir)/lib'
+ ;;
+ *)
+ toolexeclibdir=${with_toolexeclibdir}
+ ;;
+ esac
else
- toolexeclibdir='${libdir}'
+ toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+ toolexeclibdir='$(libdir)'
fi
+multi_os_directory=`$CC -print-multi-os-directory`
+case $multi_os_directory in
+ .) ;; # Avoid trailing /.
+ *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
+esac
+AC_SUBST(toolexecdir)
AC_SUBST(toolexeclibdir)
+if test "${multilib}" = "yes"; then
+ multilib_arg="--enable-multilib"
+else
+ multilib_arg=
+fi
+
# Check linker support.
LIBFFI_ENABLE_SYMVERS
+# Determine what GCC version number to use in filesystem paths.
+GCC_BASE_VER
+
AC_CONFIG_COMMANDS(include, [test -d include || mkdir include])
AC_CONFIG_COMMANDS(src, [
test -d src || mkdir src
test -d src/$TARGETDIR || mkdir src/$TARGETDIR
], [TARGETDIR="$TARGETDIR"])
-AC_CONFIG_FILES(include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile doc/Makefile libffi.pc)
+AC_CONFIG_FILES(include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile libffi.pc)
-AC_OUTPUT
+AC_CONFIG_LINKS(include/ffitarget.h:src/$TARGETDIR/ffitarget.h)
-# Copy this file instead of using AC_CONFIG_LINK in order to support
-# compiling with MSVC, which won't understand cygwin style symlinks.
-cp ${srcdir}/src/$TARGETDIR/ffitarget.h include/ffitarget.h
+AC_OUTPUT
diff --git a/libffi/include/Makefile.am b/libffi/include/Makefile.am
index 5f0d4066f4a..d7d1641f00c 100644
--- a/libffi/include/Makefile.am
+++ b/libffi/include/Makefile.am
@@ -6,4 +6,8 @@ DISTCLEANFILES=ffitarget.h
noinst_HEADERS=ffi_common.h ffi_cfi.h tramp.h
EXTRA_DIST=ffi.h.in
-nodist_include_HEADERS = ffi.h ffitarget.h
+# Where generated headers like ffitarget.h get installed.
+gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER)
+toollibffidir := $(libdir)/gcc/$(target_alias)/$(gcc_version)/include
+
+toollibffi_HEADERS = ffi.h ffitarget.h
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 4/4] libffi: Integrate testsuite with GCC testsuite
2021-08-31 15:36 [PATCH 0/4] libffi: Sync with upstream H.J. Lu
` (2 preceding siblings ...)
2021-08-31 15:36 ` [PATCH 3/4] libffi: Integrate with GCC H.J. Lu
@ 2021-08-31 15:36 ` H.J. Lu
3 siblings, 0 replies; 7+ messages in thread
From: H.J. Lu @ 2021-08-31 15:36 UTC (permalink / raw)
To: gcc-patches; +Cc: Jeff Law, Jakub Jelinek, Richard Biener
---
libffi/testsuite/lib/libffi.exp | 24 +++++++++++++++---------
1 file changed, 15 insertions(+), 9 deletions(-)
diff --git a/libffi/testsuite/lib/libffi.exp b/libffi/testsuite/lib/libffi.exp
index 4f4dd48d2c6..d8bf6269a36 100644
--- a/libffi/testsuite/lib/libffi.exp
+++ b/libffi/testsuite/lib/libffi.exp
@@ -15,12 +15,15 @@
# <http://www.gnu.org/licenses/>.
proc load_gcc_lib { filename } {
- global srcdir
- load_file $srcdir/lib/$filename
+ global srcdir loaded_libs
+ load_file $srcdir/../../gcc/testsuite/lib/$filename
+ set loaded_libs($filename) ""
}
load_lib dg.exp
load_lib libgloss.exp
+load_gcc_lib target-supports.exp
+load_gcc_lib target-supports-dg.exp
load_gcc_lib target-libpath.exp
load_gcc_lib wrapper.exp
@@ -277,6 +280,7 @@ proc libffi-init { args } {
global srcdir
global blddirffi
global objdir
+ global blddircxx
global TOOL_OPTIONS
global tool
global libffi_include
@@ -285,13 +289,13 @@ proc libffi-init { args } {
global ld_library_path
global compiler_vendor
- if ![info exists blddirffi] {
- set blddirffi [pwd]/..
- }
-
+ set blddirffi [lookfor_file [get_multilibs] libffi]
verbose "libffi $blddirffi"
+ set blddircxx [lookfor_file [get_multilibs] libstdc++-v3]
+ verbose "libstdc++ $blddircxx"
+
+ set compiler_vendor "gnu"
- # Which compiler are we building with?
if { [string match $compiler_vendor "gnu"] } {
set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a]
if {$gccdir != ""} {
@@ -320,6 +324,8 @@ proc libffi-init { args } {
# add the library path for libffi.
append ld_library_path ":${blddirffi}/.libs"
+ # add the library path for libstdc++ as well.
+ append ld_library_path ":${blddircxx}/src/.libs"
verbose "ld_library_path: $ld_library_path"
@@ -332,6 +338,7 @@ proc libffi-init { args } {
if { $libffi_dir != "" } {
set libffi_dir [file dirname ${libffi_dir}]
set libffi_link_flags "-L${libffi_dir}/.libs"
+ lappend libffi_link_flags "-L${blddircxx}/src/.libs"
}
set_ld_library_path_env_vars
@@ -398,9 +405,8 @@ proc libffi_target_compile { source dest type options } {
lappend options "libs= -lpthread"
}
- # this may be required for g++, but just confused clang.
if { [string match "*.cc" $source] } {
- lappend options "c++"
+ lappend options "ldflags=-lstdc++"
}
if { [string match "arc*-*-linux*" $target_triplet] } {
--
2.31.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/4] libffi: Sync with libffi 3.4.2
2021-08-31 15:36 ` [PATCH 2/4] libffi: Sync with libffi 3.4.2 H.J. Lu
@ 2021-08-31 16:32 ` Xi Ruoyao
2021-08-31 18:24 ` H.J. Lu
0 siblings, 1 reply; 7+ messages in thread
From: Xi Ruoyao @ 2021-08-31 16:32 UTC (permalink / raw)
To: H.J. Lu, gcc-patches; +Cc: Jakub Jelinek
Hi hj,
libffi-3.4.2's new static trampoline feature is known to break some
downstream packages with some specific use (or misuse?) of libffi,
unexpected by the libffi developers. For example
https://gitlab.gnome.org/GNOME/gjs/-/issues/428.
I've not use gccgo recently, so I don't know if it might break something
here. Just a reminder, if the regtest on x86 and arm (32-bit and 64-
bit, they are the only platforms where libffi enables static trampoline)
is OK there should be no problem.
On Tue, 2021-08-31 at 08:36 -0700, H.J. Lu via Gcc-patches wrote:
> Merged commit: f9ea41683444ebe11cfa45b05223899764df28fb
> ---
> libffi/.gitattributes | 4 +
> libffi/ChangeLog.libffi | 7743 +++++-
> libffi/LICENSE | 2 +-
> libffi/LICENSE-BUILDTOOLS | 353 +
> libffi/MERGE | 4 +
> libffi/Makefile.am | 249 +-
> libffi/Makefile.in | 1944 --
> libffi/README | 450 -
> libffi/README.md | 495 +
> libffi/acinclude.m4 | 38 +-
> libffi/aclocal.m4 | 1202 -
> libffi/configure | 19411 ----------------
> libffi/configure.ac | 199 +-
> libffi/configure.host | 97 +-
> libffi/doc/Makefile.am | 3 +
> libffi/doc/libffi.texi | 382 +-
> libffi/doc/version.texi | 8 +-
> libffi/fficonfig.h.in | 208 -
> libffi/generate-darwin-source-and-headers.py | 143 +-
> libffi/include/Makefile.am | 8 +-
> libffi/include/Makefile.in | 565 -
> libffi/include/ffi.h.in | 213 +-
> libffi/include/ffi_cfi.h | 21 +
> libffi/include/ffi_common.h | 50 +-
> libffi/include/tramp.h | 45 +
> libffi/libffi.map.in | 24 +-
> libffi/libffi.pc.in | 2 +-
> libffi/libffi.xcodeproj/project.pbxproj | 530 +-
> libffi/libtool-version | 25 +-
> libffi/man/Makefile.in | 515 -
> libffi/mdate-sh | 205 -
> libffi/msvcc.sh | 134 +-
> libffi/src/aarch64/ffi.c | 536 +-
> libffi/src/aarch64/ffitarget.h | 35 +-
> libffi/src/aarch64/internal.h | 33 +
> libffi/src/aarch64/sysv.S | 189 +-
> libffi/src/aarch64/win64_armasm.S | 506 +
> libffi/src/alpha/ffi.c | 6 +-
> libffi/src/arc/ffi.c | 6 +-
> libffi/src/arm/ffi.c | 380 +-
> libffi/src/arm/ffitarget.h | 24 +-
> libffi/src/arm/internal.h | 10 +
> libffi/src/arm/sysv.S | 304 +-
> libffi/src/arm/sysv_msvc_arm32.S | 311 +
> libffi/src/closures.c | 489 +-
> libffi/src/cris/ffi.c | 4 +-
> libffi/src/csky/ffi.c | 395 +
> libffi/src/csky/ffitarget.h | 63 +
> libffi/src/csky/sysv.S | 371 +
> libffi/src/dlmalloc.c | 7 +-
> libffi/src/frv/ffi.c | 4 +-
> libffi/src/ia64/ffi.c | 30 +-
> libffi/src/ia64/ffitarget.h | 3 +-
> libffi/src/ia64/unix.S | 9 +-
> libffi/src/java_raw_api.c | 6 +-
> libffi/src/kvx/asm.h | 5 +
> libffi/src/kvx/ffi.c | 273 +
> libffi/src/kvx/ffitarget.h | 75 +
> libffi/src/kvx/sysv.S | 127 +
> libffi/src/m32r/ffi.c | 2 +-
> libffi/src/m68k/ffi.c | 4 +-
> libffi/src/m68k/sysv.S | 29 +-
> libffi/src/m88k/ffi.c | 8 +-
> libffi/src/metag/ffi.c | 14 +-
> libffi/src/microblaze/ffi.c | 10 +-
> libffi/src/mips/ffi.c | 146 +-
> libffi/src/mips/ffitarget.h | 23 +-
> libffi/src/mips/n32.S | 151 +-
> libffi/src/mips/o32.S | 177 +-
> libffi/src/moxie/eabi.S | 2 +-
> libffi/src/moxie/ffi.c | 27 +-
> libffi/src/nios2/ffi.c | 4 +-
> libffi/src/pa/ffi.c | 216 +-
> libffi/src/pa/ffitarget.h | 11 +-
> libffi/src/pa/hpux32.S | 76 +-
> libffi/src/pa/linux.S | 160 +-
> libffi/src/powerpc/asm.h | 4 +-
> libffi/src/powerpc/darwin_closure.S | 6 +-
> libffi/src/powerpc/ffi.c | 10 +-
> libffi/src/powerpc/ffi_darwin.c | 48 +-
> libffi/src/powerpc/ffi_linux64.c | 247 +-
> libffi/src/powerpc/ffi_powerpc.h | 25 +-
> libffi/src/powerpc/ffitarget.h | 14 +-
> libffi/src/powerpc/linux64.S | 111 +-
> libffi/src/powerpc/linux64_closure.S | 70 +-
> libffi/src/powerpc/sysv.S | 12 +-
> libffi/src/prep_cif.c | 64 +-
> libffi/src/raw_api.c | 10 +-
> libffi/src/riscv/ffi.c | 16 +-
> libffi/src/sparc/ffi.c | 6 +-
> libffi/src/sparc/ffi64.c | 18 +-
> libffi/src/tramp.c | 729 +
> libffi/src/types.c | 4 +-
> libffi/src/vax/ffi.c | 4 +-
> libffi/src/x86/asmnames.h | 30 +
> libffi/src/x86/darwin.S | 444 -
> libffi/src/x86/darwin64.S | 416 -
> libffi/src/x86/darwin64_c.c | 643 -
> libffi/src/x86/darwin_c.c | 843 -
> libffi/src/x86/ffi.c | 162 +-
> libffi/src/x86/ffi64.c | 164 +-
> libffi/src/x86/ffitarget.h | 42 +-
> libffi/src/x86/ffiw64.c | 114 +-
> libffi/src/x86/internal.h | 14 +
> libffi/src/x86/internal64.h | 14 +
> libffi/src/x86/sysv.S | 215 +-
> libffi/src/x86/sysv_intel.S | 995 +
> libffi/src/x86/unix64.S | 204 +-
> libffi/src/x86/win64.S | 170 +-
> libffi/src/x86/win64_intel.S | 238 +
> libffi/src/xtensa/ffi.c | 4 +-
> libffi/src/xtensa/sysv.S | 7 +-
> libffi/testsuite/Makefile.am | 206 +-
> libffi/testsuite/Makefile.in | 572 -
> libffi/testsuite/lib/libffi.exp | 314 +-
> libffi/testsuite/libffi.bhaible/Makefile | 28 +
> libffi/testsuite/libffi.bhaible/README | 78 +
> libffi/testsuite/libffi.bhaible/alignof.h | 50 +
> libffi/testsuite/libffi.bhaible/bhaible.exp | 63 +
> libffi/testsuite/libffi.bhaible/test-call.c | 1745 ++
> .../testsuite/libffi.bhaible/test-callback.c | 2885 +++
> libffi/testsuite/libffi.bhaible/testcases.c | 747 +
> libffi/testsuite/libffi.call/align_mixed.c | 46 +
> libffi/testsuite/libffi.call/align_stdcall.c | 46 +
> libffi/testsuite/libffi.call/call.exp | 28 +-
> libffi/testsuite/libffi.call/cls_uchar_va.c | 44 -
> libffi/testsuite/libffi.call/cls_ushort_va.c | 44 -
> libffi/testsuite/libffi.call/ffitest.h | 13 +-
> libffi/testsuite/libffi.call/float2.c | 23 +-
> libffi/testsuite/libffi.call/offsets.c | 46 +
> libffi/testsuite/libffi.call/struct10.c | 57 +
> libffi/testsuite/libffi.call/va_1.c | 120 +-
> libffi/testsuite/libffi.call/va_2.c | 196 +
> libffi/testsuite/libffi.closures/closure.exp | 67 +
> .../closure_fn0.c | 0
> .../closure_fn1.c | 0
> .../closure_fn2.c | 0
> .../closure_fn3.c | 0
> .../closure_fn4.c | 0
> .../closure_fn5.c | 0
> .../closure_fn6.c | 0
> .../closure_loc_fn0.c | 3 +
> .../closure_simple.c | 0
> .../cls_12byte.c | 0
> .../cls_16byte.c | 0
> .../cls_18byte.c | 0
> .../cls_19byte.c | 0
> .../cls_1_1byte.c | 0
> .../cls_20byte.c | 2 +-
> .../cls_20byte1.c | 2 +-
> .../cls_24byte.c | 6 +-
> .../cls_2byte.c | 0
> .../cls_3_1byte.c | 0
> .../cls_3byte1.c | 0
> .../cls_3byte2.c | 0
> libffi/testsuite/libffi.closures/cls_3float.c | 95 +
> .../cls_4_1byte.c | 0
> .../cls_4byte.c | 0
> .../cls_5_1_byte.c | 2 +-
> .../cls_5byte.c | 2 +-
> .../cls_64byte.c | 0
> .../cls_6_1_byte.c | 2 +-
> .../cls_6byte.c | 2 +-
> .../cls_7_1_byte.c | 2 +-
> .../cls_7byte.c | 2 +-
> .../cls_8byte.c | 0
> .../cls_9byte1.c | 2 +-
> .../cls_9byte2.c | 2 +-
> .../cls_align_double.c | 2 +-
> .../cls_align_float.c | 2 +-
> .../cls_align_longdouble.c | 2 +-
> .../cls_align_longdouble_split.c | 2 +-
> .../cls_align_longdouble_split2.c | 2 +-
> .../cls_align_pointer.c | 2 +-
> .../cls_align_sint16.c | 2 +-
> .../cls_align_sint32.c | 2 +-
> .../cls_align_sint64.c | 2 +-
> .../cls_align_uint16.c | 2 +-
> .../cls_align_uint32.c | 2 +-
> .../cls_align_uint64.c | 2 +-
> .../cls_dbls_struct.c | 6 +-
> .../cls_double.c | 0
> .../cls_double_va.c | 0
> .../cls_float.c | 0
> .../cls_longdouble.c | 0
> .../cls_longdouble_va.c | 0
> .../cls_many_mixed_args.c | 0
> .../cls_many_mixed_float_double.c | 0
> .../cls_multi_schar.c | 2 +-
> .../cls_multi_sshort.c | 2 +-
> .../cls_multi_sshortchar.c | 2 +-
> .../cls_multi_uchar.c | 2 +-
> .../cls_multi_ushort.c | 2 +-
> .../cls_multi_ushortchar.c | 2 +-
> .../cls_pointer.c | 0
> .../cls_pointer_stack.c | 0
> .../cls_schar.c | 0
> .../cls_sint.c | 0
> .../cls_sshort.c | 0
> .../cls_struct_va1.c | 0
> .../cls_uchar.c | 0
> .../cls_uint.c | 0
> .../cls_uint_va.c | 0
> .../cls_ulong_va.c | 0
> .../cls_ulonglong.c | 0
> .../cls_ushort.c | 0
> .../err_bad_abi.c | 0
> libffi/testsuite/libffi.closures/ffitest.h | 144 +
> .../huge_struct.c | 4 +-
> .../nested_struct.c | 2 +-
> .../nested_struct1.c | 2 +-
> .../nested_struct10.c | 1 +
> .../nested_struct11.c | 0
> .../libffi.closures/nested_struct12.c | 86 +
> .../nested_struct13.c} | 14 +-
> .../nested_struct2.c | 2 +-
> .../nested_struct3.c | 2 +-
> .../nested_struct4.c | 0
> .../nested_struct5.c | 0
> .../nested_struct6.c | 0
> .../nested_struct7.c | 0
> .../nested_struct8.c | 0
> .../nested_struct9.c | 0
> .../problem1.c | 0
> .../libffi.closures/single_entry_structs1.c | 86 +
> .../libffi.closures/single_entry_structs2.c | 102 +
> .../libffi.closures/single_entry_structs3.c | 101 +
> .../stret_large.c | 0
> .../stret_large2.c | 0
> .../stret_medium.c | 2 +-
> .../stret_medium2.c | 2 +-
> .../testclosure.c | 2 +-
> .../unwindtest.cc | 13 +-
> .../unwindtest_ffi_call.cc | 5 +-
> libffi/testsuite/libffi.go/static-chain.h | 6 -
> libffi/testsuite/libffi.special/ffitestcxx.h | 96 -
> libffi/testsuite/libffi.special/special.exp | 35 -
> 237 files changed, 24334 insertions(+), 30607 deletions(-)
> create mode 100644 libffi/.gitattributes
> create mode 100644 libffi/LICENSE-BUILDTOOLS
> create mode 100644 libffi/MERGE
> delete mode 100644 libffi/Makefile.in
> delete mode 100644 libffi/README
> create mode 100644 libffi/README.md
> delete mode 100644 libffi/aclocal.m4
> delete mode 100755 libffi/configure
> create mode 100644 libffi/doc/Makefile.am
> delete mode 100644 libffi/fficonfig.h.in
> mode change 100644 => 100755 libffi/generate-darwin-source-and-
> headers.py
> delete mode 100644 libffi/include/Makefile.in
> create mode 100644 libffi/include/tramp.h
> delete mode 100644 libffi/man/Makefile.in
> delete mode 100644 libffi/mdate-sh
> create mode 100644 libffi/src/aarch64/win64_armasm.S
> create mode 100644 libffi/src/arm/sysv_msvc_arm32.S
> create mode 100644 libffi/src/csky/ffi.c
> create mode 100644 libffi/src/csky/ffitarget.h
> create mode 100644 libffi/src/csky/sysv.S
> create mode 100644 libffi/src/kvx/asm.h
> create mode 100644 libffi/src/kvx/ffi.c
> create mode 100644 libffi/src/kvx/ffitarget.h
> create mode 100644 libffi/src/kvx/sysv.S
> create mode 100644 libffi/src/tramp.c
> create mode 100644 libffi/src/x86/asmnames.h
> delete mode 100644 libffi/src/x86/darwin.S
> delete mode 100644 libffi/src/x86/darwin64.S
> delete mode 100644 libffi/src/x86/darwin64_c.c
> delete mode 100644 libffi/src/x86/darwin_c.c
> create mode 100644 libffi/src/x86/sysv_intel.S
> create mode 100644 libffi/src/x86/win64_intel.S
> delete mode 100644 libffi/testsuite/Makefile.in
> create mode 100644 libffi/testsuite/libffi.bhaible/Makefile
> create mode 100644 libffi/testsuite/libffi.bhaible/README
> create mode 100644 libffi/testsuite/libffi.bhaible/alignof.h
> create mode 100644 libffi/testsuite/libffi.bhaible/bhaible.exp
> create mode 100644 libffi/testsuite/libffi.bhaible/test-call.c
> create mode 100644 libffi/testsuite/libffi.bhaible/test-callback.c
> create mode 100644 libffi/testsuite/libffi.bhaible/testcases.c
> create mode 100644 libffi/testsuite/libffi.call/align_mixed.c
> create mode 100644 libffi/testsuite/libffi.call/align_stdcall.c
> delete mode 100644 libffi/testsuite/libffi.call/cls_uchar_va.c
> delete mode 100644 libffi/testsuite/libffi.call/cls_ushort_va.c
> create mode 100644 libffi/testsuite/libffi.call/offsets.c
> create mode 100644 libffi/testsuite/libffi.call/struct10.c
> create mode 100644 libffi/testsuite/libffi.call/va_2.c
> create mode 100644 libffi/testsuite/libffi.closures/closure.exp
> rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn0.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn1.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn2.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn3.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn4.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn5.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn6.c
> (100%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/closure_loc_fn0.c (96%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/closure_simple.c (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_12byte.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_16byte.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_18byte.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_19byte.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_1_1byte.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_20byte.c
> (97%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_20byte1.c
> (97%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_24byte.c
> (95%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_2byte.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_3_1byte.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_3byte1.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_3byte2.c
> (100%)
> create mode 100644 libffi/testsuite/libffi.closures/cls_3float.c
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_4_1byte.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_4byte.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_5_1_byte.c
> (97%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_5byte.c
> (97%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_64byte.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_6_1_byte.c
> (97%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_6byte.c
> (97%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_7_1_byte.c
> (97%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_7byte.c
> (97%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_8byte.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_9byte1.c
> (97%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_9byte2.c
> (97%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_align_double.c (97%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_align_float.c (97%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_align_longdouble.c (97%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_align_longdouble_split.c (98%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_align_longdouble_split2.c (98%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_align_pointer.c (97%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_align_sint16.c (97%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_align_sint32.c (97%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_align_sint64.c (97%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_align_uint16.c (97%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_align_uint32.c (97%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_align_uint64.c (97%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_dbls_struct.c (92%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_double.c
> (100%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_double_va.c (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_float.c
> (100%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_longdouble.c (100%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_longdouble_va.c (100%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_many_mixed_args.c (100%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_many_mixed_float_double.c (100%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_multi_schar.c (96%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_multi_sshort.c (96%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_multi_sshortchar.c (96%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_multi_uchar.c (96%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_multi_ushort.c (95%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_multi_ushortchar.c (96%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_pointer.c
> (100%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_pointer_stack.c (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_schar.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_sint.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_sshort.c
> (100%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_struct_va1.c (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_uchar.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_uint.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_uint_va.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_ulong_va.c
> (100%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/cls_ulonglong.c (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/cls_ushort.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/err_bad_abi.c
> (100%)
> create mode 100644 libffi/testsuite/libffi.closures/ffitest.h
> rename libffi/testsuite/{libffi.call => libffi.closures}/huge_struct.c
> (99%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/nested_struct.c (98%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/nested_struct1.c (98%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/nested_struct10.c (99%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/nested_struct11.c (100%)
> create mode 100644 libffi/testsuite/libffi.closures/nested_struct12.c
> rename libffi/testsuite/{libffi.call/nested_struct12.c =>
> libffi.closures/nested_struct13.c} (88%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/nested_struct2.c (98%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/nested_struct3.c (98%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/nested_struct4.c (100%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/nested_struct5.c (100%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/nested_struct6.c (100%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/nested_struct7.c (100%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/nested_struct8.c (100%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/nested_struct9.c (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/problem1.c
> (100%)
> create mode 100644
> libffi/testsuite/libffi.closures/single_entry_structs1.c
> create mode 100644
> libffi/testsuite/libffi.closures/single_entry_structs2.c
> create mode 100644
> libffi/testsuite/libffi.closures/single_entry_structs3.c
> rename libffi/testsuite/{libffi.call => libffi.closures}/stret_large.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/stret_large2.c
> (100%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/stret_medium.c
> (98%)
> rename libffi/testsuite/{libffi.call =>
> libffi.closures}/stret_medium2.c (98%)
> rename libffi/testsuite/{libffi.call => libffi.closures}/testclosure.c
> (95%)
> rename libffi/testsuite/{libffi.special =>
> libffi.closures}/unwindtest.cc (95%)
> rename libffi/testsuite/{libffi.special =>
> libffi.closures}/unwindtest_ffi_call.cc (94%)
> delete mode 100644 libffi/testsuite/libffi.special/ffitestcxx.h
> delete mode 100644 libffi/testsuite/libffi.special/special.exp
>
> https://gitlab.com/x86-gcc/gcc/-/commit/667397efc8307e45ca6ddec737b0caf8ca9d0fda
--
Xi Ruoyao <xry111@mengyan1223.wang>
School of Aerospace Science and Technology, Xidian University
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/4] libffi: Sync with libffi 3.4.2
2021-08-31 16:32 ` Xi Ruoyao
@ 2021-08-31 18:24 ` H.J. Lu
0 siblings, 0 replies; 7+ messages in thread
From: H.J. Lu @ 2021-08-31 18:24 UTC (permalink / raw)
To: Xi Ruoyao; +Cc: GCC Patches, Jakub Jelinek
On Tue, Aug 31, 2021 at 9:32 AM Xi Ruoyao <xry111@mengyan1223.wang> wrote:
>
> Hi hj,
>
> libffi-3.4.2's new static trampoline feature is known to break some
> downstream packages with some specific use (or misuse?) of libffi,
> unexpected by the libffi developers. For example
> https://gitlab.gnome.org/GNOME/gjs/-/issues/428.
It looks like a gjs bug.
> I've not use gccgo recently, so I don't know if it might break something
> here. Just a reminder, if the regtest on x86 and arm (32-bit and 64-
> bit, they are the only platforms where libffi enables static trampoline)
> is OK there should be no problem.
There are no Go regressions on Linux/x86-64 with -m64 and -m32.
>
> On Tue, 2021-08-31 at 08:36 -0700, H.J. Lu via Gcc-patches wrote:
> > Merged commit: f9ea41683444ebe11cfa45b05223899764df28fb
> > ---
> > libffi/.gitattributes | 4 +
> > libffi/ChangeLog.libffi | 7743 +++++-
> > libffi/LICENSE | 2 +-
> > libffi/LICENSE-BUILDTOOLS | 353 +
> > libffi/MERGE | 4 +
> > libffi/Makefile.am | 249 +-
> > libffi/Makefile.in | 1944 --
> > libffi/README | 450 -
> > libffi/README.md | 495 +
> > libffi/acinclude.m4 | 38 +-
> > libffi/aclocal.m4 | 1202 -
> > libffi/configure | 19411 ----------------
> > libffi/configure.ac | 199 +-
> > libffi/configure.host | 97 +-
> > libffi/doc/Makefile.am | 3 +
> > libffi/doc/libffi.texi | 382 +-
> > libffi/doc/version.texi | 8 +-
> > libffi/fficonfig.h.in | 208 -
> > libffi/generate-darwin-source-and-headers.py | 143 +-
> > libffi/include/Makefile.am | 8 +-
> > libffi/include/Makefile.in | 565 -
> > libffi/include/ffi.h.in | 213 +-
> > libffi/include/ffi_cfi.h | 21 +
> > libffi/include/ffi_common.h | 50 +-
> > libffi/include/tramp.h | 45 +
> > libffi/libffi.map.in | 24 +-
> > libffi/libffi.pc.in | 2 +-
> > libffi/libffi.xcodeproj/project.pbxproj | 530 +-
> > libffi/libtool-version | 25 +-
> > libffi/man/Makefile.in | 515 -
> > libffi/mdate-sh | 205 -
> > libffi/msvcc.sh | 134 +-
> > libffi/src/aarch64/ffi.c | 536 +-
> > libffi/src/aarch64/ffitarget.h | 35 +-
> > libffi/src/aarch64/internal.h | 33 +
> > libffi/src/aarch64/sysv.S | 189 +-
> > libffi/src/aarch64/win64_armasm.S | 506 +
> > libffi/src/alpha/ffi.c | 6 +-
> > libffi/src/arc/ffi.c | 6 +-
> > libffi/src/arm/ffi.c | 380 +-
> > libffi/src/arm/ffitarget.h | 24 +-
> > libffi/src/arm/internal.h | 10 +
> > libffi/src/arm/sysv.S | 304 +-
> > libffi/src/arm/sysv_msvc_arm32.S | 311 +
> > libffi/src/closures.c | 489 +-
> > libffi/src/cris/ffi.c | 4 +-
> > libffi/src/csky/ffi.c | 395 +
> > libffi/src/csky/ffitarget.h | 63 +
> > libffi/src/csky/sysv.S | 371 +
> > libffi/src/dlmalloc.c | 7 +-
> > libffi/src/frv/ffi.c | 4 +-
> > libffi/src/ia64/ffi.c | 30 +-
> > libffi/src/ia64/ffitarget.h | 3 +-
> > libffi/src/ia64/unix.S | 9 +-
> > libffi/src/java_raw_api.c | 6 +-
> > libffi/src/kvx/asm.h | 5 +
> > libffi/src/kvx/ffi.c | 273 +
> > libffi/src/kvx/ffitarget.h | 75 +
> > libffi/src/kvx/sysv.S | 127 +
> > libffi/src/m32r/ffi.c | 2 +-
> > libffi/src/m68k/ffi.c | 4 +-
> > libffi/src/m68k/sysv.S | 29 +-
> > libffi/src/m88k/ffi.c | 8 +-
> > libffi/src/metag/ffi.c | 14 +-
> > libffi/src/microblaze/ffi.c | 10 +-
> > libffi/src/mips/ffi.c | 146 +-
> > libffi/src/mips/ffitarget.h | 23 +-
> > libffi/src/mips/n32.S | 151 +-
> > libffi/src/mips/o32.S | 177 +-
> > libffi/src/moxie/eabi.S | 2 +-
> > libffi/src/moxie/ffi.c | 27 +-
> > libffi/src/nios2/ffi.c | 4 +-
> > libffi/src/pa/ffi.c | 216 +-
> > libffi/src/pa/ffitarget.h | 11 +-
> > libffi/src/pa/hpux32.S | 76 +-
> > libffi/src/pa/linux.S | 160 +-
> > libffi/src/powerpc/asm.h | 4 +-
> > libffi/src/powerpc/darwin_closure.S | 6 +-
> > libffi/src/powerpc/ffi.c | 10 +-
> > libffi/src/powerpc/ffi_darwin.c | 48 +-
> > libffi/src/powerpc/ffi_linux64.c | 247 +-
> > libffi/src/powerpc/ffi_powerpc.h | 25 +-
> > libffi/src/powerpc/ffitarget.h | 14 +-
> > libffi/src/powerpc/linux64.S | 111 +-
> > libffi/src/powerpc/linux64_closure.S | 70 +-
> > libffi/src/powerpc/sysv.S | 12 +-
> > libffi/src/prep_cif.c | 64 +-
> > libffi/src/raw_api.c | 10 +-
> > libffi/src/riscv/ffi.c | 16 +-
> > libffi/src/sparc/ffi.c | 6 +-
> > libffi/src/sparc/ffi64.c | 18 +-
> > libffi/src/tramp.c | 729 +
> > libffi/src/types.c | 4 +-
> > libffi/src/vax/ffi.c | 4 +-
> > libffi/src/x86/asmnames.h | 30 +
> > libffi/src/x86/darwin.S | 444 -
> > libffi/src/x86/darwin64.S | 416 -
> > libffi/src/x86/darwin64_c.c | 643 -
> > libffi/src/x86/darwin_c.c | 843 -
> > libffi/src/x86/ffi.c | 162 +-
> > libffi/src/x86/ffi64.c | 164 +-
> > libffi/src/x86/ffitarget.h | 42 +-
> > libffi/src/x86/ffiw64.c | 114 +-
> > libffi/src/x86/internal.h | 14 +
> > libffi/src/x86/internal64.h | 14 +
> > libffi/src/x86/sysv.S | 215 +-
> > libffi/src/x86/sysv_intel.S | 995 +
> > libffi/src/x86/unix64.S | 204 +-
> > libffi/src/x86/win64.S | 170 +-
> > libffi/src/x86/win64_intel.S | 238 +
> > libffi/src/xtensa/ffi.c | 4 +-
> > libffi/src/xtensa/sysv.S | 7 +-
> > libffi/testsuite/Makefile.am | 206 +-
> > libffi/testsuite/Makefile.in | 572 -
> > libffi/testsuite/lib/libffi.exp | 314 +-
> > libffi/testsuite/libffi.bhaible/Makefile | 28 +
> > libffi/testsuite/libffi.bhaible/README | 78 +
> > libffi/testsuite/libffi.bhaible/alignof.h | 50 +
> > libffi/testsuite/libffi.bhaible/bhaible.exp | 63 +
> > libffi/testsuite/libffi.bhaible/test-call.c | 1745 ++
> > .../testsuite/libffi.bhaible/test-callback.c | 2885 +++
> > libffi/testsuite/libffi.bhaible/testcases.c | 747 +
> > libffi/testsuite/libffi.call/align_mixed.c | 46 +
> > libffi/testsuite/libffi.call/align_stdcall.c | 46 +
> > libffi/testsuite/libffi.call/call.exp | 28 +-
> > libffi/testsuite/libffi.call/cls_uchar_va.c | 44 -
> > libffi/testsuite/libffi.call/cls_ushort_va.c | 44 -
> > libffi/testsuite/libffi.call/ffitest.h | 13 +-
> > libffi/testsuite/libffi.call/float2.c | 23 +-
> > libffi/testsuite/libffi.call/offsets.c | 46 +
> > libffi/testsuite/libffi.call/struct10.c | 57 +
> > libffi/testsuite/libffi.call/va_1.c | 120 +-
> > libffi/testsuite/libffi.call/va_2.c | 196 +
> > libffi/testsuite/libffi.closures/closure.exp | 67 +
> > .../closure_fn0.c | 0
> > .../closure_fn1.c | 0
> > .../closure_fn2.c | 0
> > .../closure_fn3.c | 0
> > .../closure_fn4.c | 0
> > .../closure_fn5.c | 0
> > .../closure_fn6.c | 0
> > .../closure_loc_fn0.c | 3 +
> > .../closure_simple.c | 0
> > .../cls_12byte.c | 0
> > .../cls_16byte.c | 0
> > .../cls_18byte.c | 0
> > .../cls_19byte.c | 0
> > .../cls_1_1byte.c | 0
> > .../cls_20byte.c | 2 +-
> > .../cls_20byte1.c | 2 +-
> > .../cls_24byte.c | 6 +-
> > .../cls_2byte.c | 0
> > .../cls_3_1byte.c | 0
> > .../cls_3byte1.c | 0
> > .../cls_3byte2.c | 0
> > libffi/testsuite/libffi.closures/cls_3float.c | 95 +
> > .../cls_4_1byte.c | 0
> > .../cls_4byte.c | 0
> > .../cls_5_1_byte.c | 2 +-
> > .../cls_5byte.c | 2 +-
> > .../cls_64byte.c | 0
> > .../cls_6_1_byte.c | 2 +-
> > .../cls_6byte.c | 2 +-
> > .../cls_7_1_byte.c | 2 +-
> > .../cls_7byte.c | 2 +-
> > .../cls_8byte.c | 0
> > .../cls_9byte1.c | 2 +-
> > .../cls_9byte2.c | 2 +-
> > .../cls_align_double.c | 2 +-
> > .../cls_align_float.c | 2 +-
> > .../cls_align_longdouble.c | 2 +-
> > .../cls_align_longdouble_split.c | 2 +-
> > .../cls_align_longdouble_split2.c | 2 +-
> > .../cls_align_pointer.c | 2 +-
> > .../cls_align_sint16.c | 2 +-
> > .../cls_align_sint32.c | 2 +-
> > .../cls_align_sint64.c | 2 +-
> > .../cls_align_uint16.c | 2 +-
> > .../cls_align_uint32.c | 2 +-
> > .../cls_align_uint64.c | 2 +-
> > .../cls_dbls_struct.c | 6 +-
> > .../cls_double.c | 0
> > .../cls_double_va.c | 0
> > .../cls_float.c | 0
> > .../cls_longdouble.c | 0
> > .../cls_longdouble_va.c | 0
> > .../cls_many_mixed_args.c | 0
> > .../cls_many_mixed_float_double.c | 0
> > .../cls_multi_schar.c | 2 +-
> > .../cls_multi_sshort.c | 2 +-
> > .../cls_multi_sshortchar.c | 2 +-
> > .../cls_multi_uchar.c | 2 +-
> > .../cls_multi_ushort.c | 2 +-
> > .../cls_multi_ushortchar.c | 2 +-
> > .../cls_pointer.c | 0
> > .../cls_pointer_stack.c | 0
> > .../cls_schar.c | 0
> > .../cls_sint.c | 0
> > .../cls_sshort.c | 0
> > .../cls_struct_va1.c | 0
> > .../cls_uchar.c | 0
> > .../cls_uint.c | 0
> > .../cls_uint_va.c | 0
> > .../cls_ulong_va.c | 0
> > .../cls_ulonglong.c | 0
> > .../cls_ushort.c | 0
> > .../err_bad_abi.c | 0
> > libffi/testsuite/libffi.closures/ffitest.h | 144 +
> > .../huge_struct.c | 4 +-
> > .../nested_struct.c | 2 +-
> > .../nested_struct1.c | 2 +-
> > .../nested_struct10.c | 1 +
> > .../nested_struct11.c | 0
> > .../libffi.closures/nested_struct12.c | 86 +
> > .../nested_struct13.c} | 14 +-
> > .../nested_struct2.c | 2 +-
> > .../nested_struct3.c | 2 +-
> > .../nested_struct4.c | 0
> > .../nested_struct5.c | 0
> > .../nested_struct6.c | 0
> > .../nested_struct7.c | 0
> > .../nested_struct8.c | 0
> > .../nested_struct9.c | 0
> > .../problem1.c | 0
> > .../libffi.closures/single_entry_structs1.c | 86 +
> > .../libffi.closures/single_entry_structs2.c | 102 +
> > .../libffi.closures/single_entry_structs3.c | 101 +
> > .../stret_large.c | 0
> > .../stret_large2.c | 0
> > .../stret_medium.c | 2 +-
> > .../stret_medium2.c | 2 +-
> > .../testclosure.c | 2 +-
> > .../unwindtest.cc | 13 +-
> > .../unwindtest_ffi_call.cc | 5 +-
> > libffi/testsuite/libffi.go/static-chain.h | 6 -
> > libffi/testsuite/libffi.special/ffitestcxx.h | 96 -
> > libffi/testsuite/libffi.special/special.exp | 35 -
> > 237 files changed, 24334 insertions(+), 30607 deletions(-)
> > create mode 100644 libffi/.gitattributes
> > create mode 100644 libffi/LICENSE-BUILDTOOLS
> > create mode 100644 libffi/MERGE
> > delete mode 100644 libffi/Makefile.in
> > delete mode 100644 libffi/README
> > create mode 100644 libffi/README.md
> > delete mode 100644 libffi/aclocal.m4
> > delete mode 100755 libffi/configure
> > create mode 100644 libffi/doc/Makefile.am
> > delete mode 100644 libffi/fficonfig.h.in
> > mode change 100644 => 100755 libffi/generate-darwin-source-and-
> > headers.py
> > delete mode 100644 libffi/include/Makefile.in
> > create mode 100644 libffi/include/tramp.h
> > delete mode 100644 libffi/man/Makefile.in
> > delete mode 100644 libffi/mdate-sh
> > create mode 100644 libffi/src/aarch64/win64_armasm.S
> > create mode 100644 libffi/src/arm/sysv_msvc_arm32.S
> > create mode 100644 libffi/src/csky/ffi.c
> > create mode 100644 libffi/src/csky/ffitarget.h
> > create mode 100644 libffi/src/csky/sysv.S
> > create mode 100644 libffi/src/kvx/asm.h
> > create mode 100644 libffi/src/kvx/ffi.c
> > create mode 100644 libffi/src/kvx/ffitarget.h
> > create mode 100644 libffi/src/kvx/sysv.S
> > create mode 100644 libffi/src/tramp.c
> > create mode 100644 libffi/src/x86/asmnames.h
> > delete mode 100644 libffi/src/x86/darwin.S
> > delete mode 100644 libffi/src/x86/darwin64.S
> > delete mode 100644 libffi/src/x86/darwin64_c.c
> > delete mode 100644 libffi/src/x86/darwin_c.c
> > create mode 100644 libffi/src/x86/sysv_intel.S
> > create mode 100644 libffi/src/x86/win64_intel.S
> > delete mode 100644 libffi/testsuite/Makefile.in
> > create mode 100644 libffi/testsuite/libffi.bhaible/Makefile
> > create mode 100644 libffi/testsuite/libffi.bhaible/README
> > create mode 100644 libffi/testsuite/libffi.bhaible/alignof.h
> > create mode 100644 libffi/testsuite/libffi.bhaible/bhaible.exp
> > create mode 100644 libffi/testsuite/libffi.bhaible/test-call.c
> > create mode 100644 libffi/testsuite/libffi.bhaible/test-callback.c
> > create mode 100644 libffi/testsuite/libffi.bhaible/testcases.c
> > create mode 100644 libffi/testsuite/libffi.call/align_mixed.c
> > create mode 100644 libffi/testsuite/libffi.call/align_stdcall.c
> > delete mode 100644 libffi/testsuite/libffi.call/cls_uchar_va.c
> > delete mode 100644 libffi/testsuite/libffi.call/cls_ushort_va.c
> > create mode 100644 libffi/testsuite/libffi.call/offsets.c
> > create mode 100644 libffi/testsuite/libffi.call/struct10.c
> > create mode 100644 libffi/testsuite/libffi.call/va_2.c
> > create mode 100644 libffi/testsuite/libffi.closures/closure.exp
> > rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn0.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn1.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn2.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn3.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn4.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn5.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/closure_fn6.c
> > (100%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/closure_loc_fn0.c (96%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/closure_simple.c (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_12byte.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_16byte.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_18byte.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_19byte.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_1_1byte.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_20byte.c
> > (97%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_20byte1.c
> > (97%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_24byte.c
> > (95%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_2byte.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_3_1byte.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_3byte1.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_3byte2.c
> > (100%)
> > create mode 100644 libffi/testsuite/libffi.closures/cls_3float.c
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_4_1byte.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_4byte.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_5_1_byte.c
> > (97%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_5byte.c
> > (97%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_64byte.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_6_1_byte.c
> > (97%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_6byte.c
> > (97%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_7_1_byte.c
> > (97%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_7byte.c
> > (97%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_8byte.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_9byte1.c
> > (97%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_9byte2.c
> > (97%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_align_double.c (97%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_align_float.c (97%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_align_longdouble.c (97%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_align_longdouble_split.c (98%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_align_longdouble_split2.c (98%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_align_pointer.c (97%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_align_sint16.c (97%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_align_sint32.c (97%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_align_sint64.c (97%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_align_uint16.c (97%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_align_uint32.c (97%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_align_uint64.c (97%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_dbls_struct.c (92%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_double.c
> > (100%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_double_va.c (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_float.c
> > (100%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_longdouble.c (100%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_longdouble_va.c (100%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_many_mixed_args.c (100%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_many_mixed_float_double.c (100%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_multi_schar.c (96%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_multi_sshort.c (96%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_multi_sshortchar.c (96%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_multi_uchar.c (96%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_multi_ushort.c (95%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_multi_ushortchar.c (96%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_pointer.c
> > (100%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_pointer_stack.c (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_schar.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_sint.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_sshort.c
> > (100%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_struct_va1.c (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_uchar.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_uint.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_uint_va.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_ulong_va.c
> > (100%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/cls_ulonglong.c (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/cls_ushort.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/err_bad_abi.c
> > (100%)
> > create mode 100644 libffi/testsuite/libffi.closures/ffitest.h
> > rename libffi/testsuite/{libffi.call => libffi.closures}/huge_struct.c
> > (99%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/nested_struct.c (98%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/nested_struct1.c (98%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/nested_struct10.c (99%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/nested_struct11.c (100%)
> > create mode 100644 libffi/testsuite/libffi.closures/nested_struct12.c
> > rename libffi/testsuite/{libffi.call/nested_struct12.c =>
> > libffi.closures/nested_struct13.c} (88%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/nested_struct2.c (98%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/nested_struct3.c (98%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/nested_struct4.c (100%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/nested_struct5.c (100%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/nested_struct6.c (100%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/nested_struct7.c (100%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/nested_struct8.c (100%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/nested_struct9.c (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/problem1.c
> > (100%)
> > create mode 100644
> > libffi/testsuite/libffi.closures/single_entry_structs1.c
> > create mode 100644
> > libffi/testsuite/libffi.closures/single_entry_structs2.c
> > create mode 100644
> > libffi/testsuite/libffi.closures/single_entry_structs3.c
> > rename libffi/testsuite/{libffi.call => libffi.closures}/stret_large.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/stret_large2.c
> > (100%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/stret_medium.c
> > (98%)
> > rename libffi/testsuite/{libffi.call =>
> > libffi.closures}/stret_medium2.c (98%)
> > rename libffi/testsuite/{libffi.call => libffi.closures}/testclosure.c
> > (95%)
> > rename libffi/testsuite/{libffi.special =>
> > libffi.closures}/unwindtest.cc (95%)
> > rename libffi/testsuite/{libffi.special =>
> > libffi.closures}/unwindtest_ffi_call.cc (94%)
> > delete mode 100644 libffi/testsuite/libffi.special/ffitestcxx.h
> > delete mode 100644 libffi/testsuite/libffi.special/special.exp
> >
> > https://gitlab.com/x86-gcc/gcc/-/commit/667397efc8307e45ca6ddec737b0caf8ca9d0fda
>
> --
> Xi Ruoyao <xry111@mengyan1223.wang>
> School of Aerospace Science and Technology, Xidian University
>
--
H.J.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-08-31 18:24 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-31 15:36 [PATCH 0/4] libffi: Sync with upstream H.J. Lu
2021-08-31 15:36 ` [PATCH 1/4] libffi: Add HOWTO_MERGE, autogen.sh and merge.sh H.J. Lu
2021-08-31 15:36 ` [PATCH 2/4] libffi: Sync with libffi 3.4.2 H.J. Lu
2021-08-31 16:32 ` Xi Ruoyao
2021-08-31 18:24 ` H.J. Lu
2021-08-31 15:36 ` [PATCH 3/4] libffi: Integrate with GCC H.J. Lu
2021-08-31 15:36 ` [PATCH 4/4] libffi: Integrate testsuite with GCC testsuite H.J. Lu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).