ARM: 7324/1: modpost: Fix section warnings for ARM for many compilers
It turns out that many compilers don't show section warnings on ARM
currently because handling for ARM_CALL relocs are missing from
modpost.c.
Based on commit c2e26114
([ARM] 3205/1: Handle new EABI relocations when
loading kernel modules) it seems that R_ARM_PC24, R_ARM_CALL and
R_ARM_JUMP24 can be handled the same way.
Note that at least Debian libc6-dev is missing defines for both
R_ARM_CALL and R_ARM_JUMP24 in /usr/include/elf.h. So for now
we need to define them in modpost.c if not defined.
Acked-by: Rusty Russell <rusty@rustcorp.com.au>
Cc: Ben Hutchings <ben@decadent.org.uk>
Cc: Anders Kaseorg <andersk@ksplice.com>
Cc: Greg KH <gregkh@linuxfoundation.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
08a183f02b
commit
6e2e340b59
|
@ -1494,6 +1494,13 @@ static int addend_386_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef R_ARM_CALL
|
||||||
|
#define R_ARM_CALL 28
|
||||||
|
#endif
|
||||||
|
#ifndef R_ARM_JUMP24
|
||||||
|
#define R_ARM_JUMP24 29
|
||||||
|
#endif
|
||||||
|
|
||||||
static int addend_arm_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
|
static int addend_arm_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
|
||||||
{
|
{
|
||||||
unsigned int r_typ = ELF_R_TYPE(r->r_info);
|
unsigned int r_typ = ELF_R_TYPE(r->r_info);
|
||||||
|
@ -1505,6 +1512,8 @@ static int addend_arm_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
|
||||||
(elf->symtab_start + ELF_R_SYM(r->r_info));
|
(elf->symtab_start + ELF_R_SYM(r->r_info));
|
||||||
break;
|
break;
|
||||||
case R_ARM_PC24:
|
case R_ARM_PC24:
|
||||||
|
case R_ARM_CALL:
|
||||||
|
case R_ARM_JUMP24:
|
||||||
/* From ARM ABI: ((S + A) | T) - P */
|
/* From ARM ABI: ((S + A) | T) - P */
|
||||||
r->r_addend = (int)(long)(elf->hdr +
|
r->r_addend = (int)(long)(elf->hdr +
|
||||||
sechdr->sh_offset +
|
sechdr->sh_offset +
|
||||||
|
|
Loading…
Reference in New Issue