On Mon, 2024-10-21 at 18:50 -0700, Richard Henderson wrote: > On 10/17/24 02:14, Ilya Leoshkevich wrote: > > @@ -3312,10 +3358,26 @@ print_rt_sigprocmask(CPUArchState *cpu_env, > > const struct syscallname *name, > > case TARGET_SIG_SETMASK: how = "SIG_SETMASK"; break; > > } > > qemu_log("%s,", how); > > - print_pointer(arg1, 0); > > - print_pointer(arg2, 0); > > + print_target_sigset_t(arg1, arg3, 0); > > +} > > + > > +static void > > +print_rt_sigprocmask_ret(CPUArchState *cpu_env, const struct > > syscallname *name, > > + abi_long ret, abi_long arg0, abi_long > > arg1, > > + abi_long arg2, abi_long arg3, abi_long > > arg4, > > + abi_long arg5) > > +{ > > + if (is_error(ret)) { > > + print_pointer(arg2, 0); > > + } else { > > + print_target_sigset_t(arg2, arg3, 0); > > + } > > print_raw_param("%u", arg3, 1); > > print_syscall_epilogue(name); > > I'm not keen on splitting operands across syscall completion. > There are a few existing syscalls for which we print such results > afterward: > > clock_gettime > clock_getres > wait4 > waitpid > > but we're certainly not consistent about it. > > > r~
I wanted to stay as close as possible to strace here, but I don't really have a strong preference. I will send a v2.