2002-08-07 Andrew Cagney <ac131313@redhat.com>
* regcache.c (pseudo_register): Delete function. (fetch_register): Delete function. (store_register): Delete function. (regcache_raw_read, legacy_read_register_gen): Use target_fetch_registers instead of fetch_register. (legacy_write_register_gen, regcache_raw_write): Use target_store_register instead of store_register. (write_register_bytes): Ditto. * gdbarch.sh (FETCH_PSEUDO_REGISTER): Delete. (STORE_PSEUDO_REGISTER): Delete. * gdbarch.h, gdbarch.c: Regenerate.
This commit is contained in:
parent
2004afbc1d
commit
5c27f28ad0
|
@ -1,3 +1,18 @@
|
|||
2002-08-07 Andrew Cagney <ac131313@redhat.com>
|
||||
|
||||
* regcache.c (pseudo_register): Delete function.
|
||||
(fetch_register): Delete function.
|
||||
(store_register): Delete function.
|
||||
(regcache_raw_read, legacy_read_register_gen): Use
|
||||
target_fetch_registers instead of fetch_register.
|
||||
(legacy_write_register_gen, regcache_raw_write): Use
|
||||
target_store_register instead of store_register.
|
||||
(write_register_bytes): Ditto.
|
||||
|
||||
* gdbarch.sh (FETCH_PSEUDO_REGISTER): Delete.
|
||||
(STORE_PSEUDO_REGISTER): Delete.
|
||||
* gdbarch.h, gdbarch.c: Regenerate.
|
||||
|
||||
2002-08-06 Corinna Vinschen <vinschen@redhat.com>
|
||||
|
||||
* cli/cli-dump.c (add_dump_command): Explicitely use "b" flag to
|
||||
|
|
|
@ -204,8 +204,6 @@ struct gdbarch
|
|||
gdbarch_convert_register_p_ftype *convert_register_p;
|
||||
gdbarch_register_to_value_ftype *register_to_value;
|
||||
gdbarch_value_to_register_ftype *value_to_register;
|
||||
gdbarch_fetch_pseudo_register_ftype *fetch_pseudo_register;
|
||||
gdbarch_store_pseudo_register_ftype *store_pseudo_register;
|
||||
gdbarch_pointer_to_address_ftype *pointer_to_address;
|
||||
gdbarch_address_to_pointer_ftype *address_to_pointer;
|
||||
gdbarch_integer_to_address_ftype *integer_to_address;
|
||||
|
@ -408,8 +406,6 @@ struct gdbarch startup_gdbarch =
|
|||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
generic_in_function_epilogue_p,
|
||||
construct_inferior_arguments,
|
||||
0,
|
||||
|
@ -696,8 +692,6 @@ verify_gdbarch (struct gdbarch *gdbarch)
|
|||
/* Skip verify of convert_register_p, invalid_p == 0 */
|
||||
/* Skip verify of register_to_value, invalid_p == 0 */
|
||||
/* Skip verify of value_to_register, invalid_p == 0 */
|
||||
/* Skip verify of fetch_pseudo_register, has predicate */
|
||||
/* Skip verify of store_pseudo_register, has predicate */
|
||||
/* Skip verify of pointer_to_address, invalid_p == 0 */
|
||||
/* Skip verify of address_to_pointer, invalid_p == 0 */
|
||||
/* Skip verify of integer_to_address, has predicate */
|
||||
|
@ -1179,20 +1173,6 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
|
|||
"gdbarch_dump: EXTRA_STACK_ALIGNMENT_NEEDED = %d\n",
|
||||
EXTRA_STACK_ALIGNMENT_NEEDED);
|
||||
#endif
|
||||
#ifdef FETCH_PSEUDO_REGISTER
|
||||
#if GDB_MULTI_ARCH
|
||||
/* Macro might contain `[{}]' when not multi-arch */
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: %s # %s\n",
|
||||
"FETCH_PSEUDO_REGISTER(regnum)",
|
||||
XSTRING (FETCH_PSEUDO_REGISTER (regnum)));
|
||||
#endif
|
||||
if (GDB_MULTI_ARCH)
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: FETCH_PSEUDO_REGISTER = 0x%08lx\n",
|
||||
(long) current_gdbarch->fetch_pseudo_register
|
||||
/*FETCH_PSEUDO_REGISTER ()*/);
|
||||
#endif
|
||||
#ifdef FIX_CALL_DUMMY
|
||||
#if GDB_MULTI_ARCH
|
||||
/* Macro might contain `[{}]' when not multi-arch */
|
||||
|
@ -1928,20 +1908,6 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
|
|||
(long) current_gdbarch->stack_align
|
||||
/*STACK_ALIGN ()*/);
|
||||
#endif
|
||||
#ifdef STORE_PSEUDO_REGISTER
|
||||
#if GDB_MULTI_ARCH
|
||||
/* Macro might contain `[{}]' when not multi-arch */
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: %s # %s\n",
|
||||
"STORE_PSEUDO_REGISTER(regnum)",
|
||||
XSTRING (STORE_PSEUDO_REGISTER (regnum)));
|
||||
#endif
|
||||
if (GDB_MULTI_ARCH)
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: STORE_PSEUDO_REGISTER = 0x%08lx\n",
|
||||
(long) current_gdbarch->store_pseudo_register
|
||||
/*STORE_PSEUDO_REGISTER ()*/);
|
||||
#endif
|
||||
#ifdef STORE_RETURN_VALUE
|
||||
#if GDB_MULTI_ARCH
|
||||
/* Macro might contain `[{}]' when not multi-arch */
|
||||
|
@ -3641,58 +3607,6 @@ set_gdbarch_value_to_register (struct gdbarch *gdbarch,
|
|||
gdbarch->value_to_register = value_to_register;
|
||||
}
|
||||
|
||||
int
|
||||
gdbarch_fetch_pseudo_register_p (struct gdbarch *gdbarch)
|
||||
{
|
||||
gdb_assert (gdbarch != NULL);
|
||||
return gdbarch->fetch_pseudo_register != 0;
|
||||
}
|
||||
|
||||
void
|
||||
gdbarch_fetch_pseudo_register (struct gdbarch *gdbarch, int regnum)
|
||||
{
|
||||
gdb_assert (gdbarch != NULL);
|
||||
if (gdbarch->fetch_pseudo_register == 0)
|
||||
internal_error (__FILE__, __LINE__,
|
||||
"gdbarch: gdbarch_fetch_pseudo_register invalid");
|
||||
if (gdbarch_debug >= 2)
|
||||
fprintf_unfiltered (gdb_stdlog, "gdbarch_fetch_pseudo_register called\n");
|
||||
gdbarch->fetch_pseudo_register (regnum);
|
||||
}
|
||||
|
||||
void
|
||||
set_gdbarch_fetch_pseudo_register (struct gdbarch *gdbarch,
|
||||
gdbarch_fetch_pseudo_register_ftype fetch_pseudo_register)
|
||||
{
|
||||
gdbarch->fetch_pseudo_register = fetch_pseudo_register;
|
||||
}
|
||||
|
||||
int
|
||||
gdbarch_store_pseudo_register_p (struct gdbarch *gdbarch)
|
||||
{
|
||||
gdb_assert (gdbarch != NULL);
|
||||
return gdbarch->store_pseudo_register != 0;
|
||||
}
|
||||
|
||||
void
|
||||
gdbarch_store_pseudo_register (struct gdbarch *gdbarch, int regnum)
|
||||
{
|
||||
gdb_assert (gdbarch != NULL);
|
||||
if (gdbarch->store_pseudo_register == 0)
|
||||
internal_error (__FILE__, __LINE__,
|
||||
"gdbarch: gdbarch_store_pseudo_register invalid");
|
||||
if (gdbarch_debug >= 2)
|
||||
fprintf_unfiltered (gdb_stdlog, "gdbarch_store_pseudo_register called\n");
|
||||
gdbarch->store_pseudo_register (regnum);
|
||||
}
|
||||
|
||||
void
|
||||
set_gdbarch_store_pseudo_register (struct gdbarch *gdbarch,
|
||||
gdbarch_store_pseudo_register_ftype store_pseudo_register)
|
||||
{
|
||||
gdbarch->store_pseudo_register = store_pseudo_register;
|
||||
}
|
||||
|
||||
CORE_ADDR
|
||||
gdbarch_pointer_to_address (struct gdbarch *gdbarch, struct type *type, void *buf)
|
||||
{
|
||||
|
|
|
@ -1291,88 +1291,6 @@ extern void set_gdbarch_value_to_register (struct gdbarch *gdbarch, gdbarch_valu
|
|||
#endif
|
||||
#endif
|
||||
|
||||
/* This function is called when the value of a pseudo-register needs to
|
||||
be updated. Typically it will be defined on a per-architecture
|
||||
basis. */
|
||||
|
||||
#if defined (FETCH_PSEUDO_REGISTER)
|
||||
/* Legacy for systems yet to multi-arch FETCH_PSEUDO_REGISTER */
|
||||
#if !defined (FETCH_PSEUDO_REGISTER_P)
|
||||
#define FETCH_PSEUDO_REGISTER_P() (1)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Default predicate for non- multi-arch targets. */
|
||||
#if (!GDB_MULTI_ARCH) && !defined (FETCH_PSEUDO_REGISTER_P)
|
||||
#define FETCH_PSEUDO_REGISTER_P() (0)
|
||||
#endif
|
||||
|
||||
extern int gdbarch_fetch_pseudo_register_p (struct gdbarch *gdbarch);
|
||||
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FETCH_PSEUDO_REGISTER_P)
|
||||
#error "Non multi-arch definition of FETCH_PSEUDO_REGISTER"
|
||||
#endif
|
||||
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (FETCH_PSEUDO_REGISTER_P)
|
||||
#define FETCH_PSEUDO_REGISTER_P() (gdbarch_fetch_pseudo_register_p (current_gdbarch))
|
||||
#endif
|
||||
|
||||
/* Default (function) for non- multi-arch platforms. */
|
||||
#if (!GDB_MULTI_ARCH) && !defined (FETCH_PSEUDO_REGISTER)
|
||||
#define FETCH_PSEUDO_REGISTER(regnum) (internal_error (__FILE__, __LINE__, "FETCH_PSEUDO_REGISTER"), 0)
|
||||
#endif
|
||||
|
||||
typedef void (gdbarch_fetch_pseudo_register_ftype) (int regnum);
|
||||
extern void gdbarch_fetch_pseudo_register (struct gdbarch *gdbarch, int regnum);
|
||||
extern void set_gdbarch_fetch_pseudo_register (struct gdbarch *gdbarch, gdbarch_fetch_pseudo_register_ftype *fetch_pseudo_register);
|
||||
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FETCH_PSEUDO_REGISTER)
|
||||
#error "Non multi-arch definition of FETCH_PSEUDO_REGISTER"
|
||||
#endif
|
||||
#if GDB_MULTI_ARCH
|
||||
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (FETCH_PSEUDO_REGISTER)
|
||||
#define FETCH_PSEUDO_REGISTER(regnum) (gdbarch_fetch_pseudo_register (current_gdbarch, regnum))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* This function is called when the value of a pseudo-register needs to
|
||||
be set or stored. Typically it will be defined on a
|
||||
per-architecture basis. */
|
||||
|
||||
#if defined (STORE_PSEUDO_REGISTER)
|
||||
/* Legacy for systems yet to multi-arch STORE_PSEUDO_REGISTER */
|
||||
#if !defined (STORE_PSEUDO_REGISTER_P)
|
||||
#define STORE_PSEUDO_REGISTER_P() (1)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Default predicate for non- multi-arch targets. */
|
||||
#if (!GDB_MULTI_ARCH) && !defined (STORE_PSEUDO_REGISTER_P)
|
||||
#define STORE_PSEUDO_REGISTER_P() (0)
|
||||
#endif
|
||||
|
||||
extern int gdbarch_store_pseudo_register_p (struct gdbarch *gdbarch);
|
||||
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (STORE_PSEUDO_REGISTER_P)
|
||||
#error "Non multi-arch definition of STORE_PSEUDO_REGISTER"
|
||||
#endif
|
||||
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (STORE_PSEUDO_REGISTER_P)
|
||||
#define STORE_PSEUDO_REGISTER_P() (gdbarch_store_pseudo_register_p (current_gdbarch))
|
||||
#endif
|
||||
|
||||
/* Default (function) for non- multi-arch platforms. */
|
||||
#if (!GDB_MULTI_ARCH) && !defined (STORE_PSEUDO_REGISTER)
|
||||
#define STORE_PSEUDO_REGISTER(regnum) (internal_error (__FILE__, __LINE__, "STORE_PSEUDO_REGISTER"), 0)
|
||||
#endif
|
||||
|
||||
typedef void (gdbarch_store_pseudo_register_ftype) (int regnum);
|
||||
extern void gdbarch_store_pseudo_register (struct gdbarch *gdbarch, int regnum);
|
||||
extern void set_gdbarch_store_pseudo_register (struct gdbarch *gdbarch, gdbarch_store_pseudo_register_ftype *store_pseudo_register);
|
||||
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (STORE_PSEUDO_REGISTER)
|
||||
#error "Non multi-arch definition of STORE_PSEUDO_REGISTER"
|
||||
#endif
|
||||
#if GDB_MULTI_ARCH
|
||||
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (STORE_PSEUDO_REGISTER)
|
||||
#define STORE_PSEUDO_REGISTER(regnum) (gdbarch_store_pseudo_register (current_gdbarch, regnum))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Default (function) for non- multi-arch platforms. */
|
||||
#if (!GDB_MULTI_ARCH) && !defined (POINTER_TO_ADDRESS)
|
||||
#define POINTER_TO_ADDRESS(type, buf) (unsigned_pointer_to_address (type, buf))
|
||||
|
|
|
@ -514,14 +514,6 @@ f:2:REGISTER_CONVERT_TO_RAW:void:register_convert_to_raw:struct type *type, int
|
|||
f:1:CONVERT_REGISTER_P:int:convert_register_p:int regnum:regnum::0:legacy_convert_register_p::0
|
||||
f:1:REGISTER_TO_VALUE:void:register_to_value:int regnum, struct type *type, char *from, char *to:regnum, type, from, to::0:legacy_register_to_value::0
|
||||
f:1:VALUE_TO_REGISTER:void:value_to_register:struct type *type, int regnum, char *from, char *to:type, regnum, from, to::0:legacy_value_to_register::0
|
||||
# This function is called when the value of a pseudo-register needs to
|
||||
# be updated. Typically it will be defined on a per-architecture
|
||||
# basis.
|
||||
F:2:FETCH_PSEUDO_REGISTER:void:fetch_pseudo_register:int regnum:regnum:
|
||||
# This function is called when the value of a pseudo-register needs to
|
||||
# be set or stored. Typically it will be defined on a
|
||||
# per-architecture basis.
|
||||
F:2:STORE_PSEUDO_REGISTER:void:store_pseudo_register:int regnum:regnum:
|
||||
#
|
||||
f:2:POINTER_TO_ADDRESS:CORE_ADDR:pointer_to_address:struct type *type, void *buf:type, buf:::unsigned_pointer_to_address::0
|
||||
f:2:ADDRESS_TO_POINTER:void:address_to_pointer:struct type *type, void *buf, CORE_ADDR addr:type, buf, addr:::unsigned_address_to_pointer::0
|
||||
|
|
|
@ -470,46 +470,6 @@ real_register (int regnum)
|
|||
return regnum >= 0 && regnum < NUM_REGS;
|
||||
}
|
||||
|
||||
/* Return whether register REGNUM is a pseudo register. */
|
||||
|
||||
static int
|
||||
pseudo_register (int regnum)
|
||||
{
|
||||
return regnum >= NUM_REGS && regnum < NUM_REGS + NUM_PSEUDO_REGS;
|
||||
}
|
||||
|
||||
/* Fetch register REGNUM into the cache. */
|
||||
|
||||
static void
|
||||
fetch_register (int regnum)
|
||||
{
|
||||
/* NOTE: cagney/2001-12-04: Legacy targets were using fetch/store
|
||||
pseudo-register as a way of handling registers that needed to be
|
||||
constructed from one or more raw registers. New targets instead
|
||||
use gdbarch register read/write. */
|
||||
if (FETCH_PSEUDO_REGISTER_P ()
|
||||
&& pseudo_register (regnum))
|
||||
FETCH_PSEUDO_REGISTER (regnum);
|
||||
else
|
||||
target_fetch_registers (regnum);
|
||||
}
|
||||
|
||||
/* Write register REGNUM cached value to the target. */
|
||||
|
||||
static void
|
||||
store_register (int regnum)
|
||||
{
|
||||
/* NOTE: cagney/2001-12-04: Legacy targets were using fetch/store
|
||||
pseudo-register as a way of handling registers that needed to be
|
||||
constructed from one or more raw registers. New targets instead
|
||||
use gdbarch register read/write. */
|
||||
if (STORE_PSEUDO_REGISTER_P ()
|
||||
&& pseudo_register (regnum))
|
||||
STORE_PSEUDO_REGISTER (regnum);
|
||||
else
|
||||
target_store_registers (regnum);
|
||||
}
|
||||
|
||||
/* Low level examining and depositing of registers.
|
||||
|
||||
The caller is responsible for making sure that the inferior is
|
||||
|
@ -668,7 +628,7 @@ legacy_read_register_gen (int regnum, char *myaddr)
|
|||
}
|
||||
|
||||
if (!register_cached (regnum))
|
||||
fetch_register (regnum);
|
||||
target_fetch_registers (regnum);
|
||||
|
||||
memcpy (myaddr, register_buffer (current_regcache, regnum),
|
||||
REGISTER_RAW_SIZE (regnum));
|
||||
|
@ -702,7 +662,7 @@ regcache_raw_read (struct regcache *regcache, int regnum, void *buf)
|
|||
registers_ptid = inferior_ptid;
|
||||
}
|
||||
if (!register_cached (regnum))
|
||||
fetch_register (regnum);
|
||||
target_fetch_registers (regnum);
|
||||
}
|
||||
/* Copy the value directly into the register cache. */
|
||||
memcpy (buf, (regcache->raw_registers
|
||||
|
@ -772,7 +732,7 @@ legacy_write_register_gen (int regnum, const void *myaddr)
|
|||
memcpy (register_buffer (current_regcache, regnum), myaddr, size);
|
||||
|
||||
set_register_cached (regnum, 1);
|
||||
store_register (regnum);
|
||||
target_store_registers (regnum);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -827,7 +787,7 @@ regcache_raw_write (struct regcache *regcache, int regnum, const void *buf)
|
|||
memcpy (register_buffer (regcache, regnum), buf,
|
||||
regcache->descr->sizeof_register[regnum]);
|
||||
regcache->raw_register_valid_p[regnum] = 1;
|
||||
store_register (regnum);
|
||||
target_store_registers (regnum);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -903,7 +863,7 @@ write_register_bytes (int myregstart, char *myaddr, int inlen)
|
|||
myaddr + (overlapstart - myregstart),
|
||||
overlapend - overlapstart);
|
||||
|
||||
store_register (regnum);
|
||||
target_store_registers (regnum);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue