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:
Дмитрий Левин 2017-04-11 04:04:37 +00:00
parent 83265998b8
commit 13ffa22088
2 changed files with 4 additions and 2 deletions

View File

@ -2295,10 +2295,9 @@ trace(void)
return true;
}
clear_regs();
if (WIFSTOPPED(status))
get_regs(pid);
else
clear_regs();
event = (unsigned int) status >> 16;

View File

@ -1156,6 +1156,9 @@ get_regs(pid_t pid)
#undef USE_GET_SYSCALL_RESULT_REGS
#ifdef ptrace_getregset_or_getregs
if (get_regs_error != -1)
return;
# ifdef HAVE_GETREGS_OLD
/*
* Try PTRACE_GETREGSET/PTRACE_GETREGS first,