Re: arm: module: Add apply_relocate_add

From: Miroslav Benes
Date: Wed Jan 18 2017 - 05:38:16 EST


On Mon, 16 Jan 2017, Jessica Yu wrote:

> +++ Abel Vesa [06/12/16 17:06 +0000]:
> > It was only added to fix compiler error. It is not implemented
> > yet.
> >
> > Signed-off-by: Abel Vesa <abelvesa@xxxxxxxxx>
> > ---
> > arch/arm/kernel/module.c | 9 +++++++++
> > 1 file changed, 9 insertions(+)
> >
> > diff --git a/arch/arm/kernel/module.c b/arch/arm/kernel/module.c
> > index 4f14b5c..bf94922 100644
> > --- a/arch/arm/kernel/module.c
> > +++ b/arch/arm/kernel/module.c
> > @@ -52,6 +52,15 @@ void *module_alloc(unsigned long size)
> > #endif
> >
> > int
> > +apply_relocate_add(Elf32_Shdr *sechdrs, const char *strtab,
> > + unsigned int symindex, unsigned int relindex,
> > + struct module *module)
> > +{
> > + /* Not implemented yet */
> > + return 0;
> > +}
>
> Are SHT_RELA relocation sections actually supported on 32-bit arm? It looks
> like there's only support for SHT_REL.
>
> arch/arm/Kconfig:84: select MODULES_USE_ELF_REL
>
> If we support SHT_REL sections, the correct fix is to probably have
> klp_write_object_relocations() check if the relocation section is
> SHT_REL or SHT_RELA, and call the appropriate function (apply_relocate
> or apply_relocate_add), similar to how the module loader does it.

Agreed. According to arch/Kconfig and definitions you can use only one of
MODULES_USE_ELF_REL and MODULES_USE_ELF_RELA. arm arch uses the former. So
yes, I think we should use the same if/else construct from the module
loader in klp_write_object_relocations()... and it should go with this
patch set, because arm is the first arch to actually use SHT_REL and not
SHT_RELA (iiuc). x86, s390 and powerpc (archs we support) use SHT_RELA.

Miroslav