From: Michael Snyder <msnyder@redhat.com>
To: Daniel Jacobowitz <drow@mvista.com>
Cc: gdb-patches@sources.redhat.com, jimb@redhat.com
Subject: Re: [RFA/breakpoint] Fix errors from disabled watchpoints
Date: Thu, 02 Jan 2003 20:08:00 -0000 [thread overview]
Message-ID: <3E149C3E.5EE135BB@redhat.com> (raw)
In-Reply-To: <20021228180954.GA17387@nevyn.them.org>
Daniel Jacobowitz wrote:
>
> Right now, if you set and then disable a watchpoint, you'll still memory
> errors from it in two places. One is fatal, and comes from
> insert_breakpoints (); the other is just noisy, and comes from
> breakpoint_re_set_one (). Neither really serves any purpose. If a
> watchpoint is disabled, we don't need to check what its value is; we'll
> check when we insert it.
>
> It would be nice to do the equivalet of a bp_shlib_disabled for watchpoints
> on memory that isn't currently accessible but that's not really practical on
> any OS I know of, so the user still has to hand-disable and hand-enable the
> watchpoints. But at least they don't have to _delete_ the watchpoints now.
>
> Is this OK? No surprises in the testsuite on i386-linux.
I'm not surprised that watchpoints were broken in this way,
but after looking at your changes, I am surprised that the
problem didn't show up in any other context.
My only concern with your change is that you've changed
the code from explicitly listing the excluded states, to
assuming that they are all excluded except for one. The
problem that concerns me with that is, what if future states
are added?
>
> --
> Daniel Jacobowitz
> MontaVista Software Debian GNU/Linux Developer
>
> 2002-12-28 Daniel Jacobowitz <drow@mvista.com>
>
> * breakpoint.c (insert_breakpoints): Skip disabled breakpoints
> entirely.
> (breakpoint_re_set_one): Don't fetch the value for a disabled
> watchpoint.
>
> Index: breakpoint.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/breakpoint.c,v
> retrieving revision 1.104
> diff -u -p -r1.104 breakpoint.c
> --- breakpoint.c 17 Dec 2002 17:27:44 -0000 1.104
> +++ breakpoint.c 28 Dec 2002 17:59:57 -0000
> @@ -735,9 +735,11 @@ insert_breakpoints (void)
>
> ALL_BREAKPOINTS_SAFE (b, temp)
> {
> - if (b->enable_state == bp_permanent)
> - /* Permanent breakpoints cannot be inserted or removed. */
> + /* Permanent breakpoints cannot be inserted or removed. Disabled
> + breakpoints should not be inserted. */
> + if (b->enable_state != bp_enabled)
> continue;
> +
> if ((b->type == bp_watchpoint
> || b->type == bp_hardware_watchpoint
> || b->type == bp_read_watchpoint
> @@ -759,9 +761,6 @@ insert_breakpoints (void)
> && b->type != bp_catch_exec
> && b->type != bp_catch_throw
> && b->type != bp_catch_catch
> - && b->enable_state != bp_disabled
> - && b->enable_state != bp_shlib_disabled
> - && b->enable_state != bp_call_disabled
> && !b->inserted
> && !b->duplicate)
> {
> @@ -880,9 +879,6 @@ insert_breakpoints (void)
> return_val = val; /* remember failure */
> }
> else if (ep_is_exception_catchpoint (b)
> - && b->enable_state != bp_disabled
> - && b->enable_state != bp_shlib_disabled
> - && b->enable_state != bp_call_disabled
> && !b->inserted
> && !b->duplicate)
>
> @@ -940,7 +936,6 @@ insert_breakpoints (void)
> else if ((b->type == bp_hardware_watchpoint ||
> b->type == bp_read_watchpoint ||
> b->type == bp_access_watchpoint)
> - && b->enable_state == bp_enabled
> && b->disposition != disp_del_at_next_stop
> && !b->inserted
> && !b->duplicate)
> @@ -1059,7 +1054,6 @@ insert_breakpoints (void)
> else if ((b->type == bp_catch_fork
> || b->type == bp_catch_vfork
> || b->type == bp_catch_exec)
> - && b->enable_state == bp_enabled
> && !b->inserted
> && !b->duplicate)
> {
> @@ -7049,7 +7043,7 @@ breakpoint_re_set_one (PTR bint)
> value_free (b->val);
> b->val = evaluate_expression (b->exp);
> release_value (b->val);
> - if (VALUE_LAZY (b->val))
> + if (VALUE_LAZY (b->val) && b->enable_state == bp_enabled)
> value_fetch_lazy (b->val);
>
> if (b->cond_string != NULL)
next prev parent reply other threads:[~2003-01-02 20:08 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-12-28 10:23 Daniel Jacobowitz
2003-01-02 20:08 ` Michael Snyder [this message]
2003-01-02 21:22 ` Daniel Jacobowitz
2003-01-02 23:13 ` Michael Snyder
2003-01-04 23:08 ` 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=3E149C3E.5EE135BB@redhat.com \
--to=msnyder@redhat.com \
--cc=drow@mvista.com \
--cc=gdb-patches@sources.redhat.com \
--cc=jimb@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