This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [RFA] remote debugging patches
- From: Michal Ludvig <mludvig at suse dot cz>
- To: Andrew Cagney <ac131313 at cygnus dot com>
- Cc: gdb-patches at sources dot redhat dot com
- Date: Mon, 11 Mar 2002 16:08:19 +0100
- Subject: Re: [RFA] remote debugging patches
- Organization: SuSE CR
- References: <3C8BA71F.20807@suse.cz> <3C8BBEFC.5040504@cygnus.com>
Andrew Cagney wrote:
> Yes fine, er almost. Can you change the name of this to
> ``DONT_WAIT_FOREVER_FLAG'' and suggest making it an enum. (so GDB can
> print it :-)
Why DONT_WAIT_FOREWER? IMHO wait_forewer is correct, because 0 means
don't wait forewer (the default) and 1 means yes, wait forever.
> If you're feeling really inspired (...), you could even introduce an
> enum to handle both the DO and DONT cases.
OK, I changed it to enum called wait_forever_flag with values yes and
no. Now it should be clear enough whether to wait or not. :-)
Michal Ludvig
--
* SuSE CR, s.r.o * mludvig@suse.cz
* +420 2 9654 5373 * http://www.suse.cz
Index: remote.c
===================================================================
RCS file: /cvs/src/src/gdb/remote.c,v
retrieving revision 1.77
diff -u -r1.77 remote.c
--- remote.c 2002/02/27 01:18:39 1.77
+++ remote.c 2002/03/11 15:02:18
@@ -55,6 +55,9 @@
#include "gdbcore.h" /* for exec_bfd */
+/* Set this default to 'yes' when you don't want to timeout getpkt() */
+static enum { no, yes } wait_forever_flag=no;
+
/* Prototypes for local functions */
static void cleanup_sigint_signal_handler (void *dummy);
static void initialize_sigint_signal_handler (void);
@@ -1032,7 +1035,7 @@
else
sprintf (&buf[2], "%x", th);
putpkt (buf);
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
if (gen)
general_thread = th;
else
@@ -1052,7 +1055,7 @@
else
sprintf (buf, "T%08x", tid);
putpkt (buf);
- getpkt (buf, sizeof (buf), 0);
+ getpkt (buf, sizeof (buf), wait_forever_flag);
return (buf[0] == 'O' && buf[1] == 'K');
}
@@ -1550,7 +1553,7 @@
pack_threadinfo_request (threadinfo_pkt, fieldset, threadid);
putpkt (threadinfo_pkt);
- getpkt (threadinfo_pkt, (rs->remote_packet_size), 0);
+ getpkt (threadinfo_pkt, (rs->remote_packet_size), wait_forever_flag);
result = remote_unpack_thread_info_response (threadinfo_pkt + 2, threadid,
info);
return result;
@@ -1630,7 +1633,7 @@
pack_threadlist_request (threadlist_packet,
startflag, result_limit, nextthread);
putpkt (threadlist_packet);
- getpkt (t_response, (rs->remote_packet_size), 0);
+ getpkt (t_response, (rs->remote_packet_size), wait_forever_flag);
*result_count =
parse_threadlist_response (t_response + 2, result_limit, &echo_nextthread,
@@ -1740,7 +1743,7 @@
char *buf = alloca (rs->remote_packet_size);
putpkt ("qC");
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
if (buf[0] == 'Q' && buf[1] == 'C')
return pid_to_ptid (strtol (&buf[2], NULL, 16));
else
@@ -1782,7 +1785,7 @@
{
putpkt ("qfThreadInfo");
bufp = buf;
- getpkt (bufp, (rs->remote_packet_size), 0);
+ getpkt (bufp, (rs->remote_packet_size), wait_forever_flag);
if (bufp[0] != '\0') /* q packet recognized */
{
while (*bufp++ == 'm') /* reply contains one or more TID */
@@ -1796,7 +1799,7 @@
while (*bufp++ == ','); /* comma-separated list */
putpkt ("qsThreadInfo");
bufp = buf;
- getpkt (bufp, (rs->remote_packet_size), 0);
+ getpkt (bufp, (rs->remote_packet_size), wait_forever_flag);
}
return; /* done */
}
@@ -1837,7 +1840,7 @@
{
sprintf (bufp, "qThreadExtraInfo,%x", PIDGET (tp->ptid));
putpkt (bufp);
- getpkt (bufp, (rs->remote_packet_size), 0);
+ getpkt (bufp, (rs->remote_packet_size), wait_forever_flag);
if (bufp[0] != 0)
{
n = min (strlen (bufp) / 2, sizeof (display_buf));
@@ -1893,7 +1896,7 @@
/* Now query for status so this looks just like we restarted
gdbserver from scratch. */
putpkt ("?");
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
}
/* Clean up connection to a remote debugger. */
@@ -1921,7 +1924,7 @@
putpkt ("qOffsets");
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
if (buf[0] == '\000')
return; /* Return silently. Stub doesn't support
@@ -2202,7 +2205,7 @@
/* Invite target to request symbol lookups. */
putpkt ("qSymbol::");
- getpkt (reply, (rs->remote_packet_size), 0);
+ getpkt (reply, (rs->remote_packet_size), wait_forever_flag);
packet_ok (reply, &remote_protocol_qSymbol);
while (strncmp (reply, "qSymbol:", 8) == 0)
@@ -2218,7 +2221,7 @@
paddr_nz (SYMBOL_VALUE_ADDRESS (sym)),
&reply[8]);
putpkt (msg);
- getpkt (reply, (rs->remote_packet_size), 0);
+ getpkt (reply, (rs->remote_packet_size), wait_forever_flag);
}
}
@@ -2304,7 +2307,7 @@
/* Tell the remote that we are using the extended protocol. */
char *buf = alloca (rs->remote_packet_size);
putpkt ("!");
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
}
#ifdef SOLIB_CREATE_INFERIOR_HOOK
/* FIXME: need a master target_open vector from which all
@@ -2418,7 +2421,7 @@
/* Tell the remote that we are using the extended protocol. */
char *buf = alloca (rs->remote_packet_size);
putpkt ("!");
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
}
#ifdef SOLIB_CREATE_INFERIOR_HOOK
/* FIXME: need a master target_open vector from which all
@@ -2601,7 +2604,7 @@
*p++ = 0;
putpkt (buf);
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
if (packet_ok (buf, &remote_protocol_E) == PACKET_OK)
return;
@@ -2619,7 +2622,7 @@
*p++ = 0;
putpkt (buf);
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
if (packet_ok (buf, &remote_protocol_e) == PACKET_OK)
return;
@@ -2690,7 +2693,7 @@
*p++ = 0;
putpkt (buf);
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
if (packet_ok (buf, &remote_protocol_E) == PACKET_OK)
goto register_event_loop;
@@ -2708,7 +2711,7 @@
*p++ = 0;
putpkt (buf);
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
if (packet_ok (buf, &remote_protocol_e) == PACKET_OK)
goto register_event_loop;
@@ -3439,7 +3442,7 @@
if (remote_debug)
fprintf_unfiltered (gdb_stdlog,
"Bad register packet; fetching a new packet\n");
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
}
/* Reply describes registers byte by byte, each byte encoded as two
@@ -3695,7 +3698,7 @@
*p = '\0';
putpkt_binary (buf, (int) (p - buf));
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
if (buf[0] == '\0')
{
@@ -3837,7 +3840,7 @@
}
putpkt_binary (buf, (int) (p - buf));
- getpkt (buf, sizeof_buf, 0);
+ getpkt (buf, sizeof_buf, wait_forever_flag);
if (buf[0] == 'E')
{
@@ -3902,7 +3905,7 @@
*p = '\0';
putpkt (buf);
- getpkt (buf, sizeof_buf, 0);
+ getpkt (buf, sizeof_buf, wait_forever_flag);
if (buf[0] == 'E')
{
@@ -3980,7 +3983,7 @@
data_long = extract_unsigned_integer (data, len);
sprintf (buf, "t%x:%x,%x", startaddr, data_long, mask_long);
putpkt (buf);
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
if (buf[0] == '\0')
{
/* The stub doesn't support the 't' request. We might want to
@@ -4069,7 +4072,7 @@
long sizeof_buf)
{
putpkt (buf);
- getpkt (buf, sizeof_buf, 0);
+ getpkt (buf, sizeof_buf, wait_forever_flag);
if (buf[0] == 'E')
error ("Remote failure reply: %s", buf);
@@ -4658,7 +4661,7 @@
sprintf (p, ",%d", bp_size);
putpkt (buf);
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
switch (packet_ok (buf, &remote_protocol_Z[Z_PACKET_SOFTWARE_BP]))
{
@@ -4711,7 +4714,7 @@
sprintf (p, ",%d", bp_size);
putpkt (buf);
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
return (buf[0] == 'E');
}
@@ -4766,7 +4769,7 @@
sprintf (p, ",%x", len);
putpkt (buf);
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
switch (packet_ok (buf, &remote_protocol_Z[packet]))
{
@@ -4802,7 +4805,7 @@
p += hexnumstr (p, (ULONGEST) addr);
sprintf (p, ",%x", len);
putpkt (buf);
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
switch (packet_ok (buf, &remote_protocol_Z[packet]))
{
@@ -4840,7 +4843,7 @@
sprintf (p, ",%x", len);
putpkt (buf);
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
switch (packet_ok (buf, &remote_protocol_Z[Z_PACKET_HARDWARE_BP]))
{
@@ -4878,7 +4881,7 @@
sprintf (p, ",%x", len);
putpkt(buf);
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
switch (packet_ok (buf, &remote_protocol_Z[Z_PACKET_HARDWARE_BP]))
{
@@ -5011,7 +5014,7 @@
bfd_get_section_contents (exec_bfd, s, sectdata, 0, size);
host_crc = crc32 ((unsigned char *) sectdata, size, 0xffffffff);
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
if (buf[0] == 'E')
error ("target memory fault, section %s, range 0x%08x -- 0x%08x",
sectname, lma, lma + size);
@@ -5102,7 +5105,7 @@
if (i < 0)
return i;
- getpkt (outbuf, *bufsiz, 0);
+ getpkt (outbuf, *bufsiz, wait_forever_flag);
return 0;
}
@@ -5141,7 +5144,7 @@
{
/* XXX - see also tracepoint.c:remote_get_noisy_reply() */
buf[0] = '\0';
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
if (buf[0] == '\0')
error ("Target does not support this command\n");
if (buf[0] == 'O' && buf[1] != 'K')
@@ -5182,7 +5185,7 @@
puts_filtered ("\n");
putpkt (args);
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
puts_filtered ("received: ");
print_packet (buf);
puts_filtered ("\n");
@@ -5430,7 +5433,7 @@
error ("Command can only be used when connected to the remote target.");
putpkt ("qfProcessInfo");
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
if (buf[0] == 0)
return; /* Silently: target does not support this feature. */
@@ -5441,7 +5444,7 @@
{
remote_console_output (&buf[1]);
putpkt ("qsProcessInfo");
- getpkt (buf, (rs->remote_packet_size), 0);
+ getpkt (buf, (rs->remote_packet_size), wait_forever_flag);
}
}