obsd-nat: Various fixes for fork following.
authorJohn Baldwin <jhb@FreeBSD.org>
Thu, 29 Jul 2021 20:16:29 +0000 (13:16 -0700)
committerJohn Baldwin <jhb@FreeBSD.org>
Thu, 29 Jul 2021 21:13:16 +0000 (14:13 -0700)
commit42acc96479732c21d47fa0fb04e71e1eea5ee6d7
treefc71e716eb6ed039c6a9caa29fe965747b7212f8
parent3d3f92f275a0599f00742fbfcfbd0fb5b0d58364
obsd-nat: Various fixes for fork following.

- Don't use #ifdef's on ptrace ops.  obsd-nat.h didn't include
  <sys/ptrace.h>, so the virtual methods weren't always overridden
  causing the fork following to not work.  In addition, the thread and
  fork code is intertwined in ::wait and and the lack of #ifdef's
  there already assumed both were present.  Finally, both of these
  ptrace ops have been present in OpenBSD for at least 10 years.

- Move duplicated code to enable PTRACE_FORK event reporting to a
  single function and invoke it on new child processes reported via
  PTRACE_FORK.

- Don't return early from PTRACE_FORK handling, but instead reset
  wptid to the correct ptid if the child reports its event before the
  parent.  This allows the ptid fixup code to add thread IDs if the
  first event for a process is a PTRACE_FORK event.  This also
  properly returns ptid's with thread IDs when reporting PTRACE_FORK
  events.

- Handle detach_fork by skipping the PT_DETACH.
gdb/obsd-nat.c
gdb/obsd-nat.h