]> git.ipfire.org Git - thirdparty/gcc.git/commit
x86, libgcc: Implement ia32 basic heap trampoline [PR113855].
authorIain Sandoe <iain@sandoe.co.uk>
Sat, 10 Feb 2024 14:44:41 +0000 (14:44 +0000)
committerIain Sandoe <iain@sandoe.co.uk>
Mon, 12 Feb 2024 15:03:12 +0000 (15:03 +0000)
commit5e39897ee2c73938fa940c4792d987608aeeebcd
tree0eb96f27c53c6cfbdd7a7838e222562c03b9cd0e
parent1e94648ab7b370c5867e146c7f59603e2e6ba2e6
x86, libgcc: Implement ia32 basic heap trampoline [PR113855].

The initial heap trampoline implementation was targeting 64b
platforms.  As the PR demonstrates this creates an issue where it
is expected that the same symbols are exported for 32 and 64b.

Rather than conditionalize the exports and code-gen on x86_64,
this patch provides a basic implementation of the IA32 trampoline.

This also avoids potential user confusion, when a 32b target has
64b multilibs, and vice versa; which is the case for Darwin.

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.
gcc/config/i386/darwin.h
gcc/config/i386/darwin32-biarch.h
gcc/config/i386/darwin64-biarch.h
libgcc/config.host
libgcc/config/i386/heap-trampoline.c