[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1184681343423-git-send-email-sam@ravnborg.org>
Date: Tue, 17 Jul 2007 16:08:41 +0200
From: Sam Ravnborg <sam@...nborg.org>
To: linux-kernel@...r.kernel.org
Cc: Sam Ravnborg <sam@...nborg.org>
Subject: [PATCH 12/33] 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@...nborg.org>
---
scripts/mod/modpost.c | 24 ++++++++++++++++++++++++
1 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index b83cddb..256b3d2 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -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;
--
1.5.0.6
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists