commit 1716f81e9a115d340429504563bc8e7fb2eeef2b
Author: Anthony Green <green@moxielogic.com>
Date:   Sat Feb 8 11:32:05 2025 -0500

    feat: remove nios2 support
    
    Acked-by: Anthony Green <green@moxielogic.com>

commit 252c0f463641e6100169c3f0a4a590d7df438278
Author: Anthony Green <green@moxielogic.com>
Date:   Sat Feb 8 09:37:31 2025 -0500

    chore: Bump version to 3.4.7 and update change log

commit adfe4489c17b542216a502efaaf6b0156e2197ab
Author: Kleis Auke Wolthuizen <github@kleisauke.nl>
Date:   Fri Jan 31 21:41:56 2025 +0100

    Emscripten: remove support for `-sWASM_BIGINT=0` (#874)
    
    * Emscripten: cleanup
    
    * Emscripten: remove support for `-sWASM_BIGINT=0`
    
    * Emscripten: remove redundant CircleCI config
    
    * Emscripten: modernize CI
    
    * Ensure test helper methods are static
    
    Similar to #644.
    
    * Fix test failures in `cls_multi_{s,u}shortchar`

commit 2f34cf639cab60123a7725fc9488657766ba665d
Author: Matthew Flatt <mflatt@cs.utah.edu>
Date:   Fri Jan 31 13:40:40 2025 -0700

    x86 Darwin returns structs of size 1, 2, 4, and 8 in registers (#876)

commit a0d8074a672312dbc757320d8bc42e39aa5b3d9a
Author: zye2-sc <140619768+zye2-sc@users.noreply.github.com>
Date:   Fri Jan 31 21:40:00 2025 +0100

    Disable go closures on Android (#877)
    
    * x18 register shouldn't be used on Android due to the shadow call stack feature in llvm
    * https://source.android.com/docs/security/test/shadow-call-stack

commit d77b9fefa25f7f11dcc4e6380c661c4cf2960a85
Author: 杨萧玉 <yulingtianxia@users.noreply.github.com>
Date:   Fri Dec 13 18:38:01 2024 +0800

    Fix config.sub on Apple platforms (#860)
    
    * update config.sub
    
    * update config.sub

commit 593cb01a46e63d5361f2df803947cb657bb4e822
Author: Satadru Pramanik, DO, MPH, MEng <satadru@gmail.com>
Date:   Fri Dec 13 05:37:15 2024 -0500

    Add mold linker to linker checks. (#866)
    
    Signed-off-by: Satadru Pramanik <satadru@gmail.com>

commit f515eac04cf8e5f594d5d9dee5fb7dfc3a186a4c
Author: Icenowy Zheng <uwu@icenowy.me>
Date:   Fri Dec 13 18:36:02 2024 +0800

    MIPS: add .note.GNU-stack section to assembly sources (#872)
    
    To build ELF shared libraries that do not require executable stack on
    MIPS, every object file linked should have a .note.GNU-stack section,
    otherwise the linker defaults to executable stack.
    
    As libffi shouldn't require executable stack, add the .note.GNU-stack
    section to the assembly source files under src/mips, like other
    architectures.
    
    Signed-off-by: Icenowy Zheng <uwu@icenowy.me>

commit 458b2ae2829f1916ea3a3e07c944b4668732290f
Author: Eddy S. <fneddy@users.noreply.github.com>
Date:   Sat Nov 16 13:03:24 2024 +0100

    Add static trampoline support for s390 (#862)
    
    * added static trampoline support for s390
    
    * enable static tramp only for  s390x 64bit

commit 0859f8431242d5adff21420b9cab538d2af527b5
Author: Joseph Myers <jsm@polyomino.org.uk>
Date:   Thu Oct 24 18:26:58 2024 +0000

    Fix testsuite for C23 `va_start` (#861)
    
    In the C23 revision of the C standard, `va_start` ignores its second
    argument, which is no longer required (previously the last named
    function parameter - which the compiler knows anyway, so it's
    redundant information).
    
    This has the consequence for the libffi testsuite, when making GCC
    default to `-std=gnu23`, of making two tests fail with warnings about
    an unused function argument (only passed to `va_start` and not
    otherwise used).  Fix those test failures by explicitly casting the
    argument to `void`.

commit 8308bed5b2423878aa20d7884a99cf2e30b8daf7
Author: Ivan Tadeu Ferreira Antunes Filho <antunesi@google.com>
Date:   Fri Sep 20 06:01:23 2024 -0400

    Move cfi_startproc after CNAME(label) (#857)
    
    This is a fix for https://github.com/libffi/libffi/issues/852: error: invalid CFI advance_loc expression on apple targets.
    
    The CFI for darwin arm64 was broken because the CNAME macro was being used after the
    cfi_startproc macro.

commit 01db744b4af8665f9b7494d00cc2a1cc45ee9636
Author: KJ Tsanaktsidis <kj@kjtsanaktsidis.id.au>
Date:   Fri Sep 20 20:00:49 2024 +1000

    Disable ASAN in ffi_call_int functions (#858)
    
    The pattern for several of the architectures is for ffi_call_int to
    stack-allocate some arguments + the registers, and then
    ffi_call_$ARCH will pop the top of that structure into registers, and
    then adjust the stack pointer such that the alloca'd buffer _becomes_
    the stack-passed arguments for the function being called.
    
    If libffi is compiled with ASAN, then there will be a redzone inserted
    after the alloca'd buffer which is marked as poisoned. This redzone
    appears beyond the end of $sp upon entry to the called function.
    
    If the called function does anything to use this stack memory, ASAN will
    notice that it's poisoned and report an error.
    
    This commit fixes the situation (on the architectures that I have access
    to) disabling instrumentation for ffi_call_int; that means there will be
    no alloca redzone left on the shadow-stack.

commit f7e4992789fa563b4cc74521c37ff703555da21c
Author: Sam James <sam@cmpct.info>
Date:   Fri Sep 20 10:58:06 2024 +0100

    testsuite: fix dejagnu directive typo (#859)

commit 084f36903f56b280283f3f4473a80b8e77727a29
Merge: 92d384d 348e70e
Author: Anthony Green <green@moxielogic.com>
Date:   Sun Sep 15 12:32:58 2024 -0400

    Merge remote-tracking branch 'refs/remotes/origin/master'

commit 92d384df196a099fde384f9178864dbfe8c6b0fc
Author: Anthony Green <green@moxielogic.com>
Date:   Sun Sep 15 12:32:29 2024 -0400

    Fix floating point compare

commit 348e70ef1c785b85e194e47d47b7c4c2b1cec861
Author: Richard Barnes <rbarnes@umn.edu>
Date:   Sun Sep 15 07:39:51 2024 -0400

    Suppress unused variable warning in dlmalloc.c (#843)
    
    Allows `-Wunused-but-set-variable` to pass

commit 30e887f84e70c16df5c421983f074d07a93b4e58
Author: Yuriy Kolerov <ykolerov@synopsys.com>
Date:   Sun Sep 15 14:39:01 2024 +0300

    A series of fixes for ARC port (#844)
    
    * arc: Fix warnings
    
    These warnings are fixed:
    
    1. A series of "unused variables".
    2. Implicit conversion from a pointer to uint32_t.
    
    Signed-off-by: Yuriy Kolerov <ykolerov@synopsys.com>
    
    * arc: Do not use mov_s and movl_s instructions
    
    mov_s and movl_s instructions use a restricted set of registers.
    However, a list of available registers for such instructions for
    one ARC target may not match a list for another ARC targets. For
    example, it is applicable to ARC700 and ARC HS3x/4x - build
    fails because mov_s formats may be incompatible in some cases.
    
    The easiest and the most straightforward way to fix this issue
    is to use mov and movl instead of mov_s and movl_s.
    
    Signed-off-by: Yuriy Kolerov <ykolerov@synopsys.com>
    
    ---------
    
    Signed-off-by: Yuriy Kolerov <ykolerov@synopsys.com>

commit 377a13696928aabc6f0df378ecd25437a1ff1d17
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Sun Sep 15 07:38:22 2024 -0400

    Bump actions/download-artifact from 3 to 4.1.7 in /.github/workflows (#856)
    
    Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4.1.7.
    - [Release notes](https://github.com/actions/download-artifact/releases)
    - [Commits](https://github.com/actions/download-artifact/compare/v3...v4.1.7)
    
    ---
    updated-dependencies:
    - dependency-name: actions/download-artifact
      dependency-type: direct:production
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit c7437f671e20f8864fd98b06f167af6e8ab6514b
Author: Yury V. Zaytsev <yury@shurup.com>
Date:   Sun Sep 15 13:37:28 2024 +0200

    configure: fix shared build on Solaris 10 (#846)
    
    GNU tools are often installed with g-prefix on Solaris. Unfortunately, a check
    in configure was using grep directly instead of through a variable, which lead
    to wrong results due to missing option `-q`. Additionally, the check will fail
    silently if `readelf` is not on `PATH` instead of trying `greadelf`.

commit 63b925fe98058a433c7bda6a6c2c6330b8ac77cd
Author: Anthony Green <green@moxielogic.com>
Date:   Sun Sep 15 07:32:50 2024 -0400

    feat(testsuite): add struct_int_float.c to Makefile.am

commit efb98a72d8b9bdb71b4f972efced073bee3b30fc
Author: Anthony Green <green@moxielogic.com>
Date:   Sun Sep 15 07:31:33 2024 -0400

    Robustify floating point comparison in test

commit d21881f55ed4a44d464c9091871e69b0bb47611a
Author: kellda <59569234+kellda@users.noreply.github.com>
Date:   Sun Sep 15 13:29:42 2024 +0200

    Fix x86/ffi64 calls with 6 gp and some sse registers (#848)
    
    * Fix x86/ffi64 calls with 6 gp and some sse registers
    
    * Add test demonstating issue when mixing gp and sse registers

commit 8a0d029244d9b0393db19898e603f24febfb53ee
Author: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Date:   Sun Sep 15 13:22:36 2024 +0200

    OpenRISC/or1k build fixes (#854)
    
    * src/or1k/ffi.c: fix prototype of ffi_call_SYSV()
    
    The current code base of libffi on OpenRISC (or1k) fails to build with
    GCC 14.x with the following error:
    
    ../src/or1k/ffi.c: In function 'ffi_call':
    ../src/or1k/ffi.c:167:34: error: passing argument 3 of 'ffi_call_SYSV' from incompatible pointer type [-Wincompatible-pointer-types]
      167 |       ffi_call_SYSV(size, &ecif, ffi_prep_args, rvalue, fn, cif->flags);
          |                                  ^~~~~~~~~~~~~
          |                                  |
          |                                  void * (*)(char *, extended_cif *)
    ../src/or1k/ffi.c:113:27: note: expected 'void * (*)(int *, extended_cif *)' but argument is of type 'void * (*)(char *, extended_cif *)'
      113 |                           void *(*)(int *, extended_cif *),
          |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    This is due to the fact that ffi_prep_args() is in fact defined as:
    
      void* ffi_prep_args(char *stack, extended_cif *ecif)
    
    so, let's fix the prototype of the function pointer, which anyway gets
    passed to assembly code, so the typing gets lost.
    
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
    
    * src/or1k/ffi.c: fix incompatible pointer type
    
    The current code base of libffi on OpenRISC (or1k) fails to build with
    GCC 14.x with the following error:
    
    ../src/or1k/ffi.c: In function 'ffi_closure_SYSV':
    ../src/or1k/ffi.c:183:22: error: initialization of 'char *' from incompatible pointer type 'int *' [-Wincompatible-pointer-types]
      183 |   char *stack_args = sp;
          |                      ^~
    
    Indeed:
    
      register int *sp __asm__ ("r17");
      [..]
      char *stack_args = sp;
    
    Adopt the same logic used for:
    
      char *ptr = (char *) register_args;
    
    which consists in casting to the desired pointer type. Indeed, later
    in the code stack_args is assigned to ptr (so they need to be the same
    pointer type), and some arithmetic is done on ptr, so changing its
    pointer type would change the behavior.
    
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
    
    ---------
    
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>

commit 8e3ef965c2d0015ed129a06d0f11f30c2120a413
Author: Anthony Green <green@moxielogic.com>
Date:   Fri Jun 28 04:07:09 2024 -0400

    Fix struct args (Rainer Orth)

commit 9c9e8368e49804c4f7c35ac9f0d7c1d0d533308b
Author: Martin Storsjö <martin@martin.st>
Date:   Tue Jun 4 14:13:08 2024 +0300

    aarch64: Add a missing no-op define of SIGN_LR_LINUX_ONLY (#838)
    
    This is needed at least if building for Linux, with a toolchain
    that doesn't default to having PAC enabled, fixing build errors
    since 45d284f2d066cc3a080c5be88e51b4d934349797.

commit 6993bc14dad1cd24294d64bf91e4503a4d7835d6
Author: Anthony Green <green@moxielogic.com>
Date:   Sat Jun 1 13:42:29 2024 -0400

    Import from upstream

commit 00bf6e679160886cfa12de617ae1640721455ca5
Author: Florian <florian.atteneder@gmail.com>
Date:   Sat Jun 1 19:39:24 2024 +0200

    A fix to the struct type example (#837)
    
    Section 2.3.2 Structures of the docs declare `ffi_type`'s  `elements` field to be of type `ffi_type **`.

commit 45d284f2d066cc3a080c5be88e51b4d934349797
Author: Bill Roberts <152999275+billatarm@users.noreply.github.com>
Date:   Sat Jun 1 12:34:53 2024 -0500

    aarch64: support pointer authentication (#834)
    
    * aarch64: fix callstack in ffi_call_SYSV
    
    The debug stack gets corrupted between the frame and stack pivots, update
    the CFI directives so the call stack stays correct in the debugger.
    
    str     x9, [x1, #32] // stack is ffi_call_SYSV() -> ffi_call_int() -> ffi_call_int() -> main() (good)
    mov     x29, x1       // stack is ffi_call_SYSV() -> ffi_call_int() -> ffi_call_int() -> ffi_call() -> main() (bad)
    mov     sp, x0        // stack is ffi_call_SYSV() -> ffi_call_int() -> ffi_call_int() -> main() (good)
    
    The CFA data needs to be updated around the pivots, after this patch the
    callstack stays correct.
    
    Signed-off-by: Bill Roberts <bill.roberts@arm.com>
    
    * aarch64: remove uneeded CFI directive
    
    This directive doesn't actually set the CFA to anything valid, and
    during unwinding this isn't even used. Note that the PAC/Darwin usage
    is quite suspect as well, as the CFA is either x1 or x29 after the frame
    pivot, and the CFA address is what's used as the modifier when verifying
    the PAC. At least this is the behavior on Linux with PAC, I need to
    verify ARME ABI unwinding. So for now leave Darwin as is.
    
    Signed-off-by: Bill Roberts <bill.roberts@arm.com>
    
    * ptrauth: rename define for clarity
    
    Rename the HAVE_PTRAUTH define for clarity that its associated with the
    ARM64E ABI and not the ARM64 ABI that can be supported on Linux and
    enabled with -mbranch-protection=standard.
    
    Signed-off-by: Bill Roberts <bill.roberts@arm.com>
    
    * aarch64: add PAC support to ffi_call_SYSV
    
    Support AARCH64 Pointer Authentication Codes (PAC) within ffi_call_SYSV
    and support exception unwinding.
    
    The Linux ABI for PAC is to use paciasp/autiasp instructions which also
    have hint space equivelent instructions. They sign the LR (x30) with the
    A key and the current stack pointer as the salt. Note that this can also be
    configured to use the B key and will use pacibsp/autibsp hint instructions.
    
    The Linux ABI for exception frame data when PAC is enabled assumes that the
    Connonical Frame Address, or CFA is equal to the stack pointer. I.E sp is
    equal to x29 (fp). When the unwinder is invoked the cfa will point to
    the frame which will include the *signed* return address from the LR.
    This will then be passed to __builtin_aarch64_autia1716 where the CFA
    will be used as the salt and stored to register x16 and register x17
    will contain the signed address to demangle. This can be noted in:
      - https://github.com/gcc-mirror/gcc/blob/d6d7afcdbc04adb0ec42a44b2d7e05600945af42/libgcc/config/aarch64/aarch64-unwind.h#L56
    
    The other required portion of this is to indicate to the unwinder that
    this is a signed address that needs to go the special demangle route in
    the unwinder. This is accomplished by using CFI directive "cfi_window_save"
    which marks that frame as being signed.
    
    Putting all of this together is a bit tricky, as the internals of
    ffi_call_SYSV the callee allocates its stack and frame and passes it in
    arg1 (x0) and arg2 (x1) to the called function, where that function
    pivots its stack, so care must be taken to get the sp == fp before
    paciasp is called and also restore that state before autiasp is called.
    
    Signed-off-by: Bill Roberts <bill.roberts@arm.com>
    
    ---------
    
    Signed-off-by: Bill Roberts <bill.roberts@arm.com>

commit 38732240c125b6af9db66d940c0725a69292cc49
Author: Bill Roberts <152999275+billatarm@users.noreply.github.com>
Date:   Sat Jun 1 12:33:28 2024 -0500

    ffi: fix spelling mistake (#833)
    
    Signed-off-by: Bill Roberts <bill.roberts@arm.com>

commit f64141ee3f9e455a060bd09e9ab72b6c94653d7c
Author: Bill Roberts <152999275+billatarm@users.noreply.github.com>
Date:   Tue Mar 19 11:44:55 2024 -0500

    Fix bti support (#830)
    
    * bti: add identifier to ffi_closure_SYSV_V_alt
    
    This was missing BTI_C identifier.
    
    Old Code:
    ffi_closure_SYSV_V_alt:
    0000fffff7f70500:   ldr     x17, [sp, #8]
    
    Signed-off-by: Bill Roberts <bill.roberts@arm.com>
    
    * testsuite: fix whitespace in Makefile.am
    
    Signed-off-by: Bill Roberts <bill.roberts@arm.com>
    
    * aarch64: correct comment describing BTI
    
    The comment is incorrect, BTI is enabled per mapping via mprotect with
    PROT_BTI flag set, not per-process. When the loader loads the library,
    if the GNU Notes section is missing this, PROT_BTI will not be enabled
    for that mapping, but is independent of other mappings.
    
    Signed-off-by: Bill Roberts <bill.roberts@arm.com>
    
    ---------
    
    Signed-off-by: Bill Roberts <bill.roberts@arm.com>

commit 3d0ce1e6fcf19f853894862abcbac0ae78a7be60
Author: Anthony Green <green@moxielogic.org>
Date:   Sun Feb 18 09:22:51 2024 -0500

    chore: update version to 3.4.6 and fix long double regression on mips64 and alpha

commit 94eaedb40e67e26d2fa35d1c22d8818f4d9f4c2d
Author: Anthony Green <green@moxielogic.org>
Date:   Sun Feb 18 08:41:04 2024 -0500

    Update sparc64 host

commit e1dcf03b4642e75a1058799a3023e0ebd0024258
Author: Anthony Green <green@moxielogic.org>
Date:   Sun Feb 18 08:02:45 2024 -0500

    Update cfarm hostnames

commit cd78b539125ae615d76df5a57039fe70ebd56c27
Author: Anthony Green <green@moxielogic.org>
Date:   Sun Feb 18 07:48:51 2024 -0500

    Always define long double types.

commit 012fcaf96c87ab617ba34babce9b6b259188fcf0
Author: Anthony Green <green@moxielogic.org>
Date:   Thu Feb 15 08:35:02 2024 -0500

    Update

commit d1597239af492240770692b8e453f0dca70fc551
Author: Anthony Green <green@moxielogic.org>
Date:   Thu Feb 15 08:32:42 2024 -0500

    update copyright year in libffi.texi

commit 91739a1a912476adbf1e0e4dcb091b9a2c5007d9
Author: Anthony Green <green@moxielogic.org>
Date:   Thu Feb 15 08:30:09 2024 -0500

    Update version, copyright and testsuite info.

commit 9752a622d12e696eaf9a4c46d4f09b58bca6bb83
Author: Anthony Green <green@moxielogic.org>
Date:   Thu Feb 15 08:03:21 2024 -0500

    Fix test filename reference

commit 404355317b3314da14a9ead0c0a50c040212e1fc
Author: Anthony Green <green@moxielogic.org>
Date:   Thu Feb 15 08:01:43 2024 -0500

    docs(README): update release details for libffi-3.4.5

commit 04f6fa310ddec494cfcf32fd3685cefe35a8d2a2
Author: Xi Ruoyao <xry111@xry111.site>
Date:   Thu Feb 15 20:52:13 2024 +0800

    mips: Fix N32 ABI return value handling (#813)
    
    In N32 ABI, 8-bit or 16-bit integers should be extended following the
    signedness of the integer, but 32-bit integers should always be
    sign-extended to 64-bit (note that N32 ABI only works on 64-bit CPUs).
    
    So handling this in everything using libffi would be nasty.  And the
    libffi code for architectures with a similar rule (LoongArch & RISC-V)
    also properly handle this.  Let's do this work in libffi for MIPS N32
    too.
    
    This fixes two failures in Python 3.12.1 ctypes test.

commit 00c0c87773910a320d82f026bb481eea31b50206
Author: 杨屿杰 <30362409+scylaac@users.noreply.github.com>
Date:   Thu Feb 15 20:51:40 2024 +0800

    Fix loongarch64 soft-float build (#816) (#817)

commit b3091029ed85339c856224c243826022ae93c041
Author: Hood Chatham <roberthoodchatham@gmail.com>
Date:   Thu Feb 15 04:51:12 2024 -0800

    Emscripten: Don't unbox single element structs if they are larger than 16 bytes (#818)
    
    This arguably is a compensation for a Python ctypes bug / strange behavior
    described here:
    https://github.com/python/cpython/blob/a16a9f978f42b8a09297c1efbf33877f6388c403/Modules/_ctypes/stgdict.c#L718-L779
    
    If a struct is larger than 16 bytes, Python does not bother to accurately report
    its contents figuring that we don't need to know.

commit 98881ecb8eec6d5f2beaaced96d9f625b0dee499
Author: Bill Roberts <152999275+billatarm@users.noreply.github.com>
Date:   Thu Feb 15 06:50:40 2024 -0600

    aarch64: add BTI flag to ELF notes (#822)
    
    When a program is loaded and linked, the first ELF file that doesn't
    declare that BTI is supported in the GNU NOTES section disables BTI
    support.
    
    Example:
    readelf -n ./aarch64-unknown-linux-gnu/.libs/libffi.so
    Displaying notes found in: .note.gnu.property
      Owner                Data size        Description
      GNU                  0x00000010       NT_GNU_PROPERTY_TYPE_0
          Properties: AArch64 feature: BTI
    
    Fixes: #823
    
    Signed-off-by: Bill Roberts <bill.roberts@arm.com>

commit f9da12e944c947e797e5f3a98f3860c2a0ed055e
Author: Dan Horák <dan@danny.cz>
Date:   Thu Feb 15 13:50:13 2024 +0100

    don't skip ffi_type_longdouble symbols (#814) (#824)
    
    Seems there are configurations (ppc64 or ppc64le) that define
    HAVE_LONG_DOUBLE_VARIANT in fficonfig.h, but do not define
    HAVE_LONG_DOUBLE, and still want ffi_type_{,complex_}longdouble
    symbols. Update the condition in libffi.map.in accordingly.

commit f8ed78f1b2e65f2741455612d38477424e321850
Author: Xi Ruoyao <xry111@xry111.site>
Date:   Thu Feb 15 20:49:27 2024 +0800

    LoongArch: Fix a build error with GCC 14 (#825)
    
    Fix the build error with GCC 14:
    
        ../src/loongarch64/ffi.c: In function 'ffi_prep_closure_loc':
        ../src/loongarch64/ffi.c:525:7: error: implicit declaration of
        function 'ffi_tramp_set_parms' [-Wimplicit-function-declaration]

commit 0b1dd62bef4192b61153182f7687edf7e885611c
Author: bartoli <perso.olivier.barthelemy@gmail.com>
Date:   Thu Feb 1 04:54:57 2024 +0100

    Update README.md (#820)
    
    For cygwin/MSVC build, CXXCPP is also needed to pass configure checks

commit c07c40ee9444e029bc595860a669de32b7af282a
Author: Anthony Green <green@moxielogic.org>
Date:   Wed Jan 31 22:43:38 2024 -0500

    `feat(github-actions): add new build workflow for warp`

commit 622caabcd25f4e11f752241417d06c9062acdf1f
Author: Chongyun Lee <45286352+licy183@users.noreply.github.com>
Date:   Sun Dec 24 23:38:32 2023 +0800

    Put more optional symbols behind ifdefs (#812)

commit a1c391bd8e604c611c7e9c8f6705dc723d403eb5
Author: Виктор Чернякин <56512186+LocalSpook@users.noreply.github.com>
Date:   Fri Dec 22 03:30:50 2023 -0700

    Fix a variety of warnings (#811)

commit 3a62a08af7bd0b5d540a087590dc54cdc312416b
Author: Anthony Green <green@moxielogic.org>
Date:   Thu Dec 21 15:19:44 2023 -0500

    Remove warnings

commit d96fa2117cc6ca2923de9a2f34311ef0219b7590
Author: Anthony Green <green@moxielogic.org>
Date:   Thu Dec 21 14:04:19 2023 -0500

    Eliminate warning

commit 5b1944b4ce4b03e28a5843d36812756168d66b08
Author: Martin Storsjö <martin@martin.st>
Date:   Wed Nov 29 00:38:13 2023 +0200

    aarch64: Write the BTI instructions as "hint" instructions (#810)
    
    GNU binutils refuses to assemble the direct BTI instructions unless
    the target architecture explicitly supports BTI, ending up with errors
    such as
    
        ../src/aarch64/sysv.S: Assembler messages:
        ../src/aarch64/sysv.S:87: Error: selected processor does not support `bti c'
        ../src/aarch64/sysv.S:156: Error: selected processor does not support `bti j'
    
    Building with -march=armv8.5-a fixes building this.
    
    However, the BTI instructions assemble into hint instructions, that
    are ignored by processors that don't implement them. Therefore it is
    possible to assemble them for the baseline armv8.0-a target as well,
    by replacing "bti j" with "hint #36", "bti c" with "hint #34" and
    "bti jc" with "hint #38"; this assembles into the same instruction
    bits.

commit 11af2196d5f4e8c756758cf86e4ab79dda89f405
Author: Anthony Green <green@moxielogic.org>
Date:   Thu Nov 23 09:22:20 2023 -0500

    Reference recent changes

commit d7f5e98b437a242ac712cda8df3e47b205339711
Author: David Tenty <daltenty.dev@gmail.com>
Date:   Thu Nov 23 09:16:56 2023 -0500

    Fix visibility check for AIX (#804)

commit 7f960d9a062fab0624302e9f63ef8b025f51dd10
Author: David Tenty <daltenty.dev@gmail.com>
Date:   Thu Nov 23 09:16:35 2023 -0500

    [powerpc][AIX] fix layout issues for nested struct types (#805)
    
    * [powerpc][AIX] fix layout issues for nested struct types
    
    On AIX under the default power alignment rules, the layout
    of struct types which are nested inside other structs may
    be different than the layout of those types on their own.
    
    Specifically the first member double rules which would
    apply an eight byte alignment if that type appears in the
    first position of a struct:
    
     1) apply recursively if the struct appear in the first member
        of another struct
     2) do not apply if that struct is itself a member of another struct
        and not the first member.
    
    The current implementation of the rules in libffi doesn't handle these
    cases, causing a mismatch with the compiler and causing some crashes
    we see when OpenJ9 is used with libffi on AIX.
    
    This PR corrects this and adds some representative test cases.
    
    * Fix code style
    
    * Add a size check
    
    * Add additional test
    
    * Fix padding in internal structs
    
    * Flip condition back to original form
    
    * Add a comment

commit d93c0be8a0f11f207e8232770c5f0590406efad1
Author: Tobias Heider <tobias.heider@stusta.de>
Date:   Thu Nov 23 15:15:29 2023 +0100

    Add bti intructions to aarch64 assembly to work with strict (#808)
    
    BTI enforcement on OpenBSD.

commit adbcf2b247696dde2667ab552cb93e0c79455c84
Author: Daily Price Depot Droid <anthony@atgreen.org>
Date:   Sat Oct 21 09:58:28 2023 -0400

    Disable firefox testing

commit 357755eef44735676de1cec458192c7784fb3aa8
Author: Daily Price Depot Droid <anthony@atgreen.org>
Date:   Sat Oct 21 09:05:48 2023 -0400

    Try logging

commit c23e9a1c81a84ea4804d001865845b25ff8d4c8a
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
Date:   Sat Oct 21 20:44:24 2023 +0900

    Check if FFI_GO_CLOSURES is defined (#796)
    
    This macro is always defined to 1 if defined, or undefined.
    With `-Wundef` option, checking the value without checking if it is defined causes warnings:
    
    ```
    /opt/local/include/ffi.h:477:5: warning: 'FFI_GO_CLOSURES' is not defined, evaluates to 0 [-Wundef]
    #if FFI_GO_CLOSURES
        ^
    ```

commit a4be0b7210b5a7fd67770d2f4d63105900bc459a
Author: Yn0ga <ynoga@protonmail.com>
Date:   Sat Oct 21 13:43:43 2023 +0200

    Add support for Haikuos on PowerPC (#799)

commit dd90749505559d38abb339f1a1cd03791a9dc484
Author: Petr Sumbera <sumbera@volny.cz>
Date:   Sat Oct 21 13:42:11 2023 +0200

    Fix passing floating point arguments on 64bits SPARC (libffi#778) (#802)

commit 44f6fa3e526c920c61c8ac10661f447ccfe30872
Author: Alfred Wingate <parona@protonmail.com>
Date:   Fri Oct 20 15:02:37 2023 +0300

    Put optional symbols behind ifdefs (#800)
    
    Signed-off-by: Alfred Wingate <parona@protonmail.com>

commit 5c6e53db873767cd2266745cebc62551958f5bee
Author: Michael Osipov <1983-01-06@gmx.net>
Date:   Mon Sep 4 13:27:01 2023 +0200

    Fix build failures on HP-UX (#792)
    
    This fixes #328
    
    Co-authored-by: Chris Hunt <chrahunt@gmail.com>

commit 1b3e7569fe114fc7d7779e35704b8519fe65fd4d
Author: Russell Keith-Magee <russell@keith-magee.com>
Date:   Mon Sep 4 19:26:11 2023 +0800

    Replace use of triple with target, and explicitly specify build host to force cross-compilation (#794)

commit 22b50e896a80171648439497041afe3b6dba1c08
Author: Anthony Green <green@moxielogic.com>
Date:   Thu Aug 31 16:31:42 2023 -0400

    Fix python and pyodide version

commit 4467a3bc350bca106aee2c55cbb19ffffb144d1b
Author: Anthony Green <green@moxielogic.com>
Date:   Thu Aug 31 08:48:50 2023 -0400

    Upgrade pyodide version to match newer selenium API

commit 1d0a28ab5a2ee2e12b0650d69184d561cd1fd83c
Author: Ivan Tadeu Ferreira Antunes Filho <itadeufa@gmail.com>
Date:   Sat Aug 12 09:02:39 2023 -0400

    Make label private on apple (#788)
    
    Private labels on apple must start with L prefix, while on ELF they start with .L prefix.
    This makes the label start with L on apple instead of .L.

commit 9e8f1bd8de39ee90a73c6927e2df18a418f6da55
Author: Hood Chatham <roberthoodchatham@gmail.com>
Date:   Tue Jun 20 21:17:04 2023 -0700

    Emscripten build: Remove -sSTRICT_JS (#781)
    
    This rasies errors on newer versions of the emscripten compiler.

commit ac598b7f5272d536b75f4b3833a4610cf4cd9404
Merge: 2d63cee 8bdd471
Author: Anthony Green <green@moxielogic.com>
Date:   Mon Apr 3 08:20:32 2023 -0400

    Merge branch 'master' of github.com:/libffi/libffi

commit 2d63cee0e2154bb9027cff71f780cfaa2f543567
Author: Anthony Green <green@moxielogic.com>
Date:   Mon Apr 3 08:18:23 2023 -0400

    Add tests with homogeneous aggregate types

commit 8bdd4716e5974ee0b28b3c09db1eaa9e8833481e
Author: Hood Chatham <roberthoodchatham@gmail.com>
Date:   Sun Apr 2 19:54:22 2023 -0700

    More accurate explanation of wasm32 state in readme (#776)
    
    There are three main wasm32 target triples:
    * wasm32-unknown-unknown
    * wasm32-unknown-emscripten
    * wasm32-unknown-wasi
    
    The wasm32 port is only for the wasm32-unknown-emscripten target triple.
    (The other triples have no dynamic linking support so libffi would be both
    hard to port and of limited utility.)

commit f08493d249d2067c8b3207ba46693dd858f95db3
Author: Anthony Green <green@moxielogic.com>
Date:   Fri Feb 17 20:35:44 2023 -0500

    Mention ARCv3 work

commit c4df19c99f8d8841942e3edaadbf331d30e298c8
Author: Claudiu Zissulescu <claziss@gmail.com>
Date:   Sat Feb 18 03:33:47 2023 +0200

    Update ARC's libffi port (#771)
    
    * Add support for ARC and ARC64
    
    Add support for ARC/ARC32/ARC64
    
    * Implementation of GO Closure for ARC/ARC32/ARC64 Architectures
    
    ---------
    
    Co-authored-by: Nuno Cardoso <cardoso@synopsys.com>
    Co-authored-by: Luis Silva <luiss@synopsys.com>

commit 237520649730cb21daf4ebff1cf9a0a64f8507f8
Author: Anthony Green <green@moxielogic.com>
Date:   Thu Feb 9 12:23:35 2023 -0500

    Normalize libffi labels

commit ca26801567e9ce19c83f132c6a116d3d25d3b8a1
Author: Anthony Green <green@moxielogic.com>
Date:   Thu Feb 9 10:31:22 2023 -0500

    Use rlgl

commit 7d23c2d28e884ad5978e0974ad2443570940d393
Author: Hood Chatham <roberthoodchatham@gmail.com>
Date:   Thu Feb 9 06:01:37 2023 -0800

    Add emscripten gha workflow (#768)
    
    Resolves issue #767

commit 883f5ae665bf96008a7a56bf4d6c64cb05c68272
Author: Anthony Green <green@moxielogic.com>
Date:   Sun Feb 5 09:51:37 2023 -0500

    Rename label

commit 678dad5abe6c95ffa087b799922c2114b18c8541
Author: Hood Chatham <roberthoodchatham@gmail.com>
Date:   Thu Feb 2 14:48:07 2023 -0800

    Use libffi-dg-prune to handle Emscripten INFO messages rather than patching emcc.py (#766)

commit 7d03d3a3150c5c1ff70753edaa880bb5d57ae566
Author: Anthony Green <green@moxielogic.com>
Date:   Thu Feb 2 16:09:14 2023 -0500

    Mention wasm32

commit c267c72fa803316e95462f16bf1e3d6d5d55612c
Author: Anthony Green <green@moxielogic.com>
Date:   Thu Feb 2 16:04:34 2023 -0500

    Modernize

commit 2687cfc5329d08d6bd4d397c1ca8eb0d171e22fd
Author: Hood Chatham <roberthoodchatham@gmail.com>
Date:   Thu Feb 2 09:10:00 2023 -0800

    Add wasm32 emscripten support (#763)
    
    * added build script
    
    * Apply libffi-emscripten patch
    
    * Some changes to wasm32/ffi.c
    
    * Remove exit(0); from test suites
    
    * Fix LONGDOUBLE argument type
    
    * Use more macros in ffi.c
    
    * Use switch statements instead of if chains
    
    * Implemented struct args
    
    * Finish struct implementation
    
    * Partially working closures
    
    * Got closures working (most of closures test suite passes)
    
    * Revert changes to test suite
    
    * Update .gitignore
    
    * Apply code formatter
    
    * Use stackSave and stackRestore rather than directly adjusting stack pointer
    
    * Add missing break
    
    * Fix visibility of ffi_closure_alloc and ffi_closure_free
    
    * Fix FFI_TYPE_STRUCT and FFI_TYPE_LONGDOUBLE when WASM_BIGINT is not used
    sig needs to be vi here for FFI_TYPE_STRUCT and FFI_TYPE_LONGDOUBLE, noticed this while running the test suite without WASM_BIGINT support.
    
    * Always use dynCall rather than direct wasmTable lookup (function pointer cast emulation changes dynCall)
    
    * Prevent closures.c from duplicating symbols
    
    * Try to set up CI
    
    * Add test with bigint
    
    * Make test methods static
    
    * Remove BigInt shorthand because it messes up terser
    
    * Add selenium tests
    
    * Update tests a bit to try to make CI work
    
    * WASM_BIGINT is a linker flag not a compile flag
    
    * Finish getting CI working (#1)
    
    * update gitignore
    
    * Avoid adding "use strict;" to generated JS
    
    This should be controlled by -s STRICT_JS in Emscripten.
    
    * Make JavaScript ES5 compliant
    
    * Remove redundant EXPORTED_RUNTIME_METHODS settings
    
    * Fix definition of DEREF_I16
    
    * Avoid marshalling FFI_TYPE_LONGDOUBLE when WASM_BIGINT is not used
    
    * Add missing FFI_TYPE_STRUCT signature
    
    * Improve test scripts
    
    * Remove redundant EXPORTED_RUNTIME_METHODS settings
    
    * Add missing EOL
    
    * Add struct unpacking tests
    
    * Update ci config to try to actually use WASM_BIGINT
    
    * Revert "Avoid marshalling FFI_TYPE_LONGDOUBLE when WASM_BIGINT is not used"
    
    This reverts commit 61bd5a3e20891623715604581b6e872ab3dfab80.
    
    * Fix single_entry_structs tests
    
    * Fix return from closure call
    
