aboutsummaryrefslogtreecommitdiff
path: root/gdb/remote.c
diff options
context:
space:
mode:
authorElena Zannoni <ezannoni@kwikemart.cygnus.com>1998-06-04 18:07:32 +0000
committerElena Zannoni <ezannoni@kwikemart.cygnus.com>1998-06-04 18:07:32 +0000
commitecc6e8426e12d884bb5aecd87dc23d65fca03197 (patch)
tree86bb00d2c793ae0c2369fb08d541cfc3e7555100 /gdb/remote.c
parent0005424512c023401553fefbead175775534af54 (diff)
downloadgdb-ecc6e8426e12d884bb5aecd87dc23d65fca03197.zip
gdb-ecc6e8426e12d884bb5aecd87dc23d65fca03197.tar.gz
gdb-ecc6e8426e12d884bb5aecd87dc23d65fca03197.tar.bz2
Thu Jun 4 10:15:03 1998 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
* remote.c: merged. - Jim Blandy <jimb@zwingli.cygnus.com> (print_packet, remote_packet_command): New functions. (_initialize_remote): Register the remote-packet command. - David Taylor <taylor@texas.cygnus.com> (_initialize_remote): remote-compare is now compare-sections. - Elena Zannoni <ezannoni@kwikemart.cygnus.com> (remote_compare_command): added warning, issued in case of mismatch only.
Diffstat (limited to 'gdb/remote.c')
-rw-r--r--gdb/remote.c86
1 files changed, 75 insertions, 11 deletions
diff --git a/gdb/remote.c b/gdb/remote.c
index 9c7ef94..694d921 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -1542,6 +1542,18 @@ remote_send (buf)
error ("Remote failure reply: %s", buf);
}
+/* Display a null-terminated packet on stdout, for debugging, using C
+ string notation. */
+static void
+print_packet (char *buf)
+{
+ puts_filtered ("\"");
+ while (*buf)
+ gdb_printchar (*buf++, gdb_stdout, '"');
+ puts_filtered ("\"");
+}
+
+
/* Send a packet to the remote machine, with error checking.
The data of the packet is in BUF. */
@@ -2022,6 +2034,8 @@ open_remote_target (name, from_tty, target, extended_p)
remote_open_1 (name, from_tty, target, extended_p);
}
+
+
/* Table used by the crc32 function to calcuate the checksum. */
static unsigned long crc32_table[256] = {0, 0};
@@ -2053,15 +2067,8 @@ crc32 (buf, len, crc)
return crc;
}
-/* compare-sections command
-
- With no arguments, compares each loadable section in the exec bfd
- with the same memory range on the target, and reports mismatches.
- Useful for verifying the image on the target against the exec file.
- Depends on the target understanding the new "qCRC:" request. */
-
static void
-remote_compare_command (args, from_tty)
+compare_sections_command (args, from_tty)
char *args;
int from_tty;
{
@@ -2073,6 +2080,7 @@ remote_compare_command (args, from_tty)
bfd_size_type size;
bfd_vma lma;
int matched = 0;
+ int mismatched = 0;
if (!exec_bfd)
error ("command cannot be used without an exec file");
@@ -2120,14 +2128,47 @@ remote_compare_command (args, from_tty)
if (host_crc == target_crc)
printf_filtered ("matched.\n");
else
+ {
printf_filtered ("MIS-MATCHED!\n");
+ mismatched++;
+ }
do_cleanups (old_chain);
}
+ if (mismatched > 0)
+ warning ("One or more sections of the remote executable does not match\nthe loaded file\n");
if (args && !matched)
printf_filtered ("No loaded section named '%s'.\n", args);
}
+
+static void
+packet_command (args, from_tty)
+ char *args;
+ int from_tty;
+
+
+{
+ char buf[PBUFSIZ];
+
+ if (!current_target.to_shortname ||
+ strcmp (current_target.to_shortname, "remote") != 0)
+ error ("command can only be used with remote target");
+
+ if (! args)
+ error ("remote-packet command requires packet text as argument");
+
+ puts_filtered ("sending: ");
+ print_packet (args);
+ puts_filtered ("\n");
+ putpkt (args);
+
+ getpkt (buf, 0);
+ puts_filtered ("received: ");
+ print_packet (buf);
+ puts_filtered ("\n");
+}
+
void
_initialize_remote ()
{
@@ -2136,11 +2177,21 @@ _initialize_remote ()
add_target (&remote_ops);
add_target (&extended_remote_ops);
- add_cmd ("compare-sections", class_obscure, remote_compare_command,
- "Compare section data on remote target to the exec file.\n\
-Optional argument is a single section name (default: all loadable sections).",
+ add_cmd ("compare-sections", class_obscure, compare_sections_command,
+ "Compare section data on target to the exec file.\n\
+Argument is a single section name (default: all loaded sections).",
&cmdlist);
+ add_cmd ("packet", class_maintenance, packet_command,
+ "Send an arbitrary packet to a remote target.\n\
+ maintenance packet TEXT\n\
+If GDB is talking to an inferior via the GDB serial protocol, then\n\
+this command sends the string TEXT to the inferior, and displays the\n\
+response packet. GDB supplies the initial `$' character, and the\n\
+terminating `#' character and checksum. This command was originally\n\
+provided for use by the gdb.emc test suite.",
+ &maintenancelist);
+
add_show_from_set (add_set_cmd ("remotetimeout", no_class,
var_integer, (char *)&remote_timeout,
"Set timeout value for remote read.\n", &setlist),
@@ -2156,3 +2207,16 @@ Optional argument is a single section name (default: all loadable sections).",
"Set the maximum number of bytes in each memory write packet.\n", &setlist),
&showlist);
}
+
+
+
+
+
+
+
+
+
+
+
+
+