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~

Reply via email to