diff --git a/sys/gdb/gdb_int.h b/sys/gdb/gdb_int.h index 9ef83d707be2..54defe4af7d2 100644 --- a/sys/gdb/gdb_int.h +++ b/sys/gdb/gdb_int.h @@ -31,6 +31,10 @@ #ifndef _GDB_GDB_INT_H_ #define _GDB_GDB_INT_H_ +#ifndef EOF +#define EOF (-1) +#endif + extern struct gdb_dbgport *gdb_cur; extern int gdb_listening; @@ -54,7 +58,7 @@ gdb_rx_char(void) c = *gdb_rxp++; gdb_rxsz--; } else - c = -1; + c = EOF; return (c); } diff --git a/sys/gdb/gdb_main.c b/sys/gdb/gdb_main.c index 6d92291b6a19..a7e53c67fb95 100644 --- a/sys/gdb/gdb_main.c +++ b/sys/gdb/gdb_main.c @@ -653,7 +653,10 @@ gdb_trap(int type, int code) case 'H': { /* Set thread. */ intmax_t tid; struct thread *thr; - gdb_rx_char(); + + /* Ignore 'g' (general) or 'c' (continue) flag. */ + (void) gdb_rx_char(); + if (gdb_rx_varhex(&tid)) { gdb_tx_err(EINVAL); break; @@ -768,7 +771,7 @@ gdb_trap(int type, int code) gdb_tx_err(ENOENT); break; } - case -1: + case EOF: /* Empty command. Treat as unknown command. */ /* FALLTHROUGH */ default: diff --git a/sys/gdb/gdb_packet.c b/sys/gdb/gdb_packet.c index 73a431830258..2a8f982ba49c 100644 --- a/sys/gdb/gdb_packet.c +++ b/sys/gdb/gdb_packet.c @@ -197,7 +197,7 @@ gdb_rx_varhex(uintmax_t *vp) v += C2N(c); c = gdb_rx_char(); } while (isxdigit(c)); - if (c != -1) { + if (c != EOF) { gdb_rxp--; gdb_rxsz++; } @@ -343,13 +343,12 @@ gdb_rx_bindata(unsigned char *data, size_t datalen, size_t *amt) while (*amt < datalen) { c = gdb_rx_char(); - /* End of packet? */ - if (c == -1) + if (c == EOF) break; /* Escaped character up next */ if (c == '}') { - /* Truncated packet? Bail out */ - if ((c = gdb_rx_char()) == -1) + /* Malformed packet. */ + if ((c = gdb_rx_char()) == EOF) return (1); c ^= 0x20; }