2007-06-12 Markus Deuling <deuling@de.ibm.com>
* gdbarch.sh (REGISTER_TO_VALUE): Replace by gdbarch_register_to_value. * findvar.c (value_from_register): Likewise. * gdbarch.sh (VALUE_TO_REGISTER): Replace by gdbarch_value_to_register. * valops.c (value_assign): Likewise. * gdbarch.sh (CONVERT_REGISTER_P): Replace by gdbarch_convert_register_p. * findvar.c (value_from_register): Likewise. * valops.c (value_assign): Likewise. * gdbarch.c, gdbarch.h: Regenerate.
This commit is contained in:
parent
474c166176
commit
c1afe53dd0
@ -1,3 +1,15 @@
|
||||
2007-06-12 Markus Deuling <deuling@de.ibm.com>
|
||||
|
||||
* gdbarch.sh (REGISTER_TO_VALUE): Replace by gdbarch_register_to_value.
|
||||
* findvar.c (value_from_register): Likewise.
|
||||
* gdbarch.sh (VALUE_TO_REGISTER): Replace by gdbarch_value_to_register.
|
||||
* valops.c (value_assign): Likewise.
|
||||
* gdbarch.sh (CONVERT_REGISTER_P): Replace by
|
||||
gdbarch_convert_register_p.
|
||||
* findvar.c (value_from_register): Likewise.
|
||||
* valops.c (value_assign): Likewise.
|
||||
* gdbarch.c, gdbarch.h: Regenerate.
|
||||
|
||||
2007-06-12 Markus Deuling <deuling@de.ibm.com>
|
||||
|
||||
* gdbarch.sh (REGISTER_SIM_REGNO): Replace by
|
||||
|
@ -624,20 +624,21 @@ value_from_register (struct type *type, int regnum, struct frame_info *frame)
|
||||
struct type *type1 = check_typedef (type);
|
||||
struct value *v;
|
||||
|
||||
if (CONVERT_REGISTER_P (regnum, type1))
|
||||
if (gdbarch_convert_register_p (current_gdbarch, regnum, type1))
|
||||
{
|
||||
/* The ISA/ABI need to something weird when obtaining the
|
||||
specified value from this register. It might need to
|
||||
re-order non-adjacent, starting with REGNUM (see MIPS and
|
||||
i386). It might need to convert the [float] register into
|
||||
the corresponding [integer] type (see Alpha). The assumption
|
||||
is that REGISTER_TO_VALUE populates the entire value
|
||||
is that gdbarch_register_to_value populates the entire value
|
||||
including the location. */
|
||||
v = allocate_value (type);
|
||||
VALUE_LVAL (v) = lval_register;
|
||||
VALUE_FRAME_ID (v) = get_frame_id (frame);
|
||||
VALUE_REGNUM (v) = regnum;
|
||||
REGISTER_TO_VALUE (frame, regnum, type1, value_contents_raw (v));
|
||||
gdbarch_register_to_value (current_gdbarch,
|
||||
frame, regnum, type1, value_contents_raw (v));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -751,12 +751,6 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: convert_from_func_ptr_addr = <0x%lx>\n",
|
||||
(long) current_gdbarch->convert_from_func_ptr_addr);
|
||||
#ifdef CONVERT_REGISTER_P
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: %s # %s\n",
|
||||
"CONVERT_REGISTER_P(regnum, type)",
|
||||
XSTRING (CONVERT_REGISTER_P (regnum, type)));
|
||||
#endif
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: convert_register_p = <0x%lx>\n",
|
||||
(long) current_gdbarch->convert_register_p);
|
||||
@ -1104,12 +1098,6 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: register_sim_regno = <0x%lx>\n",
|
||||
(long) current_gdbarch->register_sim_regno);
|
||||
#ifdef REGISTER_TO_VALUE
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: %s # %s\n",
|
||||
"REGISTER_TO_VALUE(frame, regnum, type, buf)",
|
||||
XSTRING (REGISTER_TO_VALUE (frame, regnum, type, buf)));
|
||||
#endif
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: register_to_value = <0x%lx>\n",
|
||||
(long) current_gdbarch->register_to_value);
|
||||
@ -1247,12 +1235,6 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: value_from_register = <0x%lx>\n",
|
||||
(long) current_gdbarch->value_from_register);
|
||||
#ifdef VALUE_TO_REGISTER
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: %s # %s\n",
|
||||
"VALUE_TO_REGISTER(frame, regnum, type, buf)",
|
||||
XSTRING (VALUE_TO_REGISTER (frame, regnum, type, buf)));
|
||||
#endif
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: value_to_register = <0x%lx>\n",
|
||||
(long) current_gdbarch->value_to_register);
|
||||
|
@ -453,32 +453,14 @@ extern void set_gdbarch_believe_pcc_promotion (struct gdbarch *gdbarch, int beli
|
||||
typedef int (gdbarch_convert_register_p_ftype) (int regnum, struct type *type);
|
||||
extern int gdbarch_convert_register_p (struct gdbarch *gdbarch, int regnum, struct type *type);
|
||||
extern void set_gdbarch_convert_register_p (struct gdbarch *gdbarch, gdbarch_convert_register_p_ftype *convert_register_p);
|
||||
#if !defined (GDB_TM_FILE) && defined (CONVERT_REGISTER_P)
|
||||
#error "Non multi-arch definition of CONVERT_REGISTER_P"
|
||||
#endif
|
||||
#if !defined (CONVERT_REGISTER_P)
|
||||
#define CONVERT_REGISTER_P(regnum, type) (gdbarch_convert_register_p (current_gdbarch, regnum, type))
|
||||
#endif
|
||||
|
||||
typedef void (gdbarch_register_to_value_ftype) (struct frame_info *frame, int regnum, struct type *type, gdb_byte *buf);
|
||||
extern void gdbarch_register_to_value (struct gdbarch *gdbarch, struct frame_info *frame, int regnum, struct type *type, gdb_byte *buf);
|
||||
extern void set_gdbarch_register_to_value (struct gdbarch *gdbarch, gdbarch_register_to_value_ftype *register_to_value);
|
||||
#if !defined (GDB_TM_FILE) && defined (REGISTER_TO_VALUE)
|
||||
#error "Non multi-arch definition of REGISTER_TO_VALUE"
|
||||
#endif
|
||||
#if !defined (REGISTER_TO_VALUE)
|
||||
#define REGISTER_TO_VALUE(frame, regnum, type, buf) (gdbarch_register_to_value (current_gdbarch, frame, regnum, type, buf))
|
||||
#endif
|
||||
|
||||
typedef void (gdbarch_value_to_register_ftype) (struct frame_info *frame, int regnum, struct type *type, const gdb_byte *buf);
|
||||
extern void gdbarch_value_to_register (struct gdbarch *gdbarch, struct frame_info *frame, int regnum, struct type *type, const gdb_byte *buf);
|
||||
extern void set_gdbarch_value_to_register (struct gdbarch *gdbarch, gdbarch_value_to_register_ftype *value_to_register);
|
||||
#if !defined (GDB_TM_FILE) && defined (VALUE_TO_REGISTER)
|
||||
#error "Non multi-arch definition of VALUE_TO_REGISTER"
|
||||
#endif
|
||||
#if !defined (VALUE_TO_REGISTER)
|
||||
#define VALUE_TO_REGISTER(frame, regnum, type, buf) (gdbarch_value_to_register (current_gdbarch, frame, regnum, type, buf))
|
||||
#endif
|
||||
|
||||
/* Construct a value representing the contents of register REGNUM in
|
||||
frame FRAME, interpreted as type TYPE. The routine needs to
|
||||
|
@ -487,9 +487,9 @@ F::int:get_longjmp_target:CORE_ADDR *pc:pc
|
||||
#
|
||||
v:=:int:believe_pcc_promotion:::::::
|
||||
#
|
||||
f:=:int:convert_register_p:int regnum, struct type *type:regnum, type:0:generic_convert_register_p::0
|
||||
f:=:void:register_to_value:struct frame_info *frame, int regnum, struct type *type, gdb_byte *buf:frame, regnum, type, buf:0
|
||||
f:=:void:value_to_register:struct frame_info *frame, int regnum, struct type *type, const gdb_byte *buf:frame, regnum, type, buf:0
|
||||
f::int:convert_register_p:int regnum, struct type *type:regnum, type:0:generic_convert_register_p::0
|
||||
f::void:register_to_value:struct frame_info *frame, int regnum, struct type *type, gdb_byte *buf:frame, regnum, type, buf:0
|
||||
f::void:value_to_register:struct frame_info *frame, int regnum, struct type *type, const gdb_byte *buf:frame, regnum, type, buf:0
|
||||
# Construct a value representing the contents of register REGNUM in
|
||||
# frame FRAME, interpreted as type TYPE. The routine needs to
|
||||
# allocate and return a struct value with all value attributes
|
||||
|
@ -636,12 +636,14 @@ value_assign (struct value *toval, struct value *fromval)
|
||||
if (!frame)
|
||||
error (_("Value being assigned to is no longer active."));
|
||||
|
||||
if (CONVERT_REGISTER_P (VALUE_REGNUM (toval), type))
|
||||
if (gdbarch_convert_register_p
|
||||
(current_gdbarch, VALUE_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_REGNUM (toval),
|
||||
type, value_contents (fromval));
|
||||
gdbarch_value_to_register (current_gdbarch,
|
||||
frame, VALUE_REGNUM (toval),
|
||||
type, value_contents (fromval));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user