diff options
author | marcel <marcel@FreeBSD.org> | 2004-06-25 05:37:08 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2004-06-25 05:37:08 +0000 |
commit | b40a3c5a45cec768e4112dc825293cf0389b92c1 (patch) | |
tree | 47a0443cc8912dfad4528507de0414b216a434c2 /contrib/gdb | |
parent | 8714fd098cfecf289e196445a348f2b304484972 (diff) | |
download | FreeBSD-src-b40a3c5a45cec768e4112dc825293cf0389b92c1.zip FreeBSD-src-b40a3c5a45cec768e4112dc825293cf0389b92c1.tar.gz |
Update HEAD with support for ia64.
Diffstat (limited to 'contrib/gdb')
-rw-r--r-- | contrib/gdb/gdb/remote.c | 43 | ||||
-rw-r--r-- | contrib/gdb/gdb/target.h | 4 |
2 files changed, 46 insertions, 1 deletions
diff --git a/contrib/gdb/gdb/remote.c b/contrib/gdb/gdb/remote.c index 29bbbc8..36da449 100644 --- a/contrib/gdb/gdb/remote.c +++ b/contrib/gdb/gdb/remote.c @@ -998,6 +998,23 @@ show_remote_protocol_qPart_auxv_packet_cmd (char *args, int from_tty, show_packet_config_cmd (&remote_protocol_qPart_auxv); } +/* Should we try the 'qPart:dirty' (target dirty register read) request? */ +static struct packet_config remote_protocol_qPart_dirty; + +static void +set_remote_protocol_qPart_dirty_packet_cmd (char *args, int from_tty, + struct cmd_list_element *c) +{ + update_packet_config (&remote_protocol_qPart_dirty); +} + +static void +show_remote_protocol_qPart_dirty_packet_cmd (char *args, int from_tty, + struct cmd_list_element *c) +{ + show_packet_config_cmd (&remote_protocol_qPart_dirty); +} + /* Tokens for use by the asynchronous signal handlers for SIGINT */ static void *sigint_remote_twice_token; @@ -2088,6 +2105,7 @@ init_all_packet_configs (void) downloading. */ update_packet_config (&remote_protocol_binary_download); update_packet_config (&remote_protocol_qPart_auxv); + update_packet_config (&remote_protocol_qPart_dirty); } /* Symbol look-up. */ @@ -4925,6 +4943,23 @@ remote_xfer_partial (struct target_ops *ops, enum target_object object, } return -1; + case TARGET_OBJECT_DIRTY: + if (remote_protocol_qPart_dirty.support != PACKET_DISABLE) + { + snprintf (buf2, rs->remote_packet_size, "qPart:dirty:read::%lx", + (long)(offset >> 3)); + i = putpkt (buf2); + if (i < 0) + return i; + buf2[0] = '\0'; + getpkt (buf2, rs->remote_packet_size, 0); + if (packet_ok (buf2, &remote_protocol_qPart_dirty) != PACKET_OK) + return -1; + i = hex2bin (buf2, readbuf, len); + return i; + } + return -1; + default: return -1; } @@ -5423,6 +5458,7 @@ show_remote_cmd (char *args, int from_tty) show_remote_protocol_vcont_packet_cmd (args, from_tty, NULL); show_remote_protocol_binary_download_cmd (args, from_tty, NULL); show_remote_protocol_qPart_auxv_packet_cmd (args, from_tty, NULL); + show_remote_protocol_qPart_dirty_packet_cmd (args, from_tty, NULL); } static void @@ -5673,6 +5709,13 @@ in a memory packet.\n", &remote_set_cmdlist, &remote_show_cmdlist, 0); + add_packet_config_cmd (&remote_protocol_qPart_dirty, + "qPart_dirty", "read-dirty-registers", + set_remote_protocol_qPart_dirty_packet_cmd, + show_remote_protocol_qPart_dirty_packet_cmd, + &remote_set_cmdlist, &remote_show_cmdlist, + 0); + /* Keep the old ``set remote Z-packet ...'' working. */ add_setshow_auto_boolean_cmd ("Z-packet", class_obscure, &remote_Z_packet_detect, "\ diff --git a/contrib/gdb/gdb/target.h b/contrib/gdb/gdb/target.h index 2d8ce37..94ea970 100644 --- a/contrib/gdb/gdb/target.h +++ b/contrib/gdb/gdb/target.h @@ -229,7 +229,9 @@ enum target_object /* Transfer auxilliary vector. */ TARGET_OBJECT_AUXV, /* StackGhost cookie. See "sparc-tdep.c". */ - TARGET_OBJECT_WCOOKIE + TARGET_OBJECT_WCOOKIE, + /* Dirty registers. See "ia64-tdep.c". */ + TARGET_OBJECT_DIRTY /* Possible future objects: TARGET_OBJECT_FILE, TARGET_OBJECT_PROC, ... */ }; |