]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
linux-nat: introduce pending_status_str
authorPedro Alves <pedro@palves.net>
Fri, 12 Nov 2021 20:50:29 +0000 (20:50 +0000)
committerPedro Alves <pedro@palves.net>
Mon, 5 Dec 2022 13:38:06 +0000 (13:38 +0000)
I noticed that some debug log output printing an lwp's pending status
wasn't considering lp->waitstatus.  This fixes it, by introducing a
new pending_status_str function.

Change-Id: I66e5c7a363d30a925b093b195d72925ce5b6b980

gdb/linux-nat.c

index 17e5dce08c3de25ea53eb1ab3d2ee3e8a80a6785..9b78fd1f8e8e8e4745822ecd5614b78925157610 100644 (file)
@@ -256,6 +256,19 @@ is_leader (lwp_info *lp)
   return lp->ptid.pid () == lp->ptid.lwp ();
 }
 
+/* Convert an LWP's pending status to a std::string.  */
+
+static std::string
+pending_status_str (lwp_info *lp)
+{
+  gdb_assert (lwp_status_pending_p (lp));
+
+  if (lp->waitstatus.kind () != TARGET_WAITKIND_IGNORE)
+    return lp->waitstatus.to_string ();
+  else
+    return status_to_str (lp->status);
+}
+
 \f
 /* LWP accessors.  */
 
@@ -1647,8 +1660,8 @@ linux_nat_target::resume (ptid_t scope_ptid, int step, enum gdb_signal signo)
         this thread with a signal?  */
       gdb_assert (signo == GDB_SIGNAL_0);
 
-      linux_nat_debug_printf ("Short circuiting for status 0x%x",
-                             lp->status);
+      linux_nat_debug_printf ("Short circuiting for status %s",
+                             pending_status_str (lp).c_str ());
 
       if (target_can_async_p ())
        {
@@ -3137,7 +3150,7 @@ linux_nat_wait_1 (ptid_t ptid, struct target_waitstatus *ourstatus,
   if (lp != NULL)
     {
       linux_nat_debug_printf ("Using pending wait status %s for %s.",
-                             status_to_str (lp->status).c_str (),
+                             pending_status_str (lp).c_str (),
                              lp->ptid.to_string ().c_str ());
     }