diff options
| author | Tony Breeds <tony@bakeyournoodle.com> | 2008-09-02 02:50:38 -0400 |
|---|---|---|
| committer | Paul Mackerras <paulus@samba.org> | 2008-09-03 06:53:34 -0400 |
| commit | 7563dc64585324f443f5ac107eb6d89ee813a2d2 (patch) | |
| tree | ad97560d4280d844ff5a2c0c574962ef4fefa671 /lib | |
| parent | 303996dace16894710a5291327eeb79afdb8ed12 (diff) | |
powerpc: Work around gcc's -fno-omit-frame-pointer bug
This bug is causing random crashes
(http://bugzilla.kernel.org/show_bug.cgi?id=11414).
-fno-omit-frame-pointer is only needed on powerpc when -pg is also
supplied, and there is a gcc bug that causes incorrect code generation
on 32-bit powerpc when -fno-omit-frame-pointer is used---it uses stack
locations below the stack pointer, which is not allowed by the ABI
because those locations can and sometimes do get corrupted by an
interrupt.
This ensures that CONFIG_FRAME_POINTER is only selected by ftrace.
When CONFIG_FTRACE is enabled we also pass -mno-sched-epilog to work
around the gcc codegen bug.
Patch based on work by:
Andreas Schwab <schwab@suse.de>
Segher Boessenkool <segher@kernel.crashing.org>
Signed-off-by: Tony Breeds <tony@bakeyournoodle.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/Kconfig.debug | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 8b5a7d304a5f..0b504814e378 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug | |||
| @@ -394,7 +394,7 @@ config LOCKDEP | |||
| 394 | bool | 394 | bool |
| 395 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT | 395 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT |
| 396 | select STACKTRACE | 396 | select STACKTRACE |
| 397 | select FRAME_POINTER if !X86 && !MIPS | 397 | select FRAME_POINTER if !X86 && !MIPS && !PPC |
| 398 | select KALLSYMS | 398 | select KALLSYMS |
| 399 | select KALLSYMS_ALL | 399 | select KALLSYMS_ALL |
| 400 | 400 | ||
| @@ -676,13 +676,13 @@ config FAULT_INJECTION_STACKTRACE_FILTER | |||
| 676 | depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT | 676 | depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT |
| 677 | depends on !X86_64 | 677 | depends on !X86_64 |
| 678 | select STACKTRACE | 678 | select STACKTRACE |
| 679 | select FRAME_POINTER | 679 | select FRAME_POINTER if !PPC |
| 680 | help | 680 | help |
| 681 | Provide stacktrace filter for fault-injection capabilities | 681 | Provide stacktrace filter for fault-injection capabilities |
| 682 | 682 | ||
| 683 | config LATENCYTOP | 683 | config LATENCYTOP |
| 684 | bool "Latency measuring infrastructure" | 684 | bool "Latency measuring infrastructure" |
| 685 | select FRAME_POINTER if !MIPS | 685 | select FRAME_POINTER if !MIPS && !PPC |
| 686 | select KALLSYMS | 686 | select KALLSYMS |
| 687 | select KALLSYMS_ALL | 687 | select KALLSYMS_ALL |
| 688 | select STACKTRACE | 688 | select STACKTRACE |
