Patchwork sparc32: Enable the relocation target R_SPARC_DISP32 for sparc32

login
register
mail settings
Submitter Andreas Larsson
Date Sept. 17, 2012, 3:22 p.m.
Message ID <1347895348-24728-1-git-send-email-andreas@gaisler.com>
Download mbox | patch
Permalink /patch/184509/
State Changes Requested
Delegated to: David Miller
Headers show

Comments

Andreas Larsson - Sept. 17, 2012, 3:22 p.m.
GNU Binutils 2.20.1 generates .eh_frame sections that uses R_SPARC_DISP32.

Signed-off-by: Andreas Larsson <andreas@gaisler.com>
---
 arch/sparc/kernel/module.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)
David Miller - Sept. 17, 2012, 5:28 p.m.
From: Andreas Larsson <andreas@gaisler.com>
Date: Mon, 17 Sep 2012 17:22:28 +0200

> GNU Binutils 2.20.1 generates .eh_frame sections that uses R_SPARC_DISP32.
> 
> Signed-off-by: Andreas Larsson <andreas@gaisler.com>
> ---
>  arch/sparc/kernel/module.c |   10 +++++-----
>  1 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/sparc/kernel/module.c b/arch/sparc/kernel/module.c
> index 15e0a16..f42ab3e 100644
> --- a/arch/sparc/kernel/module.c
> +++ b/arch/sparc/kernel/module.c
> @@ -116,6 +116,11 @@ int apply_relocate_add(Elf_Shdr *sechdrs,
>  		v = sym->st_value + rel[i].r_addend;
>  
>  		switch (ELF_R_TYPE(rel[i].r_info) & 0xff) {
> +

I said to get rid of this empty line, please follow the feedback you
were given.  If you continue to ignore my feedback, I will completely
ignore your submissions.
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/arch/sparc/kernel/module.c b/arch/sparc/kernel/module.c
index 15e0a16..f42ab3e 100644
--- a/arch/sparc/kernel/module.c
+++ b/arch/sparc/kernel/module.c
@@ -116,6 +116,11 @@  int apply_relocate_add(Elf_Shdr *sechdrs,
 		v = sym->st_value + rel[i].r_addend;
 
 		switch (ELF_R_TYPE(rel[i].r_info) & 0xff) {
+
+		case R_SPARC_DISP32:
+			v -= (Elf_Addr) location;
+			*loc32 = v;
+			break;
 #ifdef CONFIG_SPARC64
 		case R_SPARC_64:
 			location[0] = v >> 56;
@@ -128,11 +133,6 @@  int apply_relocate_add(Elf_Shdr *sechdrs,
 			location[7] = v >>  0;
 			break;
 
-		case R_SPARC_DISP32:
-			v -= (Elf_Addr) location;
-			*loc32 = v;
-			break;
-
 		case R_SPARC_WDISP19:
 			v -= (Elf_Addr) location;
 			*loc32 = (*loc32 & ~0x7ffff) |