#define TP TRACE_PROCESS
#define TS TRACE_SIGNAL
#define TM TRACE_MEMORY
-#define TSC TRACE_SCHED
-#define TCL TRACE_CLOCK
#define TSF TRACE_STATFS
#define NF SYSCALL_NEVER_FAILS
#define MA MAX_ARGS
#undef TP
#undef TS
#undef TM
-#undef TSC
-#undef TCL
#undef TSF
#undef NF
#undef MA
get_regs_error = -1;
}
+static void get_regs(pid_t pid);
static int get_syscall_args(struct tcb *);
static int get_syscall_result(struct tcb *);
static int arch_get_scno(struct tcb *tcp);
struct timeval tv;
/* Measure the exit time as early as possible to avoid errors. */
- if (Tflag || cflag)
+ if ((Tflag || cflag) && !(filtered(tcp) || hide_log(tcp)))
gettimeofday(&tv, NULL);
#ifdef USE_LIBUNWIND
}
#endif
+ if (filtered(tcp) || hide_log(tcp))
+ goto ret;
+
+ get_regs(tcp->pid);
#if SUPPORTED_PERSONALITIES > 1
update_personality(tcp, tcp->currpers);
#endif
int res = (get_regs_error ? -1 : get_syscall_result(tcp));
- if (filtered(tcp) || hide_log(tcp))
- goto ret;
if (syserror(tcp) && syscall_tampered(tcp))
tamper_with_syscall_exiting(tcp);
#else
# error Neither ARCH_PC_REG nor ARCH_PC_PEEK_ADDR is defined
#endif
+ get_regs(tcp->pid);
if (get_regs_error || ARCH_GET_PC)
tprints(current_wordsize == 4 ? "[????????] "
: "[????????????????] ");
#endif /* ARCH_REGS_FOR_GETREGSET || ARCH_REGS_FOR_GETREGS */
-void
+static void
get_regs(pid_t pid)
{
#undef USE_GET_SYSCALL_RESULT_REGS
int
get_scno(struct tcb *tcp)
{
+ get_regs(tcp->pid);
+
if (get_regs_error)
return -1;