This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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)
     {


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]