2004-09-24 Robert Picco <Robert.Picco@hp.com>
Committed by Andrew Cagney. * remote.c (set_remote_protocol_p_packet_cmd, remote_protocol_p) (show_remote_protocol_p_packet_cmd): New. Implement 'p' packet. configuration. (fetch_register_using_p): Implement 'p' packet. Based on code by Fernando Nasser. (remote_fetch_registers): Call fetch_register_using_p. (init_all_packet_configs, show_remote_cmd) (_initialize_remote): Add p-packet.
This commit is contained in:
parent
62ece330ee
commit
b96ec7ac6d
2 changed files with 93 additions and 0 deletions
|
@ -1,3 +1,15 @@
|
||||||
|
2004-09-24 Robert Picco <Robert.Picco@hp.com>
|
||||||
|
|
||||||
|
Committed by Andrew Cagney.
|
||||||
|
* remote.c (set_remote_protocol_p_packet_cmd, remote_protocol_p)
|
||||||
|
(show_remote_protocol_p_packet_cmd): New. Implement 'p' packet.
|
||||||
|
configuration.
|
||||||
|
(fetch_register_using_p): Implement 'p' packet. Based on code by
|
||||||
|
Fernando Nasser.
|
||||||
|
(remote_fetch_registers): Call fetch_register_using_p.
|
||||||
|
(init_all_packet_configs, show_remote_cmd)
|
||||||
|
(_initialize_remote): Add p-packet.
|
||||||
|
|
||||||
2004-09-24 Mark Kettenis <kettenis@gnu.org>
|
2004-09-24 Mark Kettenis <kettenis@gnu.org>
|
||||||
|
|
||||||
* inf-ptrace.c (inf_ptrace_kill_inferior): Call ptrace directly
|
* inf-ptrace.c (inf_ptrace_kill_inferior): Call ptrace directly
|
||||||
|
|
81
gdb/remote.c
81
gdb/remote.c
|
@ -961,6 +961,23 @@ show_remote_protocol_qPart_auxv_packet_cmd (char *args, int from_tty,
|
||||||
show_packet_config_cmd (&remote_protocol_qPart_auxv);
|
show_packet_config_cmd (&remote_protocol_qPart_auxv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct packet_config remote_protocol_p;
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_remote_protocol_p_packet_cmd (char *args, int from_tty,
|
||||||
|
struct cmd_list_element *c)
|
||||||
|
{
|
||||||
|
update_packet_config (&remote_protocol_p);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
show_remote_protocol_p_packet_cmd (char *args, int from_tty,
|
||||||
|
struct cmd_list_element *c)
|
||||||
|
{
|
||||||
|
show_packet_config_cmd (&remote_protocol_p);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Tokens for use by the asynchronous signal handlers for SIGINT */
|
/* Tokens for use by the asynchronous signal handlers for SIGINT */
|
||||||
static void *sigint_remote_twice_token;
|
static void *sigint_remote_twice_token;
|
||||||
|
@ -2041,6 +2058,7 @@ init_all_packet_configs (void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
update_packet_config (&remote_protocol_P);
|
update_packet_config (&remote_protocol_P);
|
||||||
|
update_packet_config (&remote_protocol_p);
|
||||||
update_packet_config (&remote_protocol_qSymbol);
|
update_packet_config (&remote_protocol_qSymbol);
|
||||||
update_packet_config (&remote_protocol_vcont);
|
update_packet_config (&remote_protocol_vcont);
|
||||||
for (i = 0; i < NR_Z_PACKET_TYPES; i++)
|
for (i = 0; i < NR_Z_PACKET_TYPES; i++)
|
||||||
|
@ -3150,6 +3168,36 @@ static int register_bytes_found;
|
||||||
/* Read the remote registers into the block REGS. */
|
/* Read the remote registers into the block REGS. */
|
||||||
/* Currently we just read all the registers, so we don't use regnum. */
|
/* Currently we just read all the registers, so we don't use regnum. */
|
||||||
|
|
||||||
|
static int
|
||||||
|
fetch_register_using_p (int regnum)
|
||||||
|
{
|
||||||
|
struct remote_state *rs = get_remote_state ();
|
||||||
|
char *buf = alloca (rs->remote_packet_size), *p;
|
||||||
|
char regp[MAX_REGISTER_SIZE];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
buf[0] = 'p';
|
||||||
|
bin2hex((char *) ®num, &buf[1], sizeof(regnum));
|
||||||
|
buf[9] = 0;
|
||||||
|
remote_send (buf, rs->remote_packet_size);
|
||||||
|
if (buf[0] != 0 && buf[0] != 'E') {
|
||||||
|
p = buf;
|
||||||
|
i = 0;
|
||||||
|
while (p[0] != 0) {
|
||||||
|
if (p[1] == 0) {
|
||||||
|
error("fetch_register_using_p: early buf termination");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
regp[i++] = fromhex (p[0]) * 16 + fromhex (p[1]);
|
||||||
|
p += 2;
|
||||||
|
}
|
||||||
|
regcache_raw_supply (current_regcache, regnum, regp);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
remote_fetch_registers (int regnum)
|
remote_fetch_registers (int regnum)
|
||||||
{
|
{
|
||||||
|
@ -3170,6 +3218,31 @@ remote_fetch_registers (int regnum)
|
||||||
"Attempt to fetch a non G-packet register when this "
|
"Attempt to fetch a non G-packet register when this "
|
||||||
"remote.c does not support the p-packet.");
|
"remote.c does not support the p-packet.");
|
||||||
}
|
}
|
||||||
|
switch (remote_protocol_p.support)
|
||||||
|
{
|
||||||
|
case PACKET_DISABLE:
|
||||||
|
break;
|
||||||
|
case PACKET_ENABLE:
|
||||||
|
if (fetch_register_using_p (regnum))
|
||||||
|
return;
|
||||||
|
else
|
||||||
|
error ("Protocol error: p packet not recognized by stub");
|
||||||
|
case PACKET_SUPPORT_UNKNOWN:
|
||||||
|
if (fetch_register_using_p (regnum))
|
||||||
|
{
|
||||||
|
/* The stub recognized the 'p' packet. Remember this. */
|
||||||
|
remote_protocol_p.support = PACKET_ENABLE;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* The stub does not support the 'P' packet. Use 'G'
|
||||||
|
instead, and don't try using 'P' in the future (it
|
||||||
|
will just waste our time). */
|
||||||
|
remote_protocol_p.support = PACKET_DISABLE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sprintf (buf, "g");
|
sprintf (buf, "g");
|
||||||
remote_send (buf, (rs->remote_packet_size));
|
remote_send (buf, (rs->remote_packet_size));
|
||||||
|
@ -5332,6 +5405,7 @@ show_remote_cmd (char *args, int from_tty)
|
||||||
remote_show_cmdlist for a list of sub commands to show. */
|
remote_show_cmdlist for a list of sub commands to show. */
|
||||||
show_remote_protocol_Z_packet_cmd (args, from_tty, NULL);
|
show_remote_protocol_Z_packet_cmd (args, from_tty, NULL);
|
||||||
show_remote_protocol_P_packet_cmd (args, from_tty, NULL);
|
show_remote_protocol_P_packet_cmd (args, from_tty, NULL);
|
||||||
|
show_remote_protocol_p_packet_cmd (args, from_tty, NULL);
|
||||||
show_remote_protocol_qSymbol_packet_cmd (args, from_tty, NULL);
|
show_remote_protocol_qSymbol_packet_cmd (args, from_tty, NULL);
|
||||||
show_remote_protocol_vcont_packet_cmd (args, from_tty, NULL);
|
show_remote_protocol_vcont_packet_cmd (args, from_tty, NULL);
|
||||||
show_remote_protocol_binary_download_cmd (args, from_tty, NULL);
|
show_remote_protocol_binary_download_cmd (args, from_tty, NULL);
|
||||||
|
@ -5528,6 +5602,13 @@ in a memory packet.\n",
|
||||||
&remote_set_cmdlist, &remote_show_cmdlist,
|
&remote_set_cmdlist, &remote_show_cmdlist,
|
||||||
1);
|
1);
|
||||||
|
|
||||||
|
add_packet_config_cmd (&remote_protocol_p,
|
||||||
|
"p", "fetch-register",
|
||||||
|
set_remote_protocol_p_packet_cmd,
|
||||||
|
show_remote_protocol_p_packet_cmd,
|
||||||
|
&remote_set_cmdlist, &remote_show_cmdlist,
|
||||||
|
1);
|
||||||
|
|
||||||
add_packet_config_cmd (&remote_protocol_Z[Z_PACKET_SOFTWARE_BP],
|
add_packet_config_cmd (&remote_protocol_Z[Z_PACKET_SOFTWARE_BP],
|
||||||
"Z0", "software-breakpoint",
|
"Z0", "software-breakpoint",
|
||||||
set_remote_protocol_Z_software_bp_packet_cmd,
|
set_remote_protocol_Z_software_bp_packet_cmd,
|
||||||
|
|
Loading…
Add table
Reference in a new issue