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
1 changed files with 24 additions and 0 deletions
|
@ -929,6 +929,26 @@ static int addend_386_rel(struct elf_info *elf, int rsection, Elf_Rela *r)
|
||||||
return 0;
|
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)
|
static int addend_mips_rel(struct elf_info *elf, int rsection, Elf_Rela *r)
|
||||||
{
|
{
|
||||||
unsigned int r_typ = ELF_R_TYPE(r->r_info);
|
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))
|
if (addend_386_rel(elf, i, &r))
|
||||||
continue;
|
continue;
|
||||||
break;
|
break;
|
||||||
|
case EM_ARM:
|
||||||
|
if(addend_arm_rel(elf, i, &r))
|
||||||
|
continue;
|
||||||
|
break;
|
||||||
case EM_MIPS:
|
case EM_MIPS:
|
||||||
if (addend_mips_rel(elf, i, &r))
|
if (addend_mips_rel(elf, i, &r))
|
||||||
continue;
|
continue;
|
||||||
|
|
Loading…
Add table
Reference in a new issue