Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pierre Muller <muller@ics.u-strasbg.fr>
To: Michael Snyder <msnyder@redhat.com>
Cc: gdb-patches@sources.redhat.com, jimb@redhat.com
Subject: Re: [RFA] 2nd send: Solve the watchpoint failures on second run.
Date: Fri, 30 Aug 2002 02:15:00 -0000	[thread overview]
Message-ID: <4.2.0.58.20020830090650.00a48dc8@ics.u-strasbg.fr> (raw)
In-Reply-To: <3D6E9C9F.A7018859@redhat.com>

At 00:13 30/08/2002 , Michael Snyder a écrit:
>Pierre Muller wrote:
> > 
> > I got no answer to that RFA,
> > http://sources.redhat.com/ml/gdb-patches/2002-06/msg00394.html
> > thus I send it again.
> > 
> > This bug is related to bug 515 of database.
> > The following note:
> >  >(This patch, together with the previous RFA that I sent today,
> >  >fixes the problem for both statically and dynamically linked
> >  >programs).
> > Can be modified into:
> > The following patch together with the patch commited
> > on july 4. 2002
> > http://sources.redhat.com/ml/gdb-cvs/2002-07/msg00036.html
> > fiwes bug 515 both for statically and dynamically linked programs.
> > 
> > If you use my previous patch and compile the test program
> > of the 515 bug with --static option,
> > you will still miss the change of x value on the second run.
> > This comes from the fact that the val field of the watchpoint is
> > not reset correctly when the program is restarted.
> > 
> >    I first tried to fix this problem by using evaluate_expression
> > in the breakpoint_init_inferior function. But, while this fixes the problem for
> > the win32 native debugger, it leads to problems for linux,
> > beacuse the program is not yet loaded into memory
> > when this function is called: instead, the bash used for launch the debuggee
> > seems to be in memory...
> > 
> > So the only way I found to fix that error was to reset val field to NULL
> > so that the val field is computed again
> > correctly at the first insert_breakpoint call.
>
>Looks OK to me, Pierre -- except please move the '{' from 
>the end of the line.
>
>Thanks
>Michael
OK I commited the following:

2002-08-30  Pierre Muller  <muller@ics.u-strasbg.fr>

         * breakpoint.c (breakpoint_init_inferior): Reset the val field of
         watchpoints to NULL.
         (insert_breakpoints): set val field of watchpoints if NULL.



$ cvs diff -u -p breakpoint.c
Index: breakpoint.c
===================================================================
RCS file: /cvs/src/src/gdb/breakpoint.c,v
retrieving revision 1.84
diff -u -p -r1.84 breakpoint.c
--- breakpoint.c        27 Aug 2002 19:06:35 -0000      1.84
+++ breakpoint.c        30 Aug 2002 07:12:26 -0000
@@ -738,7 +738,19 @@ insert_breakpoints (void)
      if (b->enable_state == bp_permanent)
        /* Permanent breakpoints cannot be inserted or removed.  */
        continue;
-    else if (b->type != bp_watchpoint
+    if ((b->type == bp_watchpoint
+        || b->type == bp_hardware_watchpoint
+        || b->type == bp_read_watchpoint
+        || b->type == bp_access_watchpoint) && (!b->val))
+      {
+       struct value *val;
+       val = evaluate_expression (b->exp);
+       release_value (val);
+       if (VALUE_LAZY (val))
+         value_fetch_lazy (val);
+       b->val = val;
+      }
+    if (b->type != bp_watchpoint
         && b->type != bp_hardware_watchpoint
         && b->type != bp_read_watchpoint
         && b->type != bp_access_watchpoint
@@ -1566,6 +1578,14 @@ breakpoint_init_inferior (enum inf_conte
         /* Likewise for watchpoints on local expressions.  */
         if (b->exp_valid_block != NULL)
           delete_breakpoint (b);
+       if (context == inf_starting)
+         {
+           /* Reset val field to force reread of starting value
+              in insert_breakpoints.  */
+           if (b->val)
+             value_free (b->val);
+           b->val = NULL;
+         }
         break;
        default:
         /* Likewise for exception catchpoints in dynamic-linked



Pierre Muller
Institut Charles Sadron
6,rue Boussingault
F 67083 STRASBOURG CEDEX (France)
mailto:muller@ics.u-strasbg.fr
Phone : (33)-3-88-41-40-07  Fax : (33)-3-88-41-40-99


      reply	other threads:[~2002-08-30  7:14 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-07-15  8:10 Pierre Muller
2002-08-29 15:16 ` Michael Snyder
2002-08-30  2:15   ` Pierre Muller [this message]

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=4.2.0.58.20020830090650.00a48dc8@ics.u-strasbg.fr \
    --to=muller@ics.u-strasbg.fr \
    --cc=gdb-patches@sources.redhat.com \
    --cc=jimb@redhat.com \
    --cc=msnyder@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