mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-03-21 22:55:12 +00:00
ARM: 8800/1: use choice for kernel unwinders
While in theory multiple unwinders could be compiled in, it does not make sense in practise. Use a choice to make the unwinder selection mutually exclusive and mandatory. Already before this commit it has not been possible to deselect FRAME_POINTER. Remove the obsolete comment. Furthermore, to produce a meaningful backtrace with FRAME_POINTER enabled the kernel needs a specific function prologue: mov ip, sp stmfd sp!, {fp, ip, lr, pc} sub fp, ip, #4 To get to the required prologue gcc uses apcs and no-sched-prolog. This compiler options are not available on clang, and clang is not able to generate the required prologue. Make the FRAME_POINTER config symbol depending on !clang. Suggested-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Stefan Agner <stefan@agner.ch> Reviewed-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
This commit is contained in:
parent
3f53950190
commit
f9b58e8c7d
2 changed files with 31 additions and 19 deletions
|
@ -45,30 +45,42 @@ config DEBUG_WX
|
||||||
|
|
||||||
If in doubt, say "Y".
|
If in doubt, say "Y".
|
||||||
|
|
||||||
# RMK wants arm kernels compiled with frame pointers or stack unwinding.
|
choice
|
||||||
# If you know what you are doing and are willing to live without stack
|
prompt "Choose kernel unwinder"
|
||||||
# traces, you can get a slightly smaller kernel by setting this option to
|
default UNWINDER_ARM if AEABI && !FUNCTION_GRAPH_TRACER
|
||||||
# n, but then RMK will have to kill you ;).
|
default UNWINDER_FRAME_POINTER if !AEABI || FUNCTION_GRAPH_TRACER
|
||||||
config FRAME_POINTER
|
|
||||||
bool
|
|
||||||
depends on !THUMB2_KERNEL
|
|
||||||
default y if !ARM_UNWIND || FUNCTION_GRAPH_TRACER
|
|
||||||
help
|
help
|
||||||
If you say N here, the resulting kernel will be slightly smaller and
|
This determines which method will be used for unwinding kernel stack
|
||||||
faster. However, if neither FRAME_POINTER nor ARM_UNWIND are enabled,
|
traces for panics, oopses, bugs, warnings, perf, /proc/<pid>/stack,
|
||||||
when a problem occurs with the kernel, the information that is
|
livepatch, lockdep, and more.
|
||||||
reported is severely limited.
|
|
||||||
|
|
||||||
config ARM_UNWIND
|
config UNWINDER_FRAME_POINTER
|
||||||
bool "Enable stack unwinding support (EXPERIMENTAL)"
|
bool "Frame pointer unwinder"
|
||||||
|
depends on !THUMB2_KERNEL && !CC_IS_CLANG
|
||||||
|
select ARCH_WANT_FRAME_POINTERS
|
||||||
|
select FRAME_POINTER
|
||||||
|
help
|
||||||
|
This option enables the frame pointer unwinder for unwinding
|
||||||
|
kernel stack traces.
|
||||||
|
|
||||||
|
config UNWINDER_ARM
|
||||||
|
bool "ARM EABI stack unwinder"
|
||||||
depends on AEABI
|
depends on AEABI
|
||||||
default y
|
select ARM_UNWIND
|
||||||
help
|
help
|
||||||
This option enables stack unwinding support in the kernel
|
This option enables stack unwinding support in the kernel
|
||||||
using the information automatically generated by the
|
using the information automatically generated by the
|
||||||
compiler. The resulting kernel image is slightly bigger but
|
compiler. The resulting kernel image is slightly bigger but
|
||||||
the performance is not affected. Currently, this feature
|
the performance is not affected. Currently, this feature
|
||||||
only works with EABI compilers. If unsure say Y.
|
only works with EABI compilers.
|
||||||
|
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
config ARM_UNWIND
|
||||||
|
bool
|
||||||
|
|
||||||
|
config FRAME_POINTER
|
||||||
|
bool
|
||||||
|
|
||||||
config DEBUG_USER
|
config DEBUG_USER
|
||||||
bool "Verbose user fault messages"
|
bool "Verbose user fault messages"
|
||||||
|
|
|
@ -1179,7 +1179,7 @@ config LOCKDEP
|
||||||
bool
|
bool
|
||||||
depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
|
depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
|
||||||
select STACKTRACE
|
select STACKTRACE
|
||||||
select FRAME_POINTER if !MIPS && !PPC && !ARM_UNWIND && !S390 && !MICROBLAZE && !ARC && !X86
|
select FRAME_POINTER if !MIPS && !PPC && !ARM && !S390 && !MICROBLAZE && !ARC && !X86
|
||||||
select KALLSYMS
|
select KALLSYMS
|
||||||
select KALLSYMS_ALL
|
select KALLSYMS_ALL
|
||||||
|
|
||||||
|
@ -1590,7 +1590,7 @@ config FAULT_INJECTION_STACKTRACE_FILTER
|
||||||
depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
|
depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
|
||||||
depends on !X86_64
|
depends on !X86_64
|
||||||
select STACKTRACE
|
select STACKTRACE
|
||||||
select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC && !X86
|
select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86
|
||||||
help
|
help
|
||||||
Provide stacktrace filter for fault-injection capabilities
|
Provide stacktrace filter for fault-injection capabilities
|
||||||
|
|
||||||
|
@ -1599,7 +1599,7 @@ config LATENCYTOP
|
||||||
depends on DEBUG_KERNEL
|
depends on DEBUG_KERNEL
|
||||||
depends on STACKTRACE_SUPPORT
|
depends on STACKTRACE_SUPPORT
|
||||||
depends on PROC_FS
|
depends on PROC_FS
|
||||||
select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC && !X86
|
select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86
|
||||||
select KALLSYMS
|
select KALLSYMS
|
||||||
select KALLSYMS_ALL
|
select KALLSYMS_ALL
|
||||||
select STACKTRACE
|
select STACKTRACE
|
||||||
|
|
Loading…
Add table
Reference in a new issue