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

* Re: Problem with COM1 port from with GDB 5.3 under Cygwin 1.5.3-1
  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   ` Problem with COM1 port from with GDB 5.3 under cygwin 1.5.3-1 Christopher Faylor
  0 siblings, 2 replies; 7+ messages in thread
From: Eli Zaretskii @ 2003-09-24  5:24 UTC (permalink / raw)
  To: Creighton MacDonnell; +Cc: gdb-patches, gdb

> Date: Tue, 23 Sep 2003 13:07:32 -0600
> From: Creighton MacDonnell <creighton@macdonnell.ca>
> 
> 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 Cygwin wants /dev/com1 instead of com1, are you sure it won't want
/dev/lpt1 instead of lpt1 as well?

Anyway, is this a Cygwin bug or what?  IIRC, Windows supports both
com1 and /dev/com1, so why doesn't Cygwin do that as well?

Also, what happens with versions of Cygwin other than 1.5.x?  Could
they be broken by this change?

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

* Re: Problem with COM1 port with GDB 5.3 under Cygwin 1.5.*
  2003-09-24  5:24 ` Eli Zaretskii
@ 2003-09-24 18:09   ` Creighton MacDonnell
  2003-09-24 18:12     ` Eli Zaretskii
  2003-09-24 18:12   ` Problem with COM1 port from with GDB 5.3 under cygwin 1.5.3-1 Christopher Faylor
  1 sibling, 1 reply; 7+ messages in thread
From: Creighton MacDonnell @ 2003-09-24 18:09 UTC (permalink / raw)
  To: gdb-patches; +Cc: gdb

I hope CC-ing gdb@sources.redhat.com is the correct thing to do for 
these posts.

I have inserted comments.

Eli Zaretskii wrote:

>>Date: Tue, 23 Sep 2003 13:07:32 -0600
>>From: Creighton MacDonnell <creighton@macdonnell.ca>
>>
>>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.
>>    
>>
>If Cygwin wants /dev/com1 instead of com1, are you sure it won't want
>/dev/lpt1 instead of lpt1 as well?
>
Under either Cygwin 1.3.* or Cygwin 1.5.*:

$ ls -l /dev/lpt1
ls: /dev/lpt1: No such file or directory
$ ls -l /dev/lpt2
ls: /dev/lpt2: No such file or directory
$ ls -l lpt1
----------    0 ???????? ????????        0 Dec 31  1969 lpt1
$ ls -l lpt2
----------    1 ???????? ????????        0 Dec 31  1969 lpt2

So it would have to be "lpt1" and "lpt2" if anything.

The Cygwin user guide seems to say that you should be able to use the 
standard DOS device names from Cygwin scripts.

I doubt frankly that the parallel port would work under the current 
1.5.* version or the former 1.3.* version.

I left this as it was, since there was no obvious alternative.

>Anyway, is this a Cygwin bug or what?  IIRC, Windows supports both
>com1 and /dev/com1, so why doesn't Cygwin do that as well?
>
The Cygwin user guide says very clearly  it should (no explicit mention 
of "lpt?" though), and under 1.3.* it did.

Under Cygwin 1.3.*:

$ ls -l /dev/com1
crw-rw-rw-    1 0        0          7,   0 Sep 24 10:18 /dev/com1
$ ls -l /dev/com2
crw-rw-rw-    1 0        0          7,   0 Sep 24 10:18 /dev/com2
$ ls -l com1
crw-rw-rw-    1 0        0          7,   0 Sep 24 10:18 com1
$ ls -l com2
crw-rw-rw-    1 0        0          7,   0 Sep 24 10:19 com2
$ ls -l /dev/ttyS0
crw-rw-rw-    1 0        0          7,   0 Sep 24 10:19 /dev/ttyS0
$ ls -l /dev/ttyS1
crw-rw-rw-    1 0        0          7,   0 Sep 24 10:19 /dev/ttyS1

Under Cygwin 1.5.*:

$ ls -l /dev/com1
crw-rw-rw-    1 default  None       7,   0 Sep 24 10:21 /dev/com1
$ ls -l /dev/com2
crw-rw-rw-    1 default  None       7,   0 Sep 24 10:21 /dev/com2
$ ls -l com1
----------    0 ???????? ????????        0 Dec 31  1969 com1
$ ls -l com2
----------    0 ???????? ????????        0 Dec 31  1969 com2
$ ls -l /dev/ttyS0
crw-rw-rw-    1 default  None       7,   0 Sep 24 10:21 /dev/ttyS0
$ ls -l /dev/ttyS1
crw-rw-rw-    1 default  None       7,   0 Sep 24 10:21 /dev/ttyS1

This probably is a bug in Cygwin 1.5.*. But I would also like to be able 
to use "/dev/ttyS*" names for devices, for comptatibilty with Linux, 
which I also use. And this can only be achieved by changing GDB Also, I 
am already experienced compiling GDB (and the GNU cross development 
tools) in order to get tools that do exactly what I want. I have little 
interest in becoming a Cygwin internals guru.

Also, my sense (admittedly as a Cygwin outsider) is that the "/dev/*" 
names are likley to be better supported in future Cygwin releases. 
Perhaps it would be best for GDB to avoid the DOS device names, when 
there is an alternative.

>Also, what happens with versions of Cygwin other than 1.5.x?  Could
>they be broken by this change?
>
GDB 5.3 with my patch, compiled under Cygwin 1.3.*, will run without 
being recompiled under 1.5.* too.

Beyond that, I don't know. Is anyone on this list using older versions 
of Cygwin with "target rdi"?


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

* Re: Problem with COM1 port from with GDB 5.3 under cygwin 1.5.3-1
  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   ` Christopher Faylor
  1 sibling, 0 replies; 7+ messages in thread
From: Christopher Faylor @ 2003-09-24 18:12 UTC (permalink / raw)
  To: gdb-patches, gdb

On Wed, Sep 24, 2003 at 08:25:18AM +0200, Eli Zaretskii wrote:
>If Cygwin wants /dev/com1 instead of com1, are you sure it won't want
>/dev/lpt1 instead of lpt1 as well?

Not yet.  Eventually.

>Anyway, is this a Cygwin bug or what?  IIRC, Windows supports both
>com1 and /dev/com1, so why doesn't Cygwin do that as well?

Because cygwin now has the ability to create files called "com1",
just like UNIX.  The string "com1" does get passed on to the OS
but, as a guess, it looks like cygwin isn't doing anything special
with the name and doesn't recognize it as anything more than a file.

>Also, what happens with versions of Cygwin other than 1.5.x?  Could
>they be broken by this change?

This change should work fine with older versions.  I don't think I
have the authority to approve it, though.

cgf

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

* Re: Problem with COM1 port with GDB 5.3 under Cygwin 1.5.*
  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
  0 siblings, 1 reply; 7+ messages in thread
From: Eli Zaretskii @ 2003-09-24 18:12 UTC (permalink / raw)
  To: Creighton MacDonnell; +Cc: gdb-patches, gdb

> Date: Wed, 24 Sep 2003 10:34:48 -0600
> From: Creighton MacDonnell <creighton@macdonnell.ca>
> 
> >Also, what happens with versions of Cygwin other than 1.5.x?  Could
> >they be broken by this change?
> >
> GDB 5.3 with my patch, compiled under Cygwin 1.3.*, will run without 
> being recompiled under 1.5.* too.

Then I don't have any objections to this patch.  However, the Cygwin
port is not my responsibility in GDB maintenance, so you will have to
wait for Chris Faylor to approve this.

Thanks.

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

* Re: Problem with COM1 port with GDB 5.3 under cygwin 1.5.*
  2003-09-24 18:12     ` Eli Zaretskii
@ 2003-09-24 20:03       ` Christopher Faylor
  2003-09-25  4:46         ` Eli Zaretskii
  0 siblings, 1 reply; 7+ messages in thread
From: Christopher Faylor @ 2003-09-24 20:03 UTC (permalink / raw)
  To: gdb-patches, gdb

On Wed, Sep 24, 2003 at 08:14:06PM +0200, Eli Zaretskii wrote:
>> Date: Wed, 24 Sep 2003 10:34:48 -0600
>> From: Creighton MacDonnell <creighton@macdonnell.ca>
>> 
>> >Also, what happens with versions of Cygwin other than 1.5.x?  Could
>> >they be broken by this change?
>> >
>> GDB 5.3 with my patch, compiled under Cygwin 1.3.*, will run without 
>> being recompiled under 1.5.* too.
>
>Then I don't have any objections to this patch.  However, the Cygwin
>port is not my responsibility in GDB maintenance, so you will have to
>wait for Chris Faylor to approve this.

I already responded that I don't believe I have the authority to
approve changes to this file.

cgf

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

* Re: Problem with COM1 port with GDB 5.3 under cygwin 1.5.*
  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
  0 siblings, 0 replies; 7+ messages in thread
From: Eli Zaretskii @ 2003-09-25  4:46 UTC (permalink / raw)
  To: Christopher Faylor; +Cc: gdb-patches, gdb

> Date: Wed, 24 Sep 2003 16:02:57 -0400
> From: Christopher Faylor <cgf@redhat.com>
> 
> I already responded that I don't believe I have the authority to
> approve changes to this file.

Sorry, I didn't see your mail when I wrote mine.

^ 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).