diff options
Diffstat (limited to 'usr.bin/truss/amd64-fbsd32.c')
-rw-r--r-- | usr.bin/truss/amd64-fbsd32.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/usr.bin/truss/amd64-fbsd32.c b/usr.bin/truss/amd64-fbsd32.c index f9e435d..6abd99f 100644 --- a/usr.bin/truss/amd64-fbsd32.c +++ b/usr.bin/truss/amd64-fbsd32.c @@ -222,13 +222,6 @@ i386_syscall_entry(struct trussinfo *trussinfo, int nargs) { fprintf(trussinfo->outfile, "\n"); #endif - /* - * Some system calls should be printed out before they are done -- - * execve() and exit(), for example, never return. Possibly change - * this to work for any system call that doesn't have an OUT - * parameter? - */ - if (fsc.name != NULL && (!strcmp(fsc.name, "execve") || !strcmp(fsc.name, "exit"))) { @@ -249,8 +242,6 @@ i386_syscall_entry(struct trussinfo *trussinfo, int nargs) { } } - print_syscall(trussinfo, fsc.name, fsc.nargs, fsc.s_args); - fprintf(trussinfo->outfile, "\n"); } return; @@ -272,6 +263,8 @@ i386_syscall_exit(struct trussinfo *trussinfo, int syscall_num __unused) int errorp; struct syscall *sc; + if (fsc.name == NULL) + return (-1); cpid = trussinfo->curthread->tid; if (ptrace(PT_GETREGS, cpid, (caddr_t)®s, 0) < 0) @@ -326,6 +319,11 @@ i386_syscall_exit(struct trussinfo *trussinfo, int syscall_num __unused) retval = 0; } + if (fsc.name != NULL && + (!strcmp(fsc.name, "execve") || !strcmp(fsc.name, "exit"))) { + trussinfo->curthread->in_syscall = 1; + } + /* * It would probably be a good idea to merge the error handling, * but that complicates things considerably. |