linux/arch/sh/kernel
Matt Fleming 60339fad5c sh: Check for return_to_handler when unwinding the stack
When CONFIG_FUNCTION_GRAPH_TRACER is enabled the function graph tracer
may patch return addresses on the stack with the address of
return_to_handler(). This really confuses the DWARF unwinder because it
will try find the caller of return_to_handler(), not the caller of the
real return address.

So teach the DWARF unwinder how to find the real return address whenever
it encounters return_to_handler().

This patch does not cope very well when multiple return addresses on the
stack have been patched. To make it work properly it would require state
to track how many return_to_handler()'s have been seen so that we'd know
where to look in current->curr_ret_stack[]. So for now, instead of
trying to handle this, just moan if more than one return address on the
stack has been patched.

Signed-off-by: Matt Fleming <matt@console-pimps.org>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2009-10-26 10:04:56 +09:00
..
cpu sh: Don't enable interrupts in the page fault path 2009-09-28 15:11:45 +09:00
vsyscall kbuild: rename ld-option to cc-ldoption 2009-09-20 12:27:42 +02:00
.gitignore
asm-offsets.c
cpufreq.c
crash_dump.c
debugtraps.S
disassemble.c
dumpstack.c
dwarf.c sh: Check for return_to_handler when unwinding the stack 2009-10-26 10:04:56 +09:00
early_printk.c
entry-common.S sh: Fix a TRACE_IRQS_OFF typo. 2009-10-14 15:50:28 +09:00
ftrace.c sh: ftrace: Fix up syscall tracepoint support. 2009-10-13 12:42:48 +09:00
gpio.c
head_32.S
head_64.S
idle.c
init_task.c Use new __init_task_data macro in arch init_task.c files. 2009-09-21 06:27:08 +02:00
io_generic.c sh: Handle ioport_map() cases for >= P1SEG addresses. 2009-09-28 15:04:04 +09:00
io_trapped.c
io.c
irq.c sh: __irq_entry annotate do_IRQ(). 2009-10-26 09:58:31 +09:00
kgdb.c
kprobes.c
localtimer.c
machine_kexec.c
machvec.c sh: Set the default I/O port base to P2SEG. 2009-09-28 15:05:41 +09:00
Makefile
module.c
nmi_debug.c
process_32.c
process_64.c
ptrace_32.c sh: Wire up HAVE_SYSCALL_TRACEPOINTS. 2009-09-16 14:30:34 +09:00
ptrace_64.c sh: Wire up HAVE_SYSCALL_TRACEPOINTS. 2009-09-16 14:30:34 +09:00
relocate_kernel.S
setup.c sh: Tidy up SMP cpuinfo. 2009-10-14 15:43:52 +09:00
sh_bios.c
sh_ksyms_32.c sh: Build fix: define more __movmem* symbols 2009-10-26 10:00:26 +09:00
sh_ksyms_64.c
signal_32.c sh: Optimize the setup_rt_frame() I-cache flush. 2009-10-14 15:49:45 +09:00
signal_64.c
smp.c sh: Populate initial secondary CPU info from boot_cpu_data. 2009-10-14 15:44:12 +09:00
stacktrace.c
swsusp.c
sys_sh32.c headers: utsname.h redux 2009-09-23 18:13:10 -07:00
sys_sh64.c headers: utsname.h redux 2009-09-23 18:13:10 -07:00
sys_sh.c
syscalls_32.S perf: Do the big rename: Performance Counters -> Performance Events 2009-09-21 14:28:04 +02:00
syscalls_64.S perf: Do the big rename: Performance Counters -> Performance Events 2009-09-21 14:28:04 +02:00
time.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 2009-09-18 09:43:09 -07:00
topology.c
traps_32.c sh: update die() output. 2009-10-13 10:57:52 +09:00
traps_64.c
traps.c
unwinder.c
vmlinux.lds.S