public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Pedro Alves <palves@redhat.com>
To: Don Breazeal <donb@codesourcery.com>, gdb-patches@sourceware.org
Subject: Re: [PATCH 00/16 v3] Linux extended-remote fork and exec events
Date: Wed, 12 Nov 2014 15:54:00 -0000	[thread overview]
Message-ID: <546382BB.9030809@redhat.com> (raw)
In-Reply-To: <1414798134-11536-1-git-send-email-donb@codesourcery.com>

FYI, I just started looking at / playing with this.

Thanks for persevering.  Really sorry for the slowness in getting the
through...  This feature is super important, but for one reason or another
it ends up pushed down on my TODO.  :-/

Thanks,
Pedro Alves

On 10/31/2014 11:28 PM, Don Breazeal wrote:
> This is an update to the patch series implementing fork and exec events
> for extended-remote Linux targets.  The updates include changes requested
> by Pedro for patches 4 and 5, plus minor changes throughout to catch up
> to changes made upstream since the last version of this series was posted.
> The most significant of those changes were related to upstream refactoring
> that changed names from "xxx_inferior" to "xxx_thread".
> 
> Patch 4 was rewritten to use qSupported as the mechanism for determining
> which extended-mode-only events are supported by gdbserver, instead of
> using a new packet for this.
> 
> Patch 5 received a little refactoring and polishing.
> 
> Patches 1-3 have been approved and pushed, so they aren't included.
> 
> Patches 10 and 15 were approved by Eli some time ago, but are still
> included here since they haven't been pushed.
> 
> Thanks,
> --Don
> 
> ====================================================================
>  
> This patch series implements fork and exec events for extended-remote linux
> targets.  Features that are enabled include:
> 
>  * follow-fork-mode
>  * detach-on-fork
>  * follow-exec-mode
>  * catch fork/vfork/exec
> 
> This work addresses PR gdb/13584, and is part of the local/remote debugging
> feature parity project
> (https://sourceware.org/gdb/wiki/LocalRemoteFeatureParity).
> 
> My patch v2 test results showed the following changes:
> 
>  * native: PASS +46
>    - this is due the addition of non-stop mode tests to
>      gdb.threads/non-ldr-exc-*.exp.
> 
>  * remote: no change
> 
>  * extended-remote: PASS: +329, FAIL: -134, KFAIL: +1,
>                     UNTESTED: +8, UNSUPPORTED: -6
> 
> Some items to note about the extended-remote results:
> 
>  - there are some extended-remote failures in
>    gdb.base/disp-step-syscall.exp that don't show up in the unmodified
>    version on the native target.  Investigation shows that these tests
>    are producing a bogus PASS result on the native target.  I did not
>    pursue this further.
> 
>  - the new non-stop tests in gdb.threads/non-ldr-exc-*.exp give an
>    UNTESTED result for extended-remote.  This is due to an RSP
>    error in non-stop mode when running to main.  I spent some time
>    investigating this and concluded that I should leave it alone for now,
>    for fear of having an ever-growing, never-ending project.  My plan is
>    to track this with a bug report once that is appropriate.
> 
>  - gdb.threads/thread-execl.exp gives a couple of failures related to
>    scheduler locking.  As with the previous item, after spending some
>    time on this I concluded that pursuing it further now would be
>    feature-creep, and that this should be tracked with a bug report.
> 
>  - gdb.trace/tspeed.exp got some timeout failures one time, but I
>    was unable to reproduce it.  I'm unsure whether this is significant.
> 
> I can provide test logs or .sum diffs if anybody is interested in
> specifics.
> 
> The contents of the patch series are as follows:
> 
> Patch 1: refactor native follow-fork implementation to move
> target-independent code from target-dependent file (linux-nat.c)
> to make it useful for extended-remote targets.
> 
> Patch 2: encapsulate the code used to print verbose/debug messages
> related to folow-fork into functions, and add a message in one case.
> Also make messages distinguish between fork and vfork.
> 
> Patch 3: encapsulate code that identifies and extracts extended
> ptrace events found in the Linux wait status into functions, and call
> them everywhere that the hard-coded wait status processing was used.
> 
> Patch 4: implements a mechanism for determining what extended-mode
> features gdbserver supports.  There are several issues that this addresses,
> which are detailed in the patch 4 description.  Basically, the patch
> adds some new items to the qSupported response denoting extended-mode-only
> event support, and defines new packets to represent those features.  In
> gdbserver, it splits checking whether the OS supports the features from
> actually enabling them, and enables them only when it is clear that
> extended mode is active.
> 
> Patch 5: implements some functions to clone the breakpoint lists in
> gdbserver.  These are needed because in gdbserver, each process maintains a
> separate breakpoint list.  When a fork occurs, the child process needs a
> copy of the parent's breakpoint list so that it can manage the breakpoints
> using existing mechanisms in gdbserver.
> 
> Patch 6: implements follow-fork, but only for 'fork', not 'vfork'.  I split
> these apart in an attempt to keep the size of the patches down to a
> reviewable size.
> 
> Patch 7: adds the architecture-specific pieces of follow-fork.  This is the
> mechanism that handles copying the debug register state from the parent to
> the child.
> 
> Patch 8: adds follow-fork for vfork.
> 
> Patch 9: adds 'catch fork' and 'catch vfork', along with some code to make
> sure that killing a process that has forked, but before the fork is
> followed, also kills the child process.
> 
> Patch 10: implements changes to the manual and the NEWS file for the fork
> event changes.
> 
> Patch 11: implements support for the extended ptrace event
> PTRACE_EVENT_EXIT, which is a prerequisite for the exec event support.
> 
> Patch 12: implements exec event support and follow-exec.
> 
> Patch 13: implements exec catchpoints.
> 
> Patch 14: suppresses some spurious warnings that were generated after
> an exec.  These warnings were caused when gdbserver attempted to check
> the version number from the r_debug structure in the new image before
> the structure had been initialized.
> 
> Patch 15: implements changed to the manual and NEWS file for the exec
> event changes.
> 
> Patch 16: changes how gdb.base/foll-exec.exp starts GDB and loads the
> program so that it will work with extended-remote.  It also extends the
> tests gdb.threads/non-ldr-exc-[1-4].exp to test in non-stop mode as well as
> in all-stop mode.


  reply	other threads:[~2014-11-12 15:54 UTC|newest]

Thread overview: 110+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-07 18:00 [PATCH 00/10] Linux extended-remote fork events Don Breazeal
2014-08-07 18:00 ` [PATCH 04/10] Enhance extended ptrace event setup Don Breazeal
2014-08-13 17:50   ` Breazeal, Don
2014-08-07 18:00 ` [PATCH 02/10] Refactor follow-fork message printing Don Breazeal
2014-08-07 18:00 ` [PATCH 01/10] Refactor native follow-fork Don Breazeal
2014-08-07 18:00 ` [PATCH 06/10] Extended-remote follow fork Don Breazeal
2014-08-07 18:00 ` [PATCH 03/10] Refactor extended ptrace event status Don Breazeal
2014-08-07 18:00 ` [PATCH 05/10] GDBserver clone breakpoint list Don Breazeal
2014-08-07 18:00 ` [PATCH 07/10] Extended-remote arch-specific follow fork Don Breazeal
2014-08-07 18:01 ` [PATCH 10/10] Extended-remote fork event documentation Don Breazeal
2014-08-07 19:31   ` Eli Zaretskii
2014-08-08 15:35     ` Breazeal, Don
2014-08-07 18:01 ` [PATCH 09/10] Extended-remote fork catchpoints Don Breazeal
2014-08-07 18:01 ` [PATCH 08/10] Extended-remote follow vfork Don Breazeal
2014-08-21  0:29 ` [PATCH 01/16 v2] Refactor native follow-fork Don Breazeal
2014-09-05 14:20   ` Pedro Alves
2014-09-05 18:56     ` Breazeal, Don
2014-09-05 20:20       ` Breazeal, Don
2014-09-09 10:57       ` Pedro Alves
2014-09-08 23:54     ` Breazeal, Don
2014-09-09 11:09       ` Pedro Alves
2014-09-12 16:50         ` Breazeal, Don
2014-09-22 15:53           ` Breazeal, Don
2014-09-26 18:13           ` Pedro Alves
2014-09-29 18:08             ` Breazeal, Don
2014-09-30 10:56               ` Pedro Alves
2014-09-30 18:43                 ` Breazeal, Don
2014-08-21  0:29 ` [Patch 00/16 v2] Linux extended-remote fork and exec events Don Breazeal
2014-09-04 20:57   ` Breazeal, Don
2014-10-31 23:29   ` [PATCH 06/16 v3] Extended-remote Linux follow fork Don Breazeal
2014-11-13 13:00     ` Pedro Alves
2014-11-13 18:53       ` Breazeal, Don
2014-11-13 18:59         ` Pedro Alves
2014-11-13 19:06           ` Breazeal, Don
2014-12-06  0:31             ` Breazeal, Don
2015-01-23 12:53               ` Pedro Alves
2015-01-23 17:18                 ` Breazeal, Don
     [not found]                 ` <1422222420-25421-1-git-send-email-donb@codesourcery.com>
2015-01-25 21:49                   ` [PATCH v4 6/7] Remote follow vfork Don Breazeal
2015-02-10 16:39                     ` Pedro Alves
2015-01-25 21:49                   ` [PATCH v4 5/7] Arch-specific remote follow fork Don Breazeal
2015-02-10 16:37                     ` Pedro Alves
2015-01-25 21:50                   ` [PATCH v4 1/7] Identify remote fork event support Don Breazeal
2015-02-10 16:34                     ` Pedro Alves
2015-01-25 21:50                   ` [PATCH v4 2/7] Clone remote breakpoints Don Breazeal
2015-01-25 21:58                   ` [PATCH v4 7/7] Remote fork catch Don Breazeal
2015-01-26  0:07                   ` [PATCH v4 3/7 v3] Extended-remote Linux follow fork Don Breazeal
2015-02-10 16:36                     ` Pedro Alves
2015-01-26  0:20                   ` [PATCH v4 4/7] Target remote " Don Breazeal
2015-01-12 22:39             ` [PATCH 06/16 v3] Extended-remote Linux " Don Breazeal
2015-01-12 22:49               ` Breazeal, Don
2014-10-31 23:29   ` [PATCH 05/16 v3] GDBserver clone breakpoint list Don Breazeal
2014-10-31 23:29   ` [PATCH 00/16 v3] Linux extended-remote fork and exec events Don Breazeal
2014-11-12 15:54     ` Pedro Alves [this message]
2014-11-13 13:41     ` Pedro Alves
2014-11-13 13:51       ` Pedro Alves
2014-11-13 14:58         ` Pedro Alves
2014-11-13 19:14     ` Pedro Alves
2014-10-31 23:29   ` [PATCH 08/16 v3] Extended-remote follow vfork Don Breazeal
2014-10-31 23:29   ` [PATCH 04/16 v3] Determine supported extended-remote features Don Breazeal
2014-11-13 12:59     ` Pedro Alves
2014-11-13 18:28       ` Breazeal, Don
2014-11-13 18:33         ` Pedro Alves
2014-11-13 19:08           ` Pedro Alves
2014-11-13 18:37         ` Breazeal, Don
2014-11-13 18:48           ` Pedro Alves
2014-12-06  0:30             ` Breazeal, Don
2015-01-12 22:36           ` Don Breazeal
2015-01-21 21:02             ` Breazeal, Don
2014-10-31 23:29   ` [PATCH 07/16 v3] Extended-remote arch-specific follow fork Don Breazeal
2014-10-31 23:30   ` [PATCH 10/16 v3] Extended-remote fork event documentation Don Breazeal
2014-10-31 23:30   ` [PATCH 12/16 v3] Extended-remote follow exec Don Breazeal
2014-10-31 23:30   ` [PATCH 13/16 v3] Extended-remote exec catchpoints Don Breazeal
2014-10-31 23:30   ` [PATCH 09/16 v3] Extended-remote fork catchpoints Don Breazeal
2014-10-31 23:30   ` [PATCH 11/16 v3] Extended-remote Linux exit events Don Breazeal
2014-11-13 19:18     ` Pedro Alves
2014-10-31 23:31   ` [PATCH 14/16 v3] Suppress spurious warnings with extended-remote follow exec Don Breazeal
2014-10-31 23:31   ` [PATCH 15/16 v3] Extended-remote exec event documentation Don Breazeal
2014-10-31 23:31   ` [PATCH 16/16 v3] Non-stop follow exec tests Don Breazeal
2014-08-21  0:30 ` [PATCH 03/16 v2] Refactor ptrace extended event status Don Breazeal
2014-09-09 11:31   ` Pedro Alves
2014-09-19 18:14     ` [pushed] " Breazeal, Don
2014-08-21  0:30 ` [PATCH 02/16 v2] Refactor follow-fork message printing Don Breazeal
2014-09-26 19:52   ` Pedro Alves
2014-09-26 20:14     ` Breazeal, Don
2014-10-03 23:51       ` Breazeal, Don
2014-10-15 16:08       ` Pedro Alves
2014-10-22 23:47         ` Breazeal, Don
2014-10-24 12:35           ` Pedro Alves
2014-10-24 18:45             ` Breazeal, Don
2014-08-21  0:30 ` [PATCH 04/16 v2] Determine supported extended-remote features Don Breazeal
2014-10-15 16:17   ` Pedro Alves
2014-10-21 23:23     ` Breazeal, Don
2014-10-22 21:48       ` Pedro Alves
2014-10-31 23:38         ` Breazeal, Don
2014-08-21  0:31 ` [PATCH 06/16 v2] Extended-remote Linux follow fork Don Breazeal
2014-09-19 20:57   ` Breazeal, Don
2014-08-21  0:31 ` [PATCH 07/16 v2] Extended-remote arch-specific " Don Breazeal
2014-09-19 21:26   ` Breazeal, Don
2014-08-21  0:31 ` [PATCH 05/16 v2] GDBserver clone breakpoint list Don Breazeal
2014-10-15 17:40   ` Pedro Alves
2014-10-31 23:44     ` Breazeal, Don
2014-08-21  0:32 ` [PATCH 08/16 v2] Extended-remote follow vfork Don Breazeal
2014-08-21  0:33 ` [PATCH 09/16 v2] Extended-remote fork catchpoints Don Breazeal
2014-08-21  0:33 ` [PATCH 10/16 v2] Extended-remote fork event documentation Don Breazeal
2014-08-21  0:33 ` [PATCH 11/16 v2] Extended-remote Linux exit events Don Breazeal
2014-08-21  0:34 ` [PATCH 13/16 v2] Extended-remote exec catchpoints Don Breazeal
2014-08-21  0:34 ` [PATCH 12/16 v2] Extended-remote follow exec Don Breazeal
2014-08-21  0:35 ` [PATCH 14/16 v2] Suppress spurious warnings with extended-remote " Don Breazeal
2014-08-21  0:36 ` [PATCH 15/16 v2] Extended-remote exec event documentation Don Breazeal
2014-08-21  0:36 ` [PATCH 16/16 v2] Non-stop follow exec tests Don Breazeal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=546382BB.9030809@redhat.com \
    --to=palves@redhat.com \
    --cc=donb@codesourcery.com \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).