sparc32: Enable the relocation target R_SPARC_DISP32 for sparc32
authorAndreas Larsson <andreas@gaisler.com>
Mon, 17 Sep 2012 19:59:52 +0000 (19:59 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 21 Sep 2012 19:14:19 +0000 (12:14 -0700)
GNU Binutils 2.20.1 generates .eh_frame sections that uses R_SPARC_DISP32.

Signed-off-by: Andreas Larsson <andreas@gaisler.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc/kernel/module.c

index 15e0a16939765148efd633663c131390daaa9893..bae6ab600b7fa82dc7b6179ae4bb0949e8f674b0 100644 (file)
@@ -116,6 +116,10 @@ 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 +132,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) |