Date: Sun, 08 Jun 2003 18:10:29 -0400
From: Andrew Cagney <ac131313@redhat.com>
Ok, I've changed the branch to:
> The ``obvious'' interfaces were:
>
> register_to_value (frame, regnum, type, buffer)
> value_to_register (frame, regnum, type, buffer)
>
> but that tripped up on something (now what ...?). Dig dig.
> Notice how, to preserve existing behavior,
> legacy_register_to_value saves the location based on what
> frame_register returns. We'd have to switch to
> lval_reg_frame_relative.
And this time it appears to be going better. I'll try to attribute it
to VALUE_FRAME_ID and the use of put_frame_register (neither of which I
did last time).
Andrew, the attached fixes writing values into registers. OK to check
this in on the branch?
Index: ChangeLog
from Mark Kettenis <kettenis@gnu.org>
* valops.c (value_assign): Assign contents of FROMVAL instead of
TOVAL.
Index: valops.c
===================================================================
RCS file: /cvs/src/src/gdb/valops.c,v
retrieving revision 1.110.2.2
diff -u -p -r1.110.2.2 valops.c
--- valops.c 8 Jun 2003 22:14:42 -0000 1.110.2.2
+++ valops.c 9 Jun 2003 09:02:27 -0000
@@ -588,13 +588,12 @@ value_assign (struct value *toval, struc
error ("Value being assigned to is no longer active.");
if (VALUE_LVAL (toval) == lval_reg_frame_relative
- && CONVERT_REGISTER_P (VALUE_FRAME_REGNUM (toval),
- VALUE_TYPE (toval)))
+ && CONVERT_REGISTER_P (VALUE_FRAME_REGNUM (toval), type))
{
/* If TOVAL is a special machine register requiring
conversion of program values to a special raw format. */
VALUE_TO_REGISTER (frame, VALUE_FRAME_REGNUM (toval),
- VALUE_TYPE (toval), VALUE_CONTENTS (toval));
+ type, VALUE_CONTENTS (fromval));
}
else
{