mirror of
https://github.com/torvalds/linux.git
synced 2026-10-07 22:37:45 -04:00
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 <[email protected]>
Cc: Ben Hutchings <[email protected]>
Cc: Anders Kaseorg <[email protected]>
Cc: Greg KH <[email protected]>
Signed-off-by: Tony Lindgren <[email protected]>
Signed-off-by: Russell King <[email protected]>
This commit is contained in:
1 parent
08a183f02b
commit
6e2e340b59
1 file changed
+9
@@ -1494,6 +1494,13 @@ static int addend_386_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
|
||||
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)
|
||||
{
|
||||
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));
|
||||
break;
|
||||
case R_ARM_PC24:
|
||||
case R_ARM_CALL:
|
||||
case R_ARM_JUMP24:
|
||||
/* From ARM ABI: ((S + A) | T) - P */
|
||||
r->r_addend = (int)(long)(elf->hdr +
|
||||
sechdr->sh_offset +
|
||||
|
||||
Reference in new issue
Block a user