2003-06-05 Andrew Cagney <cagney@redhat.com>
authorAndrew Cagney <cagney@redhat.com>
Thu, 5 Jun 2003 20:59:16 +0000 (20:59 +0000)
committerAndrew Cagney <cagney@redhat.com>
Thu, 5 Jun 2003 20:59:16 +0000 (20:59 +0000)
* Makefile.in (value_h): Add $(frame_h).
* value.h: Include "frame.h".
(struct value): Replace "frame_addr" with "frame_id".
(VALUE_FRAME_ID): Replace VALUE_FRAME.
* values.c (allocate_value): Use VALUE_FRAME_ID.
(value_copy): Use VALUE_FRAME_ID.
* findvar.c (value_from_register): Use VALUE_FRAME_ID.
* valops.c (value_assign): Update.  Use frame_find_by_id.

gdb/ChangeLog
gdb/Makefile.in
gdb/findvar.c
gdb/valops.c
gdb/value.h
gdb/values.c

index 8c9481685e129270fa1f55cad0e8f3fd22da3631..5ed30523fed8ad4fb97e08966558454740843886 100644 (file)
@@ -1,3 +1,14 @@
+2003-06-05  Andrew Cagney  <cagney@redhat.com>
+
+       * Makefile.in (value_h): Add $(frame_h).
+       * value.h: Include "frame.h".
+       (struct value): Replace "frame_addr" with "frame_id".
+       (VALUE_FRAME_ID): Replace VALUE_FRAME.
+       * values.c (allocate_value): Use VALUE_FRAME_ID.
+       (value_copy): Use VALUE_FRAME_ID.
+       * findvar.c (value_from_register): Use VALUE_FRAME_ID.
+       * valops.c (value_assign): Update.  Use frame_find_by_id.
+
 2003-06-05  Michal Ludvig  <mludvig@suse.cz>
 
        * x86-64-tdep.c (x86_64_push_arguments): Don't clear offset
index 43b35c255f43427af6a01c2028096116868d1edc..823fa4619ea150a0e4a0265a0c9814bd885385fd 100644 (file)
@@ -735,7 +735,7 @@ typeprint_h = typeprint.h
 ui_file_h = ui-file.h
 ui_out_h = ui-out.h
 valprint_h = valprint.h
-value_h = value.h $(doublest_h) $(symtab_h) $(gdbtypes_h) $(expression_h)
+value_h = value.h $(doublest_h) $(frame_h) $(symtab_h) $(gdbtypes_h) $(expression_h)
 varobj_h = varobj.h $(symtab_h) $(gdbtypes_h)
 vax_tdep_h = vax-tdep.h
 version_h = version.h
index 2a78c1e22b22e205f1953b4c6ec4f34ffc1df654..4aa4f46c235cf33c7fe3c1a50a5e4a2b173b0e39 100644 (file)
@@ -769,7 +769,7 @@ value_from_register (struct type *type, int regnum, struct frame_info *frame)
           for some good purpose.  */
        {
          VALUE_LVAL (v) = lval_reg_frame_relative;
-         VALUE_FRAME (v) = get_frame_base (frame);
+         VALUE_FRAME_ID (v) = get_frame_id (frame);
          VALUE_FRAME_REGNUM (v) = regnum;
        }
       else if (mem_stor)
index 3e8589481f76bf2e32731dea5744c81567be2317..e6fb6c8dec4f5c82ef5802441e01513d0745e32d 100644 (file)
@@ -605,10 +605,7 @@ value_assign (struct value *toval, struct value *fromval)
          }
        else
          {
-           for (frame = get_current_frame ();
-                frame && get_frame_base (frame) != VALUE_FRAME (toval);
-                frame = get_prev_frame (frame))
-             ;
+           frame = frame_find_by_id (VALUE_FRAME_ID (toval));
            value_reg = VALUE_FRAME_REGNUM (toval);
          }
 
index 254c82f1cb2fd8d9faae7d8d08d22391b4c8a7b6..d50626edf173b372cb12f52e4744821341be8c16 100644 (file)
@@ -25,6 +25,7 @@
 #define VALUE_H 1
 
 #include "doublest.h"
+#include "frame.h"             /* For struct frame_id.  */
 
 struct block;
 struct expression;
@@ -77,12 +78,12 @@ struct value
      For BITS_BIG_ENDIAN=1 targets, it is the position of the MSB. */
     int bitpos;
 
-  /* Frame value is relative to.  In practice, this address is only
-     used if the value is stored in several registers in other than
-     the current frame, and these registers have not all been saved
-     at the same place in memory.  This will be described in the
-     lval enum above as "lval_reg_frame_relative".  */
-  CORE_ADDR frame_addr;
+  /* Frame value is relative to.  In practice, this ID is only used if
+     the value is stored in several registers in other than the
+     current frame, and these registers have not all been saved at the
+     same place in memory.  This will be described in the lval enum
+     above as "lval_reg_frame_relative".  */
+  struct frame_id frame_id;
 
   /* Type of the value.  */
   struct type *type;
@@ -216,7 +217,7 @@ extern int value_fetch_lazy (struct value *val);
 #define VALUE_ADDRESS(val) (val)->location.address
 #define VALUE_INTERNALVAR(val) (val)->location.internalvar
 #define VALUE_FRAME_REGNUM(val) ((val)->location.regnum)
-#define VALUE_FRAME(val) ((val)->frame_addr)
+#define VALUE_FRAME_ID(val) ((val)->frame_id)
 #define VALUE_OFFSET(val) (val)->offset
 #define VALUE_BITSIZE(val) (val)->bitsize
 #define VALUE_BITPOS(val) (val)->bitpos
index db667669ff5c7c2dd4cf36ed93f114f2d3b639d6..42395c886e2b4cf38b68f62468a87ed9a6308edd 100644 (file)
@@ -90,7 +90,7 @@ allocate_value (struct type *type)
   VALUE_ENCLOSING_TYPE (val) = type;
   VALUE_LVAL (val) = not_lval;
   VALUE_ADDRESS (val) = 0;
-  VALUE_FRAME (val) = 0;
+  VALUE_FRAME_ID (val) = null_frame_id;
   VALUE_OFFSET (val) = 0;
   VALUE_BITPOS (val) = 0;
   VALUE_BITSIZE (val) = 0;
@@ -222,7 +222,7 @@ value_copy (struct value *arg)
   VALUE_OFFSET (val) = VALUE_OFFSET (arg);
   VALUE_BITPOS (val) = VALUE_BITPOS (arg);
   VALUE_BITSIZE (val) = VALUE_BITSIZE (arg);
-  VALUE_FRAME (val) = VALUE_FRAME (arg);
+  VALUE_FRAME_ID (val) = VALUE_FRAME_ID (arg);
   VALUE_REGNO (val) = VALUE_REGNO (arg);
   VALUE_LAZY (val) = VALUE_LAZY (arg);
   VALUE_OPTIMIZED_OUT (val) = VALUE_OPTIMIZED_OUT (arg);