Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Daniel Jacobowitz <drow@false.org>
To: "Maciej W. Rozycki" <macro@mips.com>
Cc: gdb-patches@sourceware.org, "Maciej W. Rozycki" <macro@linux-mips.org>
Subject: Re: mips-tdep.c: Fix sw watchpoint-out-of-scope events
Date: Wed, 19 Sep 2007 12:38:00 -0000	[thread overview]
Message-ID: <20070919123827.GA27457@caradoc.them.org> (raw)
In-Reply-To: <Pine.LNX.4.61.0709191219020.27377@perivale.mips.com>

On Wed, Sep 19, 2007 at 01:31:29PM +0100, Maciej W. Rozycki wrote:
>  Well, actually then, I have thought, rather than trying to fix the 
> unfixable, why don't we mimic the behaviour of hardware watchpoints?  As 
> they do not single-step (the whole point of them, at least for the write 
> watchpoints) a scope software breakpoint is placed at the return target of 
> the scope covered.  We could do the same for software watchpoints -- 
> insert a scope software breakpoint, single-step till the watchpoints goes 
> out of scope and then resume at the full speed till the scope breakpoint 
> is hit.  Was there any particular reason for not doing so in the first 
> place?

Could you give me an example?  The watchpoint shouldn't go out of
scope before the scope breakpoint is hit.  The problem is, instead,
that it appears to change value.  There's two cases.  In the epilogue
of the function containing the watched variable, the stack frame gets
destroyed, so the watchpoint is no longer valid... but we don't have
any marker to indicate that.  In the epilogue of other called
functions, the watchpoint is still valid but we fail to backtrace
correctly so we don't find the original function on the stack.

Both of these can happen for hardware watchpoints too, e.g., if the
user is single stepping or has other breakpoints set.  In practice
they rarely do.

> > Hmm, do you think we should accept that line as a pass then?  The same
> > will happen on other architectures too.
> 
>  Well, it depends on the policy we have (if we have any in this area) -- 
> the patch fixes non-PIC o32 and presumably new ABIs (I'll try to see 
> whether I have a way to test it), but does not quite so for PIC o32 
> (beacuse of the load to $gp after the return).  There may be other 
> architectures with a similar problem, but if MIPS o32 was to be the only 
> one affected, then a PASS would be reasonable, as stated originally.  
> Though I have no idea how to take care of the load to $gp at the moment -- 
> perhaps some logic from the scope breakpoint calculation could be reused.

I think I wasn't clear.  I'm asking if returning to the original call
line, the way MIPS o32 PIC does, should be a PASS.  Other platforms
that have teardown after function calls will show the same behavior.
I think there's at least one other test which allows it.

-- 
Daniel Jacobowitz
CodeSourcery


  reply	other threads:[~2007-09-19 12:38 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-11 16:24 Maciej W. Rozycki
2007-09-18 15:54 ` Daniel Jacobowitz
2007-09-19 12:31   ` Maciej W. Rozycki
2007-09-19 12:38     ` Daniel Jacobowitz [this message]
2007-09-19 13:05       ` Maciej W. Rozycki
2007-09-19 13:16         ` Daniel Jacobowitz

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=20070919123827.GA27457@caradoc.them.org \
    --to=drow@false.org \
    --cc=gdb-patches@sourceware.org \
    --cc=macro@linux-mips.org \
    --cc=macro@mips.com \
    /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