On Wed, Oct 13, 2021 at 5:45 AM Richard Biener
<[email protected]> wrote:
>
> On Thu, Sep 2, 2021 at 5:50 PM H.J. Lu <[email protected]> wrote:
> >
> > Change in the v2 patch:
> >
> > 1. Disable static trampolines by default.
> >
> >
> > 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/15e80c879c571f79a0e57702848a9df5fba5be2f
> > 4. Integrate libffi build and testsuite with GCC.
>
> How did you test this? It looks like libgo is the only consumer of
> libffi these days.
> In particular go/libgo seems to be supported on almost all targets besides
> darwin/windows - did you test cross and canadian configurations?
I only tested it on Linux/i686 and Linux/x86-64. My understanding is that
the upstream libffi works on Darwin and Windows.
> I applaud the attempt to sync to upsteam but I fear you won't get any "review"
> of this massive diff.
I believe that it should just work. Our libffi is very much out of date.
> I suppose the SONAME changes after the sync?
Yes, SONAME is synced with upstream which was updated.
> Thanks,
> Richard.
>
> > H.J. Lu (4):
> > libffi: Add HOWTO_MERGE, autogen.sh and merge.sh
> > libffi: Sync with libffi 3.4.2
> > libffi: Integrate build 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
> >
--
H.J.