inf-ptrace: Support async targets in inf_ptrace_target::wait.
authorJohn Baldwin <jhb@FreeBSD.org>
Tue, 22 Feb 2022 19:22:14 +0000 (11:22 -0800)
committerJohn Baldwin <jhb@FreeBSD.org>
Tue, 22 Feb 2022 19:22:14 +0000 (11:22 -0800)
commitca81b5334e074e6c00137dba00154ef1b4489388
treea50ca85ed9cd3aeaca6132b5fc4f934db9091bfc
parent85e8c48c73a5c39a6980f9b2bd16ec96062fc4c3
inf-ptrace: Support async targets in inf_ptrace_target::wait.

- Handle TARGET_WNOHANG by passing WNOHANG to waitpid and returning
  TARGET_WAITKIND_IGNORE if there are no events to report.

- Handle a race in async mode where SIGCHLD might signal the event
  pipe for an event that has already been reported.  If the event was
  the exit of the last child process, waitpid() will fail with ECHILD
  rather than returning a pid of 0.  For this case, return
  TARGET_WAITKIND_NO_RESUMED.
gdb/inf-ptrace.c