From: Wu Zhou <woodzltc@cn.ibm.com>
To: Eli Zaretskii <eliz@gnu.org>, Daniel Jacobowitz <drow@false.org>
Cc: gdb-patches@sourceware.org
Subject: Re: [ppc-linux-nat]: set access flag for h/w watchpoint even if it is only read or write
Date: Fri, 07 Jul 2006 04:35:00 -0000 [thread overview]
Message-ID: <20060707003521.worrm140yso4g8s8@imap.linux.ibm.com> (raw)
Eli,
Just as Daniel said, my problem is not the same as yours. given the
following code:
int var1 = 0, var2;
var1 = 10;
var2 = var1;
if we set read watchpoint on var1, it should stop at "var2 = var1", but
gdb are using "watchpoint_check" to see if the watched variable are
changed or not, if it is changed, then it assumes the watched variable is
writed; if not, it assumes the watched variable is read.
Because when execution get to "var1=10", it won't trigger a watchpoint,
the old value stored in var1 is still 0, so watchpoint_check will get a
wrong conclusion that var1 is changed to 10 by this instruction. So it
won't treat it as a read watchpoint hit.
My solution is to let gdb update the value stored in the watched variable,
so that it always get the fresh value for comparison.
Another solution might be to change the verify logic of read watchpoint
hit in watchpoint_check. Maybe we can just trust the underlying os will
only trigger in read hit?
Still another is like what Daniel and you said, we can let the target to
tell what kind of hit it is on the watched variable. As for this, I can
figure out two methods at this time: the kernel should transfer the
watchpoint type information to user space (maybe through siginfo), or
gdb iterate through all the watched variable to determine what kind of
watchpoint this is. Both of these changes also involve the change in
watchpoint_check routine.
Comparing all these solution, my solution is the most simple one. I mean,
it makes little change to the current code. To address the slowdown, we
can still use the original flags for write hit.
What is your idea on this?
On Thu, 6 Jul 2006, Daniel Jacobowitz wrote:
> On Thu, Jul 06, 2006 at 11:58:58PM +0300, Eli Zaretskii wrote:
> > Yes, this problem is known on x86 and elsewhere. The problem is
> > extremely rare, as reading and writing to the same address in the same
> > instruction is a hard-to-accomplish treat. Wu, could you show a
> > real-life example of where this matters?
>
> I thought, though I may be misremembering, that it was actually a
> different problem. Something like this:
>
> - We set a read watchpoint. It does not trigger on writes.
>
> - An instruction writes to the location.
>
> - GDB stops, sees that it stopped at a watchpoint at the given address,
> tries to determine what sort of watchpoint it was, determines that
> the value had changed, and ignores the read watchpoint - the value
> has changed since we last checked so this "must" have been a write
> watchpoint.
>
> Is that plausible or nonsensical?
>
> --
> Daniel Jacobowitz
> CodeSourcery
>
Regards
- Wu Zhou
next reply other threads:[~2006-07-07 4:35 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-07-07 4:35 Wu Zhou [this message]
2006-07-07 10:04 ` Eli Zaretskii
2006-07-07 13:18 ` Daniel Jacobowitz
2006-07-07 15:08 ` Eli Zaretskii
2006-07-08 19:36 ` Ulrich Weigand
-- strict thread matches above, loose matches on Subject: below --
2006-06-09 15:40 Wu Zhou
2006-07-06 13:20 ` Daniel Jacobowitz
2006-07-06 20:59 ` Eli Zaretskii
2006-07-06 21:37 ` 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=20060707003521.worrm140yso4g8s8@imap.linux.ibm.com \
--to=woodzltc@cn.ibm.com \
--cc=drow@false.org \
--cc=eliz@gnu.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