From: Daniel Jacobowitz <drow@false.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: jjohnstn@redhat.com, gdb-patches@sources.redhat.com
Subject: Re: [RFA]: Modified Watchthreads Patch
Date: Sat, 11 Dec 2004 18:06:00 -0000 [thread overview]
Message-ID: <20041211180236.GA16131@nevyn.them.org> (raw)
In-Reply-To: <01c4dfaa$Blat.v2.2.2$47bcb3c0@zahav.net.il>
On Sat, Dec 11, 2004 at 07:52:08PM +0200, Eli Zaretskii wrote:
> > Date: Sat, 11 Dec 2004 11:52:37 -0500
> > From: Daniel Jacobowitz <drow@false.org>
> > Cc: Jeff Johnston <jjohnstn@redhat.com>, gdb-patches@sources.redhat.com
> >
> > - The GDB core needs to continue to support watchpoints (hardware
> > breakpoints; et cetera) triggering in an unexpected thread.
>
> Agreed.
>
> > Rationale: some targets won't support any other way. For instance
> > page protection based watchpoints on GNU/Linux would probably apply to
> > all threads.
>
> Another, even better (IMHO) rationale: one important reason for using
> watchpoints is to find what code accesses some specific data; when we
> use watchpoints for this, we more often than not do not know what
> thread will access the data.
That's just a watchpoint without an explicit thread specified. That's
the default when you say "watch foo".
> Yes, but I think (and have said it several times in the past) that
> this difference in handling bp_hardware_watchpoint and
> bp_read_watchpoint/bp_access_watchpoint is a Bad Thing and we should
> rewrite it so that all the types of hardware-assisted watchpoints are
> handled in the same way. The current code that handles
> bp_hardware_watchpoint is simply the same code that handled software
> bp_watchpoint, which to me doesn't make sense, because at least on
> x86, the hardware tells us exactly what address was written to.
>
> (However, note that some platforms that cannot implement
> target_stopped_data_address actually take advantage of the different
> treatment of bp_hardware_watchpoint to implement `watch' even though
> `rwatch' and `awatch' are not implemented. If we decide to make the
> treatment of all hardware-assisted watchpoints similar, we should be
> careful not to break those platforms.)
OK. We can fix this.
> > Assuming that the program didn't stop for any other reason, and that
> > hardware watchpoints trigger after the write is executed
>
> (I note in parens that on x86, watchpoints trigger _before_ the write
> is executed. Not sure if it matters here.)
How do we get the "new value" for a watchpoint, then? Do we step over
the instruction?
> > or come up with a more useful behavior for software and hardware
> > watchpoints than the one I've thought of. Can you think of one?
>
> I think there's nothing wrong with the model you suggested, it's just
> that our handling of bp_hardware_watchpoint is wrong. Assuming we
> change it along the lines I suggested above, do you see any further
> problems with extending watchpoints to threaded programs?
This is "extending watchpoints to specific threads" in my
understanding, not to "threaded programs" - obviously a useful feature,
but I think a different one. Conceptually, our watchpoints already
work for threaded programs. In practice, Jeff found that on GNU/Linux
they didn't work, and that's what he's fixing, not the "specific
threads" enhancement. Does that make sense?
> One aspect where a kernel can help us with multi-threaded programs is
> if it tells us not only that a watchpoint has been hit, but also what
> thread hit that watchpoint. Are there any kernel-level features that
> can be used to find that out?
Right now GDB assumes that this is reflected in inferior_ptid. At
least for GNU/Linux, this is a reasonable assumption. The watchpoint
is reported as an event (SIGTRAP); an event has to come from a specific
thread, and it will come from the thread which generated the
trap/fault/etc.
--
Daniel Jacobowitz
next prev parent reply other threads:[~2004-12-11 18:02 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-12-10 4:24 Jeff Johnston
2004-12-10 13:31 ` Eli Zaretskii
2004-12-10 14:21 ` Daniel Jacobowitz
2004-12-10 18:01 ` Jeff Johnston
2004-12-24 11:05 ` Michael Snyder
2005-01-07 0:23 ` jjohnstn
2004-12-10 23:01 ` Eli Zaretskii
2004-12-10 23:31 ` Daniel Jacobowitz
2004-12-10 19:10 ` Jeff Johnston
2004-12-10 22:51 ` Eli Zaretskii
2004-12-23 22:32 ` Michael Snyder
2004-12-24 14:46 ` Eli Zaretskii
2004-12-10 20:03 ` Daniel Jacobowitz
2004-12-10 20:30 ` Jeff Johnston
2004-12-10 20:47 ` Daniel Jacobowitz
2004-12-10 22:18 ` Jeff Johnston
2004-12-10 23:57 ` Jeff Johnston
2004-12-11 0:31 ` Daniel Jacobowitz
2004-12-11 1:28 ` Jeff Johnston
2004-12-11 14:34 ` Eli Zaretskii
2004-12-11 16:56 ` Daniel Jacobowitz
2004-12-11 18:01 ` Eli Zaretskii
2004-12-11 18:06 ` Daniel Jacobowitz [this message]
2004-12-11 19:08 ` Eli Zaretskii
2004-12-11 19:30 ` Daniel Jacobowitz
2004-12-12 5:22 ` Eli Zaretskii
2004-12-11 21:54 ` Mark Kettenis
2004-12-11 14:53 ` Mark Kettenis
2004-12-11 16:52 ` Eli Zaretskii
2004-12-11 2:04 ` Daniel Jacobowitz
2004-12-11 16:11 ` Mark Kettenis
2004-12-10 23:06 ` Eli Zaretskii
2004-12-10 23:10 ` Daniel Jacobowitz
2004-12-10 23:37 ` Eli Zaretskii
2004-12-10 23:52 ` Daniel Jacobowitz
2004-12-11 11:32 ` Eli Zaretskii
2004-12-11 14:49 ` Mark Kettenis
2004-12-11 16:48 ` Daniel Jacobowitz
2004-12-11 17:33 ` Eli Zaretskii
2004-12-11 17:53 ` Daniel Jacobowitz
2004-12-11 18:07 ` Eli Zaretskii
2004-12-11 18:50 ` Daniel Jacobowitz
2004-12-11 19:06 ` Mark Kettenis
2004-12-11 19:07 ` Daniel Jacobowitz
2004-12-11 16:49 ` Eli Zaretskii
2004-12-11 16:37 ` Daniel Jacobowitz
2004-12-11 17:30 ` Eli Zaretskii
2004-12-11 17:38 ` Daniel Jacobowitz
2004-12-11 18:02 ` Eli Zaretskii
2004-12-11 18:10 ` Daniel Jacobowitz
2005-01-13 19:22 ` Jeff Johnston
2005-02-11 1:57 ` Daniel Jacobowitz
2005-02-11 18:18 ` Eli Zaretskii
2005-02-11 18:31 ` Daniel Jacobowitz
2005-02-12 21:50 ` Eli Zaretskii
2004-12-11 19:35 Ulrich Weigand
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=20041211180236.GA16131@nevyn.them.org \
--to=drow@false.org \
--cc=eliz@gnu.org \
--cc=gdb-patches@sources.redhat.com \
--cc=jjohnstn@redhat.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