diff options
author | Fabrice Le Fessant <fabrice.le_fessant@ocamlpro.com> | 2022-10-18 11:23:15 +0200 |
---|---|---|
committer | Dmitry V. Levin <ldv@strace.io> | 2022-12-16 08:00:00 +0000 |
commit | 75318579cb1b8c7ff42e3f4254b4133d23c7a937 (patch) | |
tree | 11019c452cc534065d35527199811be705ad9dad | |
parent | 28863b3901704740823d64487711c70751d99fc9 (diff) | |
download | strace-75318579cb1b8c7ff42e3f4254b4133d23c7a937.tar.gz |
src: introduce tprint_shift_begin and tprint_shift_end helpers
* src/print_fields.h (tprint_shift_begin, tprint_shift_end): New
functions.
* src/futex.c (do_futex): Use them.
* src/ipc.c (SYS_FUNC(ipc)): Likewise.
* src/ipc_shm.c (SYS_FUNC(shmget)): Likewise.
* src/kd_ioctl.c (kd_mk_tone): Likewise.
* src/mem.c (print_mmap_flags): Likewise.
* src/memfd_create.c (SYS_FUNC(memfd_create)): Likewise.
* src/netlink.c (decode_nlmsg_type_netfilter): Likewise.
* src/perf.c (print_perf_event_attr): Likewise.
* src/term.c (decode_cflag): Likewise.
* src/util.c (print_abnormal_hi): Likewise.
* src/wait.c (printstatus): Likewise.
Co-authored-by: Dmitry V. Levin <ldv@strace.io>
-rw-r--r-- | src/futex.c | 8 | ||||
-rw-r--r-- | src/ipc.c | 2 | ||||
-rw-r--r-- | src/ipc_shm.c | 2 | ||||
-rw-r--r-- | src/kd_ioctl.c | 2 | ||||
-rw-r--r-- | src/mem.c | 2 | ||||
-rw-r--r-- | src/memfd_create.c | 2 | ||||
-rw-r--r-- | src/netlink.c | 4 | ||||
-rw-r--r-- | src/perf.c | 12 | ||||
-rw-r--r-- | src/print_fields.h | 10 | ||||
-rw-r--r-- | src/term.c | 2 | ||||
-rw-r--r-- | src/util.c | 2 | ||||
-rw-r--r-- | src/wait.c | 2 |
12 files changed, 49 insertions, 1 deletions
diff --git a/src/futex.c b/src/futex.c index 241a60ed3..483ad14b5 100644 --- a/src/futex.c +++ b/src/futex.c @@ -112,25 +112,33 @@ do_futex(struct tcb *const tcp, const print_obj_by_addr_fn print_ts) tprint_arg_next(); if ((val3 >> 28) & FUTEX_OP_OPARG_SHIFT) { + tprint_shift_begin(); print_xlat(FUTEX_OP_OPARG_SHIFT); tprint_shift(); PRINT_VAL_U(28); + tprint_shift_end(); tprint_flags_or(); } + tprint_shift_begin(); comment = printxval(futexwakeops, (val3 >> 28) & 0x7, NULL) ? NULL : "FUTEX_OP_???"; tprint_shift(); PRINT_VAL_U(28); + tprint_shift_end(); tprints_comment(comment); tprint_flags_or(); + tprint_shift_begin(); PRINT_VAL_X((val3 >> 12) & 0xfff); tprint_shift(); PRINT_VAL_U(12); + tprint_shift_end(); tprint_flags_or(); + tprint_shift_begin(); comment = printxval(futexwakecmps, (val3 >> 24) & 0xf, NULL) ? NULL : "FUTEX_OP_CMP_???"; tprint_shift(); PRINT_VAL_U(24); + tprint_shift_end(); tprints_comment(comment); tprint_flags_or(); PRINT_VAL_X(val3 & 0xfff); @@ -16,9 +16,11 @@ SYS_FUNC(ipc) call &= 0xffff; if (version) { + tprint_shift_begin(); PRINT_VAL_U(version); tprint_shift(); PRINT_VAL_U(16); + tprint_shift_end(); tprint_flags_or(); } diff --git a/src/ipc_shm.c b/src/ipc_shm.c index 6a3cc06cd..e211d09ce 100644 --- a/src/ipc_shm.c +++ b/src/ipc_shm.c @@ -49,9 +49,11 @@ SYS_FUNC(shmget) if (hugetlb_value) { if (flags) tprint_flags_or(); + tprint_shift_begin(); PRINT_VAL_U(hugetlb_value >> SHM_HUGE_SHIFT); tprint_shift(); print_xlat_u(SHM_HUGE_SHIFT); + tprint_shift_end(); } if (flags || hugetlb_value) diff --git a/src/kd_ioctl.c b/src/kd_ioctl.c index aba5b17a2..c9c7cfd61 100644 --- a/src/kd_ioctl.c +++ b/src/kd_ioctl.c @@ -92,9 +92,11 @@ kd_mk_tone(struct tcb *const tcp, const unsigned int arg) tprint_arg_next(); if (ticks) { + tprint_shift_begin(); PRINT_VAL_U(ticks); tprint_shift(); PRINT_VAL_U(16); + tprint_shift_end(); tprint_flags_or(); } PRINT_VAL_U(count); @@ -81,6 +81,7 @@ print_mmap_flags(kernel_ulong_t flags) if (hugetlb_value) { tprint_flags_or(); + tprint_shift_begin(); PRINT_VAL_U(hugetlb_value >> MAP_HUGE_SHIFT); tprint_shift(); /* @@ -88,6 +89,7 @@ print_mmap_flags(kernel_ulong_t flags) * is potentially inside a comment already. */ tprints("MAP_HUGE_SHIFT"); + tprint_shift_end(); } if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_VERBOSE) diff --git a/src/memfd_create.c b/src/memfd_create.c index 9d9458862..68eb48781 100644 --- a/src/memfd_create.c +++ b/src/memfd_create.c @@ -43,6 +43,7 @@ SYS_FUNC(memfd_create) if (hugetlb_value) { if (flags) tprint_flags_or(); + tprint_shift_begin(); PRINT_VAL_U(hugetlb_value >> MFD_HUGE_SHIFT); tprint_shift(); /* @@ -50,6 +51,7 @@ SYS_FUNC(memfd_create) * is potentially inside a comment already. */ tprints("MFD_HUGE_SHIFT"); + tprint_shift_end(); } if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_VERBOSE) diff --git a/src/netlink.c b/src/netlink.c index 80fad42c5..fb136feca 100644 --- a/src/netlink.c +++ b/src/netlink.c @@ -178,10 +178,12 @@ decode_nlmsg_type_netfilter(struct tcb *tcp, const struct xlat *const xlat, const uint8_t subsys_id = (uint8_t) (type >> 8); const uint8_t msg_type = (uint8_t) type; + tprint_shift_begin(); printxval(xlat, subsys_id, dflt); - tprint_shift(); PRINT_VAL_U(8); + tprint_shift_end(); + tprint_flags_or(); if (subsys_id < ARRAY_SIZE(nf_nlmsg_types)) printxval(nf_nlmsg_types[subsys_id].xlat, diff --git a/src/perf.c b/src/perf.c index c15335cb1..49a406850 100644 --- a/src/perf.c +++ b/src/perf.c @@ -158,9 +158,11 @@ print_perf_event_attr(struct tcb *const tcp, const kernel_ulong_t addr) tprint_struct_next(); tprints_field_name("config"); if (attr->config >> 32) { + tprint_shift_begin(); PRINT_VAL_X(attr->config >> 32); tprint_shift(); PRINT_VAL_U(32); + tprint_shift_end(); tprint_flags_or(); } printxval(perf_hw_id, attr->config & PERF_HW_EVENT_MASK, @@ -191,27 +193,37 @@ print_perf_event_attr(struct tcb *const tcp, const kernel_ulong_t addr) tprint_struct_next(); tprints_field_name("config"); if (attr->config >> 32){ + tprint_shift_begin(); PRINT_VAL_X(attr->config >> 32); tprint_shift(); PRINT_VAL_U(32); + tprint_shift_end(); tprint_flags_or(); } if ((attr->config & PERF_HW_EVENT_MASK) >> 24) { + tprint_shift_begin(); PRINT_VAL_X((attr->config & PERF_HW_EVENT_MASK) >> 24); tprint_shift(); PRINT_VAL_U(24); + tprint_shift_end(); tprint_flags_or(); } + tprint_shift_begin(); printxval(perf_hw_cache_op_result_id, (attr->config >> 16) & 0xFF, "PERF_COUNT_HW_CACHE_RESULT_???"); tprint_shift(); PRINT_VAL_U(16); + tprint_shift_end(); + tprint_flags_or(); + tprint_shift_begin(); printxval(perf_hw_cache_op_id, (attr->config >> 8) & 0xFF, "PERF_COUNT_HW_CACHE_OP_???"); tprint_shift(); PRINT_VAL_U(8); + tprint_shift_end(); + tprint_flags_or(); printxval(perf_hw_cache_id, attr->config & 0xFF, "PERF_COUNT_HW_CACHE_???"); diff --git a/src/print_fields.h b/src/print_fields.h index 099fcefa2..ab1810ed7 100644 --- a/src/print_fields.h +++ b/src/print_fields.h @@ -210,6 +210,16 @@ tprint_unavailable(void) } static inline void +tprint_shift_begin(void) +{ +} + +static inline void +tprint_shift_end(void) +{ +} + +static inline void tprint_shift(void) { STRACE_PRINTS("<<"); diff --git a/src/term.c b/src/term.c index 79366cefa..7c9d3c536 100644 --- a/src/term.c +++ b/src/term.c @@ -73,9 +73,11 @@ decode_cflag(uint64_t val) tprint_flags_or(); if (val & CIBAUD) { + tprint_shift_begin(); printxval64(baud_options, (val & CIBAUD) >> IBSHIFT, "B???"); tprint_shift(); print_xlat(IBSHIFT); + tprint_shift_end(); tprint_flags_or(); } diff --git a/src/util.c b/src/util.c index ef15017ba..5c8cd62c2 100644 --- a/src/util.c +++ b/src/util.c @@ -1766,9 +1766,11 @@ print_abnormal_hi(const kernel_ulong_t val) if (current_klongsize > 4) { const unsigned int hi = (unsigned int) ((uint64_t) val >> 32); if (hi) { + tprint_shift_begin(); PRINT_VAL_X(hi); tprint_shift(); PRINT_VAL_U(32); + tprint_shift_end(); tprint_flags_or(); } } diff --git a/src/wait.c b/src/wait.c index 9160fd6df..09a8a8916 100644 --- a/src/wait.c +++ b/src/wait.c @@ -65,9 +65,11 @@ printstatus(int status) unsigned int event = (unsigned int) status >> 16; if (event) { tprint_flags_or(); + tprint_shift_begin(); printxval(ptrace_events, event, "PTRACE_EVENT_???"); tprint_shift(); PRINT_VAL_U(16); + tprint_shift_end(); status &= 0xffff; } if (status) { |