From patchwork Tue Aug 31 15:36:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 1522682 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha256 header.s=default header.b=EgFgzTYT; dkim-atps=neutral Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4GzWc06FQ5z9s24 for ; Wed, 1 Sep 2021 01:40:32 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id ACDF13857C7A for ; Tue, 31 Aug 2021 15:40:30 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org ACDF13857C7A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1630424430; bh=BWZyygQKr+dFaaEFsDFfKK7dSt4l4Q8z2A5Fzyfko+U=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=EgFgzTYTQDAHn4a2sbRU8w4/RPh76sEA6omRUr4G4S8RTxTc5YuzzRePleU1Y23p8 Wfy498N9ENfgee06/nFTAlYbtGMx/sW5uv2iYPuv8bclIB37NHW3t3IX+zVIi2gH/q ew7VwOrN+0zIi/IW9AHEx26MbUcLMHFLmeMkTv7s= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-pg1-x52f.google.com (mail-pg1-x52f.google.com [IPv6:2607:f8b0:4864:20::52f]) by sourceware.org (Postfix) with ESMTPS id 5CAA53858426 for ; Tue, 31 Aug 2021 15:37:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 5CAA53858426 Received: by mail-pg1-x52f.google.com with SMTP id r2so17086012pgl.10 for ; Tue, 31 Aug 2021 08:37:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=BWZyygQKr+dFaaEFsDFfKK7dSt4l4Q8z2A5Fzyfko+U=; b=WQU8uqT9tEVh9KkAXpNiBHvAW66/3iBOZ35F+Rw5jcOF0xQViuR55uekyiJWdMOjjU tRTOJR7eVurmOEPVcYxqw20njWZVR41puRwpnFmMHgyrAwE8ORByI/+5GQfYLfV49EAT m1BX7D/SktIDKkgquEwk54Y7Mjx0Q25L24IcDBAqeCmZ1qBZDJPuF9upiSnGQpqpSGrM BtHf23fuZt0igY1vS8k4PDlXYr89tBbDF73Z+GjCjaysDeGRg6uakTxytwkeWpoyd4wt Vjvz/Ar4CcmWbLXwGcEg3xBi7b9DsLZicoc4M2NuG6Hw2g5EXpLFw4QXayZ40NreZiZc NB3A== X-Gm-Message-State: AOAM533msJdhN0uDKw0B5SAuJMgAUx5zg5e6kIL+bpG4dIBn68/EQCCF kcmYxS/cy8sxGvOIErb04jFdfm2+c4w= X-Google-Smtp-Source: ABdhPJw9deSsQ7neDH96cg46tXIkAr8cpSftcuW+DdeLXN7TI2E7n2XRV6ZZX6yBitaxU4fLvC2mdA== X-Received: by 2002:a05:6a00:15c4:b0:3eb:2447:97bd with SMTP id o4-20020a056a0015c400b003eb244797bdmr29725893pfu.4.1630424223157; Tue, 31 Aug 2021 08:37:03 -0700 (PDT) Received: from gnu-cfl-2.localdomain ([172.58.38.240]) by smtp.gmail.com with ESMTPSA id f5sm17908356pfn.134.2021.08.31.08.37.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Aug 2021 08:37:01 -0700 (PDT) Received: from gnu-cfl-2.. (localhost [IPv6:::1]) by gnu-cfl-2.localdomain (Postfix) with ESMTP id C119CC02C9; Tue, 31 Aug 2021 08:36:59 -0700 (PDT) To: gcc-patches@gcc.gnu.org Subject: [PATCH 0/4] libffi: Sync with upstream Date: Tue, 31 Aug 2021 08:36:55 -0700 Message-Id: <20210831153659.3756892-1-hjl.tools@gmail.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 X-Spam-Status: No, score=-3023.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, RCVD_IN_ABUSEAT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: "H.J. Lu via Gcc-patches" From: "H.J. Lu" Reply-To: "H.J. Lu" Cc: Jakub Jelinek Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org Sender: "Gcc-patches" 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