Browse Source

2004-11-12 Andrew Cagney <cagney@gnu.org>

* defs.h (enum lval_type): Delete lval_reg_frame_relative.
	* value.h (struct value): Update comment.
	* valops.c (value_assign): Fold lval_reg_fame_relative into
	lval_register.
	* findvar.c (value_from_register, locate_var_value): Ditto.
binutils-csl-arm-2005q1-branch
Andrew Cagney 22 years ago
parent
commit
25ae5d16b1
  1. 8
      gdb/ChangeLog
  2. 10
      gdb/defs.h
  3. 38
      gdb/findvar.c
  4. 4
      gdb/valops.c
  5. 7
      gdb/value.h

8
gdb/ChangeLog

@ -1,3 +1,11 @@
2004-11-12 Andrew Cagney <cagney@gnu.org>
* defs.h (enum lval_type): Delete lval_reg_frame_relative.
* value.h (struct value): Update comment.
* valops.c (value_assign): Fold lval_reg_fame_relative into
lval_register.
* findvar.c (value_from_register, locate_var_value): Ditto.
2004-11-12 Randolph Chung <tausq@debian.org>
* config/tm/tm-hppa.h (SYMBOLS_CAN_START_WITH_DOLLAR): Remove.

10
gdb/defs.h

@ -630,18 +630,14 @@ enum lval_type
{
/* Not an lval. */
not_lval,
/* In memory. Could be a saved register. */
/* In memory. */
lval_memory,
/* In a register. */
/* In a register. Registers are relative to a frame. */
lval_register,
/* In a gdb internal variable. */
lval_internalvar,
/* Part of a gdb internal variable (structure field). */
lval_internalvar_component,
/* In a register series in a frame not the current one, which may have been
partially saved or saved in different places (otherwise would be
lval_register or lval_memory). */
lval_reg_frame_relative
lval_internalvar_component
};
/* Control types for commands */

38
gdb/findvar.c

@ -634,7 +634,7 @@ value_from_register (struct type *type, int regnum, struct frame_info *frame)
is that REGISTER_TO_VALUE populates the entire value
including the location. */
REGISTER_TO_VALUE (frame, regnum, type, VALUE_CONTENTS_RAW (v));
VALUE_LVAL (v) = lval_reg_frame_relative;
VALUE_LVAL (v) = lval_register;
VALUE_FRAME_ID (v) = get_frame_id (frame);
VALUE_REGNUM (v) = regnum;
}
@ -678,6 +678,9 @@ value_from_register (struct type *type, int regnum, struct frame_info *frame)
{
mem_stor++;
/* FIXME: cagney/2004-11-12: I think this is trying to
check that the stored registers are adjacent in
memory. It isn't doing a good job? */
mem_tracking = (mem_tracking
&& (regnum == local_regnum
|| addr == last_addr));
@ -685,33 +688,17 @@ value_from_register (struct type *type, int regnum, struct frame_info *frame)
last_addr = addr;
}
/* FIXME: cagney/2003-06-04: Shouldn't this always use
lval_reg_frame_relative? If it doesn't and the register's
location changes (say after a resume) then this value is
going to have wrong information. */
if ((reg_stor && mem_stor)
|| (mem_stor && !mem_tracking))
/* Mixed storage; all of the hassle we just went through was
for some good purpose. */
{
VALUE_LVAL (v) = lval_reg_frame_relative;
VALUE_FRAME_ID (v) = get_frame_id (frame);
VALUE_REGNUM (v) = regnum;
}
else if (mem_stor)
if (mem_tracking && mem_stor && !reg_stor)
{
VALUE_LVAL (v) = lval_memory;
VALUE_ADDRESS (v) = first_addr;
}
else if (reg_stor)
else
{
VALUE_LVAL (v) = lval_register;
VALUE_ADDRESS (v) = first_addr;
VALUE_REGNUM (v) = first_realnum;
VALUE_FRAME_ID (v) = get_frame_id (frame);
VALUE_REGNUM (v) = regnum;
}
else
internal_error (__FILE__, __LINE__,
"value_from_register: Value not stored anywhere!");
VALUE_OPTIMIZED_OUT (v) = optimized;
@ -772,15 +759,6 @@ locate_var_value (struct symbol *var, struct frame_info *frame)
REGISTER_NAME (VALUE_REGNUM (lazy_value)));
break;
case lval_reg_frame_relative:
gdb_assert (REGISTER_NAME (VALUE_REGNUM (lazy_value)) != NULL
&& *REGISTER_NAME (VALUE_REGNUM (lazy_value)) != '\0');
error("Address requested for identifier "
"\"%s\" which is in frame register $%s",
SYMBOL_PRINT_NAME (var),
REGISTER_NAME (VALUE_REGNUM (lazy_value)));
break;
default:
error ("Can't take address of \"%s\" which isn't an lvalue.",
SYMBOL_PRINT_NAME (var));

4
gdb/valops.c

@ -596,7 +596,6 @@ value_assign (struct value *toval, struct value *fromval)
}
break;
case lval_reg_frame_relative:
case lval_register:
{
struct frame_info *frame;
@ -617,7 +616,7 @@ value_assign (struct value *toval, struct value *fromval)
if (!frame)
error ("Value being assigned to is no longer active.");
if (VALUE_LVAL (toval) == lval_reg_frame_relative
if (VALUE_LVAL (toval) == lval_register
&& CONVERT_REGISTER_P (VALUE_REGNUM (toval), type))
{
/* If TOVAL is a special machine register requiring
@ -699,7 +698,6 @@ value_assign (struct value *toval, struct value *fromval)
{
case lval_memory:
case lval_register:
case lval_reg_frame_relative:
reinit_frame_cache ();

7
gdb/value.h

@ -75,11 +75,8 @@ 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 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". */
/* Frame register value is relative to. This will be described in
the lval enum above as "lval_register". */
struct frame_id frame_id;
/* Type of the value. */

Loading…
Cancel
Save