kbuild: make better section mismatch reports on arm
With this change we can find more symbols hereby improving the readability of the warnings. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
This commit is contained in:
parent
ae4ac12323
commit
56a974fa2d
|
@ -929,6 +929,26 @@ static int addend_386_rel(struct elf_info *elf, int rsection, Elf_Rela *r)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int addend_arm_rel(struct elf_info *elf, int rsection, Elf_Rela *r)
|
||||
{
|
||||
unsigned int r_typ = ELF_R_TYPE(r->r_info);
|
||||
|
||||
switch (r_typ) {
|
||||
case R_ARM_ABS32:
|
||||
/* From ARM ABI: (S + A) | T */
|
||||
r->r_addend = (int)(long)(elf->symtab_start + ELF_R_SYM(r->r_info));
|
||||
break;
|
||||
case R_ARM_PC24:
|
||||
/* From ARM ABI: ((S + A) | T) - P */
|
||||
r->r_addend = (int)(long)(elf->hdr + elf->sechdrs[rsection].sh_offset +
|
||||
(r->r_offset - elf->sechdrs[rsection].sh_addr));
|
||||
break;
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int addend_mips_rel(struct elf_info *elf, int rsection, Elf_Rela *r)
|
||||
{
|
||||
unsigned int r_typ = ELF_R_TYPE(r->r_info);
|
||||
|
@ -1051,6 +1071,10 @@ static void check_sec_ref(struct module *mod, const char *modname,
|
|||
if (addend_386_rel(elf, i, &r))
|
||||
continue;
|
||||
break;
|
||||
case EM_ARM:
|
||||
if(addend_arm_rel(elf, i, &r))
|
||||
continue;
|
||||
break;
|
||||
case EM_MIPS:
|
||||
if (addend_mips_rel(elf, i, &r))
|
||||
continue;
|
||||
|
|
Loading…
Reference in New Issue