return NULL;
}
-static long get_regs(pid_t pid);
+static long get_regs(struct tcb *);
static int get_syscall_args(struct tcb *);
static int get_syscall_result(struct tcb *);
static int arch_get_scno(struct tcb *tcp);
#else
# error Neither ARCH_PC_REG nor ARCH_PC_PEEK_ADDR is defined
#endif
- if (get_regs(tcp->pid) < 0 || ARCH_GET_PC)
+ if (get_regs(tcp) < 0 || ARCH_GET_PC)
tprints(current_wordsize == 4 ? "[????????] "
: "[????????????????] ");
else
}
static long
-get_regs(pid_t pid)
+get_regs(struct tcb *const tcp)
{
#ifdef ptrace_getregset_or_getregs
*/
static int use_getregs_old;
if (use_getregs_old < 0) {
- return get_regs_error = ptrace_getregset_or_getregs(pid);
+ return get_regs_error = ptrace_getregset_or_getregs(tcp->pid);
} else if (use_getregs_old == 0) {
- get_regs_error = ptrace_getregset_or_getregs(pid);
+ get_regs_error = ptrace_getregset_or_getregs(tcp->pid);
if (get_regs_error >= 0) {
use_getregs_old = -1;
return get_regs_error;
return get_regs_error;
use_getregs_old = 1;
}
- return get_regs_error = getregs_old(pid);
+ return get_regs_error = getregs_old(tcp->pid);
# else /* !HAVE_GETREGS_OLD */
/* Assume that PTRACE_GETREGSET/PTRACE_GETREGS works. */
- return get_regs_error = ptrace_getregset_or_getregs(pid);
+ return get_regs_error = ptrace_getregset_or_getregs(tcp->pid);
# endif /* !HAVE_GETREGS_OLD */
#else /* !ptrace_getregset_or_getregs */
int
get_scno(struct tcb *tcp)
{
- if (get_regs(tcp->pid) < 0)
+ if (get_regs(tcp) < 0)
return -1;
int rc = arch_get_scno(tcp);
get_syscall_result(struct tcb *tcp)
{
#ifdef ptrace_getregset_or_getregs
- if (get_regs(tcp->pid) < 0)
+ if (get_regs(tcp) < 0)
return -1;
#else
if (get_syscall_result_regs(tcp))