Commit 56a974fa authored by Sam Ravnborg's avatar Sam Ravnborg

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: default avatarSam Ravnborg <sam@ravnborg.org>
parent ae4ac123
...@@ -929,6 +929,26 @@ static int addend_386_rel(struct elf_info *elf, int rsection, Elf_Rela *r) ...@@ -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, ...@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment