Branch :
| Author | Commit | Date | CI | Message |
|---|---|---|---|---|
| 9ee7341d | 2025-05-26 08:19:32 | feat(README): add details for next version release in history section | ||
| 4094362f | 2025-05-26 08:19:15 | refactor: enhance assembler pseudo-ops and compiler flag checking | ||
| be4e59e3 | 2025-05-26 08:19:00 | chore: update version to 3.5.0 and libtool version to 10:0:2 | ||
| dc9b1332 | 2025-05-26 08:18:40 | chore: update Makefile.am configurations | ||
| c9a3a06f | 2025-05-26 08:18:13 | feat(libffi): upgrade to version 3.5.0 and add version API | ||
| 64d5e122 | 2025-05-25 16:09:59 | docs: update required installations in README.md | ||
| 5b253476 | 2025-05-25 13:33:51 | chore(testsuite): remove mingw64-align.c from Makefile and delete file | ||
| f9c60855 | 2025-05-24 08:11:37 | Add custom github issue labels for gail | ||
| c6f16105 | 2025-04-27 08:59:12 | feat(testsuite): add mingw64-align.c to test alignment in structs | ||
| 571177ad | 2025-04-27 08:30:35 | feat(testsuite): add longjmp test to Makefile and implement longjmp test code | ||
| 562cb53b | 2025-04-25 05:07:57 | Add initializer (#904) | ||
| aea22de2 | 2025-04-18 10:09:45 | powerpc: Fix closures on powerpc64-linux when statically linking (#900) (#902) Closures on powerpc64-linux using static trampolines do not work when statically linking libffi. The problem is the usage of tramp_globals.text in libffi assumes it contains the entry point address of the first trampoline. Powerpc's ffi_tramp_arch code returns &trampoline_code_table which for ABIs that use function descriptors, ends up returning trampoline_code_table's function descriptor address instead of its entry point address. Update the code to always return the entry point address for all ABIs. | ||
| a431b478 | 2025-04-15 10:30:27 | pa: add .note.GNU-stack marker to linux.S (#899) Similarly to f515eac04cf8e5f594d5d9dee5fb7dfc3a186a4c, add a .note.GNU-stack marker to pa/linux.S as it doesn't need an executable stack. Absence of the note means that GNU Binutils will consider it as needing an executable stack and mark it as such automatically. When building libffi on HPPA with `-Wl,--warn-warn-execstack`, we get: ``` ld: warning: src/pa/.libs/linux.o: missing .note.GNU-stack section implies executable stack ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker ``` That becomes more problematic with glibc-2.41 which forbids dlopen() of a library with an executable stack, and libffi is commonly dlopen()'d, especially by Python. I suspect the reason it didn't show up on Debian is that since February, Debian has been building Binutils with --disable-default-execstack. Bug: https://bugs.gentoo.org/953805 Bug: https://github.com/libffi/libffi/issues/898 | ||
| 6a99edb8 | 2025-04-10 03:44:45 | testsuite: add two tests to Makefile.am (#893) * Add libffi.call/overread.c and libffi.call/x32.c to Makefile.am so they're included in dist tarballs * Fix indentation and rewrap | ||
| bfb5b005 | 2025-04-09 10:32:42 | feat: Update version of libffi to 3.4.8 with various fixes and enhancements | ||
| 3429ed6b | 2025-04-08 05:52:37 | powerpc: Add static trampoline support (#894) (#895) Add static trampoline support to all three powerpc Linux ABIs, specifically powerpc-linux (32-bit SYSV BE), powerpc64-linux (64-bit ELFv1 BE) and powerpc64le-linux (64-bit ELFv2 LE). This follows the s390x implementation and does not introduce a ffi_closure_*_alt function, but rather jumps directly to the ffi_closure_* function itself. If compiling with --with-gcc-arch=power10 and pc-relative is enabled, we use a simpler and smaller trampoline that utilizes Power10's new pc-relative load instructions. | ||
| bb1a84ed | 2025-03-30 12:07:59 | Add the "ABI_ATTR" attribute to called functions (#891) (#892) I accidentally omitted the "ABI_ATTR" attribute, so that the testsuite fails when testing the Microsoft ABI. Fixes: fe203ffbb2bd ("Fix bugs in the x86-64 and x32 target (#887) (#889)") Signed-off-by: Mikulas Patocka <mikulas@twibright.com> | ||
| fe203ffb | 2025-03-27 01:31:49 | Fix bugs in the x86-64 and x32 target (#887) (#889) This commit fixes two bugs in ffi in the x86-64 target. The bugs were introduced by the commit d21881f55ed4a44d464c9091871e69b0bb47611a ("Fix x86/ffi64 calls with 6 gp and some sse registers"). The first bug is that when we pass an argument with less than 8 bytes, ffi will read memory beyond argument end, causing a crash if the argument is located just before the end of the mapped region. The second bug is in the x32 ABI - pointers in x32 are 4-byte, but GCC assumes that the pointer values in the registers are zero-extended. ffi doesn't respect this assumption, causing crashes in the called library. For example, when we compile this function for x32: int fn(int *a) { if (a) return *a; return -1; } we get this code: fn: testq %rdi, %rdi je .L3 movl (%edi), %eax ret .L3: movl $-1, %eax ret When we call this function using ffi with the argument NULL, the function crashes because top 4 bytes of the RDI register are not cleared. Fixes: d21881f55ed4 ("Fix x86/ffi64 calls with 6 gp and some sse registers (#848)") Signed-off-by: Mikulas Patocka <mikulas@twibright.com> | ||
| cf69efab | 2025-03-08 14:41:02 | Update the Simple Example to fix a compile error (#886) Fixes the following error: candidate function not viable: no known conversion from 'int (const char *)' to 'void (*)()' for 2nd argument | ||
| 89c99d73 | 2025-02-28 22:10:10 | MIPS: Dont import asm/sgidefs.h on linux (#885) Removed from Linux since Linux 3.7 Ref: https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=61730c538f8281efa7ac12596da9f3f9a31b9272 | ||
| 5ceddf40 | 2025-02-20 04:25:21 | aarch64: add PAC to GNU Notes (#882) While PAC was enabled, the bit to indicate support in the GNU Notes section of the ELF was missing. Before: 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 This was caused by this file not having PAC indicated in GNU Notes and the linker discarding it: File: ./aarch64-unknown-linux-gnu/src/aarch64/sysv.o Displaying notes found in: .note.gnu.property Owner Data size Description GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 Properties: AArch64 feature: BTI Now it has it: File: ./aarch64-unknown-linux-gnu/src/aarch64/sysv.o Displaying notes found in: .note.gnu.property Owner Data size Description GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 Properties: AArch64 feature: BTI, PAC As well as the output shared object: 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, PAC Fixes: #881 Signed-off-by: Bill Roberts <bill.roberts@arm.com> | ||
| 1716f81e | 2025-02-08 11:32:05 | feat: remove nios2 support Acked-by: Anthony Green <green@moxielogic.com> | ||
| 252c0f46 | 2025-02-08 09:37:31 | chore: Bump version to 3.4.7 and update change log | ||
| adfe4489 | 2025-01-31 21:41:56 | 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` | ||
| 2f34cf63 | 2025-01-31 13:40:40 | x86 Darwin returns structs of size 1, 2, 4, and 8 in registers (#876) | ||
| a0d8074a | 2025-01-31 21:40:00 | 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 | ||
| d77b9fef | 2024-12-13 18:38:01 | Fix config.sub on Apple platforms (#860) * update config.sub * update config.sub | ||
| 593cb01a | 2024-12-13 05:37:15 | Add mold linker to linker checks. (#866) Signed-off-by: Satadru Pramanik <satadru@gmail.com> | ||
| f515eac0 | 2024-12-13 18:36:02 | 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> | ||
| 458b2ae2 | 2024-11-16 13:03:24 | Add static trampoline support for s390 (#862) * added static trampoline support for s390 * enable static tramp only for s390x 64bit | ||
| 0859f843 | 2024-10-24 18:26:58 | 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`. | ||
| 8308bed5 | 2024-09-20 06:01:23 | 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. | ||
| 01db744b | 2024-09-20 20:00:49 | 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. | ||
| f7e49927 | 2024-09-20 10:58:06 | testsuite: fix dejagnu directive typo (#859) | ||
| 084f3690 | 2024-09-15 12:32:58 | Merge remote-tracking branch 'refs/remotes/origin/master' | ||
| 92d384df | 2024-09-15 12:32:29 | Fix floating point compare | ||
| 348e70ef | 2024-09-15 07:39:51 | Suppress unused variable warning in dlmalloc.c (#843) Allows `-Wunused-but-set-variable` to pass | ||
| 30e887f8 | 2024-09-15 14:39:01 | 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> | ||
| 377a1369 | 2024-09-15 07:38:22 | 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> | ||
| c7437f67 | 2024-09-15 13:37:28 | 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`. | ||
| 63b925fe | 2024-09-15 07:32:50 | feat(testsuite): add struct_int_float.c to Makefile.am | ||
| efb98a72 | 2024-09-15 07:31:33 | Robustify floating point comparison in test | ||
| d21881f5 | 2024-09-15 13:29:42 | 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 | ||
| 8a0d0292 | 2024-09-15 13:22:36 | 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> | ||
| 8e3ef965 | 2024-06-28 04:07:09 | Fix struct args (Rainer Orth) | ||
| 9c9e8368 | 2024-06-04 14:13:08 | 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. | ||
| 6993bc14 | 2024-06-01 13:42:29 | Import from upstream | ||
| 00bf6e67 | 2024-06-01 19:39:24 | 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 **`. | ||
| 45d284f2 | 2024-06-01 12:34:53 | 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> | ||
| 38732240 | 2024-06-01 12:33:28 | ffi: fix spelling mistake (#833) Signed-off-by: Bill Roberts <bill.roberts@arm.com> | ||
| f64141ee | 2024-03-19 11:44:55 | 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> | ||
| 3d0ce1e6 | 2024-02-18 09:22:51 | chore: update version to 3.4.6 and fix long double regression on mips64 and alpha | ||
| 94eaedb4 | 2024-02-18 08:41:04 | Update sparc64 host | ||
| e1dcf03b | 2024-02-18 08:02:45 | Update cfarm hostnames | ||
| cd78b539 | 2024-02-18 07:48:51 | Always define long double types. | ||
| 012fcaf9 | 2024-02-15 08:35:02 | Update | ||
| d1597239 | 2024-02-15 08:32:42 | update copyright year in libffi.texi | ||
| 91739a1a | 2024-02-15 08:30:09 | Update version, copyright and testsuite info. | ||
| 9752a622 | 2024-02-15 08:03:21 | Fix test filename reference | ||
| 40435531 | 2024-02-15 08:01:43 | docs(README): update release details for libffi-3.4.5 | ||
| 04f6fa31 | 2024-02-15 20:52:13 | 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. | ||
| 00c0c877 | 2024-02-15 20:51:40 | Fix loongarch64 soft-float build (#816) (#817) | ||
| b3091029 | 2024-02-15 04:51:12 | 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. | ||
| 98881ecb | 2024-02-15 06:50:40 | 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> | ||
| f9da12e9 | 2024-02-15 13:50:13 | 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. | ||
| f8ed78f1 | 2024-02-15 20:49:27 | 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] | ||
| 0b1dd62b | 2024-02-01 04:54:57 | Update README.md (#820) For cygwin/MSVC build, CXXCPP is also needed to pass configure checks | ||
| c07c40ee | 2024-01-31 22:43:38 | `feat(github-actions): add new build workflow for warp` | ||
| 622caabc | 2023-12-24 23:38:32 | Put more optional symbols behind ifdefs (#812) | ||
| a1c391bd | 2023-12-22 03:30:50 | Fix a variety of warnings (#811) | ||
| 3a62a08a | 2023-12-21 15:19:44 | Remove warnings | ||
| d96fa211 | 2023-12-21 14:04:19 | Eliminate warning | ||
| 5b1944b4 | 2023-11-29 00:38:13 | 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. | ||
| 11af2196 | 2023-11-23 09:22:20 | Reference recent changes | ||
| d7f5e98b | 2023-11-23 09:16:56 | Fix visibility check for AIX (#804) | ||
| 7f960d9a | 2023-11-23 09:16:35 | [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 | ||
| d93c0be8 | 2023-11-23 15:15:29 | Add bti intructions to aarch64 assembly to work with strict (#808) BTI enforcement on OpenBSD. | ||
| adbcf2b2 | 2023-10-21 09:58:28 | Disable firefox testing | ||
| 357755ee | 2023-10-21 09:05:48 | Try logging | ||
| c23e9a1c | 2023-10-21 20:44:24 | 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 ^ ``` | ||
| a4be0b72 | 2023-10-21 13:43:43 | Add support for Haikuos on PowerPC (#799) | ||
| dd907495 | 2023-10-21 13:42:11 | Fix passing floating point arguments on 64bits SPARC (libffi#778) (#802) | ||
| 44f6fa3e | 2023-10-20 15:02:37 | Put optional symbols behind ifdefs (#800) Signed-off-by: Alfred Wingate <parona@protonmail.com> | ||
| 5c6e53db | 2023-09-04 13:27:01 | Fix build failures on HP-UX (#792) This fixes #328 Co-authored-by: Chris Hunt <chrahunt@gmail.com> | ||
| 1b3e7569 | 2023-09-04 19:26:11 | Replace use of triple with target, and explicitly specify build host to force cross-compilation (#794) | ||
| 22b50e89 | 2023-08-31 16:31:42 | Fix python and pyodide version | ||
| 4467a3bc | 2023-08-31 08:48:50 | Upgrade pyodide version to match newer selenium API | ||
| 1d0a28ab | 2023-08-12 09:02:39 | 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. | ||
| 9e8f1bd8 | 2023-06-20 21:17:04 | Emscripten build: Remove -sSTRICT_JS (#781) This rasies errors on newer versions of the emscripten compiler. | ||
| ac598b7f | 2023-04-03 08:20:32 | Merge branch 'master' of github.com:/libffi/libffi | ||
| 2d63cee0 | 2023-04-03 08:18:23 | Add tests with homogeneous aggregate types | ||
| 8bdd4716 | 2023-04-02 19:54:22 | 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.) | ||
| f08493d2 | 2023-02-17 20:35:44 | Mention ARCv3 work | ||
| c4df19c9 | 2023-02-18 03:33:47 | 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> | ||
| 23752064 | 2023-02-09 12:23:35 | Normalize libffi labels | ||
| ca268015 | 2023-02-09 10:31:22 | Use rlgl | ||
| 7d23c2d2 | 2023-02-09 06:01:37 | Add emscripten gha workflow (#768) Resolves issue #767 | ||
| 883f5ae6 | 2023-02-05 09:51:37 | Rename label | ||
| 678dad5a | 2023-02-02 14:48:07 | Use libffi-dg-prune to handle Emscripten INFO messages rather than patching emcc.py (#766) | ||
| 7d03d3a3 | 2023-02-02 16:09:14 | Mention wasm32 |