public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
* Re: Problem with COM1 port from with GDB 5.3 under Cygwin 1.5.3-1
@ 2003-09-23 19:07 Creighton MacDonnell
  2003-09-24  5:24 ` Eli Zaretskii
  0 siblings, 1 reply; 7+ messages in thread
From: Creighton MacDonnell @ 2003-09-23 19:07 UTC (permalink / raw)
  To: gdb-patches; +Cc: gdb

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
    */

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2003-09-25  4:46 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-09-23 19:07 Problem with COM1 port from with GDB 5.3 under Cygwin 1.5.3-1 Creighton MacDonnell
2003-09-24  5:24 ` Eli Zaretskii
2003-09-24 18:09   ` Problem with COM1 port with GDB 5.3 under Cygwin 1.5.* Creighton MacDonnell
2003-09-24 18:12     ` Eli Zaretskii
2003-09-24 20:03       ` Problem with COM1 port with GDB 5.3 under cygwin 1.5.* Christopher Faylor
2003-09-25  4:46         ` Eli Zaretskii
2003-09-24 18:12   ` Problem with COM1 port from with GDB 5.3 under cygwin 1.5.3-1 Christopher Faylor

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).