From 72b049d38ce85c51fc9f97ee64b00a47be5ebe94 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Tue, 24 May 2016 14:47:57 +0100 Subject: [PATCH] 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-24 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. --- gdb/ChangeLog | 7 +++++++ gdb/linux-nat.c | 5 ++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d08372b03fd..fa20332d08a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2016-05-24 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-24 Pedro Alves PR gdb/19828 diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c index 6cd9fc673db..fdd1ae4ed0e 100644 --- a/gdb/linux-nat.c +++ b/gdb/linux-nat.c @@ -1320,7 +1320,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 ()) { -- 2.30.2