get_regs: guard against subsequent invocations
At this moment there is only one call to get_regs, but there is going to be more of them, so a guard is needed. This change also adds a clear_regs call before get_regs, which essentially reverts commit v4.9-288-ge9bfff6. * strace.c (trace): Call clear_regs before get_regs. * syscall.c (get_regs): Skip if get_regs_error != -1.
This commit is contained in:
parent
83265998b8
commit
13ffa22088
3
strace.c
3
strace.c
@ -2295,10 +2295,9 @@ trace(void)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
clear_regs();
|
||||||
if (WIFSTOPPED(status))
|
if (WIFSTOPPED(status))
|
||||||
get_regs(pid);
|
get_regs(pid);
|
||||||
else
|
|
||||||
clear_regs();
|
|
||||||
|
|
||||||
event = (unsigned int) status >> 16;
|
event = (unsigned int) status >> 16;
|
||||||
|
|
||||||
|
@ -1156,6 +1156,9 @@ get_regs(pid_t pid)
|
|||||||
#undef USE_GET_SYSCALL_RESULT_REGS
|
#undef USE_GET_SYSCALL_RESULT_REGS
|
||||||
#ifdef ptrace_getregset_or_getregs
|
#ifdef ptrace_getregset_or_getregs
|
||||||
|
|
||||||
|
if (get_regs_error != -1)
|
||||||
|
return;
|
||||||
|
|
||||||
# ifdef HAVE_GETREGS_OLD
|
# ifdef HAVE_GETREGS_OLD
|
||||||
/*
|
/*
|
||||||
* Try PTRACE_GETREGSET/PTRACE_GETREGS first,
|
* Try PTRACE_GETREGSET/PTRACE_GETREGS first,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user