Skip to content

Commit

Permalink
[SPARC]: Handle UNWIND_INFO properly.
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
David S. Miller committed May 12, 2006
1 parent 1f8aa2f commit 06a1be1
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 2 deletions.
1 change: 1 addition & 0 deletions arch/sparc/kernel/module.c
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ int apply_relocate_add(Elf32_Shdr *sechdrs,

switch (ELF32_R_TYPE(rel[i].r_info)) {
case R_SPARC_32:
case R_SPARC_UA32:
location[0] = v >> 24;
location[1] = v >> 16;
location[2] = v >> 8;
Expand Down
3 changes: 2 additions & 1 deletion arch/sparc64/defconfig
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# 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_SPARC64=y
Expand Down Expand Up @@ -1309,6 +1309,7 @@ CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
CONFIG_DEBUG_FS=y
# CONFIG_DEBUG_VM is not set
# CONFIG_UNWIND_INFO is not set
CONFIG_FORCED_INLINING=y
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_DEBUG_STACK_USAGE is not set
Expand Down
5 changes: 5 additions & 0 deletions arch/sparc64/kernel/module.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) |
Expand Down
2 changes: 1 addition & 1 deletion lib/Kconfig.debug
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ config FRAME_POINTER
config UNWIND_INFO
bool "Compile the kernel with frame unwind information"
depends on !IA64
depends on !MODULES || !(MIPS || PARISC || PPC || SUPERH || SPARC64 || V850)
depends on !MODULES || !(MIPS || PARISC || PPC || SUPERH || V850)
help
If you say Y here the resulting kernel image will be slightly larger
but not slower, and it will give very useful debugging information.
Expand Down

0 comments on commit 06a1be1

Please sign in to comment.