This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[patch] Fix gdbserver over serial ports
- From: Daniel Jacobowitz <drow at false dot org>
- To: gdb-patches at sourceware dot org
- Date: Mon, 29 Jan 2007 08:25:26 -0500
- Subject: [patch] Fix gdbserver over serial ports
When I merged win32 gdbserver support, I broke serial. I switched to
always using recv and send since you can't use read/write with sockets
on Windows, but you can't use recv and send with a serial port on Linux
(duh).
This fixes it. Tested x86_64 (with TCP, and serial by hand). Checked
in.
--
Daniel Jacobowitz
CodeSourcery
2007-01-29 Daniel Jacobowitz <dan@codesourcery.com>
* remote-utils.c [USE_WIN32API] (read, write): Define.
(putpkt_binary, input_interrupt, readchar, getpkt): Use read and
write.
Index: remote-utils.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbserver/remote-utils.c,v
retrieving revision 1.36
diff -u -p -r1.36 remote-utils.c
--- remote-utils.c 9 Jan 2007 17:59:08 -0000 1.36
+++ remote-utils.c 25 Jan 2007 14:03:42 -0000
@@ -86,6 +86,11 @@ static int remote_desc;
extern int using_threads;
extern int debug_threads;
+#ifdef USE_WIN32API
+# define read(fd, buf, len) recv (fd, buf, len, 0)
+# define write(fd, buf, len) send (fd, buf, len, 0)
+#endif
+
/* Open a connection to a remote debugger.
NAME is the filename used for communication. */
@@ -515,7 +520,7 @@ putpkt_binary (char *buf, int cnt)
{
int cc;
- if (send (remote_desc, buf2, p - buf2, 0) != p - buf2)
+ if (write (remote_desc, buf2, p - buf2) != p - buf2)
{
perror ("putpkt(write)");
return -1;
@@ -526,7 +531,7 @@ putpkt_binary (char *buf, int cnt)
fprintf (stderr, "putpkt (\"%s\"); [looking for ack]\n", buf2);
fflush (stderr);
}
- cc = recv (remote_desc, buf3, 1, 0);
+ cc = read (remote_desc, buf3, 1);
if (remote_debug)
{
fprintf (stderr, "[received '%c' (0x%x)]\n", buf3[0], buf3[0]);
@@ -587,7 +592,7 @@ input_interrupt (int unused)
int cc;
char c = 0;
- cc = recv (remote_desc, &c, 1, 0);
+ cc = read (remote_desc, &c, 1);
if (cc != 1 || c != '\003')
{
@@ -668,7 +673,7 @@ readchar (void)
if (bufcnt-- > 0)
return *bufp++;
- bufcnt = recv (remote_desc, buf, sizeof (buf), 0);
+ bufcnt = read (remote_desc, buf, sizeof (buf));
if (bufcnt <= 0)
{
@@ -735,7 +740,7 @@ getpkt (char *buf)
fprintf (stderr, "Bad checksum, sentsum=0x%x, csum=0x%x, buf=%s\n",
(c1 << 4) + c2, csum, buf);
- send (remote_desc, "-", 1, 0);
+ write (remote_desc, "-", 1);
}
if (remote_debug)
@@ -744,7 +749,7 @@ getpkt (char *buf)
fflush (stderr);
}
- send (remote_desc, "+", 1, 0);
+ write (remote_desc, "+", 1);
if (remote_debug)
{