2002-08-30 Pierre Muller <muller@ics.u-strasbg.fr>
authorPierre Muller <muller@sourceware.org>
Fri, 30 Aug 2002 07:14:19 +0000 (07:14 +0000)
committerPierre Muller <muller@sourceware.org>
Fri, 30 Aug 2002 07:14:19 +0000 (07:14 +0000)
* breakpoint.c (breakpoint_init_inferior): Reset the val field of
watchpoints to NULL.
(insert_breakpoints): set val field of watchpoints if NULL.

gdb/ChangeLog
gdb/breakpoint.c

index 7d40d33b1672c9362fcd3edc17f212177383a4a8..aea6c45a6ca15e3588b9c2f733b13edabcaa6320 100644 (file)
@@ -1,3 +1,10 @@
+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.
+
+
 2002-08-29  Jim Blandy  <jimb@redhat.com>
 
        * symtab.c (lookup_symbol_aux): In the cases where we find a
index c52b4ba00322c2cac37f51b99b72d4478de6bf97..b88f6749aece5ed1a45b4417e29a4bea862188e9 100644 (file)
@@ -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_context context)
        /* 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