diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2006-05-12 19:45:50 (GMT) |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-05-12 19:45:50 (GMT) |
commit | 06a1be167ea77c436657587e26cd4d7d6401784c (patch) | |
tree | 1d9ed9094496a1e02bfe551631b03495db337a89 /arch/sparc64/kernel/module.c | |
parent | 1f8aa2f66b7253d1a42ead0142c7a00d2df5ac89 (diff) | |
download | linux-fsl-qoriq-06a1be167ea77c436657587e26cd4d7d6401784c.tar.xz |
[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.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/sparc64/kernel/module.c b/arch/sparc64/kernel/module.c index 6c83e37..5798715 100644 --- a/arch/sparc64/kernel/module.c +++ b/arch/sparc64/kernel/module.c @@ -143,6 +143,11 @@ int apply_relocate_add(Elf64_Shdr *sechdrs, location[3] = v >> 0; break; + case R_SPARC_DISP32: + v -= (Elf64_Addr) location; + *loc32 = v; + break; + case R_SPARC_WDISP30: v -= (Elf64_Addr) location; *loc32 = (*loc32 & ~0x3fffffff) | |