Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <pedro_alves@portugalmail.pt>
To: Pierre Muller <muller@ics.u-strasbg.fr>
Cc: gdb-patches@sourceware.org
Subject: Re: [RFC] gdb/testsuite/gdb.base/fileio.exp patch for cygwin
Date: Tue, 04 Dec 2007 23:50:00 -0000	[thread overview]
Message-ID: <4755E78F.7000301@portugalmail.pt> (raw)
In-Reply-To: <000101c83593$89c0fcd0$9d42f670$@u-strasbg.fr>

[-- Attachment #1: Type: text/plain, Size: 2886 bytes --]

Pierre Muller wrote:
> I tried to expose some cygwin testsuite problems
> related to the fact that dejagnu does not seem
> to be able to fool the cygwin system, to
> get it to believe that the output is not redirected.
> 
> http://sourceware.org/ml/gdb/2007-11/msg00273.html
> 
>   The main effect is that, Cygwin knowing that 
> the output is redirected to a non-tty, it will start
> to use file buffering that will interact badly
> with the expectation of the gdb testsuite.
> 

I don't think that dejagnu is to blame here, and
I believe the individual testfiles are the wrong place
to fix this.  You can easily reproduce the symptoms
in any run.  Try this with the attached patch:

#include <stdio.h>
#include <stdlib.h>

int main ()
{
         printf ("isatty 0 = %d\n", isatty (0));
         printf ("isatty 1 = %d\n", isatty (1));
         printf ("isatty 2 = %d\n", isatty (2));
         return 0;
}


--------------------

Cygwin host:

 >./main.exe
isatty 0 = 1
isatty 1 = 1
isatty 2 = 1

 >gdb main.exe
isatty (0) = 1
isatty (1) = 1
isatty (2) = 1
ttyname (0) = /dev/tty2
ttyname (1) = /dev/tty2
ttyname (2) = /dev/tty2
GNU gdb 6.7.50.20071201-cvs
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-cygwin"...
(gdb) r
Starting program: /home/pedro/isatty/main.exe
isatty 0 = 0
isatty 1 = 0
isatty 2 = 0

Program exited normally.
(gdb)


Notice the "isatty $x = 0", and contrast
with:

-------------

Linux host:

 >./main
isatty 0 = 1
isatty 1 = 1
isatty 2 = 1

 >gdb ./main
isatty (0) = 1
isatty (1) = 1
isatty (2) = 1
ttyname (0) = /dev/pts/5
ttyname (1) = /dev/pts/5
ttyname (2) = /dev/pts/5
GNU gdb 6.7.50.20071204-cvs
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...
(gdb) r
Starting program: /home/pedro/isatty/main
isatty 0 = 1
isatty 1 = 1
isatty 2 = 1

Program exited normally.
(gdb)

-------------

I don't know enough of the Cygwin tty support,
but I would expect that if gdb had a (Windows) console
attached (bash started from cmd.exe, not the xterm or rxvt),
the inferior would inherit it, and the runtime would arrange
for the isatty to be true, but that doesn't seem to hold.
Neither CYGWIN=tty nor 'set new-group 0' seemed to help.
This probably has something to do with starting the inferior
with CreateProcess in win32-nat.c:win32_create_inferior.

-- 
Pedro Alves


[-- Attachment #2: isatty.diff --]
[-- Type: text/x-diff, Size: 823 bytes --]

---
 gdb/main.c |    8 ++++++++
 1 file changed, 8 insertions(+)

Index: src/gdb/main.c
===================================================================
--- src.orig/gdb/main.c	2007-12-04 23:21:10.000000000 +0000
+++ src/gdb/main.c	2007-12-04 23:23:22.000000000 +0000
@@ -875,6 +875,14 @@ extern int gdbtk_test (char *);
 int
 gdb_main (struct captured_main_args *args)
 {
+  printf ("isatty (0) = %d\n", isatty (0));
+  printf ("isatty (1) = %d\n", isatty (1));
+  printf ("isatty (2) = %d\n", isatty (2));
+
+  printf ("ttyname (0) = %s\n", ttyname (0));
+  printf ("ttyname (1) = %s\n", ttyname (1));
+  printf ("ttyname (2) = %s\n", ttyname (2));
+
   use_windows = args->use_windows;
   catch_errors (captured_main, args, "", RETURN_MASK_ALL);
   /* The only way to end up here is by an error (normal exit is







  reply	other threads:[~2007-12-04 23:50 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-12-03 10:02 Pierre Muller
2007-12-04 23:50 ` Pedro Alves [this message]
2007-12-05  9:22   ` Pierre Muller
2007-12-05 22:56     ` Pedro Alves
2007-12-05 12:17   ` Corinna Vinschen
2007-12-05 19:19     ` Eli Zaretskii
2007-12-05 23:01     ` Pedro Alves
2007-12-06  1:06       ` Daniel Jacobowitz
2007-12-06  3:42         ` Pedro Alves
2007-12-06  4:25           ` Pedro Alves
2007-12-06 11:21             ` Corinna Vinschen
2007-12-07 13:54               ` Christopher Faylor

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4755E78F.7000301@portugalmail.pt \
    --to=pedro_alves@portugalmail.pt \
    --cc=gdb-patches@sourceware.org \
    --cc=muller@ics.u-strasbg.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox