2005-02-07 Andrew Cagney <cagney@gnu.org>
authorAndrew Cagney <cagney@redhat.com>
Tue, 8 Feb 2005 01:59:38 +0000 (01:59 +0000)
committerAndrew Cagney <cagney@redhat.com>
Tue, 8 Feb 2005 01:59:38 +0000 (01:59 +0000)
* value.h (value_next): Declare.
* value.c (value_next): Define.
* breakpoint.c: Update.

gdb/ChangeLog
gdb/breakpoint.c
gdb/value.c
gdb/value.h

index 9db30915336eec5130247e48f78c9ec949d58cbf..0b1cc05bcf2350a74fa261e32bb55193bed13b63 100644 (file)
@@ -1,5 +1,9 @@
 2005-02-07  Andrew Cagney  <cagney@gnu.org>
 
+       * value.h (value_next): Declare.
+       * value.c (value_next): Define.
+       * breakpoint.c: Update.
+
        * value.h (deprecated_set_value_modifiable)
        (deprecated_value_modifiable): Declare.
        * value.c (deprecated_set_value_modifiable): Define.
index 645fd0366d95a55531da98f344be916866684c6f..0a117d28246ff5a4985419c85c7ef7abdead895d 100644 (file)
@@ -743,7 +743,7 @@ static void free_valchain (struct bp_location *b)
      the next time the watchpoint is inserted.  */
   for (v = b->owner->val_chain; v; v = n)
     {
-      n = v->next;
+      n = value_next (v);
       value_free (v);
     }
   b->owner->val_chain = NULL;
@@ -938,7 +938,7 @@ insert_bp_location (struct bp_location *bpt,
          bpt->inserted = 1;
 
          /* Look at each value on the value chain.  */
-         for (; v; v = v->next)
+         for (; v; v = value_next (v))
            {
              /* If it's a memory location, and GDB actually needed
                 its contents to evaluate the expression, then we
@@ -1470,7 +1470,7 @@ remove_breakpoint (struct bp_location *b, insertion_state_t is)
 
       b->inserted = (is == mark_inserted);
       /* Walk down the saved value chain.  */
-      for (v = b->owner->val_chain; v; v = v->next)
+      for (v = b->owner->val_chain; v; v = value_next (v))
        {
          /* For each memory reference remove the watchpoint
             at that address.  */
@@ -2725,7 +2725,7 @@ bpstat_stop_status (CORE_ADDR bp_addr, ptid_t ptid, int stopped_by_watchpoint)
 
        if (!target_stopped_data_address (&current_target, &addr))
          continue;
-       for (v = b->val_chain; v; v = v->next)
+       for (v = b->val_chain; v; v = value_next (v))
          {
            if (VALUE_LVAL (v) == lval_memory
                && ! value_lazy (v))
@@ -5789,7 +5789,7 @@ can_use_hardware_watchpoint (struct value *v)
      function calls are special in any way.  So this function may not
      notice that an expression involving an inferior function call
      can't be watched with hardware watchpoints.  FIXME.  */
-  for (; v; v = v->next)
+  for (; v; v = value_next (v))
     {
       if (VALUE_LVAL (v) == lval_memory)
        {
index 13585b507a8448aafefe6223cbd6c73dea1cb224..c77135989178546a61ffd28cb7de9a0aa68a3866 100644 (file)
@@ -123,6 +123,12 @@ allocate_repeat_value (struct type *type, int count)
 
 /* Accessor methods.  */
 
+struct value *
+value_next (struct value *value)
+{
+  return value->next;
+}
+
 struct type *
 value_type (struct value *value)
 {
index 172e3f953ff302f4da3a9064d5d9c8fa27732424..cd1403ba44bb996af0ad8f4badd8378e4a940f28 100644 (file)
@@ -173,6 +173,11 @@ struct value
 };
 
 
+/* Values are stored in a chain, so that they can be deleted easily
+   over calls to the inferior.  Values assigned to internal variables
+   or put into the value history are taken off this list.  */
+struct value *value_next (struct value *);
+
 extern struct type *value_type (struct value *);
 /* This is being used to change the type of an existing value, that
    code should instead be creating a new value with the changed type