mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 03:51:15 +08:00
* TODO (register_buffer): Delete.
* regcache.c (register_buffer): Make static. (regcache_collect): New function. * regcache.h (register_buffer): Delete declaration. (regcache_collect): Declare. * remote.c (store_register_using_P): Rewrite using regcache_collect. (remote_store_registers): Ditto. * go32-nat.c (store_register): Ditto.
This commit is contained in:
parent
7c2b59d0e8
commit
193cb69f7b
@ -1,3 +1,15 @@
|
||||
2001-11-15 Andrew Cagney <ac131313@redhat.com>
|
||||
|
||||
* TODO (register_buffer): Delete.
|
||||
* regcache.c (register_buffer): Make static.
|
||||
(regcache_collect): New function.
|
||||
* regcache.h (register_buffer): Delete declaration.
|
||||
(regcache_collect): Declare.
|
||||
* remote.c (store_register_using_P): Rewrite using
|
||||
regcache_collect.
|
||||
(remote_store_registers): Ditto.
|
||||
* go32-nat.c (store_register): Ditto.
|
||||
|
||||
2001-11-14 Andrew Cagney <ac131313@redhat.com>
|
||||
|
||||
* remote.c (struct remote_state): Declare.
|
||||
|
1
gdb/TODO
1
gdb/TODO
@ -136,7 +136,6 @@ Deprecate, if not delete, the following:
|
||||
|
||||
register[]
|
||||
register_valid[]
|
||||
register_buffer()
|
||||
REGISTER_BYTE()
|
||||
Replaced by, on the target side
|
||||
supply_register()
|
||||
|
@ -493,7 +493,8 @@ static void
|
||||
store_register (int regno)
|
||||
{
|
||||
void *rp;
|
||||
void *v = (void *) register_buffer (regno);
|
||||
void *v = alloca (MAX_REGISTER_RAW_SIZE);
|
||||
regcache_collect (regno, v);
|
||||
|
||||
if (regno < FP0_REGNUM)
|
||||
memcpy ((char *) &a_tss + regno_mapping[regno].tss_ofs,
|
||||
|
@ -90,7 +90,7 @@ register_changed (int regnum)
|
||||
/* If REGNUM >= 0, return a pointer to register REGNUM's cache buffer area,
|
||||
else return a pointer to the start of the cache buffer. */
|
||||
|
||||
char *
|
||||
static char *
|
||||
register_buffer (int regnum)
|
||||
{
|
||||
if (regnum < 0)
|
||||
@ -568,6 +568,13 @@ supply_register (int regnum, char *val)
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
regcache_collect (int regnum, void *buf)
|
||||
{
|
||||
memcpy (buf, register_buffer (regnum), REGISTER_RAW_SIZE (regnum));
|
||||
}
|
||||
|
||||
|
||||
/* read_pc, write_pc, read_sp, write_sp, read_fp, write_fp, etc.
|
||||
Special handling for registers PC, SP, and FP. */
|
||||
|
||||
|
@ -28,6 +28,14 @@
|
||||
void regcache_read (int rawnum, char *buf);
|
||||
void regcache_write (int rawnum, char *buf);
|
||||
|
||||
/* Transfer a raw register [0..NUM_REGS) between the regcache and the
|
||||
target. These functions are called by the target in response to a
|
||||
target_fetch_registers() or target_store_registers(). */
|
||||
|
||||
extern void supply_register (int regnum, char *val);
|
||||
extern void regcache_collect (int regnum, void *buf);
|
||||
|
||||
|
||||
/* DEPRECATED: Character array containing an image of the inferior
|
||||
programs' registers for the most recently referenced thread. */
|
||||
|
||||
@ -45,11 +53,6 @@ extern void set_register_cached (int regnum, int state);
|
||||
|
||||
extern void register_changed (int regnum);
|
||||
|
||||
/* DEPRECATED: Functional interface returning pointer into registers[]
|
||||
array. */
|
||||
|
||||
extern char *register_buffer (int regnum);
|
||||
|
||||
extern void registers_changed (void);
|
||||
|
||||
extern void registers_fetched (void);
|
||||
@ -76,6 +79,4 @@ extern void write_register (int regnum, LONGEST val);
|
||||
|
||||
extern void write_register_pid (int regnum, CORE_ADDR val, ptid_t ptid);
|
||||
|
||||
extern void supply_register (int regnum, char *val);
|
||||
|
||||
#endif /* REGCACHE_H */
|
||||
|
26
gdb/remote.c
26
gdb/remote.c
@ -3444,13 +3444,13 @@ store_register_using_P (int regno)
|
||||
struct remote_state *rs = get_remote_state ();
|
||||
/* Try storing a single register. */
|
||||
char *buf = alloca (rs->remote_packet_size);
|
||||
char *regp;
|
||||
char *regp = alloca (MAX_REGISTER_RAW_SIZE);
|
||||
char *p;
|
||||
int i;
|
||||
|
||||
sprintf (buf, "P%x=", regno);
|
||||
p = buf + strlen (buf);
|
||||
regp = register_buffer (regno);
|
||||
regcache_collect (regno, regp);
|
||||
bin2hex (regp, p, REGISTER_RAW_SIZE (regno));
|
||||
remote_send (buf, (rs->remote_packet_size));
|
||||
|
||||
@ -3465,10 +3465,10 @@ static void
|
||||
remote_store_registers (int regno)
|
||||
{
|
||||
struct remote_state *rs = get_remote_state ();
|
||||
char *buf = alloca (rs->remote_packet_size);
|
||||
char *buf;
|
||||
char *regs;
|
||||
int i;
|
||||
char *p;
|
||||
char *regs;
|
||||
|
||||
set_thread (PIDGET (inferior_ptid), 1);
|
||||
|
||||
@ -3501,13 +3501,23 @@ remote_store_registers (int regno)
|
||||
}
|
||||
}
|
||||
|
||||
buf[0] = 'G';
|
||||
/* Extract all the registers in the regcache copying them into a
|
||||
local buffer. */
|
||||
{
|
||||
int i;
|
||||
regs = alloca (REGISTER_BYTES);
|
||||
memset (regs, REGISTER_BYTES, 0);
|
||||
for (i = 0; i < NUM_REGS; i++)
|
||||
{
|
||||
regcache_collect (i, regs + REGISTER_BYTE (i));
|
||||
}
|
||||
}
|
||||
|
||||
/* Command describes registers byte by byte,
|
||||
each byte encoded as two hex characters. */
|
||||
|
||||
regs = register_buffer (-1);
|
||||
p = buf + 1;
|
||||
buf = alloca (rs->remote_packet_size);
|
||||
p = buf;
|
||||
*p++ = 'G';
|
||||
/* remote_prepare_to_store insures that register_bytes_found gets set. */
|
||||
bin2hex (regs, p, register_bytes_found);
|
||||
remote_send (buf, (rs->remote_packet_size));
|
||||
|
Loading…
Reference in New Issue
Block a user