The parameter save area starts at sp+8 on ppc32 and at sp+112 on ppc64.
Signed-off-by: Andreas Schwab <[email protected]>
---
sysdeps/linux-gnu/ppc/trace.c | 18 +++++++++++++++---
1 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/sysdeps/linux-gnu/ppc/trace.c b/sysdeps/linux-gnu/ppc/trace.c
index ee696d8..8642157 100644
--- a/sysdeps/linux-gnu/ppc/trace.c
+++ b/sysdeps/linux-gnu/ppc/trace.c
@@ -87,10 +87,22 @@ gimme_arg_regset(enum tof type, Process *proc, int arg_num,
arg_type_info *info,
}
else if (greg <= 10)
return (*regs)[greg++];
- else
+ else {
+#ifdef __powerpc64__
+ if (proc->mask_32bit)
+ return ptrace (PTRACE_PEEKDATA, proc->pid,
+ proc->stack_pointer + 8 +
+ sizeof (int) * (arg_num - 8), 0) >> 32;
+ else
+ return ptrace (PTRACE_PEEKDATA, proc->pid,
+ proc->stack_pointer + 112 +
+ sizeof (long) * (arg_num - 8), 0);
+#else
return ptrace (PTRACE_PEEKDATA, proc->pid,
- proc->stack_pointer + sizeof (long) *
- (arg_num - 8), 0);
+ proc->stack_pointer + 8 +
+ sizeof (long) * (arg_num - 8), 0);
+#endif
+ }
return 0;
}
--
1.7.5.1
--
Andreas Schwab, [email protected]
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
_______________________________________________
Ltrace-devel mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/ltrace-devel