From: Andrew Cagney Date: Thu, 5 Jun 2003 20:59:16 +0000 (+0000) Subject: 2003-06-05 Andrew Cagney X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1df6926e87aef854919f6370e4cf202c8ef8d4b6;p=binutils-gdb.git 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. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 8c9481685e1..5ed30523fed 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 43b35c255f4..823fa4619ea 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 2a78c1e22b2..4aa4f46c235 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 3e8589481f7..e6fb6c8dec4 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 254c82f1cb2..d50626edf17 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 db667669ff5..42395c886e2 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);