Messages in this thread Patch in this message | | | Date | Wed, 12 Apr 2017 19:36:36 +1200 | From | Michael Cree <> | Subject | Re: [BUG] alpha: module xxx: Unknown relocation: 1 |
| |
On Wed, Apr 12, 2017 at 07:57:52AM +0200, Helge Deller wrote: > On 12.04.2017 04:59, Bob Tracy wrote: > > Bottom line is, no kernel I've built since 4.9 can load a module. All > > attempts to load a module result in the error message emitted by > > "arch/alpha/kernel/module.c" as follows: > > > > module XXX: Unknown relocation: 1 > > > > I assume it's due this commmit "modversions: treat symbol CRCs as 32 bit quantities": > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=71810db27c1c853b335675bee335d893bc3d324b > > For parisc this patch solves it: > parisc: support R_PARISC_SECREL32 relocation in modules > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5f655322b1ba4bd46e26e307d04098f9c84df764 > > > module XXX: Unknown relocation: 1 > > For alpha it seems you need to add similar code to handle R_ALPHA_REFLONG > to apply_relocate_add() in arch/alpha/kernel/module.c
Would the attached patch fix it? Untested because I don't see the above issue.
Cheers Michael. diff --git a/arch/alpha/kernel/module.c b/arch/alpha/kernel/module.c index 936bc8f89a67..47632fa8c24e 100644 --- a/arch/alpha/kernel/module.c +++ b/arch/alpha/kernel/module.c @@ -181,6 +181,9 @@ apply_relocate_add(Elf64_Shdr *sechdrs, const char *strtab, switch (r_type) { case R_ALPHA_NONE: break; + case R_ALPHA_REFLONG: + *(u32 *)location = value; + break; case R_ALPHA_REFQUAD: /* BUG() can produce misaligned relocations. */ ((u32 *)location)[0] = value; | |