summaryrefslogtreecommitdiff
path: root/src/ppc
diff options
context:
space:
mode:
authorLassi Tuura <lat@cern.ch>2010-04-24 19:16:09 -0700
committerArun Sharma <arun@sharma-home.net>2010-04-24 19:16:09 -0700
commita9dce3c06e6ffcb83957e734d960505415118f00 (patch)
tree8ee730d1a61bdb843942b5efa916f9b9cfec6bb0 /src/ppc
parent4c553ceb2c3fcde6248b05953abc34e162917c4a (diff)
downloadlibunwind-a9dce3c06e6ffcb83957e734d960505415118f00.tar.gz
During the stack unwinding process, the return address points to
the instruction after the call for a normal frame. libunwind uses IP-1 to lookup unwind information. However, this is not necessary for interrupted frames such as signal frames (or interrupt frames) in the kernel context. This patch handles both cases correctly. Based on work by Mark Wielaard <mwielaard@redhat.com>
Diffstat (limited to 'src/ppc')
-rw-r--r--src/ppc/Ginit_local.c4
-rw-r--r--src/ppc/Ginit_remote.c4
2 files changed, 4 insertions, 4 deletions
diff --git a/src/ppc/Ginit_local.c b/src/ppc/Ginit_local.c
index 2d9ab2ce..b931b5b6 100644
--- a/src/ppc/Ginit_local.c
+++ b/src/ppc/Ginit_local.c
@@ -56,9 +56,9 @@ unw_init_local (unw_cursor_t *cursor, ucontext_t *uc)
c->dwarf.as = unw_local_addr_space;
c->dwarf.as_arg = uc;
#ifdef UNW_TARGET_PPC64
- return common_init_ppc64 (c);
+ return common_init_ppc64 (c, 1);
#else
- return common_init_ppc32 (c);
+ return common_init_ppc32 (c, 1);
#endif
}
diff --git a/src/ppc/Ginit_remote.c b/src/ppc/Ginit_remote.c
index 66269d2c..0f4b0fdb 100644
--- a/src/ppc/Ginit_remote.c
+++ b/src/ppc/Ginit_remote.c
@@ -50,9 +50,9 @@ unw_init_remote (unw_cursor_t *cursor, unw_addr_space_t as, void *as_arg)
c->dwarf.as_arg = as_arg;
#ifdef UNW_TARGET_PPC64
- return common_init_ppc64(c);
+ return common_init_ppc64 (c, 0);
#elif UNW_TARGET_PPC32
- return common_init_ppc32 (c);
+ return common_init_ppc32 (c, 0);
#else
#error init_remote :: NO VALID PPC ARCH!
#endif