From: Pedro Alves Date: Wed, 25 May 2016 17:35:09 +0000 (+0100) Subject: Make gdb/linux-nat.c consider a waitstatus pending on the infrun side X-Git-Tag: gdb-7.11.1-release~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a0de87e7be6a58dfeb9bfb00172dbd975dabb72e;p=thirdparty%2Fbinutils-gdb.git Make gdb/linux-nat.c consider a waitstatus pending on the infrun side 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 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. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3ee9cb4f992..179acf0eebe 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2016-05-25 Pedro Alves + + 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 PR gdb/20045 diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c index 0829bcb5072..ea171b0017d 100644 --- a/gdb/linux-nat.c +++ b/gdb/linux-nat.c @@ -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 ()) {