aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/linux/linux-2.6.29/micro2440/0005-920T-Temp-fix-for-the-40-relocation-binutils-pro.patch
blob: 6b8aaf4445409259bb182f9406aa22b25a178d9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
From a4cba996cb77da4afc26c35402a70c3f008afe96 Mon Sep 17 00:00:00 2001
From: Michel Pollet <buserror@gmail.com>
Date: Sat, 14 Mar 2009 10:34:32 +0000
Subject: [PATCH] 920T: Temp(?) fix for the 40 relocation binutils problem

This prevents the modules failing to load when made
with modern toolchains. There is no way to prevent binutils
to generate these relocations, and on the 920t they are
in fact not needed. So this patch just skip them.

Signed-off-by: Michel Pollet <buserror@gmail.com>
---
 arch/arm/include/asm/elf.h |    1 +
 arch/arm/kernel/module.c   |    7 +++++++
 2 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/arch/arm/include/asm/elf.h b/arch/arm/include/asm/elf.h
index a58378c..ce3b36e 100644
--- a/arch/arm/include/asm/elf.h
+++ b/arch/arm/include/asm/elf.h
@@ -50,6 +50,7 @@ typedef struct user_fp elf_fpregset_t;
 #define R_ARM_ABS32	2
 #define R_ARM_CALL	28
 #define R_ARM_JUMP24	29
+#define R_ARM_V4BX	40
 
 /*
  * These are used to set parameters in the core dumps.
diff --git a/arch/arm/kernel/module.c b/arch/arm/kernel/module.c
index dab48f2..fa03392 100644
--- a/arch/arm/kernel/module.c
+++ b/arch/arm/kernel/module.c
@@ -132,6 +132,13 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex,
 			*(u32 *)loc |= offset & 0x00ffffff;
 			break;
 
+#ifdef CONFIG_CPU_ARM920T
+		/* modern toolchain generate V4BX for the modules, and there is no
+		 * way to skip them being generated in the .ko, so in our case, we just
+		 * can ignore them */
+		case R_ARM_V4BX: /* Ignore these sections */
+			break;
+#endif
 		default:
 			printk(KERN_ERR "%s: unknown relocation: %u\n",
 			       module->name, ELF32_R_TYPE(rel->r_info));
-- 
1.5.6.3