mbox series

[0/4] libffi: Sync with upstream

Message ID 20210831153659.3756892-1-hjl.tools@gmail.com
Headers show
Series libffi: Sync with upstream | expand

Message

H.J. Lu Aug. 31, 2021, 3:36 p.m. UTC
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

Comments

H.J. Lu Aug. 31, 2021, 3:36 p.m. UTC | #1
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 Aug. 31, 2021, 4:32 p.m. UTC | #2
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
H.J. Lu Aug. 31, 2021, 6:24 p.m. UTC | #3
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
>