kc3-lang/libffi/src/pa/linux.S

Branch :


Log

Author Commit Date CI Message
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
222abd0c 2023-02-02 07:04:55 From Dave Anglin: This patch is derived from the work done in implementing libffi for 64-bit hppa64-hpux target. Currently, the 32-bit hppa targets do a linear search for the return type of an ffi_call. This is slow and inefficient. A jump table can used to jump directly to the code used to process the return value. In most common cases, the return value can be processed in the jump table itself. The patch also fixes return handling for FFI_TYPE_UINT8, FFI_TYPE_SINT8, FFI_TYPE_UINT16 and FFI_TYPE_SINT16.
8eb2d2b0 2020-02-24 10:29:20 Revamp PA_LINUX and PA_HPUX target closures to use function descriptors. 2020-02-23 John David Anglin <danglin@gcc.gnu.org> * include/ffi.h.in (FFI_CLOSURE_PTR, FFI_RESTORE_PTR): Define. * src/closures.c (ffi_closure_alloc): Convert closure pointer return by malloc to function pointer. (ffi_closure_free): Convert function pointer back to malloc pointer. * src/pa/ffi.c (ffi_closure_inner_pa32): Use union to double word align return address on stack. Adjust statements referencing return address. Convert closure argument from function pointer to standard closure pointer. (ffi_prep_closure_loc): Likewise convert closure argument back to closure pointer. Remove assembler trampolines. Setup simulated function descriptor as on ia64. src/pa/ffitarget.h (FFI_TRAMPOLINE_SIZE): Reduce to 12. src/pa/hpux32.S (ffi_closure_pa32): Retrieve closure pointer and real gp from fake gp value in register %r19. src/pa/linux.S (ffi_closure_pa32): Likewise.
fadf1eb5 2019-04-27 20:53:29 hppa: avoid TEXTREL in .eh_frame section (#447) Before the change hand-crafted .eh_frame section contained ABS relocation and caused TEXTREL tag to be emitted: ``` $ ./configure --host=hppa2.0-unknown-linux-gnu LDFLAGS=-Wl,-z,text $ make ... /usr/libexec/gcc/hppa2.0-unknown-linux-gnu/ld: read-only segment has dynamic relocations. ``` Link failure is caused by absolute address of FDEs encoded into .eh_frame entries. Fixed TEXTREL by using pcrel (instead of ABS) encoding for absolute addresses (__PIC__ code) by adding augmentation information ("zR" CIE type). All tests still pass on hppa2.0. The specific tests that still pass and exercise this code path: testsuite/libffi.call/unwindtest.cc testsuite/libffi.call/unwindtest_ffi_call.cc Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
c6dddbd0 2009-10-04 08:11:33 Initial commit