[PATCH v4 2/6] powerpc/module: Handle caller-saved TOC in module linker
Benjamin Gray
bgray at linux.ibm.com
Wed Oct 26 10:41:38 AEDT 2022
On Tue, 2022-10-25 at 13:10 +1100, Andrew Donnellan wrote:
> On Mon, 2022-10-10 at 11:29 +1100, Benjamin Gray wrote:
> > > A function symbol may set a value in the st_other field to
> > > indicate
> > > the TOC should be treated as caller-saved. The linker should
> > > ensure> the
> > > current TOC is saved before calling it and restore the TOC>
> > > afterwards,
> > > much like external calls.
>
> As I suggested on the last revision, worth mentioning here that it's
> the '.localentry <NAME>, 1' directive we're talking about here.
Ah right, whoops. Added "For example, GCC and Clang support a
'.localentry <NAME>, 1' directive to set this explicitly in assembly."
The exact method for doing this seems to be nonstandard (GCC supports
arbitrary value in 1--7, Clang special cases only 1), so originally I
was avoiding specifying how it is set.
> > > @@ -632,7 +643,8 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,
> > > case R_PPC_REL24:
> > > /* FIXME: Handle weak symbols here --RR
> > > */
> > > if (sym->st_shndx == SHN_UNDEF ||
> > > - sym->st_shndx == SHN_LIVEPATCH) {
> > > + sym->st_shndx == SHN_LIVEPATCH ||
> > > + need_r2save_stub(sym->st_other)) {
> > > /* External: go via stub */
>
> Perhaps this comment should be updated to mention that there are non-
> external but external-like calls?
>
> Otherwise
>
> Reviewed-by: Andrew Donnellan <ajd at linux.ibm.com>
Updated to "/* May use different / not preserve TOC: go via stub */",
will add your reviewed-by in the next version. For now I'll wait for
any other feedback before sending it.
> >
More information about the Linuxppc-dev
mailing list