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 sh: Add an arch/sh/kernel/.gitignore 2008-07-29 08:29:32 +09:00
Makefile sh: nmi_debug support. 2009-09-01 17:38:32 +09:00
asm-offsets.c sh: Provide diagnostic kernel stack checks 2009-07-11 10:07:58 +09:00
cpufreq.c sh: cpufreq: Include CPU id in info messages. 2009-09-15 09:26:04 +09:00
crash_dump.c kdump: make elfcorehdr_addr independent of CONFIG_PROC_VMCORE 2008-10-20 08:52:39 -07:00
debugtraps.S sh: unwinder: Use a special bug flag for unwinder traps. 2009-08-22 05:28:25 +09:00
disassemble.c sh: Add a simple code dumper for SUPERH32 show_regs(). 2008-12-22 18:43:49 +09:00
dumpstack.c sh: flag the default unwinder as reliable. 2009-08-15 01:09:03 +09:00
dwarf.c sh: Check for return_to_handler when unwinding the stack 2009-10-26 10:04:56 +09:00
early_printk.c sh: Fix up early printk build error. 2009-08-04 15:54:33 +09:00
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 sh: use gpiolib 2009-01-27 14:49:10 +09:00
head_32.S sh: convert to use __HEAD and HEAD_TEXT macros. 2009-04-26 09:20:39 -07:00
head_64.S sh: convert to use __HEAD and HEAD_TEXT macros. 2009-04-26 09:20:39 -07:00
idle.c sh: Provide cpu_idle_wait() to fix up cpuidle/SMP build. 2009-06-23 17:30:17 +09:00
init_task.c Use new __init_task_data macro in arch init_task.c files. 2009-09-21 06:27:08 +02:00
io.c sh: Optimise memcpy_to/fromio for SH4 2009-08-24 17:35:07 +09:00
io_generic.c sh: Handle ioport_map() cases for >= P1SEG addresses. 2009-09-28 15:04:04 +09:00
io_trapped.c sh: Only shout about fixing up unexpected unaligned accesses 2009-08-29 20:31:44 +09:00
irq.c sh: __irq_entry annotate do_IRQ(). 2009-10-26 09:58:31 +09:00
kgdb.c sh: Kill off kgdb's magical NMI debouncing. 2009-09-01 17:45:35 +09:00
kprobes.c sh: kprobes: kretprobe_trampoline needs to be global. 2008-09-09 08:13:28 +09:00
localtimer.c sh: Fix up clockevents broadcasting. 2009-08-19 18:00:03 +09:00
machine_kexec.c sh: disallow kexec virtual entry 2009-03-20 18:56:04 +09:00
machvec.c sh: Set the default I/O port base to P2SEG. 2009-09-28 15:05:41 +09:00
module.c module: cleanup FIXME comments about trimming exception table entries. 2009-06-12 21:47:05 +09:30
nmi_debug.c sh: nmi_debug support. 2009-09-01 17:38:32 +09:00
process_32.c sh: Use internal watchdog timer to perform reset 2009-08-24 16:20:44 +09:00
process_64.c sh: Tidy up NEFF-based sign extension for SH-5. 2009-08-04 17:14:39 +09:00
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 sh: add kexec jump support 2009-03-18 18:57:43 +09:00
setup.c sh: Tidy up SMP cpuinfo. 2009-10-14 15:43:52 +09:00
sh_bios.c sh: Kill off sh_bios_in_gdb_mode(). 2008-12-22 18:44:44 +09:00
sh_ksyms_32.c sh: Build fix: define more __movmem* symbols 2009-10-26 10:00:26 +09:00
sh_ksyms_64.c sh: Fix up the SH-5 build with caches enabled. 2009-08-16 01:50:17 +09:00
signal_32.c sh: Optimize the setup_rt_frame() I-cache flush. 2009-10-14 15:49:45 +09:00
signal_64.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2009-09-16 13:48:32 +09:00
smp.c sh: Populate initial secondary CPU info from boot_cpu_data. 2009-10-14 15:44:12 +09:00
stacktrace.c sh: stacktrace: Properly terminate the trace entry buffer. 2009-08-15 01:11:37 +09:00
swsusp.c sh: hibernation support 2009-03-10 12:55:40 +09:00
sys_sh.c sh: fix sys_cacheflush error checking 2009-08-24 18:59:09 +09:00
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
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 sh: replace remaining __FUNCTION__ occurrences 2008-03-06 11:18:22 +09:00
traps.c sh: nmi_debug support. 2009-09-01 17:38:32 +09:00
traps_32.c sh: update die() output. 2009-10-13 10:57:52 +09:00
traps_64.c sh: Always fixup unaligned userspace accesses on sh64. 2009-05-08 20:32:56 +09:00
unwinder.c sh: unwinder: Use a special bug flag for unwinder traps. 2009-08-22 05:28:25 +09:00
vmlinux.lds.S Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2009-09-16 13:48:32 +09:00