]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Make gdb/linux-nat.c consider a waitstatus pending on the infrun side
authorPedro Alves <palves@redhat.com>
Wed, 25 May 2016 17:35:09 +0000 (18:35 +0100)
committerPedro Alves <palves@redhat.com>
Wed, 25 May 2016 17:35:09 +0000 (18:35 +0100)
Working on the fix for gdb/19828, I saw
gdb.threads/attach-many-short-lived-threads.exp fail once in an
unusual way.  Unfortunately I didn't keep debug logs, but it's an
issue similar to what's been fixed in remote.c a while ago --
linux-nat.c was not fetching the pending status from the right place.

gdb/ChangeLog:
2016-05-25  Pedro Alves  <palves@redhat.com>

PR gdb/19828
* linux-nat.c (get_pending_status): If the thread reported the
event to the core and it's pending, use the pending status signal
number.

gdb/ChangeLog
gdb/linux-nat.c

index 3ee9cb4f992b64e5228930dc5305ff59cfbd9724..179acf0eebe64f3823ab47636270cb5b43785cea 100644 (file)
@@ -1,3 +1,10 @@
+2016-05-25  Pedro Alves  <palves@redhat.com>
+
+       PR gdb/19828
+       * linux-nat.c (get_pending_status): If the thread reported the
+       event to the core and it's pending, use the pending status signal
+       number.
+
 2016-05-17  Simon Marchi  <simon.marchi@ericsson.com>
 
        PR gdb/20045
index 0829bcb5072c7ff6177cb10dee47b8741ede4d34..ea171b0017df14b7f727b0469268f387ee1f7d1a 100644 (file)
@@ -1236,7 +1236,10 @@ get_pending_status (struct lwp_info *lp, int *status)
     {
       struct thread_info *tp = find_thread_ptid (lp->ptid);
 
-      signo = tp->suspend.stop_signal;
+      if (tp->suspend.waitstatus_pending_p)
+       signo = tp->suspend.waitstatus.value.sig;
+      else
+       signo = tp->suspend.stop_signal;
     }
   else if (!target_is_non_stop_p ())
     {