[PATCH] Don't compare the pid returned from wait() against inferior_ptid.

John Baldwin
2020-07-08T00:54:30Z

inf_ptrace::wait() needs to discard termination events reported by
detached child processes. Previously it compared the returned pid
against the pid in inferior_ptid to determine if a termination event
should be discarded or reported. inferior_ptid is now null_ptid in
wait() target methods, so this was always failing and never reporting
exit events. Instead, report termination events whose pid matches any
inferior belonging to the current target.

gdb/ChangeLog:

* inf-ptrace.c (inf_ptrace_target::wait): Don't compare against
inferior_ptid.
---
gdb/ChangeLog | 5 +++++
gdb/inf-ptrace.c | 2 +-
2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index c86d7e4647..d4cd0d014e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2020-07-07 John Baldwin <jhb@FreeBSD.org>
+
+ * inf-ptrace.c (inf_ptrace_target::wait): Don't compare against
+ inferior_ptid.
+
2020-07-06 Andrew Burgess <andrew.burgess@embecosm.com>

PR python/22748
diff --git a/gdb/inf-ptrace.c b/gdb/inf-ptrace.c
index d25d226abb..ae0b0f7ff0 100644
--- a/gdb/inf-ptrace.c
+++ b/gdb/inf-ptrace.c
@@ -347,7 +347,7 @@ inf_ptrace_target::wait (ptid_t ptid, struct target_waitstatus *ourstatus,
}

/* Ignore terminated detached child processes. */
- if (!WIFSTOPPED (status) && pid != inferior_ptid.pid ())
+ if (!WIFSTOPPED (status) && find_inferior_pid (this, pid) == nullptr)
pid = -1;
}
while (pid == -1);
--
2.25.1