mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-20 06:15:09 +08:00
* arch-utils.h (generic_register_size): Declare.
(generic_register_raw_size, generic_register_virtual_size): Delete declarations. * arch-utils.c (generic_register_raw_size): Delete. (generic_register_size): New function. (generic_register_virtual_size): Delete. * gdbarch.sh (REGISTER_RAW_SIZE, REGISTER_VIRTUAL_SIZE): Make default generic_register_size. * gdbarch.h, gdbarch.c: Re-generate. * d10v-tdep.c (d10v_gdbarch_init): Use generic_register_size for register_virtual_size. * x86-64-tdep.c (x86_64_gdbarch_init): Ditto. * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. * gdbint.texinfo (Target Architecture Definition): Mention defaults for REGISTER_VIRTUAL_SIZE and REGISTER_RAW_SIZE. (Target Architecture Definition): Mention same. Add references to web pages.
This commit is contained in:
@ -1,3 +1,21 @@
|
|||||||
|
2002-05-11 Andrew Cagney <ac131313@redhat.com>
|
||||||
|
|
||||||
|
* arch-utils.h (generic_register_size): Declare.
|
||||||
|
(generic_register_raw_size, generic_register_virtual_size): Delete
|
||||||
|
declarations.
|
||||||
|
* arch-utils.c (generic_register_raw_size): Delete.
|
||||||
|
(generic_register_size): New function.
|
||||||
|
(generic_register_virtual_size): Delete.
|
||||||
|
|
||||||
|
* gdbarch.sh (REGISTER_RAW_SIZE, REGISTER_VIRTUAL_SIZE): Make
|
||||||
|
default generic_register_size.
|
||||||
|
* gdbarch.h, gdbarch.c: Re-generate.
|
||||||
|
|
||||||
|
* d10v-tdep.c (d10v_gdbarch_init): Use generic_register_size for
|
||||||
|
register_virtual_size.
|
||||||
|
* x86-64-tdep.c (x86_64_gdbarch_init): Ditto.
|
||||||
|
* rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
|
||||||
|
|
||||||
2002-05-11 Andrew Cagney <ac131313@redhat.com>
|
2002-05-11 Andrew Cagney <ac131313@redhat.com>
|
||||||
|
|
||||||
* gdbarch.sh (gdbarch_data): Add gdbarch parameter.
|
* gdbarch.sh (gdbarch_data): Add gdbarch parameter.
|
||||||
|
@ -401,21 +401,13 @@ legacy_virtual_frame_pointer (CORE_ADDR pc,
|
|||||||
*frame_offset = 0;
|
*frame_offset = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Assume the world is flat. Every register is large enough to fit a
|
/* Assume the world is sane, every register's virtual and real size
|
||||||
target integer. */
|
is identical. */
|
||||||
|
|
||||||
int
|
int
|
||||||
generic_register_raw_size (int regnum)
|
generic_register_size (int regnum)
|
||||||
{
|
{
|
||||||
gdb_assert (regnum >= 0 && regnum < NUM_REGS + NUM_PSEUDO_REGS);
|
gdb_assert (regnum >= 0 && regnum < NUM_REGS + NUM_PSEUDO_REGS);
|
||||||
return TARGET_INT_BIT / HOST_CHAR_BIT;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Assume the virtual size corresponds to the virtual type. */
|
|
||||||
|
|
||||||
int
|
|
||||||
generic_register_virtual_size (int regnum)
|
|
||||||
{
|
|
||||||
return TYPE_LENGTH (REGISTER_VIRTUAL_TYPE (regnum));
|
return TYPE_LENGTH (REGISTER_VIRTUAL_TYPE (regnum));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,13 +149,10 @@ extern int generic_in_function_epilogue_p (struct gdbarch *gdbarch, CORE_ADDR pc
|
|||||||
|
|
||||||
extern void default_print_float_info (void);
|
extern void default_print_float_info (void);
|
||||||
|
|
||||||
/* Assume all registers are the same size and a size identical to that
|
/* Assume that the world is sane, a registers raw and virtual size
|
||||||
of the integer type. */
|
both match its type. */
|
||||||
extern int generic_register_raw_size (int regnum);
|
|
||||||
|
|
||||||
/* Assume the virtual size of registers corresponds to the virtual type. */
|
extern int generic_register_size (int regnum);
|
||||||
|
|
||||||
extern int generic_register_virtual_size (int regnum);
|
|
||||||
|
|
||||||
/* Prop up old targets that use various IN_SIGTRAMP() macros. */
|
/* Prop up old targets that use various IN_SIGTRAMP() macros. */
|
||||||
extern int legacy_pc_in_sigtramp (CORE_ADDR pc, char *name);
|
extern int legacy_pc_in_sigtramp (CORE_ADDR pc, char *name);
|
||||||
|
@ -1486,7 +1486,7 @@ d10v_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|||||||
set_gdbarch_register_byte (gdbarch, d10v_register_byte);
|
set_gdbarch_register_byte (gdbarch, d10v_register_byte);
|
||||||
set_gdbarch_register_raw_size (gdbarch, d10v_register_raw_size);
|
set_gdbarch_register_raw_size (gdbarch, d10v_register_raw_size);
|
||||||
set_gdbarch_max_register_raw_size (gdbarch, 8);
|
set_gdbarch_max_register_raw_size (gdbarch, 8);
|
||||||
set_gdbarch_register_virtual_size (gdbarch, generic_register_virtual_size);
|
set_gdbarch_register_virtual_size (gdbarch, generic_register_size);
|
||||||
set_gdbarch_max_register_virtual_size (gdbarch, 8);
|
set_gdbarch_max_register_virtual_size (gdbarch, 8);
|
||||||
set_gdbarch_register_virtual_type (gdbarch, d10v_register_virtual_type);
|
set_gdbarch_register_virtual_type (gdbarch, d10v_register_virtual_type);
|
||||||
|
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
2002-05-11 Andrew Cagney <ac131313@redhat.com>
|
||||||
|
|
||||||
|
* gdbint.texinfo (Target Architecture Definition): Mention
|
||||||
|
defaults for REGISTER_VIRTUAL_SIZE and REGISTER_RAW_SIZE.
|
||||||
|
(Target Architecture Definition): Mention same. Add references to
|
||||||
|
web pages.
|
||||||
|
|
||||||
2002-05-08 Michael Snyder <msnyder@redhat.com>
|
2002-05-08 Michael Snyder <msnyder@redhat.com>
|
||||||
|
|
||||||
* stabs.texinfo (Attributes): Document new "vector" attribute.
|
* stabs.texinfo (Attributes): Document new "vector" attribute.
|
||||||
|
@ -2496,8 +2496,13 @@ C@t{++} reference type.
|
|||||||
|
|
||||||
@emph{Maintainer's note: The way GDB manipulates registers is undergoing
|
@emph{Maintainer's note: The way GDB manipulates registers is undergoing
|
||||||
significant change. Many of the macros and functions refered to in the
|
significant change. Many of the macros and functions refered to in the
|
||||||
sections below are likely to be made obsolete. See the file @file{TODO}
|
section below are likely to be made obsolete. For instance, instead of
|
||||||
for more up-to-date information.}
|
having different raw and virtual register sizes, an architecture can
|
||||||
|
define pseudo-registers that map onto the raw registers.
|
||||||
|
|
||||||
|
See the @uref{http://www.gnu.org/software/gdb/bugs/, Bug Tracking
|
||||||
|
Database} and @uref{http://sources.redhat.com/gdb/current/ari, ARI
|
||||||
|
Index} for more up-to-date information.}
|
||||||
|
|
||||||
Some architectures use one representation for a value when it lives in a
|
Some architectures use one representation for a value when it lives in a
|
||||||
register, but use a different representation when it lives in memory.
|
register, but use a different representation when it lives in memory.
|
||||||
@ -3175,12 +3180,14 @@ Return non-zero if @var{reg} uses different raw and virtual formats.
|
|||||||
|
|
||||||
@item REGISTER_RAW_SIZE (@var{reg})
|
@item REGISTER_RAW_SIZE (@var{reg})
|
||||||
@findex REGISTER_RAW_SIZE
|
@findex REGISTER_RAW_SIZE
|
||||||
Return the raw size of @var{reg}.
|
Return the raw size of @var{reg}; defaults to the size of the register's
|
||||||
|
virtual type.
|
||||||
@xref{Target Architecture Definition, , Using Different Register and Memory Data Representations}.
|
@xref{Target Architecture Definition, , Using Different Register and Memory Data Representations}.
|
||||||
|
|
||||||
@item REGISTER_VIRTUAL_SIZE (@var{reg})
|
@item REGISTER_VIRTUAL_SIZE (@var{reg})
|
||||||
@findex REGISTER_VIRTUAL_SIZE
|
@findex REGISTER_VIRTUAL_SIZE
|
||||||
Return the virtual size of @var{reg}.
|
Return the virtual size of @var{reg}; defaults to the size of the
|
||||||
|
register's virtual type.
|
||||||
@xref{Target Architecture Definition, , Using Different Register and Memory Data Representations}.
|
@xref{Target Architecture Definition, , Using Different Register and Memory Data Representations}.
|
||||||
|
|
||||||
@item REGISTER_VIRTUAL_TYPE (@var{reg})
|
@item REGISTER_VIRTUAL_TYPE (@var{reg})
|
||||||
|
@ -312,9 +312,9 @@ struct gdbarch startup_gdbarch =
|
|||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
generic_register_raw_size,
|
generic_register_size,
|
||||||
0,
|
0,
|
||||||
generic_register_virtual_size,
|
generic_register_size,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
@ -479,7 +479,9 @@ gdbarch_alloc (const struct gdbarch_info *info,
|
|||||||
current_gdbarch->register_name = legacy_register_name;
|
current_gdbarch->register_name = legacy_register_name;
|
||||||
current_gdbarch->register_size = -1;
|
current_gdbarch->register_size = -1;
|
||||||
current_gdbarch->register_bytes = -1;
|
current_gdbarch->register_bytes = -1;
|
||||||
|
current_gdbarch->register_raw_size = generic_register_size;
|
||||||
current_gdbarch->max_register_raw_size = -1;
|
current_gdbarch->max_register_raw_size = -1;
|
||||||
|
current_gdbarch->register_virtual_size = generic_register_size;
|
||||||
current_gdbarch->max_register_virtual_size = -1;
|
current_gdbarch->max_register_virtual_size = -1;
|
||||||
current_gdbarch->do_registers_info = do_registers_info;
|
current_gdbarch->do_registers_info = do_registers_info;
|
||||||
current_gdbarch->print_float_info = default_print_float_info;
|
current_gdbarch->print_float_info = default_print_float_info;
|
||||||
@ -615,15 +617,11 @@ verify_gdbarch (struct gdbarch *gdbarch)
|
|||||||
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
|
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
|
||||||
&& (gdbarch->register_byte == 0))
|
&& (gdbarch->register_byte == 0))
|
||||||
fprintf_unfiltered (log, "\n\tregister_byte");
|
fprintf_unfiltered (log, "\n\tregister_byte");
|
||||||
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
|
/* Skip verify of register_raw_size, invalid_p == 0 */
|
||||||
&& (gdbarch->register_raw_size == 0))
|
|
||||||
fprintf_unfiltered (log, "\n\tregister_raw_size");
|
|
||||||
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
|
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
|
||||||
&& (gdbarch->max_register_raw_size == -1))
|
&& (gdbarch->max_register_raw_size == -1))
|
||||||
fprintf_unfiltered (log, "\n\tmax_register_raw_size");
|
fprintf_unfiltered (log, "\n\tmax_register_raw_size");
|
||||||
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
|
/* Skip verify of register_virtual_size, invalid_p == 0 */
|
||||||
&& (gdbarch->register_virtual_size == 0))
|
|
||||||
fprintf_unfiltered (log, "\n\tregister_virtual_size");
|
|
||||||
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
|
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
|
||||||
&& (gdbarch->max_register_virtual_size == -1))
|
&& (gdbarch->max_register_virtual_size == -1))
|
||||||
fprintf_unfiltered (log, "\n\tmax_register_virtual_size");
|
fprintf_unfiltered (log, "\n\tmax_register_virtual_size");
|
||||||
|
@ -720,6 +720,11 @@ extern void set_gdbarch_register_byte (struct gdbarch *gdbarch, gdbarch_register
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Default (function) for non- multi-arch platforms. */
|
||||||
|
#if (!GDB_MULTI_ARCH) && !defined (REGISTER_RAW_SIZE)
|
||||||
|
#define REGISTER_RAW_SIZE(reg_nr) (generic_register_size (reg_nr))
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef int (gdbarch_register_raw_size_ftype) (int reg_nr);
|
typedef int (gdbarch_register_raw_size_ftype) (int reg_nr);
|
||||||
extern int gdbarch_register_raw_size (struct gdbarch *gdbarch, int reg_nr);
|
extern int gdbarch_register_raw_size (struct gdbarch *gdbarch, int reg_nr);
|
||||||
extern void set_gdbarch_register_raw_size (struct gdbarch *gdbarch, gdbarch_register_raw_size_ftype *register_raw_size);
|
extern void set_gdbarch_register_raw_size (struct gdbarch *gdbarch, gdbarch_register_raw_size_ftype *register_raw_size);
|
||||||
@ -743,6 +748,11 @@ extern void set_gdbarch_max_register_raw_size (struct gdbarch *gdbarch, int max_
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Default (function) for non- multi-arch platforms. */
|
||||||
|
#if (!GDB_MULTI_ARCH) && !defined (REGISTER_VIRTUAL_SIZE)
|
||||||
|
#define REGISTER_VIRTUAL_SIZE(reg_nr) (generic_register_size (reg_nr))
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef int (gdbarch_register_virtual_size_ftype) (int reg_nr);
|
typedef int (gdbarch_register_virtual_size_ftype) (int reg_nr);
|
||||||
extern int gdbarch_register_virtual_size (struct gdbarch *gdbarch, int reg_nr);
|
extern int gdbarch_register_virtual_size (struct gdbarch *gdbarch, int reg_nr);
|
||||||
extern void set_gdbarch_register_virtual_size (struct gdbarch *gdbarch, gdbarch_register_virtual_size_ftype *register_virtual_size);
|
extern void set_gdbarch_register_virtual_size (struct gdbarch *gdbarch, gdbarch_register_virtual_size_ftype *register_virtual_size);
|
||||||
|
@ -463,9 +463,9 @@ f:2:REGISTER_NAME:char *:register_name:int regnr:regnr:::legacy_register_name::0
|
|||||||
v:2:REGISTER_SIZE:int:register_size::::0:-1
|
v:2:REGISTER_SIZE:int:register_size::::0:-1
|
||||||
v:2:REGISTER_BYTES:int:register_bytes::::0:-1
|
v:2:REGISTER_BYTES:int:register_bytes::::0:-1
|
||||||
f:2:REGISTER_BYTE:int:register_byte:int reg_nr:reg_nr::0:0
|
f:2:REGISTER_BYTE:int:register_byte:int reg_nr:reg_nr::0:0
|
||||||
f:2:REGISTER_RAW_SIZE:int:register_raw_size:int reg_nr:reg_nr::generic_register_raw_size:0
|
f:2:REGISTER_RAW_SIZE:int:register_raw_size:int reg_nr:reg_nr::generic_register_size:generic_register_size::0
|
||||||
v:2:MAX_REGISTER_RAW_SIZE:int:max_register_raw_size::::0:-1
|
v:2:MAX_REGISTER_RAW_SIZE:int:max_register_raw_size::::0:-1
|
||||||
f:2:REGISTER_VIRTUAL_SIZE:int:register_virtual_size:int reg_nr:reg_nr::generic_register_virtual_size:0
|
f:2:REGISTER_VIRTUAL_SIZE:int:register_virtual_size:int reg_nr:reg_nr::generic_register_size:generic_register_size::0
|
||||||
v:2:MAX_REGISTER_VIRTUAL_SIZE:int:max_register_virtual_size::::0:-1
|
v:2:MAX_REGISTER_VIRTUAL_SIZE:int:max_register_virtual_size::::0:-1
|
||||||
f:2:REGISTER_VIRTUAL_TYPE:struct type *:register_virtual_type:int reg_nr:reg_nr::0:0
|
f:2:REGISTER_VIRTUAL_TYPE:struct type *:register_virtual_type:int reg_nr:reg_nr::0:0
|
||||||
f:2:DO_REGISTERS_INFO:void:do_registers_info:int reg_nr, int fpregs:reg_nr, fpregs:::do_registers_info::0
|
f:2:DO_REGISTERS_INFO:void:do_registers_info:int reg_nr, int fpregs:reg_nr, fpregs:::do_registers_info::0
|
||||||
|
@ -2663,7 +2663,7 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|||||||
set_gdbarch_register_byte (gdbarch, rs6000_register_byte);
|
set_gdbarch_register_byte (gdbarch, rs6000_register_byte);
|
||||||
set_gdbarch_register_raw_size (gdbarch, rs6000_register_raw_size);
|
set_gdbarch_register_raw_size (gdbarch, rs6000_register_raw_size);
|
||||||
set_gdbarch_max_register_raw_size (gdbarch, 16);
|
set_gdbarch_max_register_raw_size (gdbarch, 16);
|
||||||
set_gdbarch_register_virtual_size (gdbarch, generic_register_virtual_size);
|
set_gdbarch_register_virtual_size (gdbarch, generic_register_size);
|
||||||
set_gdbarch_max_register_virtual_size (gdbarch, 16);
|
set_gdbarch_max_register_virtual_size (gdbarch, 16);
|
||||||
set_gdbarch_register_virtual_type (gdbarch, rs6000_register_virtual_type);
|
set_gdbarch_register_virtual_type (gdbarch, rs6000_register_virtual_type);
|
||||||
set_gdbarch_do_registers_info (gdbarch, rs6000_do_registers_info);
|
set_gdbarch_do_registers_info (gdbarch, rs6000_do_registers_info);
|
||||||
|
@ -1002,7 +1002,7 @@ x86_64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|||||||
for (i = 0, sum = 0; i < X86_64_NUM_REGS; i++)
|
for (i = 0, sum = 0; i < X86_64_NUM_REGS; i++)
|
||||||
sum += x86_64_register_info_table[i].size;
|
sum += x86_64_register_info_table[i].size;
|
||||||
set_gdbarch_register_bytes (gdbarch, sum);
|
set_gdbarch_register_bytes (gdbarch, sum);
|
||||||
set_gdbarch_register_virtual_size (gdbarch, generic_register_virtual_size);
|
set_gdbarch_register_virtual_size (gdbarch, generic_register_size);
|
||||||
set_gdbarch_max_register_virtual_size (gdbarch, 16);
|
set_gdbarch_max_register_virtual_size (gdbarch, 16);
|
||||||
|
|
||||||
set_gdbarch_register_virtual_type (gdbarch, x86_64_register_virtual_type);
|
set_gdbarch_register_virtual_type (gdbarch, x86_64_register_virtual_type);
|
||||||
|
Reference in New Issue
Block a user