aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/linux-gnu/x86_64/trace.c
diff options
context:
space:
mode:
authorJuan Cespedes <cespedes@coco.thehackers.org>2009-05-22 19:12:07 +0200
committerJuan Cespedes <cespedes@coco.thehackers.org>2009-05-22 19:12:07 +0200
commit3e94cbf0d388a5b5b49f8dbc60f4b24900de89ae (patch)
tree807917dc27f4a2783473ba116f362c455431cf2d /sysdeps/linux-gnu/x86_64/trace.c
parent30439b42294d678f2066522aecdb664132170a41 (diff)
downloadltrace-3e94cbf0d388a5b5b49f8dbc60f4b24900de89ae.tar.gz
See syscalls as syscalls and not sysrets when we are a clone
Diffstat (limited to 'sysdeps/linux-gnu/x86_64/trace.c')
-rw-r--r--sysdeps/linux-gnu/x86_64/trace.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sysdeps/linux-gnu/x86_64/trace.c b/sysdeps/linux-gnu/x86_64/trace.c
index 127b874..bbaa5f7 100644
--- a/sysdeps/linux-gnu/x86_64/trace.c
+++ b/sysdeps/linux-gnu/x86_64/trace.c
@@ -41,7 +41,8 @@ syscall_p(Process *proc, int status, int *sysnum) {
*sysnum = ptrace(PTRACE_PEEKUSER, proc->pid, 8 * ORIG_RAX, 0);
if (proc->callstack_depth > 0 &&
- proc->callstack[proc->callstack_depth - 1].is_syscall) {
+ proc->callstack[proc->callstack_depth - 1].is_syscall &&
+ proc->callstack[proc->callstack_depth - 1].c_un.syscall == *sysnum) {
return 2;
}