Commit Graph

6 Commits (c468c50b7b2a778406b46bd9b554339990dd7df3)

Author SHA1 Message Date
Sören Tempel d0b03541bf common-trampoline: Ensure omission of frame-pointer
Some architecture-specific implementations of the FETCH_LINKPTR
(e.g. the one for x86) attempt to find the linkptr relative to the
stack pointer. Therefore, they make assumption about the value of
the SP at the point where the FETCH_LINKPTR code is executed. This
means that we don't want the C compiler to mess with our SP.

For this purpose, local variables in this function are currently
declared using the register storage specifier. Additionally, we
need to make sure that a frame pointer is /always/ omitted for
this function. On x86 Alpine, the frame pointer is presently not
omitted with GCC 13 when using -Os, therefore the tests segfault
with -Os on Alpine presently.

Fixes #52
2024-08-07 17:46:50 -07:00
Ariadne Conill a51dce6e2c common-trampoline: initialize link pointer to NULL 2022-02-13 07:35:23 +00:00
Daniel Kolesa 4801f0bdd8 all: mark the trampoline symbol hidden
this should not be a part of the public ABI
2021-01-08 15:17:13 +01:00
Ariadne Conill e45956896a common-trampoline: use register keyword to force register allocation 2021-01-08 03:00:37 -07:00
osy e1e6508af2 defs: use register output only for FETCH_LINKPTR 2021-01-08 02:59:43 -07:00
Ariadne Conill 2d51d7bfa4 x86_64: add common trampoline code written in C, port to it 2020-12-11 23:04:47 -07:00