On Tue, Sep 22, 2020 at 07:16:57PM -0500, Segher Boessenkool wrote:
> Hi!
> 
> On Tue, Sep 22, 2020 at 10:00:11AM +0930, Alan Modra wrote:
> > gcc/
> >     * config/rs6000/rs6000-c.c (rs6000_target_modify_macros):
> >     Conditionally define __PCREL__.
> 
> Please do that as a separate (earlier) patch (because it *is*, and to
> simplify backports, etc).

Done.

> > libffi/
> >     * src/powerpc/linux64.S (ffi_call_LINUX64): Don't emit global
> >     entry when __PCREL__.  Call using @notoc.
> >     (ffi_closure_LINUX64, ffi_go_closure_linux64): Likewise.
> 
> This is okay for trunk, and for backports (possibly expedited, talk
> with Peter for what is wanted/needed for AT).

I've fixed the changelog, a comment, and added a nop after bl for the
old calls without @notoc.  While there really isn't a need for the
nops in libffi.so since the callee is hidden visibility, there is a
miniscule chance that a static libffi.a user has a very large TOC and
somehow manages to have ffi_call_LINUX64 and ffi_prep_args64 using
different TOC pointers.  In that case the linker would arrange the
call to go via a toc-adjusting stub and want to replace the nop with a
toc restore.

-- 
Alan Modra
Australia Development Lab, IBM

Reply via email to