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