[PATCH v7 0/7] Remote fork events

Don Breazeal
2015-04-10T17:09:59Z

This is v7 of the patch series implementing remote follow-fork, last
posted here: https://sourceware.org/ml/gdb-patches/2015-03/msg00503.html

This patchset only implements fork and vfork events for extended remote,
omitting exec events and 'target remote' for now.

Changes from the previous version:

* Patch 1: removed documentation portion, putting it in a separate
documentation patch (patch 7).

* Patch 3: addressed a number of review comments. The significant
changes include:
- temporarily pause all lwps when gdb (re)connects, in
order to set the ptrace options.
- rework the mechanism for setting ptrace options.
- refactor remote_detach_1 per review comments.
- removed a test change (will submit it as a separate patch).
- moved documentation changes to doc patch #7.

* Patch 5: changed a couple a spots to address how gdbserver checks
whether fork events have been requested by gdb and whether they
are enabled. Also moved documentation changes to doc patch #7.

* Patch 6: significant changes include:
- changed method of removing fork child threads from the
thread list reported from the remote target, prior to
follow_fork.
- changed how gdb determines whether a process that is
to be killed contains a fork parent thread
- removed a test change that isn't needed for this patchset.
- moved documentation changes to doc patch #7.

* Patch 7: new patch that incorporates all doc changes for the patchset.

The patch descriptions are mostly unchanged except for the new patch:

1/6: Preparatory patch that implements qSupported support for fork events
and associated mechanisms.

Previously approved minus doc portions here:
https://sourceware.org/ml/gdb-patches/2015-03/msg00896.html

2/6: Implements functions to clone breakpoint lists in gdbserver.

Previously approved pending a few 'nits', fixes are documented here:
https://sourceware.org/ml/gdb-patches/2014-10/msg00883.html.

3/6: Implements follow fork for 'fork' but not 'vfork', for
extended-remote targets only.

4/6: Adds the architecture-specific pieces of follow-fork that allows
hardware watchpoints to be inherited by a forked child.

Previously approved here:
https://sourceware.org/ml/gdb-patches/2015-02/msg00262.html

5/6: Adds follow fork for 'vfork'.

6/6: Adds catchpoints for 'fork' and 'vfork', along with support for
killing a process that has forked before follow_fork is completed.

7/7: Documentation for the patch series.

TESTING:
Testing was mostly done using x86_64 Ubuntu, with the exception of the
architecture-specific patch, #4. There are a few failures that show up
but don't signify any problem.

- Intermediate patches show failures due to the lack of features
implemented in subsequent patches, like missing hardware watchpoint
or catchpoint support.

- Some vfork tests fail due to the lack of exec event support.

Thanks,
--Don