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); } }