[RFC PATCH 0/4] Out-of-line static calls for powerpc64 ELF V2

Benjamin Gray bgray at linux.ibm.com
Tue Sep 13 13:31:57 AEST 2022


On Thu, 2022-09-01 at 15:58 +1000, Benjamin Gray wrote:
>     So not having a local entry point implies not using a TOC
> pointer, which
>     implies r2 is volatile if the trampoline does not guarantee that
> it preserves
>     r2. However experimenting with such a trampoline showed the
> caller still did
>     not preserve its TOC when necessary, even when the trampoline
> used instructions
>     that wrote to r2. Possibly there's an attribute that can be used
> to mark the
>     necessary info, but I could not find one.

The `.localentry` directive is more general than just specifying where
the local entry is: it can be used to set the relevant ELF bits
directly. So the solution here is setting `.localentry NAME, 1` on the
SC trampoline.

It's not an optimal solution, as it inserts another trampoline to save
r2 before calling the SC trampoline, but it would allow a correct
implementation without the work needed in the other choices.


More information about the Linuxppc-dev mailing list