Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <pedro@codesourcery.com>
To: Daniel Jacobowitz <drow@false.org>
Cc: gdb-patches@sourceware.org
Subject: Re: remove global stop_bpstat dependency from breakpoints module
Date: Thu, 05 Jun 2008 18:27:00 -0000	[thread overview]
Message-ID: <200806051927.07953.pedro@codesourcery.com> (raw)
In-Reply-To: <20080605180331.GB16610@caradoc.them.org>

A Thursday 05 June 2008 19:03:31, Daniel Jacobowitz wrote:
> On Thu, May 08, 2008 at 02:22:04AM +0100, Pedro Alves wrote:
> > I had missed this on the non-stop series.  I'll need to context switch
> > stop_bpstat in non-stop mode, because there, we'll have simultaneous
> > independant stop events, one per thread, and each should have its own
> > stop_bpstat.  That's a small change to patch 4 in series I posted.
>
> The implementation makes it look like this will work for watchpoints
> too.  If we want to preserve that - which is not the documented
> behavior - then I agree we should context-switch stop_bpstat.  But
> I'm thinking it makes more sense to restrict this to breakpoints,
> and search for a breakpoint at the current PC.

Well, I can't say if we want to preserve that.  I never use
this functionality, so I wouldn't missed it.  The
"ignore" command gets me the same functionality anyway.

Notice that I was proposing context switching it in non-stop
only.  The current implementation sets the ignore count
on the breakpoint that we stopped last.  If we just read current
PC, we may be reading it from the wrong thread:

 Breakpoint 1, at xxx
 thread 2
 c 10

we could use get_last_target_status to get at the
correct PC if we do want to preserve this behaviour in
all-stop.  In non-stop, I'd read from the current thread always.

But, the help doc:

"Continue program being debugged, after signal or breakpoint.
If proceeding from breakpoint, a number N may be used as an argument,
which means to set the ignore count of that breakpoint to N - 1 (so that
the breakpoint won't break until the Nth time it is reached)"

... doesn't make it clear, if "proceeding" was meant to apply
to the last breakpoint, or to the breakpoint under PC.

As I said, I would mind at all to change this to the read
the PC of the current thread.  Just pointing out the current
behaviour.

>
> What do you think?  Also, does that remove the only reason to
> context-switch stop_bpstat?  If so, we don't need this patch at all.
>

Yes.

> > One way to fix it, would be to also loop through all threads to update
> > their version of stop_bpstat, but I'd like better.
>
> If we do need to context-switch stop_bpstat, it seems like checking
> all of those would be simpler than this patch as posted.

Well, simpler yes, but adds even more coupling.  I thought this was
a nice cleanup.  It's mentioned a few times in comments
throughout breakpoints.c.

-- 
Pedro Alves


  reply	other threads:[~2008-06-05 18:27 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-08 11:41 Pedro Alves
2008-06-05 18:03 ` Daniel Jacobowitz
2008-06-05 18:27   ` Pedro Alves [this message]
2008-06-05 18:34     ` Daniel Jacobowitz
2008-06-05 18:46       ` Pedro Alves

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=200806051927.07953.pedro@codesourcery.com \
    --to=pedro@codesourcery.com \
    --cc=drow@false.org \
    --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