aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel/module.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2006-05-12 15:45:50 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2006-05-12 15:45:50 -0400
commit06a1be167ea77c436657587e26cd4d7d6401784c (patch)
tree1d9ed9094496a1e02bfe551631b03495db337a89 /arch/sparc64/kernel/module.c
parent1f8aa2f66b7253d1a42ead0142c7a00d2df5ac89 (diff)
[SPARC]: Handle UNWIND_INFO properly.
For sparc32 we need R_SPARC_UA32 relocation support, for sparc64 we need the handle R_SPARC_DISP32 relocations. Based upon reports and initial patch by Martin Habets. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/kernel/module.c')
-rw-r--r--arch/sparc64/kernel/module.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/sparc64/kernel/module.c b/arch/sparc64/kernel/module.c
index 6c83e372f75d..579871527699 100644
--- a/arch/sparc64/kernel/module.c
+++ b/arch/sparc64/kernel/module.c
@@ -143,6 +143,11 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,
143 location[3] = v >> 0; 143 location[3] = v >> 0;
144 break; 144 break;
145 145
146 case R_SPARC_DISP32:
147 v -= (Elf64_Addr) location;
148 *loc32 = v;
149 break;
150
146 case R_SPARC_WDISP30: 151 case R_SPARC_WDISP30:
147 v -= (Elf64_Addr) location; 152 v -= (Elf64_Addr) location;
148 *loc32 = (*loc32 & ~0x3fffffff) | 153 *loc32 = (*loc32 & ~0x3fffffff) |