Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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;
+2 −1
Original line number Diff line number Diff line
#
# 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
@@ -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
+5 −0
Original line number Diff line number Diff line
@@ -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) |
+1 −1
Original line number Diff line number Diff line
@@ -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.