summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--aio.c17
-rw-r--r--bpf.c21
-rw-r--r--clone.c3
-rw-r--r--evdev_mpers.c3
-rw-r--r--fs_x_ioctl.c6
-rw-r--r--gpio_ioctl.c20
-rw-r--r--io_uring.c27
-rw-r--r--kvm.c24
-rw-r--r--linux/x86_64/arch_kvm.c63
-rw-r--r--loop.c9
-rw-r--r--mtd.c93
-rw-r--r--netlink_crypto.c9
-rw-r--r--netlink_inet_diag.c6
-rw-r--r--netlink_packet_diag.c2
-rw-r--r--netlink_smc_diag.c12
-rw-r--r--perf.c24
-rw-r--r--print_fields.h9
-rw-r--r--print_mq_attr.c3
-rw-r--r--printsiginfo.c3
-rw-r--r--quota.c3
-rw-r--r--rtnl_link.c12
-rw-r--r--rtnl_route.c3
-rw-r--r--s390.c22
-rw-r--r--scsi.c6
-rw-r--r--sg_io_v3.c15
-rw-r--r--sg_io_v4.c24
-rw-r--r--sock.c18
-rw-r--r--tee.c29
-rw-r--r--tests/netlink_crypto.c12
-rw-r--r--tests/netlink_route.c2
-rw-r--r--tests/nlattr_ifinfomsg.c6
-rw-r--r--tests/nlattr_inet_diag_msg.c4
-rw-r--r--tests/nlattr_rtmsg.c2
-rw-r--r--tests/nlattr_smc_diag_msg.c8
-rw-r--r--tests/quotactl-xfs.c2
-rw-r--r--ubi.c3
-rw-r--r--userfaultfd.c24
-rw-r--r--v4l2.c21
38 files changed, 372 insertions, 198 deletions
diff --git a/aio.c b/aio.c
index c9b2ba08f..e0e424950 100644
--- a/aio.c
+++ b/aio.c
@@ -74,7 +74,8 @@ print_common_flags(struct tcb *tcp, const struct iocb *cb)
tprint_struct_next();
PRINT_FIELD_FD(*cb, aio_resfd, tcp);
} else if (cb->aio_resfd) {
- PRINT_FIELD_X(", ", *cb, aio_resfd);
+ tprint_struct_next();
+ PRINT_FIELD_X(*cb, aio_resfd);
}
#endif
}
@@ -92,7 +93,7 @@ print_iocb_header(struct tcb *tcp, const struct iocb *cb)
{
enum iocb_sub sub;
- PRINT_FIELD_X("", *cb, aio_data);
+ PRINT_FIELD_X(*cb, aio_data);
if (cb->aio_key) {
PRINT_FIELD_U(", ", *cb, aio_key);
@@ -136,7 +137,8 @@ print_iocb(struct tcb *tcp, const struct iocb *cb)
PRINT_FIELD_OBJ_TCB_VAL(*cb, aio_buf, tcp,
printstrn, cb->aio_nbytes);
} else {
- PRINT_FIELD_X(", ", *cb, aio_buf);
+ tprint_struct_next();
+ PRINT_FIELD_X(*cb, aio_buf);
}
PRINT_FIELD_U(", ", *cb, aio_nbytes);
PRINT_FIELD_D(", ", *cb, aio_offset);
@@ -150,7 +152,8 @@ print_iocb(struct tcb *tcp, const struct iocb *cb)
? IOV_DECODE_STR
: IOV_DECODE_ADDR);
} else {
- PRINT_FIELD_X(", ", *cb, aio_buf);
+ tprint_struct_next();
+ PRINT_FIELD_X(*cb, aio_buf);
PRINT_FIELD_U(", ", *cb, aio_nbytes);
}
PRINT_FIELD_D(", ", *cb, aio_offset);
@@ -210,8 +213,10 @@ print_io_event(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
{
struct io_event *event = elem_buf;
- PRINT_FIELD_X("{", *event, data);
- PRINT_FIELD_X(", ", *event, obj);
+ tprint_struct_begin();
+ PRINT_FIELD_X(*event, data);
+ tprint_struct_next();
+ PRINT_FIELD_X(*event, obj);
PRINT_FIELD_D(", ", *event, res);
PRINT_FIELD_D(", ", *event, res2);
tprints("}");
diff --git a/bpf.c b/bpf.c
index c92b42c03..c5832aa35 100644
--- a/bpf.c
+++ b/bpf.c
@@ -137,7 +137,8 @@ print_ebpf_insn(struct tcb * const tcp, void * const elem_buf,
printxval(ebpf_regs, insn->src_reg, "BPF_REG_???");
PRINT_FIELD_D(", ", *insn, off);
- PRINT_FIELD_X(", ", *insn, imm);
+ tprint_struct_next();
+ PRINT_FIELD_X(*insn, imm);
tprints("}");
return true;
@@ -1015,8 +1016,10 @@ BEGIN_BPF_CMD_DECODER(BPF_TASK_FD_QUERY)
PRINT_FIELD_U(", ", attr, prog_id);
tprint_struct_next();
PRINT_FIELD_XVAL(attr, fd_type, bpf_task_fd_type, "BPF_FD_TYPE_???");
- PRINT_FIELD_X(", ", attr, probe_offset);
- PRINT_FIELD_X(", ", attr, probe_addr);
+ tprint_struct_next();
+ PRINT_FIELD_X(attr, probe_offset);
+ tprint_struct_next();
+ PRINT_FIELD_X(attr, probe_addr);
tprints("}");
}
@@ -1043,7 +1046,8 @@ BEGIN_BPF_CMD_DECODER(BPF_MAP_LOOKUP_BATCH)
tprint_struct_next();
PRINT_FIELD_FLAGS(attr, elem_flags,
bpf_map_lookup_elem_flags, "BPF_???");
- PRINT_FIELD_X(", ", attr, flags);
+ tprint_struct_next();
+ PRINT_FIELD_X(attr, flags);
tprints("}");
} else {
@@ -1078,7 +1082,8 @@ BEGIN_BPF_CMD_DECODER(BPF_MAP_UPDATE_BATCH)
tprint_struct_next();
PRINT_FIELD_FLAGS(attr, elem_flags,
bpf_map_lookup_elem_flags, "BPF_???");
- PRINT_FIELD_X(", ", attr, flags);
+ tprint_struct_next();
+ PRINT_FIELD_X(attr, flags);
tprints("}");
} else {
@@ -1109,7 +1114,8 @@ BEGIN_BPF_CMD_DECODER(BPF_MAP_DELETE_BATCH)
tprint_struct_next();
PRINT_FIELD_FLAGS(attr, elem_flags,
bpf_map_lookup_elem_flags, "BPF_???");
- PRINT_FIELD_X(", ", attr, flags);
+ tprint_struct_next();
+ PRINT_FIELD_X(attr, flags);
tprints("}");
} else {
@@ -1135,7 +1141,8 @@ BEGIN_BPF_CMD_DECODER(BPF_LINK_CREATE)
PRINT_FIELD_FD(attr, target_fd, tcp);
tprint_struct_next();
PRINT_FIELD_XVAL(attr, attach_type, bpf_attach_type, "BPF_???");
- PRINT_FIELD_X(", ", attr, flags);
+ tprint_struct_next();
+ PRINT_FIELD_X(attr, flags);
tprints("}");
}
END_BPF_CMD_DECODER(RVAL_DECODED | RVAL_FD)
diff --git a/clone.c b/clone.c
index 36ec7b6e8..8ed4d23e1 100644
--- a/clone.c
+++ b/clone.c
@@ -200,7 +200,8 @@ SYS_FUNC(clone3)
tprint_struct_next();
PRINT_FIELD_ADDR64(arg, stack);
- PRINT_FIELD_X(", ", arg, stack_size);
+ tprint_struct_next();
+ PRINT_FIELD_X(arg, stack_size);
if (arg.flags & CLONE_SETTLS) {
tprint_struct_next();
diff --git a/evdev_mpers.c b/evdev_mpers.c
index 7c98304bf..1d8dd5ea3 100644
--- a/evdev_mpers.c
+++ b/evdev_mpers.c
@@ -33,7 +33,8 @@ print_ff_envelope(const MPERS_PTR_ARG(struct ff_envelope *) const arg)
PRINT_FIELD_U("{", *p, attack_length);
PRINT_FIELD_U(", ", *p, attack_level);
PRINT_FIELD_U(", ", *p, fade_length);
- PRINT_FIELD_X(", ", *p, fade_level);
+ tprint_struct_next();
+ PRINT_FIELD_X(*p, fade_level);
tprints("}");
}
diff --git a/fs_x_ioctl.c b/fs_x_ioctl.c
index 883e1e7cb..642d3193e 100644
--- a/fs_x_ioctl.c
+++ b/fs_x_ioctl.c
@@ -20,7 +20,8 @@ decode_fstrim_range(struct tcb *const tcp, const kernel_ulong_t arg)
struct_fstrim_range range;
if (!umove_or_printaddr(tcp, arg, &range)) {
- PRINT_FIELD_X("{", range, start);
+ tprint_struct_begin();
+ PRINT_FIELD_X(range, start);
PRINT_FIELD_U(", ", range, len);
PRINT_FIELD_U(", ", range, minlen);
tprints("}");
@@ -42,7 +43,8 @@ decode_fsxattr(struct tcb *const tcp, const kernel_ulong_t arg,
if (is_get) {
PRINT_FIELD_U(", ", fsxattr, fsx_nextents);
}
- PRINT_FIELD_X(", ", fsxattr, fsx_projid);
+ tprint_struct_next();
+ PRINT_FIELD_X(fsxattr, fsx_projid);
PRINT_FIELD_U(", ", fsxattr, fsx_cowextsize);
tprints("}");
}
diff --git a/gpio_ioctl.c b/gpio_ioctl.c
index abb5127dd..f8cae06cf 100644
--- a/gpio_ioctl.c
+++ b/gpio_ioctl.c
@@ -228,7 +228,8 @@ print_gpio_v2_line_attribute_raw(const struct_gpio_v2_line_attribute *attr,
tprints("attr={");
PRINT_FIELD_U("", *attr, id);
if (attr->padding) {
- PRINT_FIELD_X(", ", *attr, padding);
+ tprint_struct_next();
+ PRINT_FIELD_X(*attr, padding);
}
tprintf(", data=%#" PRIx64, attr->values);
if (as_field)
@@ -250,7 +251,7 @@ print_gpio_v2_line_attribute(const struct_gpio_v2_line_attribute *attr,
"GPIO_V2_LINE_FLAG_???");
break;
case GPIO_V2_LINE_ATTR_ID_OUTPUT_VALUES:
- PRINT_FIELD_X("", *attr, values);
+ PRINT_FIELD_X(*attr, values);
break;
case GPIO_V2_LINE_ATTR_ID_DEBOUNCE:
PRINT_FIELD_U("", *attr, debounce_period_us);
@@ -267,7 +268,8 @@ print_gpio_v2_line_config_attribute(const struct_gpio_v2_line_config_attribute *
{
tprints("{");
print_gpio_v2_line_attribute(&attr->attr, true);
- PRINT_FIELD_X(", ", *attr, mask);
+ tprint_struct_next();
+ PRINT_FIELD_X(*attr, mask);
tprints("}");
}
@@ -413,13 +415,15 @@ print_gpio_v2_line_get_values(struct tcb *const tcp, const kernel_ulong_t arg)
return RVAL_IOCTL_DECODED;
if (entering(tcp)) {
- PRINT_FIELD_X("{", vals, mask);
+ tprint_struct_begin();
+ PRINT_FIELD_X(vals, mask);
tprints("}");
return 0;
}
/* exiting */
- PRINT_FIELD_X("{", vals, bits);
+ tprint_struct_begin();
+ PRINT_FIELD_X(vals, bits);
tprints("}");
return RVAL_IOCTL_DECODED;
@@ -432,8 +436,10 @@ print_gpio_v2_line_set_values(struct tcb *const tcp, const kernel_ulong_t arg)
tprints(", ");
if (!umove_or_printaddr(tcp, arg, &vals)) {
- PRINT_FIELD_X("{", vals, bits);
- PRINT_FIELD_X(", ", vals, mask);
+ tprint_struct_begin();
+ PRINT_FIELD_X(vals, bits);
+ tprint_struct_next();
+ PRINT_FIELD_X(vals, mask);
tprints("}");
}
diff --git a/io_uring.c b/io_uring.c
index 1935792f8..c0fa53e86 100644
--- a/io_uring.c
+++ b/io_uring.c
@@ -46,10 +46,12 @@ print_io_sqring_offsets(const struct_io_sqring_offsets *const p)
PRINT_FIELD_U(", ", *p, dropped);
PRINT_FIELD_U(", ", *p, array);
if (p->resv1) {
- PRINT_FIELD_X(", ", *p, resv1);
+ tprint_struct_next();
+ PRINT_FIELD_X(*p, resv1);
}
if (p->resv2) {
- PRINT_FIELD_X(", ", *p, resv2);
+ tprint_struct_next();
+ PRINT_FIELD_X(*p, resv2);
}
tprints("}");
}
@@ -66,10 +68,12 @@ print_io_cqring_offsets(const struct_io_cqring_offsets *const p)
tprint_struct_next();
PRINT_FIELD_FLAGS(*p, flags, uring_cqring_flags, "IORING_CQ_???");
if (p->resv1) {
- PRINT_FIELD_X(", ", *p, resv1);
+ tprint_struct_next();
+ PRINT_FIELD_X(*p, resv1);
}
if (p->resv2) {
- PRINT_FIELD_X(", ", *p, resv2);
+ tprint_struct_next();
+ PRINT_FIELD_X(*p, resv2);
}
tprints("}");
}
@@ -89,7 +93,8 @@ SYS_FUNC(io_uring_setup)
tprint_struct_begin();
PRINT_FIELD_FLAGS(params, flags, uring_setup_flags,
"IORING_SETUP_???");
- PRINT_FIELD_X(", ", params, sq_thread_cpu);
+ tprint_struct_next();
+ PRINT_FIELD_X(params, sq_thread_cpu);
PRINT_FIELD_U(", ", params, sq_thread_idle);
if (params.flags & IORING_SETUP_ATTACH_WQ) {
tprint_struct_next();
@@ -166,7 +171,8 @@ print_io_uring_files_update(struct tcb *tcp, const kernel_ulong_t addr,
PRINT_FIELD_U("{", arg, offset);
if (arg.resv) {
- PRINT_FIELD_X(", ", arg, resv);
+ tprint_struct_next();
+ PRINT_FIELD_X(arg, resv);
}
tprints(", fds=");
print_big_u64_addr(arg.fds);
@@ -184,12 +190,14 @@ print_io_uring_probe_op(struct tcb *tcp, void *elem_buf, size_t elem_size,
tprint_struct_begin();
PRINT_FIELD_XVAL_U(*op, op, uring_ops, "IORING_OP_???");
if (op->resv) {
- PRINT_FIELD_X(", ", *op, resv);
+ tprint_struct_next();
+ PRINT_FIELD_X(*op, resv);
}
tprint_struct_next();
PRINT_FIELD_FLAGS(*op, flags, uring_op_flags, "IO_URING_OP_???");
if (op->resv2) {
- PRINT_FIELD_X(", ", *op, resv2);
+ tprint_struct_next();
+ PRINT_FIELD_X(*op, resv2);
}
tprints("}");
@@ -233,7 +241,8 @@ print_io_uring_probe(struct tcb *tcp, const kernel_ulong_t addr,
PRINT_FIELD_XVAL_U(*probe, last_op, uring_ops, "IORING_OP_???");
PRINT_FIELD_U(", ", *probe, ops_len);
if (probe->resv) {
- PRINT_FIELD_X(", ", *probe, resv);
+ tprint_struct_next();
+ PRINT_FIELD_X(*probe, resv);
}
if (!IS_ARRAY_ZERO(probe->resv2)) {
tprint_struct_next();
diff --git a/kvm.c b/kvm.c
index ea09681c8..dc3964279 100644
--- a/kvm.c
+++ b/kvm.c
@@ -200,9 +200,11 @@ kvm_ioctl_set_user_memory_region(struct tcb *const tcp, const kernel_ulong_t arg
PRINT_FIELD_U("{", u_memory_region, slot);
tprint_struct_next();
PRINT_FIELD_FLAGS(u_memory_region, flags, kvm_mem_flags, "KVM_MEM_???");
- PRINT_FIELD_X(", ", u_memory_region, guest_phys_addr);
+ tprint_struct_next();
+ PRINT_FIELD_X(u_memory_region, guest_phys_addr);
PRINT_FIELD_U(", ", u_memory_region, memory_size);
- PRINT_FIELD_X(", ", u_memory_region, userspace_addr);
+ tprint_struct_next();
+ PRINT_FIELD_X(u_memory_region, userspace_addr);
tprints("}");
return RVAL_IOCTL_DECODED;
@@ -234,14 +236,20 @@ print_kvm_cpuid_entry(struct tcb *const tcp,
void* elem_buf, size_t elem_size, void* data)
{
const struct kvm_cpuid_entry2 *entry = elem_buf;
- PRINT_FIELD_X("{", *entry, function);
- PRINT_FIELD_X(", ", *entry, index);
+ tprint_struct_begin();
+ PRINT_FIELD_X(*entry, function);
+ tprint_struct_next();
+ PRINT_FIELD_X(*entry, index);
tprint_struct_next();
PRINT_FIELD_FLAGS(*entry, flags, kvm_cpuid_flags, "KVM_CPUID_FLAG_???");
- PRINT_FIELD_X(", ", *entry, eax);
- PRINT_FIELD_X(", ", *entry, ebx);
- PRINT_FIELD_X(", ", *entry, ecx);
- PRINT_FIELD_X(", ", *entry, edx);
+ tprint_struct_next();
+ PRINT_FIELD_X(*entry, eax);
+ tprint_struct_next();
+ PRINT_FIELD_X(*entry, ebx);
+ tprint_struct_next();
+ PRINT_FIELD_X(*entry, ecx);
+ tprint_struct_next();
+ PRINT_FIELD_X(*entry, edx);
tprints("}");
return true;
diff --git a/linux/x86_64/arch_kvm.c b/linux/x86_64/arch_kvm.c
index 6f6ced109..8e4558d1a 100644
--- a/linux/x86_64/arch_kvm.c
+++ b/linux/x86_64/arch_kvm.c
@@ -11,34 +11,52 @@ arch_print_kvm_regs(struct tcb *const tcp,
const kernel_ulong_t addr,
const struct kvm_regs *const regs)
{
- PRINT_FIELD_X("{", *regs, rax);
+ tprint_struct_begin();
+ PRINT_FIELD_X(*regs, rax);
if (abbrev(tcp))
tprints(", ...");
else {
- PRINT_FIELD_X(", ", *regs, rbx);
- PRINT_FIELD_X(", ", *regs, rcx);
- PRINT_FIELD_X(", ", *regs, rdx);
- PRINT_FIELD_X(", ", *regs, rsi);
- PRINT_FIELD_X(", ", *regs, rdi);
+ tprint_struct_next();
+ PRINT_FIELD_X(*regs, rbx);
+ tprint_struct_next();
+ PRINT_FIELD_X(*regs, rcx);
+ tprint_struct_next();
+ PRINT_FIELD_X(*regs, rdx);
+ tprint_struct_next();
+ PRINT_FIELD_X(*regs, rsi);
+ tprint_struct_next();
+ PRINT_FIELD_X(*regs, rdi);
}
- PRINT_FIELD_X(", ", *regs, rsp);
- PRINT_FIELD_X(", ", *regs, rbp);
+ tprint_struct_next();
+ PRINT_FIELD_X(*regs, rsp);
+ tprint_struct_next();
+ PRINT_FIELD_X(*regs, rbp);
if (abbrev(tcp))
tprints(", ...");
else {
- PRINT_FIELD_X(", ", *regs, r8);
- PRINT_FIELD_X(", ", *regs, r9);
- PRINT_FIELD_X(", ", *regs, r10);
- PRINT_FIELD_X(", ", *regs, r11);
- PRINT_FIELD_X(", ", *regs, r12);
- PRINT_FIELD_X(", ", *regs, r13);
- PRINT_FIELD_X(", ", *regs, r14);
- PRINT_FIELD_X(", ", *regs, r15);
+ tprint_struct_next();
+ PRINT_FIELD_X(*regs, r8);
+ tprint_struct_next();
+ PRINT_FIELD_X(*regs, r9);
+ tprint_struct_next();
+ PRINT_FIELD_X(*regs, r10);
+ tprint_struct_next();
+ PRINT_FIELD_X(*regs, r11);
+ tprint_struct_next();
+ PRINT_FIELD_X(*regs, r12);
+ tprint_struct_next();
+ PRINT_FIELD_X(*regs, r13);
+ tprint_struct_next();
+ PRINT_FIELD_X(*regs, r14);
+ tprint_struct_next();
+ PRINT_FIELD_X(*regs, r15);
}
- PRINT_FIELD_X(", ", *regs, rip);
+ tprint_struct_next();
+ PRINT_FIELD_X(*regs, rip);
/* TODO: we can decode this more */
- PRINT_FIELD_X(", ", *regs, rflags);
+ tprint_struct_next();
+ PRINT_FIELD_X(*regs, rflags);
tprints("}");
}
@@ -48,7 +66,8 @@ arch_print_kvm_regs(struct tcb *const tcp,
static void
kvm_ioctl_decode_regs_segment(const struct kvm_segment *const segment)
{
- PRINT_FIELD_X("{", *segment, base);
+ tprint_struct_begin();
+ PRINT_FIELD_X(*segment, base);
PRINT_FIELD_U(", ", *segment, limit);
PRINT_FIELD_U(", ", *segment, selector);
PRINT_FIELD_U(", ", *segment, type);
@@ -65,7 +84,8 @@ kvm_ioctl_decode_regs_segment(const struct kvm_segment *const segment)
static void
kvm_ioctl_decode_regs_dtable(const struct kvm_dtable *const dtable)
{
- PRINT_FIELD_X("{", *dtable, base);
+ tprint_struct_begin();
+ PRINT_FIELD_X(*dtable, base);
PRINT_FIELD_U(", ", *dtable, limit);
tprints("}");
}
@@ -110,7 +130,8 @@ arch_print_kvm_sregs(struct tcb *const tcp,
PRINT_FIELD_U(", ", *sregs, cr4);
PRINT_FIELD_U(", ", *sregs, cr8);
PRINT_FIELD_U(", ", *sregs, efer);
- PRINT_FIELD_X(", ", *sregs, apic_base);
+ tprint_struct_next();
+ PRINT_FIELD_X(*sregs, apic_base);
tprint_struct_next();
PRINT_FIELD_X_ARRAY(*sregs, interrupt_bitmap);
tprints("}");
diff --git a/loop.c b/loop.c
index ff0f12049..10ae8218b 100644
--- a/loop.c
+++ b/loop.c
@@ -43,7 +43,8 @@ decode_loop_info(struct tcb *const tcp, const kernel_ulong_t addr)
PRINT_FIELD_DEV(info, lo_rdevice);
}
- PRINT_FIELD_X(", ", info, lo_offset);
+ tprint_struct_next();
+ PRINT_FIELD_X(info, lo_offset);
if (!abbrev(tcp) || info.lo_encrypt_type != LO_CRYPT_NONE) {
tprint_struct_next();
@@ -91,11 +92,13 @@ print_loop_info64(struct tcb *const tcp, const struct loop_info64 *const info64)
PRINT_FIELD_U(", ", *info64, lo_inode);
tprint_struct_next();
PRINT_FIELD_DEV(*info64, lo_rdevice);
- PRINT_FIELD_X(", ", *info64, lo_offset);
+ tprint_struct_next();
+ PRINT_FIELD_X(*info64, lo_offset);
PRINT_FIELD_U(", ", *info64, lo_sizelimit);
PRINT_FIELD_U(", ", *info64, lo_number);
} else {
- PRINT_FIELD_X("{", *info64, lo_offset);
+ tprint_struct_begin();
+ PRINT_FIELD_X(*info64, lo_offset);
PRINT_FIELD_U(", ", *info64, lo_number);
}
diff --git a/mtd.c b/mtd.c
index 015e32fc5..2c7069787 100644
--- a/mtd.c
+++ b/mtd.c
@@ -40,8 +40,10 @@ decode_erase_info_user(struct tcb *const tcp, const kernel_ulong_t addr)
if (umove_or_printaddr(tcp, addr, &einfo))
return;
- PRINT_FIELD_X("{", einfo, start);
- PRINT_FIELD_X(", ", einfo, length);
+ tprint_struct_begin();
+ PRINT_FIELD_X(einfo, start);
+ tprint_struct_next();
+ PRINT_FIELD_X(einfo, length);
tprints("}");
}
@@ -54,8 +56,10 @@ decode_erase_info_user64(struct tcb *const tcp, const kernel_ulong_t addr)
if (umove_or_printaddr(tcp, addr, &einfo64))
return;
- PRINT_FIELD_X("{", einfo64, start);
- PRINT_FIELD_X(", ", einfo64, length);
+ tprint_struct_begin();
+ PRINT_FIELD_X(einfo64, start);
+ tprint_struct_next();
+ PRINT_FIELD_X(einfo64, length);
tprints("}");
}
@@ -67,8 +71,10 @@ decode_mtd_oob_buf(struct tcb *const tcp, const kernel_ulong_t addr)
tprints(", ");
if (umove_or_printaddr(tcp, addr, &mbuf))
return;
- PRINT_FIELD_X("{", mbuf, start);
- PRINT_FIELD_X(", ", mbuf, length);
+ tprint_struct_begin();
+ PRINT_FIELD_X(mbuf, start);
+ tprint_struct_next();
+ PRINT_FIELD_X(mbuf, length);
tprint_struct_next();
PRINT_FIELD_PTR(mbuf, ptr);
tprints("}");
@@ -83,8 +89,10 @@ decode_mtd_oob_buf64(struct tcb *const tcp, const kernel_ulong_t addr)
if (umove_or_printaddr(tcp, addr, &mbuf64))
return;
- PRINT_FIELD_X("{", mbuf64, start);
- PRINT_FIELD_X(", ", mbuf64, length);
+ tprint_struct_begin();
+ PRINT_FIELD_X(mbuf64, start);
+ tprint_struct_next();
+ PRINT_FIELD_X(mbuf64, length);
tprint_struct_next();
PRINT_FIELD_ADDR64(mbuf64, usr_ptr);
tprints("}");
@@ -99,8 +107,10 @@ decode_otp_info(struct tcb *const tcp, const kernel_ulong_t addr)
if (umove_or_printaddr(tcp, addr, &oinfo))
return;
- PRINT_FIELD_X("{", oinfo, start);
- PRINT_FIELD_X(", ", oinfo, length);
+ tprint_struct_begin();
+ PRINT_FIELD_X(oinfo, start);
+ tprint_struct_next();
+ PRINT_FIELD_X(oinfo, length);
PRINT_FIELD_U(", ", oinfo, locked);
tprints("}");
}
@@ -128,9 +138,12 @@ decode_mtd_write_req(struct tcb *const tcp, const kernel_ulong_t addr)
if (umove_or_printaddr(tcp, addr, &mreq))
return;
- PRINT_FIELD_X("{", mreq, start);
- PRINT_FIELD_X(", ", mreq, len);
- PRINT_FIELD_X(", ", mreq, ooblen);
+ tprint_struct_begin();
+ PRINT_FIELD_X(mreq, start);
+ tprint_struct_next();
+ PRINT_FIELD_X(mreq, len);
+ tprint_struct_next();
+ PRINT_FIELD_X(mreq, ooblen);
tprint_struct_next();
PRINT_FIELD_ADDR64(mreq, usr_data);
tprint_struct_next();
@@ -153,11 +166,16 @@ decode_mtd_info_user(struct tcb *const tcp, const kernel_ulong_t addr)
PRINT_FIELD_XVAL(minfo, type, mtd_type_options, "MTD_???");
tprint_struct_next();
PRINT_FIELD_FLAGS(minfo, flags, mtd_flags_options, "MTD_???");
- PRINT_FIELD_X(", ", minfo, size);
- PRINT_FIELD_X(", ", minfo, erasesize);
- PRINT_FIELD_X(", ", minfo, writesize);
- PRINT_FIELD_X(", ", minfo, oobsize);
- PRINT_FIELD_X(", ", minfo, padding);
+ tprint_struct_next();
+ PRINT_FIELD_X(minfo, size);
+ tprint_struct_next();
+ PRINT_FIELD_X(minfo, erasesize);
+ tprint_struct_next();
+ PRINT_FIELD_X(minfo, writesize);
+ tprint_struct_next();
+ PRINT_FIELD_X(minfo, oobsize);
+ tprint_struct_next();
+ PRINT_FIELD_X(minfo, padding);
tprints("}");
}
@@ -181,7 +199,8 @@ decode_nand_oobinfo(struct tcb *const tcp, const kernel_ulong_t addr)
tprint_struct_begin();
PRINT_FIELD_XVAL(ninfo, useecc, mtd_nandecc_options, "MTD_NANDECC_???");
- PRINT_FIELD_X(", ", ninfo, eccbytes);
+ tprint_struct_next();
+ PRINT_FIELD_X(ninfo, eccbytes);
tprint_struct_next();
PRINT_FIELD_ARRAY(ninfo, oobfree, tcp, print_xint32x2_array_member);
tprint_struct_next();
@@ -194,8 +213,10 @@ print_nand_oobfree_array_member(struct tcb *tcp, void *elem_buf,
size_t elem_size, void *data)
{
const struct nand_oobfree *p = elem_buf;
- PRINT_FIELD_X("{", *p, offset);
- PRINT_FIELD_X(", ", *p, length);
+ tprint_struct_begin();
+ PRINT_FIELD_X(*p, offset);
+ tprint_struct_next();
+ PRINT_FIELD_X(*p, length);
tprints("}");
return true;
}
@@ -209,10 +230,12 @@ decode_nand_ecclayout_user(struct tcb *const tcp, const kernel_ulong_t addr)
if (umove_or_printaddr(tcp, addr, &nlay))
return;
- PRINT_FIELD_X("{", nlay, eccbytes);
+ tprint_struct_begin();
+ PRINT_FIELD_X(nlay, eccbytes);
tprint_struct_next();
PRINT_FIELD_ARRAY(nlay, eccpos, tcp, print_xint32_array_member);
- PRINT_FIELD_X(", ", nlay, oobavail);
+ tprint_struct_next();
+ PRINT_FIELD_X(nlay, oobavail);
tprint_struct_next();
PRINT_FIELD_ARRAY(nlay, oobfree, tcp, print_nand_oobfree_array_member);
tprints("}");
@@ -227,10 +250,14 @@ decode_mtd_ecc_stats(struct tcb *const tcp, const kernel_ulong_t addr)
if (umove_or_printaddr(tcp, addr, &es))
return;
- PRINT_FIELD_X("{", es, corrected);
- PRINT_FIELD_X(", ", es, failed);
- PRINT_FIELD_X(", ", es, badblocks);
- PRINT_FIELD_X(", ", es, bbtblocks);
+ tprint_struct_begin();
+ PRINT_FIELD_X(es, corrected);
+ tprint_struct_next();
+ PRINT_FIELD_X(es, failed);
+ tprint_struct_next();
+ PRINT_FIELD_X(es, badblocks);
+ tprint_struct_next();
+ PRINT_FIELD_X(es, bbtblocks);
tprints("}");
}
@@ -331,15 +358,19 @@ MPERS_PRINTER_DECL(int, mtd_ioctl, struct tcb *const tcp,
tprints(", ");
if (umove_or_printaddr(tcp, arg, &rinfo))
break;
- PRINT_FIELD_X("{", rinfo, regionindex);
+ tprint_struct_begin();
+ PRINT_FIELD_X(rinfo, regionindex);
return 0;
} else {
struct region_info_user rinfo;
if (!syserror(tcp) && !umove(tcp, arg, &rinfo)) {
- PRINT_FIELD_X(", ", rinfo, offset);
- PRINT_FIELD_X(", ", rinfo, erasesize);
- PRINT_FIELD_X(", ", rinfo, numblocks);
+ tprint_struct_next();
+ PRINT_FIELD_X(rinfo, offset);
+ tprint_struct_next();
+ PRINT_FIELD_X(rinfo, erasesize);
+ tprint_struct_next();
+ PRINT_FIELD_X(rinfo, numblocks);
}
tprints("}");
break;
diff --git a/netlink_crypto.c b/netlink_crypto.c
index 36668edee..c41d33995 100644
--- a/netlink_crypto.c
+++ b/netlink_crypto.c
@@ -176,10 +176,13 @@ decode_crypto_user_alg(struct tcb *const tcp,
PRINT_FIELD_CSTRING(alg, cru_driver_name);
tprint_struct_next();
PRINT_FIELD_CSTRING(alg, cru_module_name);
- PRINT_FIELD_X(", ", alg, cru_type);
- PRINT_FIELD_X(", ", alg, cru_mask);
+ tprint_struct_next();
+ PRINT_FIELD_X(alg, cru_type);
+ tprint_struct_next();
+ PRINT_FIELD_X(alg, cru_mask);
PRINT_FIELD_U(", ", alg, cru_refcnt);
- PRINT_FIELD_X(", ", alg, cru_flags);
+ tprint_struct_next();
+ PRINT_FIELD_X(alg, cru_flags);
tprints("}");
const size_t offset = NLMSG_ALIGN(sizeof(alg));
diff --git a/netlink_inet_diag.c b/netlink_inet_diag.c
index f636facf5..a7660b097 100644
--- a/netlink_inet_diag.c
+++ b/netlink_inet_diag.c
@@ -355,8 +355,10 @@ decode_tcp_bbr_info(struct tcb *const tcp,
if (umove_or_printaddr(tcp, addr, &bbr))
return true;
- PRINT_FIELD_X("{", bbr, bbr_bw_lo);
- PRINT_FIELD_X(", ", bbr, bbr_bw_hi);
+ tprint_struct_begin();
+ PRINT_FIELD_X(bbr, bbr_bw_lo);
+ tprint_struct_next();
+ PRINT_FIELD_X(bbr, bbr_bw_hi);
PRINT_FIELD_U(", ", bbr, bbr_min_rtt);
PRINT_FIELD_U(", ", bbr, bbr_pacing_gain);
PRINT_FIELD_U(", ", bbr, bbr_cwnd_gain);
diff --git a/netlink_packet_diag.c b/netlink_packet_diag.c
index a1371795f..b5a67264f 100644
--- a/netlink_packet_diag.c
+++ b/netlink_packet_diag.c
@@ -38,7 +38,7 @@ DECL_NETLINK_DIAG_DECODER(decode_packet_diag_req)
* AF_PACKET currently doesn't support protocol values
* other than 0.
*/
- PRINT_FIELD_X("", req, sdiag_protocol);
+ PRINT_FIELD_X(req, sdiag_protocol);
PRINT_FIELD_U(", ", req, pdiag_ino);
tprint_struct_next();
PRINT_FIELD_FLAGS(req, pdiag_show,
diff --git a/netlink_smc_diag.c b/netlink_smc_diag.c
index fa1115550..369921526 100644
--- a/netlink_smc_diag.c
+++ b/netlink_smc_diag.c
@@ -179,10 +179,14 @@ decode_smc_diag_dmbinfo(struct tcb *const tcp,
return true;
PRINT_FIELD_U("{", dinfo, linkid);
- PRINT_FIELD_X(", ", dinfo, peer_gid);
- PRINT_FIELD_X(", ", dinfo, my_gid);
- PRINT_FIELD_X(", ", dinfo, token);
- PRINT_FIELD_X(", ", dinfo, peer_token);
+ tprint_struct_next();
+ PRINT_FIELD_X(dinfo, peer_gid);
+ tprint_struct_next();
+ PRINT_FIELD_X(dinfo, my_gid);
+ tprint_struct_next();
+ PRINT_FIELD_X(dinfo, token);
+ tprint_struct_next();
+ PRINT_FIELD_X(dinfo, peer_token);
tprints("}");
return true;
diff --git a/perf.c b/perf.c
index 234bec511..c139fb1b7 100644
--- a/perf.c
+++ b/perf.c
@@ -222,7 +222,8 @@ print_perf_event_attr(struct tcb *const tcp, const kernel_ulong_t addr)
* to zero. Its parameters are set in other places."
*/
default:
- PRINT_FIELD_X(", ", *attr, config);
+ tprint_struct_next();
+ PRINT_FIELD_X(*attr, config);
break;
}
@@ -327,9 +328,11 @@ print_perf_event_attr(struct tcb *const tcp, const kernel_ulong_t addr)
}
if (attr->type == PERF_TYPE_BREAKPOINT) {
- PRINT_FIELD_X(", ", *attr, bp_addr);
+ tprint_struct_next();
+ PRINT_FIELD_X(*attr, bp_addr);
} else {
- PRINT_FIELD_X(", ", *attr, config1);
+ tprint_struct_next();
+ PRINT_FIELD_X(*attr, config1);
}
/*
@@ -341,7 +344,8 @@ print_perf_event_attr(struct tcb *const tcp, const kernel_ulong_t addr)
if (attr->type == PERF_TYPE_BREAKPOINT) {
PRINT_FIELD_U(", ", *attr, bp_len);
} else {
- PRINT_FIELD_X(", ", *attr, config2);
+ tprint_struct_next();
+ PRINT_FIELD_X(*attr, config2);
}
_PERF_CHECK_FIELD(branch_sample_type);
@@ -359,7 +363,8 @@ print_perf_event_attr(struct tcb *const tcp, const kernel_ulong_t addr)
* described in the kernel header
* arch/ARCH/include/uapi/asm/perf_regs.h."
*/
- PRINT_FIELD_X(", ", *attr, sample_regs_user);
+ tprint_struct_next();
+ PRINT_FIELD_X(*attr, sample_regs_user);
_PERF_CHECK_FIELD(sample_stack_user);
/*
@@ -367,7 +372,8 @@ print_perf_event_attr(struct tcb *const tcp, const kernel_ulong_t addr)
* specified."
*/
if (attr->sample_type & PERF_SAMPLE_STACK_USER) {
- PRINT_FIELD_X(", ", *attr, sample_stack_user);
+ tprint_struct_next();
+ PRINT_FIELD_X(*attr, sample_stack_user);
}
if (attr->use_clockid) {
@@ -377,7 +383,8 @@ print_perf_event_attr(struct tcb *const tcp, const kernel_ulong_t addr)
}
_PERF_CHECK_FIELD(sample_regs_intr);
- PRINT_FIELD_X(", ", *attr, sample_regs_intr);
+ tprint_struct_next();
+ PRINT_FIELD_X(*attr, sample_regs_intr);
_PERF_CHECK_FIELD(aux_watermark);
PRINT_FIELD_U(", ", *attr, aux_watermark);
@@ -395,7 +402,8 @@ print_perf_event_attr(struct tcb *const tcp, const kernel_ulong_t addr)
#if 0
_PERF_CHECK_FIELD(__reserved_3);
if (attr->__reserved_3) {
- PRINT_FIELD_X(", ", *attr, __reserved_3);
+ tprint_struct_next();
+ PRINT_FIELD_X(*attr, __reserved_3);
}
#endif
diff --git a/print_fields.h b/print_fields.h
index fc90104f9..351e27762 100644
--- a/print_fields.h
+++ b/print_fields.h
@@ -148,9 +148,12 @@ tprints_field_name(const char *name)
zero_extend_signed_to_ull((type_)(where_).field_)); \
} while (0)
-# define PRINT_FIELD_X(prefix_, where_, field_) \
- STRACE_PRINTF("%s%s=%#llx", (prefix_), #field_, \
- zero_extend_signed_to_ull((where_).field_))
+# define PRINT_FIELD_X(where_, field_) \
+ do { \
+ tprints_field_name(#field_); \
+ STRACE_PRINTF("%#llx", \
+ zero_extend_signed_to_ull((where_).field_)); \
+ } while (0)
# define PRINT_FIELD_X_CAST(where_, field_, type_) \
do { \
diff --git a/print_mq_attr.c b/print_mq_attr.c
index aa8080b8f..0abd706fa 100644
--- a/print_mq_attr.c
+++ b/print_mq_attr.c
@@ -36,7 +36,8 @@ MPERS_PRINTER_DECL(void, printmqattr, struct tcb *const tcp,
tprint_struct_begin();
PRINT_FIELD_FLAGS(attr, mq_flags, mq_attr_flags, "O_???");
} else {
- PRINT_FIELD_X("{", attr, mq_flags);
+ tprint_struct_begin();
+ PRINT_FIELD_X(attr, mq_flags);
}
PRINT_FIELD_D(", ", attr, mq_maxmsg);
PRINT_FIELD_D(", ", attr, mq_msgsize);
diff --git a/printsiginfo.c b/printsiginfo.c
index 9f1440c2b..5334c21d9 100644
--- a/printsiginfo.c
+++ b/printsiginfo.c
@@ -159,7 +159,8 @@ print_si_info(struct tcb *tcp, const siginfo_t *sip)
break;
#if defined HAVE_SIGINFO_T_SI_TIMERID && defined HAVE_SIGINFO_T_SI_OVERRUN
case SI_TIMER:
- PRINT_FIELD_X(", ", *sip, si_timerid);
+ tprint_struct_next();
+ PRINT_FIELD_X(*sip, si_timerid);
PRINT_FIELD_D(", ", *sip, si_overrun);
printsigval(sip);
break;
diff --git a/quota.c b/quota.c
index d06834701..8b4d61978 100644
--- a/quota.c
+++ b/quota.c
@@ -244,7 +244,8 @@ decode_cmd_data(struct tcb *tcp, uint32_t id, uint32_t cmd, kernel_ulong_t data)
tprint_struct_next();
PRINT_FIELD_FLAGS(dq, d_flags,
xfs_dqblk_flags, "XFS_???_QUOTA");
- PRINT_FIELD_X(", ", dq, d_fieldmask);
+ tprint_struct_next();
+ PRINT_FIELD_X(dq, d_fieldmask);
PRINT_FIELD_U(", ", dq, d_id);
PRINT_FIELD_U(", ", dq, d_blk_hardlimit);
PRINT_FIELD_U(", ", dq, d_blk_softlimit);
diff --git a/rtnl_link.c b/rtnl_link.c
index 631a31d25..720f7bc8c 100644
--- a/rtnl_link.c
+++ b/rtnl_link.c
@@ -194,9 +194,12 @@ decode_rtnl_link_ifmap(struct tcb *const tcp,
if (len < sizeof_ifmap)
return false;
else if (!umoven_or_printaddr(tcp, addr, sizeof_ifmap, &map)) {
- PRINT_FIELD_X("{", map, mem_start);
- PRINT_FIELD_X(", ", map, mem_end);
- PRINT_FIELD_X(", ", map, base_addr);
+ tprint_struct_begin();
+ PRINT_FIELD_X(map, mem_start);
+ tprint_struct_next();
+ PRINT_FIELD_X(map, mem_end);
+ tprint_struct_next();
+ PRINT_FIELD_X(map, base_addr);
PRINT_FIELD_U(", ", map, irq);
PRINT_FIELD_U(", ", map, dma);
PRINT_FIELD_U(", ", map, port);
@@ -940,7 +943,8 @@ DECL_NETLINK_ROUTE_DECODER(decode_ifinfomsg)
tprint_struct_next();
PRINT_FIELD_FLAGS(ifinfo, ifi_flags,
iffflags, "IFF_???");
- PRINT_FIELD_X(", ", ifinfo, ifi_change);
+ tprint_struct_next();
+ PRINT_FIELD_X(ifinfo, ifi_change);
decode_nla = true;
}
} else
diff --git a/rtnl_route.c b/rtnl_route.c
index 8d097b25a..b7537bc1b 100644
--- a/rtnl_route.c
+++ b/rtnl_route.c
@@ -122,7 +122,8 @@ decode_rta_cacheinfo(struct tcb *const tcp,
PRINT_FIELD_U(", ", ci, rta_expires);
PRINT_FIELD_U(", ", ci, rta_error);
PRINT_FIELD_U(", ", ci, rta_used);
- PRINT_FIELD_X(", ", ci, rta_id);
+ tprint_struct_next();
+ PRINT_FIELD_X(ci, rta_id);
PRINT_FIELD_U(", ", ci, rta_ts);
PRINT_FIELD_U(", ", ci, rta_tsage);
tprints("}");
diff --git a/s390.c b/s390.c
index edb1bdfa4..32fa81de8 100644
--- a/s390.c
+++ b/s390.c
@@ -463,7 +463,7 @@ decode_ebcdic(const char *ebcdic, char *ascii, size_t size)
# define PRINT_FIELD_WEIGHT(where_, field_) \
do { \
- PRINT_FIELD_X("", where_, field_); \
+ PRINT_FIELD_X(where_, field_); \
if ((where_).field_) \
tprintf_comment("%u %u/65536 cores", \
(where_).field_ >> 16, \
@@ -723,10 +723,12 @@ print_sthyi_partition(struct tcb *tcp, struct sthyi_partition *hdr,
PRINT_FIELD_HEX_ARRAY(*hdr, infplgnm);
}
if (hdr->infplgcp) {
- PRINT_FIELD_X(", ", *hdr, infplgcp);
+ tprint_struct_next();
+ PRINT_FIELD_X(*hdr, infplgcp);
}
if (hdr->infplgif) {
- PRINT_FIELD_X(", ", *hdr, infplgif);
+ tprint_struct_next();
+ PRINT_FIELD_X(*hdr, infplgif);
}
}
}
@@ -1346,13 +1348,17 @@ guard_storage_print_gsepl(struct tcb *tcp, uint64_t addr)
tprints(", ");
}
- PRINT_FIELD_X("", gsepl, gs_eha);
+ PRINT_FIELD_X(gsepl, gs_eha);
if (!abbrev(tcp)) {
- PRINT_FIELD_X(", ", gsepl, gs_eia);
- PRINT_FIELD_X(", ", gsepl, gs_eoa);
- PRINT_FIELD_X(", ", gsepl, gs_eir);
- PRINT_FIELD_X(", ", gsepl, gs_era);
+ tprint_struct_next();
+ PRINT_FIELD_X(gsepl, gs_eia);
+ tprint_struct_next();
+ PRINT_FIELD_X(gsepl, gs_eoa);
+ tprint_struct_next();
+ PRINT_FIELD_X(gsepl, gs_eir);
+ tprint_struct_next();
+ PRINT_FIELD_X(gsepl, gs_era);
} else {
tprints(", ...");
}
diff --git a/scsi.c b/scsi.c
index 2cc2738a7..a1f6bab60 100644
--- a/scsi.c
+++ b/scsi.c
@@ -49,9 +49,11 @@ decode_sg_scsi_id(struct tcb *const tcp, const kernel_ulong_t arg)
if (!umove_or_printaddr(tcp, arg, &id)) {
PRINT_FIELD_D("{", id, host_no);
PRINT_FIELD_D(", ", id, channel);
- PRINT_FIELD_X(", ", id, scsi_id);
+ tprint_struct_next();
+ PRINT_FIELD_X(id, scsi_id);
PRINT_FIELD_D(", ", id, lun);
- PRINT_FIELD_X(", ", id, scsi_type);
+ tprint_struct_next();
+ PRINT_FIELD_X(id, scsi_type);
PRINT_FIELD_D(", ", id, h_cmd_per_lun);
PRINT_FIELD_D(", ", id, d_queue_depth);
tprints("}");
diff --git a/sg_io_v3.c b/sg_io_v3.c
index 83161ce3a..a6b30c9ab 100644
--- a/sg_io_v3.c
+++ b/sg_io_v3.c
@@ -130,14 +130,19 @@ decode_response(struct tcb *const tcp, const kernel_ulong_t arg)
sg_io.iovec_count, tcp);
}
}
- PRINT_FIELD_X(", ", sg_io, status);
- PRINT_FIELD_X(", ", sg_io, masked_status);
- PRINT_FIELD_X(", ", sg_io, msg_status);
+ tprint_struct_next();
+ PRINT_FIELD_X(sg_io, status);
+ tprint_struct_next();
+ PRINT_FIELD_X(sg_io, masked_status);
+ tprint_struct_next();
+ PRINT_FIELD_X(sg_io, msg_status);
PRINT_FIELD_U(", ", sg_io, sb_len_wr);
tprint_struct_next();
PRINT_FIELD_SG_IO_BUFFER(sg_io, sbp, sg_io.sb_len_wr, 0, tcp);
- PRINT_FIELD_X(", ", sg_io, host_status);
- PRINT_FIELD_X(", ", sg_io, driver_status);
+ tprint_struct_next();
+ PRINT_FIELD_X(sg_io, host_status);
+ tprint_struct_next();
+ PRINT_FIELD_X(sg_io, driver_status);
PRINT_FIELD_D(", ", sg_io, resid);
PRINT_FIELD_U(", ", sg_io, duration);
tprint_struct_next();
diff --git a/sg_io_v4.c b/sg_io_v4.c
index 178f606e3..206f6b954 100644
--- a/sg_io_v4.c
+++ b/sg_io_v4.c
@@ -54,7 +54,8 @@ decode_request(struct tcb *const tcp, const kernel_ulong_t arg)
PRINT_FIELD_U(", ", sg_io, request_len);
tprint_struct_next();
PRINT_FIELD_SG_IO_BUFFER(sg_io, request, sg_io.request_len, 0, tcp);
- PRINT_FIELD_X(", ", sg_io, request_tag);
+ tprint_struct_next();
+ PRINT_FIELD_X(sg_io, request_tag);
PRINT_FIELD_U(", ", sg_io, request_attr);
PRINT_FIELD_U(", ", sg_io, request_priority);
PRINT_FIELD_U(", ", sg_io, request_extra);
@@ -70,7 +71,8 @@ decode_request(struct tcb *const tcp, const kernel_ulong_t arg)
PRINT_FIELD_U(", ", sg_io, timeout);
tprint_struct_next();
PRINT_FIELD_FLAGS(sg_io, flags, bsg_flags, "BSG_FLAG_???");
- PRINT_FIELD_X(", ", sg_io, usr_ptr);
+ tprint_struct_next();
+ PRINT_FIELD_X(sg_io, usr_ptr);
struct sg_io_v4 *entering_sg_io = malloc(sizeof(*entering_sg_io));
if (entering_sg_io) {
@@ -91,8 +93,10 @@ decode_response(struct tcb *const tcp, const kernel_ulong_t arg)
if (umove(tcp, arg, &sg_io) < 0) {
/* print i/o fields fetched on entering syscall */
- PRINT_FIELD_X(", ", *entering_sg_io, response);
- PRINT_FIELD_X(", ", *entering_sg_io, din_xferp);
+ tprint_struct_next();
+ PRINT_FIELD_X(*entering_sg_io, response);
+ tprint_struct_next();
+ PRINT_FIELD_X(*entering_sg_io, din_xferp);
return RVAL_IOCTL_DECODED;
}
@@ -110,9 +114,12 @@ decode_response(struct tcb *const tcp, const kernel_ulong_t arg)
tprint_struct_next();
PRINT_FIELD_SG_IO_BUFFER(sg_io, din_xferp, din_len,
sg_io.din_iovec_count, tcp);
- PRINT_FIELD_X(", ", sg_io, driver_status);
- PRINT_FIELD_X(", ", sg_io, transport_status);
- PRINT_FIELD_X(", ", sg_io, device_status);
+ tprint_struct_next();
+ PRINT_FIELD_X(sg_io, driver_status);
+ tprint_struct_next();
+ PRINT_FIELD_X(sg_io, transport_status);
+ tprint_struct_next();
+ PRINT_FIELD_X(sg_io, device_status);
PRINT_FIELD_U(", ", sg_io, retry_delay);
tprint_struct_next();
PRINT_FIELD_FLAGS(sg_io, info, sg_io_info, "SG_INFO_???");
@@ -120,7 +127,8 @@ decode_response(struct tcb *const tcp, const kernel_ulong_t arg)
PRINT_FIELD_U(", ", sg_io, response_len);
PRINT_FIELD_D(", ", sg_io, din_resid);
PRINT_FIELD_D(", ", sg_io, dout_resid);
- PRINT_FIELD_X(", ", sg_io, generated_tag);
+ tprint_struct_next();
+ PRINT_FIELD_X(sg_io, generated_tag);
return RVAL_IOCTL_DECODED;
}
diff --git a/sock.c b/sock.c
index e786da8a9..fcd8012ce 100644
--- a/sock.c
+++ b/sock.c
@@ -44,12 +44,18 @@ print_ifr_hwaddr(const typeof_field(struct_ifreq, ifr_hwaddr) *const p)
static void
print_ifr_map(const typeof_field(struct_ifreq, ifr_map) *const p)
{
- PRINT_FIELD_X("{", *p, mem_start);
- PRINT_FIELD_X(", ", *p, mem_end);
- PRINT_FIELD_X(", ", *p, base_addr);
- PRINT_FIELD_X(", ", *p, irq);
- PRINT_FIELD_X(", ", *p, dma);
- PRINT_FIELD_X(", ", *p, port);
+ tprint_struct_begin();
+ PRINT_FIELD_X(*p, mem_start);
+ tprint_struct_next();
+ PRINT_FIELD_X(*p, mem_end);
+ tprint_struct_next();
+ PRINT_FIELD_X(*p, base_addr);
+ tprint_struct_next();
+ PRINT_FIELD_X(*p, irq);
+ tprint_struct_next();
+ PRINT_FIELD_X(*p, dma);
+ tprint_struct_next();
+ PRINT_FIELD_X(*p, port);
tprints("}");
}
diff --git a/tee.c b/tee.c
index eaddb404c..827993bfb 100644
--- a/tee.c
+++ b/tee.c
@@ -32,7 +32,7 @@
/* session id is printed as 0x%x in libteec */
#define PRINT_FIELD_SESSION(where_, field_) \
- PRINT_FIELD_X("", where_, field_)
+ PRINT_FIELD_X(where_, field_)
static void
tee_print_buf(struct_tee_ioctl_buf_data *buf)
@@ -114,9 +114,12 @@ tee_print_param_fn(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data
case TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT:
case TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT:
default:
- PRINT_FIELD_X(", ", *param, a);
- PRINT_FIELD_X(", ", *param, b);
- PRINT_FIELD_X(", ", *param, c);
+ tprint_struct_next();
+ PRINT_FIELD_X(*param, a);
+ tprint_struct_next();
+ PRINT_FIELD_X(*param, b);
+ tprint_struct_next();
+ PRINT_FIELD_X(*param, c);
break;
}
tprints("}");
@@ -157,7 +160,8 @@ tee_version(struct tcb *const tcp, const kernel_ulong_t arg)
PRINT_FIELD_FLAGS(version, impl_caps,
tee_ioctl_optee_caps, "TEE_OPTEE_CAP_???");
} else {
- PRINT_FIELD_X(", ", version, impl_caps);
+ tprint_struct_next();
+ PRINT_FIELD_X(version, impl_caps);
}
tprints("}");
@@ -407,7 +411,8 @@ tee_shm_alloc(struct tcb *const tcp, const kernel_ulong_t arg)
if (umove_or_printaddr(tcp, arg, &shm_alloc))
return RVAL_IOCTL_DECODED;
- PRINT_FIELD_X("{", shm_alloc, size);
+ tprint_struct_begin();
+ PRINT_FIELD_X(shm_alloc, size);
tprint_struct_next();
PRINT_FIELD_FLAGS(shm_alloc, flags,
tee_ioctl_shm_flags, "TEE_IOCTL_SHM_???");
@@ -422,7 +427,8 @@ tee_shm_alloc(struct tcb *const tcp, const kernel_ulong_t arg)
if (umove_or_printaddr(tcp, arg, &shm_alloc))
return RVAL_IOCTL_DECODED;
- PRINT_FIELD_X("{", shm_alloc, size);
+ tprint_struct_begin();
+ PRINT_FIELD_X(shm_alloc, size);
tprint_struct_next();
PRINT_FIELD_FLAGS(shm_alloc, flags,
tee_ioctl_shm_flags, "TEE_IOCTL_SHM_???");
@@ -459,7 +465,8 @@ tee_shm_register_fd(struct tcb *const tcp, const kernel_ulong_t arg)
if (umove_or_printaddr(tcp, arg, &shm_register_fd))
return RVAL_IOCTL_DECODED;
- PRINT_FIELD_X("{", shm_register_fd, size);
+ tprint_struct_begin();
+ PRINT_FIELD_X(shm_register_fd, size);
PRINT_FIELD_D(", ", shm_register_fd, id);
tprints("}");
@@ -479,7 +486,8 @@ tee_shm_register(struct tcb *const tcp, const kernel_ulong_t arg)
tprint_struct_begin();
PRINT_FIELD_ADDR64(shm_register, addr);
- PRINT_FIELD_X(", ", shm_register, length);
+ tprint_struct_next();
+ PRINT_FIELD_X(shm_register, length);
tprint_struct_next();
PRINT_FIELD_FLAGS(shm_register, flags,
tee_ioctl_shm_flags, "TEE_IOCTL_SHM_???");
@@ -494,7 +502,8 @@ tee_shm_register(struct tcb *const tcp, const kernel_ulong_t arg)
if (umove_or_printaddr(tcp, arg, &shm_register))
return RVAL_IOCTL_DECODED;
- PRINT_FIELD_X("{", shm_register, length);
+ tprint_struct_begin();
+ PRINT_FIELD_X(shm_register, length);
tprint_struct_next();
PRINT_FIELD_FLAGS(shm_register, flags,
tee_ioctl_shm_flags, "TEE_IOCTL_SHM_???");
diff --git a/tests/netlink_crypto.c b/tests/netlink_crypto.c
index cfa38f993..cfea62bc4 100644
--- a/tests/netlink_crypto.c
+++ b/tests/netlink_crypto.c
@@ -96,13 +96,13 @@ test_crypto_msg_newalg(const int fd)
", cru_driver_name=\"efgh\""
", cru_module_name=\"dcba\"");
printf(", ");
- PRINT_FIELD_X("", alg, cru_type);
+ PRINT_FIELD_X(alg, cru_type);
printf(", ");
- PRINT_FIELD_X("", alg, cru_mask);
+ PRINT_FIELD_X(alg, cru_mask);
printf(", ");
PRINT_FIELD_U("", alg, cru_refcnt);
printf(", ");
- PRINT_FIELD_X("", alg, cru_flags);
+ PRINT_FIELD_X(alg, cru_flags);
printf("}"));
fill_memory_ex(alg.cru_name, sizeof(alg.cru_name), '0', 10);
@@ -124,13 +124,13 @@ test_crypto_msg_newalg(const int fd)
print_quoted_memory(alg.cru_module_name,
sizeof(alg.cru_module_name) - 1);
printf("..., ");
- PRINT_FIELD_X("", alg, cru_type);
+ PRINT_FIELD_X(alg, cru_type);
printf(", ");
- PRINT_FIELD_X("", alg, cru_mask);
+ PRINT_FIELD_X(alg, cru_mask);
printf(", ");
PRINT_FIELD_U("", alg, cru_refcnt);
printf(", ");
- PRINT_FIELD_X("", alg, cru_flags);
+ PRINT_FIELD_X(alg, cru_flags);
printf("}"));
}
diff --git a/tests/netlink_route.c b/tests/netlink_route.c
index 81a1e750a..f75ad19cc 100644
--- a/tests/netlink_route.c
+++ b/tests/netlink_route.c
@@ -200,7 +200,7 @@ test_rtnl_link(const int fd)
", ifi_index=" IFINDEX_LO_STR
", ifi_flags=IFF_UP");
printf(", ");
- PRINT_FIELD_X("", ifinfo, ifi_change);
+ PRINT_FIELD_X(ifinfo, ifi_change);
printf("}"));
}
diff --git a/tests/nlattr_ifinfomsg.c b/tests/nlattr_ifinfomsg.c
index 64558ae53..a35498c5a 100644
--- a/tests/nlattr_ifinfomsg.c
+++ b/tests/nlattr_ifinfomsg.c
@@ -280,11 +280,11 @@ main(void)
init_ifinfomsg, print_ifinfomsg,
IFLA_MAP, sizeof_ifmap, &map, sizeof_ifmap,
printf("{");
- PRINT_FIELD_X("", map, mem_start);
+ PRINT_FIELD_X(map, mem_start);
printf(", ");
- PRINT_FIELD_X("", map, mem_end);
+ PRINT_FIELD_X(map, mem_end);
printf(", ");
- PRINT_FIELD_X("", map, base_addr);
+ PRINT_FIELD_X(map, base_addr);
printf(", ");
PRINT_FIELD_U("", map, irq);
printf(", ");
diff --git a/tests/nlattr_inet_diag_msg.c b/tests/nlattr_inet_diag_msg.c
index a797c8eaf..5899f3046 100644
--- a/tests/nlattr_inet_diag_msg.c
+++ b/tests/nlattr_inet_diag_msg.c
@@ -171,9 +171,9 @@ main(void)
init_inet_diag_msg, print_inet_diag_msg,
INET_DIAG_BBRINFO, pattern, bbr,
printf("{");
- PRINT_FIELD_X("", bbr, bbr_bw_lo);
+ PRINT_FIELD_X(bbr, bbr_bw_lo);
printf(", ");
- PRINT_FIELD_X("", bbr, bbr_bw_hi);
+ PRINT_FIELD_X(bbr, bbr_bw_hi);
printf(", ");
PRINT_FIELD_U("", bbr, bbr_min_rtt);
printf(", ");
diff --git a/tests/nlattr_rtmsg.c b/tests/nlattr_rtmsg.c
index b0ebcc2fa..e014fd4a5 100644
--- a/tests/nlattr_rtmsg.c
+++ b/tests/nlattr_rtmsg.c
@@ -153,7 +153,7 @@ main(void)
printf(", ");
PRINT_FIELD_U("", ci, rta_used);
printf(", ");
- PRINT_FIELD_X("", ci, rta_id);
+ PRINT_FIELD_X(ci, rta_id);
printf(", ");
PRINT_FIELD_U("", ci, rta_ts);
printf(", ");
diff --git a/tests/nlattr_smc_diag_msg.c b/tests/nlattr_smc_diag_msg.c
index 8c2957849..82ccd9d7d 100644
--- a/tests/nlattr_smc_diag_msg.c
+++ b/tests/nlattr_smc_diag_msg.c
@@ -223,13 +223,13 @@ int main(void)
printf("{");
PRINT_FIELD_U("", dinfo, linkid);
printf(", ");
- PRINT_FIELD_X("", dinfo, peer_gid);
+ PRINT_FIELD_X(dinfo, peer_gid);
printf(", ");
- PRINT_FIELD_X("", dinfo, my_gid);
+ PRINT_FIELD_X(dinfo, my_gid);
printf(", ");
- PRINT_FIELD_X("", dinfo, token);
+ PRINT_FIELD_X(dinfo, token);
printf(", ");
- PRINT_FIELD_X("", dinfo, peer_token);
+ PRINT_FIELD_X(dinfo, peer_token);
printf("}"));
TEST_NLATTR_OBJECT(fd, nlh0, hdrlen,
diff --git a/tests/quotactl-xfs.c b/tests/quotactl-xfs.c
index a92196356..f59becaa2 100644
--- a/tests/quotactl-xfs.c
+++ b/tests/quotactl-xfs.c
@@ -83,7 +83,7 @@ print_xdisk_quota(int rc, void *ptr, void *arg)
printflags(xfs_dqblk_flags, (uint8_t) dq->d_flags, "XFS_???_QUOTA");
printf(", ");
- PRINT_FIELD_X("", *dq, d_fieldmask);
+ PRINT_FIELD_X(*dq, d_fieldmask);
printf(", ");
PRINT_FIELD_U("", *dq, d_id);
printf(", ");
diff --git a/ubi.c b/ubi.c
index be22bd3fd..bbe9382e3 100644
--- a/ubi.c
+++ b/ubi.c
@@ -180,7 +180,8 @@ decode_UBI_IOCSETVOLPROP(struct tcb *const tcp, const kernel_ulong_t arg)
tprint_struct_begin();
PRINT_FIELD_XVAL(prop, property,
ubi_volume_props, "UBI_VOL_PROP_???");
- PRINT_FIELD_X(", ", prop, value);
+ tprint_struct_next();
+ PRINT_FIELD_X(prop, value);
tprints("}");
}
diff --git a/userfaultfd.c b/userfaultfd.c
index 90ea1b110..97216a90c 100644
--- a/userfaultfd.c
+++ b/userfaultfd.c
@@ -33,8 +33,10 @@ SYS_FUNC(userfaultfd)
static void
tprintf_uffdio_range(const struct uffdio_range *range)
{
- PRINT_FIELD_X("{", *range, start);
- PRINT_FIELD_X(", ", *range, len);
+ tprint_struct_begin();
+ PRINT_FIELD_X(*range, start);
+ tprint_struct_next();
+ PRINT_FIELD_X(*range, len);
tprints("}");
}
@@ -51,7 +53,8 @@ uffdio_ioctl(struct tcb *const tcp, const unsigned int code,
tprints(", ");
if (umove_or_printaddr(tcp, arg, &ua))
break;
- PRINT_FIELD_X("{", ua, api);
+ tprint_struct_begin();
+ PRINT_FIELD_X(ua, api);
tprint_struct_next();
PRINT_FIELD_FLAGS(ua, features, uffd_api_features,
"UFFD_FEATURE_???");
@@ -92,9 +95,12 @@ uffdio_ioctl(struct tcb *const tcp, const unsigned int code,
tprints(", ");
if (umove_or_printaddr(tcp, arg, &uc))
return RVAL_IOCTL_DECODED;
- PRINT_FIELD_X("{", uc, dst);
- PRINT_FIELD_X(", ", uc, src);
- PRINT_FIELD_X(", ", uc, len);
+ tprint_struct_begin();
+ PRINT_FIELD_X(uc, dst);
+ tprint_struct_next();
+ PRINT_FIELD_X(uc, src);
+ tprint_struct_next();
+ PRINT_FIELD_X(uc, len);
tprint_struct_next();
PRINT_FIELD_FLAGS(uc, mode, uffd_copy_flags,
"UFFDIO_COPY_???");
@@ -103,7 +109,8 @@ uffdio_ioctl(struct tcb *const tcp, const unsigned int code,
}
if (!syserror(tcp) && !umove(tcp, arg, &uc)) {
- PRINT_FIELD_X(", ", uc, copy);
+ tprint_struct_next();
+ PRINT_FIELD_X(uc, copy);
}
tprints("}");
@@ -171,7 +178,8 @@ uffdio_ioctl(struct tcb *const tcp, const unsigned int code,
}
if (!syserror(tcp) && !umove(tcp, arg, &uz)) {
- PRINT_FIELD_X(", ", uz, zeropage);
+ tprint_struct_next();
+ PRINT_FIELD_X(uz, zeropage);
}
tprints("}");
diff --git a/v4l2.c b/v4l2.c
index 068afbb06..17c01de0b 100644
--- a/v4l2.c
+++ b/v4l2.c
@@ -325,7 +325,8 @@ DECL_print_v4l2_format_fmt(win)
PRINT_FIELD_OBJ_PTR(*p, w, print_v4l2_rect);
tprint_struct_next();
PRINT_FIELD_XVAL(*p, field, v4l2_fields, "V4L2_FIELD_???");
- PRINT_FIELD_X(", ", *p, chromakey);
+ tprint_struct_next();
+ PRINT_FIELD_X(*p, chromakey);
tprints(", clips=");
struct_v4l2_clip clip;
@@ -337,7 +338,8 @@ DECL_print_v4l2_format_fmt(win)
tprint_struct_next();
PRINT_FIELD_PTR(*p, bitmap);
if (p->global_alpha) {
- PRINT_FIELD_X(", ", *p, global_alpha);
+ tprint_struct_next();
+ PRINT_FIELD_X(*p, global_alpha);
}
tprints("}");
return rc;
@@ -612,7 +614,8 @@ print_v4l2_buffer(struct tcb *const tcp, const unsigned int code,
"V4L2_MEMORY_???");
if (b.memory == V4L2_MEMORY_MMAP) {
- PRINT_FIELD_X(", ", b, m.offset);
+ tprint_struct_next();
+ PRINT_FIELD_X(b, m.offset);
} else if (b.memory == V4L2_MEMORY_USERPTR) {
tprint_struct_next();
PRINT_FIELD_PTR(b, m.userptr);
@@ -641,8 +644,10 @@ print_v4l2_framebuffer(struct tcb *const tcp, const kernel_ulong_t arg)
tprints(", ");
if (!umove_or_printaddr(tcp, arg, &b)) {
- PRINT_FIELD_X("{", b, capability);
- PRINT_FIELD_X(", ", b, flags);
+ tprint_struct_begin();
+ PRINT_FIELD_X(b, capability);
+ tprint_struct_next();
+ PRINT_FIELD_X(b, flags);
tprint_struct_next();
PRINT_FIELD_PTR(b, base);
tprints("}");
@@ -679,7 +684,8 @@ print_v4l2_streamparm_capture(const struct v4l2_captureparm *const p)
"V4L2_MODE_???");
tprint_struct_next();
PRINT_FIELD_FRACT(*p, timeperframe);
- PRINT_FIELD_X(", ", *p, extendedmode);
+ tprint_struct_next();
+ PRINT_FIELD_X(*p, extendedmode);
PRINT_FIELD_U(", ", *p, readbuffers);
tprints("}");
}
@@ -695,7 +701,8 @@ print_v4l2_streamparm_output(const struct v4l2_outputparm *const p)
"V4L2_MODE_???");
tprint_struct_next();
PRINT_FIELD_FRACT(*p, timeperframe);
- PRINT_FIELD_X(", ", *p, extendedmode);
+ tprint_struct_next();
+ PRINT_FIELD_X(*p, extendedmode);
PRINT_FIELD_U(", ", *p, writebuffers);
tprints("}");
}