From c61aaef9a64f19eeb45f098e1261aa6f6fc851e7 Mon Sep 17 00:00:00 2001 From: cagney Date: Thu, 5 Jun 2003 20:59:15 +0000 Subject: [PATCH] 2003-06-05 Andrew Cagney * 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 | 11 +++++++++++ gdb/Makefile.in | 2 +- gdb/findvar.c | 2 +- gdb/valops.c | 5 +---- gdb/value.h | 15 ++++++++------- gdb/values.c | 4 ++-- 6 files changed, 24 insertions(+), 15 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 8c9481685e..5ed30523fe 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,14 @@ +2003-06-05 Andrew Cagney + + * 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 * x86-64-tdep.c (x86_64_push_arguments): Don't clear offset diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 43b35c255f..823fa4619e 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -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 diff --git a/gdb/findvar.c b/gdb/findvar.c index 2a78c1e22b..4aa4f46c23 100644 --- a/gdb/findvar.c +++ b/gdb/findvar.c @@ -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) diff --git a/gdb/valops.c b/gdb/valops.c index 3e8589481f..e6fb6c8dec 100644 --- a/gdb/valops.c +++ b/gdb/valops.c @@ -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); } diff --git a/gdb/value.h b/gdb/value.h index 254c82f1cb..d50626edf1 100644 --- a/gdb/value.h +++ b/gdb/value.h @@ -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 diff --git a/gdb/values.c b/gdb/values.c index db667669ff..42395c886e 100644 --- a/gdb/values.c +++ b/gdb/values.c @@ -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); -- 2.11.0