Log

Author Commit Date CI Message
Clément Chigot 80912f2f 2022-09-01T14:47:16 Makefile: enable target overridings. (#661) This patch allows target to provide extra files enabling the override of Makefile rules. This patch is not needed for libffi itself but only for GCC on AIX. The t-aix file which is here empty will be replaced in GCC repository. We cannot include GCC version directly here because it has no sense for a standalone libffi. Co-authored-by: Clement <clement.chigot@atos.net>
Anthony Green 1fa7d96c 2022-09-01T08:28:59 Don't use cached configure test result
Anthony Green bcb42e43 2022-09-01T08:05:01 Fix .cfi pseudo-ops test. The existing tests were failing because the GCC was wrapping the test asm in cfi directives, which gas doesn't like. So now we test if the compiler emits them first, and assume that the assembler will accept them. If that doesn't work, then we test if the assembler will accept them assuming the compiler doesn't emit them.
Anthony Green 0eb91425 2022-08-31T20:46:24 Change comment style
Anthony Green ca76ab3b 2022-08-31T10:30:26 Fix exports for tests
Anthony Green 7b1dd8ce 2022-08-31T09:49:21 Don't -malign-double for x86-32
Anthony Green 41d0851f 2022-08-31T07:36:43 Update copyright year
Xi Ruoyao 5a4774cd 2022-07-22T05:56:30 static trampoline for LoongArch (#723) For the benefit and technical details of static trampoline, see https://github.com/libffi/libffi/pull/624. As a new architecture, let's be "safer" from the start. The change survived libffi testsuite on loongarch64-linux-gnu.
matoro 5264a7c5 2022-07-21T17:54:19 Move FFI_TYPE definitions above <ffitarget.h> include (#722) For powerpc at least, these definitions are referenced in the target-specific ffitarget.h. Discovered in the jffi project. Should close https://github.com/libffi/libffi/issues/637. Downstream jffi bug https://github.com/jnr/jffi/issues/107. Downstream distro bug https://bugs.gentoo.org/827215. Testing - both libffi and jffi test suites pass with this patch applied, at least on ppc64le linux. I did not see any warnings about redefinitions. Tested versions - libffi 3.4.2, jffi 1.3.6 and 1.3.9.
Anthony Green ddc67643 2022-06-25T22:04:53 Add missing file
Anthony Green 2b4728a2 2022-06-25T21:58:51 Fix path
Anthony Green 37cc25bb 2022-06-25T21:56:40 Install and use autoconf from special dir
Anthony Green 2f2eab95 2022-06-25T21:53:00 Fix autoconf version number
Anthony Green 4b146549 2022-06-25T21:51:25 Fix wget
Anthony Green 398b7534 2022-06-25T21:49:09 Fix wget
Anthony Green 2c047eb7 2022-06-25T21:46:54 Fix untar
Anthony Green 446c092f 2022-06-25T21:45:32 Install autoconf-2.71
Anthony Green 5c76ac1f 2022-06-25T21:22:01 Update autoconf?
Anthony Green 4a46f35b 2022-06-25T21:14:30 Update configury
Anthony Green fc8c8c1e 2022-06-25T11:06:00 Fix ILP32 for aarch64
Anthony Green b5abc4f6 2022-06-25T10:43:00 Remove duplicate macro definition.
Xi Ruoyao 280fe78d 2022-06-25T18:58:53 configure.ac: use grep -E instead of egrep if possible (#720) Upstream will start to emit a warning if egrep is invoked in the next grep release. Stop invoking it explicitly. Use AC_PROG_EGREP to try "grep -E" first, and fallback to egrep if "grep -E" does not work. We need this fallback for some non-GNU grep implementations (like Solaris). Url: https://git.savannah.gnu.org/cgit/grep.git/commit/?id=a951562
Russell Keith-Magee 1f14b3fa 2022-06-03T02:46:35 Ensure that VM_PROT_EXECUTE is set on the trampoline page. (#718)
Sergei Trofimovich 000ecd01 2022-06-02T18:43:53 powerpc64: fix build on gcc-12 (assembly requires AltiVec) (#719) Without the change build fails on powerpc64-gcc-12 as: src/powerpc/linux64_closure.S: Assembler messages: src/powerpc/linux64_closure.S:363: Error: unrecognized opcode: `lvx' It's a 90205f67 "rs6000: Fix bootstrap (libffi)" patch by Segher Boessenkool from gcc upstream repository. It's enough to get libffi build on powerpc64.
Anthony Green c528d5b4 2022-05-29T11:22:38 Fix windows arg passing
Anthony Green aa2c4141 2022-05-29T10:28:10 64-bit cygwin: fix struct args. Document change.
Anthony Green 36b265ae 2022-05-29T10:12:30 m32r: pass copies of large structs
Anthony Green c248764d 2022-05-29T07:27:32 Update testsuite Makefile
Martin Storsjö fd1fe195 2022-05-29T14:16:49 Fix building on aarch64 after e409225b41b60c490a094bb068e639a2364202fd (#716) The ALIGN_DOWN macro was renamed in 2018 in e6eac7863e2bf1a009ea863041b354bdb4af6b67.
Anthony Green c1e237b2 2022-05-28T20:46:14 Pass large structs by value on the stack
Anthony Green 769b7366 2022-05-28T19:59:35 Fix for MS x64 ABI
Anthony Green faafcb9d 2022-05-28T17:24:43 Fix moxie struct passing
Anthony Green f55d7ff1 2022-05-28T14:30:13 moxie: structs > 8 go on stack
Anthony Green 55f80b02 2022-05-28T14:17:53 New test cases
Anthony Green 72c31927 2022-05-28T13:53:26 Pass copies of large structs on the stack
Anthony Green e409225b 2022-05-28T09:42:13 Pass large structs by value for Linux x86_64 and Aarch64. Aarch patch by Andreas Schwab. https://github.com/libffi/libffi/commit/482b37f00467325e3389bab322525099860dd9aa
Anthony Green 01d54435 2022-05-24T21:38:51 Mention loongson64
zhangwenlong f259a6f6 2022-05-25T09:31:08 Support loongarch64 (#678) * update config.{guess,sub} * Support loongarch64 Co-Authored-By: Cheng Lulu <chenglulu@loongson.cn> Co-Authored-By: Xi Ruoyao <xry111@mengyan1223.wang> Co-Authored-By: Xu Hao Co-Authored-By: Zhang Wenlong <zhangwenlong@loongson.cn> Co-Authored-By: Pan Xuefeng <panxuefeng@loongson.cn> Co-authored-by: panxuefeng <panxuefeng@loongson.cn> Co-authored-by: Cheng Lulu <chenglulu@loongson.cn> Co-authored-by: Xi Ruoyao <xry111@mengyan1223.wang>
Anthony Green d02d4660 2022-05-24T12:28:08 Debug cygwin builds
Anthony Green 7e93ded9 2022-05-23T21:42:52 Revert "Don't dereference beyond the last array entry. (#667)" (#715) This reverts commit 92d77d0e87a5f2a8c9c9b2431ffd264cb664e17a.
Russell Keith-Magee 432384b6 2022-05-24T09:06:19 Add support for ARM64 as an Apple simulator platform. (#712)
Kevin Bowling 9af445fd 2022-05-23T18:05:01 Upstream FreeBSD riscv patch (#708) Like 8276f812a99b10d1f2c387dbd6ef2ca4f597c733 commit message: > devel/libffi: Fix abort() on ARM related to __clear_cache() > > The current FreeBSD __clear_cache() implementation does nothing #if > __i386__ || __x86_64__ #else abort(); > > cognet@ advises this is an issue for anything !Apple that is using the > libcompiler_rt provided by Clang on ARM, and requires upstreaming. Co-authored-by: Kristof Provost <kp@FreeBSD.org>
Roland Schatz de95947a 2022-05-24T03:04:43 Fix check for invalid varargs arguments. (#707)
Anthony Green 92d77d0e 2022-05-23T21:03:00 Don't dereference beyond the last array entry. (#667)
A. Wilcox e504f90f 2022-05-23T18:42:32 testsuite/libffi.closures: Fix PowerPC 64 (#709) -mlong-double-128 is only supported on glibc. This test still passes on glibc targets, and now passes on musl targets as well (which uses 64-bit ldbl).
Anthony Green f3e61d49 2022-05-23T09:11:42 Remove debug code
Anthony Green a36880e7 2022-05-23T08:35:21 Remove stray export command
Anthony Green 5f98afe8 2022-05-23T08:11:26 Debug cygwin builds
Anthony Green abaacbf8 2022-05-23T07:57:26 Debug cygwin tests
Anthony Green e770fb76 2022-05-22T20:43:41 Clean up types
YunQiang Su 2e825e21 2022-05-16T09:47:11 MIPS: fix some N32 test failure (#701) Some go closure and pointer testcase fails. These failures is not introduced by the complex support code.
YunQiang Su 1f1c3375 2022-05-16T09:45:27 MIPS: fix O32 softfloat support (#702)
hjl-tools 3ac265d5 2022-05-15T18:43:56 x86-64: Always double jump table slot size for CET (#710) (#711) When CET is enabled, double jump table slot size to add 4 bytes of ENDBR64 for CET. Since CET enabled clang doesn't have the LLVM assembler bug: https://bugs.llvm.org/show_bug.cgi?id=21501 fixed by commit 04d39260d64e08b8bfb3844109ad43d4055b2e8d Author: Rafael Espindola <rafael.espindola@gmail.com> Date: Wed Nov 4 23:50:29 2015 +0000 Simplify .org processing and make it a bit more powerful. we can use .org to allocate jump table slot size to 16 bytes.
YunQiang Su e67697c3 2022-03-31T20:44:49 MIPS: add Complex support (#698)
Ole André Vadla Ravnås e3cf8b80 2022-03-31T14:42:03 Allow system to have overlapping mallopt defines (#700) Which is the case on some OSes, such as QNX.
Ole André Vadla Ravnås c086cacb 2022-03-31T14:40:59 Clean up the QNX ARM bits (#699) - Add missing include. - Use constants instead of magic values.
Max Filippov ab167710 2022-02-20T16:01:38 Xtensa cleanups and XEA3 support (#677) * xtensa: clean up stack usage in ffi_trampoline call Space for outgoing call arguments reserved in the stack frame of the function ffi_trampoline overlaps register spill overflow area at the top of the frame. In xtensa XEA2 exception architecture the layout of overlapping areas is identical so that even if the ffi_trampoline registers frame gets spilled the memory contents doesn't change. This is not so with the xtensa XEA3 exception architecture, where registers a0 - a7 of a different function are spilled in that location. Reserve spill area for 8 registers to avoid overlapping of the spill area with the outgoing call arguments area in the ffi_trampoline. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> * xtensa: support xtensa XEA3 exception architecture XEA3 requires that 32 bytes of register spill area is reserved in all functions. Fix ffi_cacheflush entry instruction to satisfy this requirement. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> * xtensa: maintain stack alignment xtensa ABI requires stack alignment on 16 byte boundary and passing up to 6 arguments in registers. To simplify stack alignment maintenance fixed amount of stack space is reserved for arguments passed in registers and variable but correctly aligned amount is reserved for the remaining arguments. After copying arguments to the stack and loading registers the fixed part of the stack reservation is freed. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> * xtensa: fix err_bad_abi tests Check ffi_cif::abi value in the ffi_prep_closure_loc and return FFI_BAD_ABI error if it's not one of the supported values. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Andreas Schwab aa3fce08 2022-02-13T21:04:33 riscv: extend return types smaller than ffi_arg (#680) Co-authored-by: Andreas Schwab <schwab@suse.de>
Dan Horák 464b4b66 2022-01-31T14:08:09 powerpc64: fix handling of homogeneous float128 structs (#689) If there is a homogeneous struct with float128 members, they should be copied to vector register save area. The current code incorrectly copies only the value of the first member, not increasing the pointer with each iteration. Fix this.
rorth b60d4fc7 2021-12-23T14:32:46 src/x86/win64.S: Use #define instead of .macro (#665) (#669) The Solaris/x86 assembler doesn't support .macro/.endm, so use #define since win64.S is passed through cpp anyway.
Andreas Schwab 4fa6239f 2021-12-23T14:27:32 testsuite/libffi.call: fix mismatching return types (#679) Co-authored-by: Andreas Schwab <schwab@suse.de>
Jules Maselbas 0f2dd369 2021-09-22T21:39:56 Makefile: Add missing kvx/asm.h to dist headers (#660) The header kvx/asm.h is required to build libffi and is missing from the dist tarball. Signed-off-by: Jules Maselbas <jmaselbas@kalray.eu>
Anthony Green ee1263f7 2021-07-29T17:46:17 Fix 'type'-o
Anthony Green 86d5ecc5 2021-07-29T16:58:32 Fix struct arg passing
Anthony Green 03596285 2021-07-29T10:16:42 No more xfail for alpha
Anthony Green 4ac18f26 2021-07-29T10:01:40 Add alpha CPU
Anthony Green 7643c6ee 2021-07-29T08:51:35 Try to fix ARM QEMU tests
Anthony Green a04f57bc 2021-07-29T08:47:53 Fix m32r testing
Anthony Green 339acf3d 2021-07-29T08:38:18 Debug cross-in-containers builds
Anthony Green 43e4ad4d 2021-07-29T07:55:59 Test passing structs by value
Anthony Green 68485e33 2021-07-29T07:13:35 Mention x32 static tramponline fix
Harald van Dijk 07f826fd 2021-07-25T02:39:37 Fix trampoline_code_table for x32. (#657) x32's struct tramp_parm has 32-bit pointers. This change adjusts the loads and offsets accordingly.
Anthony Green be0b3b6e 2021-07-16T21:51:03 Fix CHECK
Anthony Green 7db17442 2021-07-16T11:30:01 Don't check the whole buffer, just what we printed.
Anthony Green 8bcf5947 2021-07-16T11:26:02 Fix test case
Anthony Green c96b0577 2021-07-16T11:16:39 Fix test check
Anthony Green 4ed23be8 2021-07-16T11:08:01 Fix test check
Hood Chatham eb244724 2021-07-16T14:33:04 Use CHECK to assert more things in test suite (#654) * Use CHECK to assert more things in test suite * Use snprintf instead of sprintf * Fix va_struct1 and va_struct3
Anthony Green a541fc60 2021-07-16T08:56:30 Update README for next release.
Anthony Green b4cf80ab 2021-07-16T08:55:02 Trigger actions on master branch
Anthony Green d1eef904 2021-07-16T08:29:08 Migrate from travis-ci to github actions.
Anthony Green f9ea4168 2021-06-28T21:10:49 Update version to 3.4.2
Anthony Green 2bdc8e52 2021-06-28T19:50:29 Version 3.4.1
Anthony Green c1d09bf0 2021-06-28T18:50:31 Update version to 3.4.0
Anthony Green 1ed0aa73 2021-06-28T18:45:11 Fix warnings
Anthony Green 0a2cc2ec 2021-06-28T14:59:07 Add missing test cases to distribution
Hood Chatham ee3ef737 2021-06-28T11:51:35 Add tests for single entry structs (#653)
Hood Chatham f08c5ace 2021-06-28T07:24:19 Fix the assertions in cls-24byte (#652) * Fix the assertions in cls-24byte * Update print statement too
Anthony Green 4557f232 2021-06-28T09:53:01 3.4.0 release candidate 2
Jeremy Huddleston Sequoia cd442891 2021-06-28T04:56:30 Add missing FFI_HIDDEN to ffi_tramp_is_present declaration (#651) Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
Hood Chatham 9fa94c60 2021-06-27T11:02:33 Print more information when an assertion fails in test suite (#649)
Hood Chatham 91eaadfb 2021-06-27T09:49:31 Fix signature of function pointer in cls_dbls_struct (#648)
Sergei Trofimovich 132699b9 2021-06-27T16:50:20 configure.ac: add --disable-exec-static-tramp flag (#647) Some projects like GHC (Glasgow Haskell Compiler) and gobject-introspection use `ffi_closure_alloc()` as a way to allocate executable memory. exec static tramp interferes with it (unclear how exactly yet). GHC symptom: ffi closure freeing cimplains about unexpected trampoline (GHC manually fills one): ``` $ ghci GHCi, version 8.10.5: https://www.haskell.org/ghc/ :? for help ghc: freeHaskellFunctionPtr: not for me, guv! 0x7f0417a1efe8 ghc: freeHaskellFunctionPtr: not for me, guv! 0x7f0417a1efc8 ``` gobject-introspection symptom: ``` $ meld Segmentation fault (core dumped) $ gdb --args /usr/bin/python3.9 /usr/bin/meld (gdb) run ... Thread 1 "python3.9" received signal SIGSEGV, Segmentation fault. 0x00007fffe9ac1ae8 in g_callable_info_free_closure ( callable_info=0x555555d45990, closure=0x7fffe9e70c20) at ../gobject-introspection-1.68.0/girepository/girffi.c:428 428 g_free (wrapper->ffi_closure.cif->arg_types); (gdb) bt callable_info=0x555555d45990, closure=0x7fffe9e70c20) at ../gobject-introspection-1.68.0/girepository/girffi.c:428 data=0x555555d252d0) at ../pygobject-3.40.1/gi/pygi-closure.c:635 ... ``` To ease downstreams narrowing down the actual problem let's provide a knob to disable exec static trampolines. The change for not affect current default. Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Anthony Green 4e07374c 2021-06-27T11:25:06 Remove caveat about varargs support
Anthony Green 11f97138 2021-06-27T07:46:12 Update contact info
Sergei Trofimovich f792adb6 2021-06-26T22:26:52 configure.ac: allow user to specify READELF (#646) Before the change with x86_64-pc-linux-gnu cross-compiler installed the configure was not able to find cross-readelf: ``` $ ./configure --host=x86_64-pc-linux-gnu ... checking whether .eh_frame section should be read-only... .././configure: line 19540: readelf: command not found yes ... ``` The change uses AC_CHECK_TOOL to automatically seatch for ${host}-readelf, readelf. And as a bonus it also allows user to override readelf with something like READELF=llvm-readelf. Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Anthony Green 9cf15b3a 2021-06-26T12:12:06 Make 3.4 release candidate 1
Anthony Green 1e5dc8de 2021-06-26T12:08:35 Add missing file from make dist. Add missing license info.
Anthony Green c0b210c7 2021-06-26T10:55:57 Remove test case
Matthew Green 87429ce7 2021-06-26T08:49:45 This test includes a closure and must live in the closures test directory. (#645) Co-authored-by: Matthew Green <squidhacks@users.noreply.github.com>