* defs.h (QUAL_READ, QUAL_WRITE): Change description. (traced, raw, inject, dump_read, dump_write): Add macros for checking QUAL_TRACE, QUAL_RAW, QUAL_INJECT, QUAL_READ, QUAL_WRITE. * syscall.c (syscall_entering_trace, syscall_exiting_trace): Use new macros. --- defs.h | 9 +++++++-- syscall.c | 13 +++++-------- 2 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/defs.h b/defs.h index 92cde26e..87f831f1 100644 --- a/defs.h +++ b/defs.h @@ -254,16 +254,21 @@ struct tcb { #define QUAL_RAW 0x008 /* print all args in hex for this syscall */ #define QUAL_INJECT 0x010 /* tamper with this system call on purpose */ #define QUAL_SIGNAL 0x100 /* report events with this signal */ -#define QUAL_READ 0x200 /* dump data read from this file descriptor */ -#define QUAL_WRITE 0x400 /* dump data written to this file descriptor */ +#define QUAL_READ 0x200 /* dump data read in this syscall */ +#define QUAL_WRITE 0x400 /* dump data written in this syscall */ #define DEFAULT_QUAL_FLAGS (QUAL_TRACE | QUAL_ABBREV | QUAL_VERBOSE) #define entering(tcp) (!((tcp)->flags & TCB_INSYSCALL)) #define exiting(tcp) ((tcp)->flags & TCB_INSYSCALL) #define syserror(tcp) ((tcp)->u_error != 0) +#define traced(tcp) ((tcp)->qual_flg & QUAL_TRACE) #define verbose(tcp) ((tcp)->qual_flg & QUAL_VERBOSE) #define abbrev(tcp) ((tcp)->qual_flg & QUAL_ABBREV) +#define raw(tcp) ((tcp)->qual_flg & QUAL_RAW) +#define inject(tcp) ((tcp)->qual_flg & QUAL_INJECT) +#define dump_read(tcp) ((tcp)->qual_flg & QUAL_READ) +#define dump_write(tcp) ((tcp)->qual_flg & QUAL_WRITE) #define filtered(tcp) ((tcp)->flags & TCB_FILTERED) #define hide_log(tcp) ((tcp)->flags & TCB_HIDE_LOG) diff --git a/syscall.c b/syscall.c index d5aeabf0..6b1d2dcd 100644 --- a/syscall.c +++ b/syscall.c @@ -681,9 +681,7 @@ syscall_entering_trace(struct tcb *tcp, unsigned int *sig) break; } - if (!(tcp->qual_flg & QUAL_TRACE) - || (tracing_paths && !pathtrace_match(tcp)) - ) { + if (!traced(tcp) || (tracing_paths && !pathtrace_match(tcp))) { tcp->flags |= TCB_FILTERED; return 0; } @@ -694,7 +692,7 @@ syscall_entering_trace(struct tcb *tcp, unsigned int *sig) return 0; } - if (tcp->qual_flg & QUAL_INJECT) + if (inject(tcp)) tamper_with_syscall_entering(tcp, sig); if (cflag == CFLAG_ONLY_STATS) { @@ -710,8 +708,7 @@ syscall_entering_trace(struct tcb *tcp, unsigned int *sig) printleader(tcp); tprintf("%s(", tcp->s_ent->sys_name); - int res = (tcp->qual_flg & QUAL_RAW) - ? printargs(tcp) : tcp->s_ent->sys_func(tcp); + int res = raw(tcp) ? printargs(tcp) : tcp->s_ent->sys_func(tcp); fflush(tcp->outf); return res; } @@ -805,7 +802,7 @@ syscall_exiting_trace(struct tcb *tcp, struct timeval tv, int res) tcp->s_prev_ent = tcp->s_ent; int sys_res = 0; - if (tcp->qual_flg & QUAL_RAW) { + if (raw(tcp)) { /* sys_res = printargs(tcp); - but it's nop on sysexit */ } else { /* FIXME: not_failing_only (IOW, option -z) is broken: @@ -828,7 +825,7 @@ syscall_exiting_trace(struct tcb *tcp, struct timeval tv, int res) tabto(); unsigned long u_error = tcp->u_error; - if (tcp->qual_flg & QUAL_RAW) { + if (raw(tcp)) { if (u_error) { tprintf("= -1 (errno %lu)", u_error); } else { -- 2.11.0 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel