Problem with COM1 port from with GDB 5.3 under Cygwin 1.5.3-1

Creighton MacDonnell creighton@macdonnell.ca
Tue Sep 23 19:07:00 GMT 2003


I earlier posted to the gdb@sources.redhat.com list about a problem 
using the serial port on Cygwin 1.5.3 when using RDI (i.e. ARM Angel 
Debug Protocol) with GDB 5.3.

Using "com1" would hang, and GDB had never allowed names like 
"/dev/ttyS0", which Cygwin was supposed to support.

This patch avoids the Cygwin 1.5.* problem with "com*" port names, while 
still allowing "com*" names to be used in GDB scripts (they get 
translated to "/dev/com?"), and also allows "/dev/ttyS*" and "/dev/com*" 
device names to be used.


--- ./gdb/rdi-share/unixcomm.c~    2002-06-08 14:34:41.000000000 -0600
+++ ./gdb/rdi-share/unixcomm.c    2003-09-23 12:12:43.703125000 -0600
@@ -96,7 +96,15 @@
 #define PARPORT2   "/dev/par1"
 #endif
 
-#if defined(_WIN32) || defined (__CYGWIN__)
+#if defined (__CYGWIN__)
+#define SERIAL_PREFIX "/dev/com"
+#define SERPORT1   "/dev/com1"
+#define SERPORT2   "/dev/com2"
+#define PARPORT1   "lpt1"
+#define PARPORT2   "lpt2"
+#endif
+
+#if defined(_WIN32)
 #define SERIAL_PREFIX "com"
 #define SERPORT1   "com1"
 #define SERPORT2   "com2"
@@ -154,6 +162,32 @@
   }
   if (strcmp(name, "2") == 0) return SERPORT2;
 
+  #if defined (__CYGWIN__)
+
+  /* allow Linux "/dev/ttyS*" names too */
+  if (strncmp(name, "/dev/ttyS", 9) == 0) return name;
+
+  /* allow Windows "com*" names too */
+  {
+    static const char *const real_name[] = {
+        SERIAL_PREFIX "0",
+        SERIAL_PREFIX "1",
+        SERIAL_PREFIX "2",
+        SERIAL_PREFIX "3",
+        SERIAL_PREFIX "4",
+        SERIAL_PREFIX "5",
+        SERIAL_PREFIX "6",
+        SERIAL_PREFIX "7",
+        SERIAL_PREFIX "8",
+        SERIAL_PREFIX "9",
+        };
+    if (strlen(name) == 4 && strncmp(name, "com", 3) == 0 &&
+        '0' <= name[3] && name[3] <= '9')
+      return real_name[name[3] - '0'];
+  }
+
+  #endif
+
   /* It wasn't one of the simple cases, so now we have to parse it
    * properly
    */



More information about the Gdb-patches mailing list