On Thu, May 16, 2019 at 05:52:42PM -0500, Segher Boessenkool wrote:
> Hi Umesh,
> 
> On Thu, May 16, 2019 at 06:12:48PM +0530, Umesh Kalappa wrote:
> > We are very new to Power abi and we are thinking to handle this case
> > in loader  like  go through the  relocations like R_PPC64_REL24 and
> > found symbol has the localentry ,then compute the delta (GEP - LEP )
> > and patch the caller address like (sym.value - delta).
> 
> I wonder if you have found a bug in the compiler after all.  Most things
> are supposed to work without the linker/loader having to do special
> things; e.g. using the global entry point should always work, using the
> local entry point is just an optimisation.

That isn't true for direct calls.  If using the global entry point,
the linker must provide stub code to load up r12 with the global entry
address and modify the nop after the bl.  The linker must also adjust
calls using the local entry point; the call instruction (and
relocation) specify the function symbol not the function plus local
entry offset.

So I don't think there is any compiler bug here, just a broken kernel
module loader.  Incidentally, if thunks are broken then it's very
likely local function calls are broken too.

-- 
Alan Modra
Australia Development Lab, IBM

Reply via email to