aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Muller <muller@sourceware.org>2002-08-30 07:14:19 +0000
committerPierre Muller <muller@sourceware.org>2002-08-30 07:14:19 +0000
commitc860120cadb5f04d1b6321149674bde7c39f1ee1 (patch)
treecdf78ac9bdd1bdf28e34fab07772d68695d03d70
parentc7612d53196a8b287ff54bdfd0ce8429e31738db (diff)
downloadgdb-c860120cadb5f04d1b6321149674bde7c39f1ee1.zip
gdb-c860120cadb5f04d1b6321149674bde7c39f1ee1.tar.gz
gdb-c860120cadb5f04d1b6321149674bde7c39f1ee1.tar.bz2
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.
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/breakpoint.c22
2 files changed, 28 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 7d40d33..aea6c45 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index c52b4ba..b88f674 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -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