[ARM] 5386/2: unwind: Add Makefile and Kconfig entries for ARM stack unwinding
authorCatalin Marinas <catalin.marinas@arm.com>
Thu, 12 Feb 2009 12:56:34 +0000 (13:56 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 19 Feb 2009 11:30:18 +0000 (11:30 +0000)
This patch also makes the frame pointer default to y only if
!ARM_UNWIND. LOCKDEP no longer selects FRAME_POINTER if ARM_UNWIND is
enabled.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/Kconfig.debug
arch/arm/Makefile
arch/arm/kernel/Makefile
lib/Kconfig.debug

index 192ee01a9ba20b00fef403afa3ffb07d04ec0d19..35f8db35f44208ddfe3b886e5aab3171537f2fc6 100644 (file)
@@ -2,18 +2,29 @@ menu "Kernel hacking"
 
 source "lib/Kconfig.debug"
 
-# RMK wants arm kernels compiled with frame pointers so hardwire this to y.
+# RMK wants arm kernels compiled with frame pointers or stack unwinding.
 # If you know what you are doing and are willing to live without stack
 # traces, you can get a slightly smaller kernel by setting this option to
 # n, but then RMK will have to kill you ;).
 config FRAME_POINTER
        bool
-       default y
+       default y if !ARM_UNWIND
        help
          If you say N here, the resulting kernel will be slightly smaller and
-         faster. However, when a problem occurs with the kernel, the
-         information that is reported is severely limited. Most people
-         should say Y here.
+         faster. However, if neither FRAME_POINTER nor ARM_UNWIND are enabled,
+         when a problem occurs with the kernel, the information that is
+         reported is severely limited.
+
+config ARM_UNWIND
+       bool "Enable stack unwinding support"
+       depends on AEABI && EXPERIMENTAL
+       default y
+       help
+         This option enables stack unwinding support in the kernel
+         using the information automatically generated by the
+         compiler. The resulting kernel image is slightly bigger but
+         the performance is not affected. Currently, this feature
+         only works with EABI compilers. If unsure say Y.
 
 config DEBUG_USER
        bool "Verbose user fault messages"
index 24e0f0187697009fb19de797f8e7f76042b94e9e..e7ef876e574ba53b9109bcfb1c670f05eca9b04b 100644 (file)
@@ -85,6 +85,10 @@ else
 CFLAGS_ABI     :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,)
 endif
 
+ifeq ($(CONFIG_ARM_UNWIND),y)
+CFLAGS_ABI     +=-funwind-tables
+endif
+
 # Need -Uarm for gcc < 3.x
 KBUILD_CFLAGS  +=$(CFLAGS_ABI) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm
 KBUILD_AFLAGS  +=$(CFLAGS_ABI) $(arch-y) $(tune-y) -msoft-float
index 4305345987d3d1c45a018d8ca089b8ab182bd895..ca60d335e8facf55af36a8578a11d586d8fa87c0 100644 (file)
@@ -29,6 +29,7 @@ obj-$(CONFIG_ATAGS_PROC)      += atags.o
 obj-$(CONFIG_OABI_COMPAT)      += sys_oabi-compat.o
 obj-$(CONFIG_ARM_THUMBEE)      += thumbee.o
 obj-$(CONFIG_KGDB)             += kgdb.o
+obj-$(CONFIG_ARM_UNWIND)       += unwind.o
 
 obj-$(CONFIG_CRUNCH)           += crunch.o crunch-bits.o
 AFLAGS_crunch-bits.o           := -Wa,-mcpu=ep9312
index 29044f500269c3b9ad9b834adc21a77557ac897b..08275a5aa00e6d29b69c81595491c2ff9d4b7754 100644 (file)
@@ -402,7 +402,7 @@ config LOCKDEP
        bool
        depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
        select STACKTRACE
-       select FRAME_POINTER if !X86 && !MIPS && !PPC
+       select FRAME_POINTER if !X86 && !MIPS && !PPC && !ARM_UNWIND
        select KALLSYMS
        select KALLSYMS_ALL