From b40a3c5a45cec768e4112dc825293cf0389b92c1 Mon Sep 17 00:00:00 2001 From: marcel Date: Fri, 25 Jun 2004 05:37:08 +0000 Subject: [PATCH] Update HEAD with support for ia64. --- contrib/gdb/gdb/remote.c | 43 ++++++++++++++++++++++++++++++++++++++++ contrib/gdb/gdb/target.h | 4 +++- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/contrib/gdb/gdb/remote.c b/contrib/gdb/gdb/remote.c index 29bbbc86d80d..36da449973d8 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 2d8ce372fc51..94ea970795de 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, ... */ };