Commit 06a1be16 authored by David S. Miller's avatar David S. Miller

[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: default avatarDavid S. Miller <davem@davemloft.net>
parent 1f8aa2f6
...@@ -113,6 +113,7 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, ...@@ -113,6 +113,7 @@ int apply_relocate_add(Elf32_Shdr *sechdrs,
switch (ELF32_R_TYPE(rel[i].r_info)) { switch (ELF32_R_TYPE(rel[i].r_info)) {
case R_SPARC_32: case R_SPARC_32:
case R_SPARC_UA32:
location[0] = v >> 24; location[0] = v >> 24;
location[1] = v >> 16; location[1] = v >> 16;
location[2] = v >> 8; location[2] = v >> 8;
......
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.17-rc3 # Linux kernel version: 2.6.17-rc3
# Mon May 8 15:12:53 2006 # Fri May 12 12:43:49 2006
# #
CONFIG_SPARC=y CONFIG_SPARC=y
CONFIG_SPARC64=y CONFIG_SPARC64=y
...@@ -1309,6 +1309,7 @@ CONFIG_DEBUG_BUGVERBOSE=y ...@@ -1309,6 +1309,7 @@ CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set # CONFIG_DEBUG_INFO is not set
CONFIG_DEBUG_FS=y CONFIG_DEBUG_FS=y
# CONFIG_DEBUG_VM is not set # CONFIG_DEBUG_VM is not set
# CONFIG_UNWIND_INFO is not set
CONFIG_FORCED_INLINING=y CONFIG_FORCED_INLINING=y
# CONFIG_RCU_TORTURE_TEST is not set # CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_DEBUG_STACK_USAGE is not set # CONFIG_DEBUG_STACK_USAGE is not set
......
...@@ -143,6 +143,11 @@ int apply_relocate_add(Elf64_Shdr *sechdrs, ...@@ -143,6 +143,11 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,
location[3] = v >> 0; location[3] = v >> 0;
break; break;
case R_SPARC_DISP32:
v -= (Elf64_Addr) location;
*loc32 = v;
break;
case R_SPARC_WDISP30: case R_SPARC_WDISP30:
v -= (Elf64_Addr) location; v -= (Elf64_Addr) location;
*loc32 = (*loc32 & ~0x3fffffff) | *loc32 = (*loc32 & ~0x3fffffff) |
......
...@@ -189,7 +189,7 @@ config FRAME_POINTER ...@@ -189,7 +189,7 @@ config FRAME_POINTER
config UNWIND_INFO config UNWIND_INFO
bool "Compile the kernel with frame unwind information" bool "Compile the kernel with frame unwind information"
depends on !IA64 depends on !IA64
depends on !MODULES || !(MIPS || PARISC || PPC || SUPERH || SPARC64 || V850) depends on !MODULES || !(MIPS || PARISC || PPC || SUPERH || V850)
help help
If you say Y here the resulting kernel image will be slightly larger If you say Y here the resulting kernel image will be slightly larger
but not slower, and it will give very useful debugging information. but not slower, and it will give very useful debugging information.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment