On Sat, Feb 10, 2024 at 05:14:44PM +0000, Iain Sandoe wrote:
> PR target/113855
>
> gcc/ChangeLog:
>
> * config/i386/darwin.h (DARWIN_HEAP_T_LIB): Moved to be
> available to all sub-targets.
> * config/i386/darwin32-biarch.h (DARWIN_HEAP_T_LIB): Delete.
> * config/i386/darwin64-biarch.h (DARWIN_HEAP_T_LIB): Delete.
>
> libgcc/ChangeLog:
>
> * config.host: Add trampoline support to x?86-linux.
> * config/i386/heap-trampoline.c (trampoline_insns): Provide
> a variant for IA32.
> (union ix86_trampoline): Likewise.
> (__gcc_nested_func_ptr_created): Implement a basic trampoline
> for IA32.
LGTM.
I bet it probably doesn't work properly for -mx32 (which defines
__x86_64__), CCing H.J. on that, but that is a preexisting issue
(and I don't have any experience with it; I guess one would either
need to add 4 bytes of padding after the func_ptr so that those
bits remain zeros as sizeof (void *) is 4, but presumably it would be
better to just use movl (but into %r10) and maybe the jmpl instead
of movabsq.
Jakub