Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: "Alain Magloire" <alain@qnx.com>
To: bob@brasko.net (Bob Rossi)
Cc: alain@qnx.com (Alain Magloire), cagney@gnu.org (Andrew Cagney),
	nickrob@snap.net.nz (Nick Roberts),
	gdb-patches@sources.redhat.com
Subject: Re: MI testsuite improvements
Date: Tue, 01 Mar 2005 19:24:00 -0000	[thread overview]
Message-ID: <200503011924.OAA08836@smtp.ott.qnx.com> (raw)
In-Reply-To: <20050301151343.GA29106@white> from "Bob Rossi" at Mar 01, 2005 10:13:43 AM

> 
> On Mon, Feb 28, 2005 at 09:40:37PM -0500, Bob Rossi wrote:
> > > > >    - The second idea was to have GDB internally create a pty. That would
> > > > >      result in a master and slave side. Neither of these are important,
> > > > >      AFAIK, only the slavename (file name of the terminal created, 
> > > > >      ie. /dev/pts/1) is important. For example, here is what could
> > > > >      happen
> > > > >       1. The user asks GDB to open a new pty and the name is given back
> > > > >       -mi-create-pty
> > > > >       /dev/pts/1
> > > > >       2. The user asks GDB to use that pty for the inferior
> > > > >       -mi-set-tty /dev/pts/1
> > > > >       3. The user opens /dev/pts/1 in there own program to read the
> > > > >       output of the inferior.
> > > > >       4. The user asks GDB to close the device
> > > > >       -mi-destroy-pty /dev/pts/1
> > > > > 
> > > > > Either way, it will probably be a while before I have time to work on
> > > > > the second task, since I'm already swamped trying to validate the MI
> > > > > testsuite with a syntax checker and changing the grammar to match
> > > > > what GDB actually outputs.
> > > 
> > > This is not clear to me ... one more scenario so you can see
> > > from my point of view 8-)
> > > 
> > > As you pointed out, when creating the pseudo pty
> > > we have a master and slave side and both should be important :
> > > 	(gdb) -mi-create-pty
> > > 	^done,pty={master="/dev/ptyp0",slave="/dev/ptyTf"}
> > > 	(gdb)
> > > 
> > > The master is given to gdb to set std{in,out,err} of the inferior after forking
> > > 	(gdb) -mi-set-tty /dev/ptyp0
> > > 	^done
> > > 	(gdb) -exec-run
> > > 	^running
> > 
> > I didn't even know you could get a device name for the master side. If
> > you have the master fd, you can get the slave name via ptsname, how do
> > you get the master device name?
> > 
> > > And the slave is use internally by the front end to read/write when
> > > communicating with the inferior.
> > 
> > I have been giving GDB the slave name for the inferior program. Then I
> > also internally read/write using the slave name. Is this wrong? Why are
> > we using different methods?
> 
> Please forgive me, I re-thought this.
> 
> I get a master fd, a slave fd and a slave device name when I open a new
> pty. I give the slavename to GDB to initialize the inferior. Then, I
> read/write from the master fd. Thus, using both sides of the pty.
> 
> I don't know how to get the master device name, is this possible? 
> 

sigh ... I think it is platform dependent.
For BSD style, it used to be
master: /dev/ptyXY
slave: /dev/ttyXY

meaning the same name except 'p' was change to 't'.

There is a ttyname(3c) but I do not think it works as expected i.e.
it will not return the master name if you do:
  ttyname(fd_master);

> One problem is, you give the master device name to GDB for the inferior,
> I give the slave device name. So, we are using the terminal device in
> different directions from the inferior's point of view. This is probably 
> not OK. Any ideas or opinion on this?
> 

Sorry my confusion, I give gdb the slave pty.

> For instance, I think the terminal semantics is between the slave side and
> the process (inferior) talking to the slave. I think that if the inferior did a
> terminal operation on the slave side, things would act differently than
> if it did a terminal operation on the master side. Or a different
> example, if you send '^u' as the inferior, to the slave side of a pty,
> then I would expect all data on the line to be erased, and data would start 
> again at the beggining of the line. However, if the inferior was
> attached to the master side of the pty, I wouldn't expect this to work.
> 
> Am I confused here?
> 

No.

But even if you do not get the master pty name,  this is still usefull for a few reason:

- some programs need, to work correctly, a tty as the input.
- since gdb knows when an output comes from the inferior, you could
  wrap any reads coming from the master_fd in an MI Target Stream

	  * TARGET-STREAM-OUTPUT is the output produced by the target program.
	    All the target output is prefixed by `@'.
  @"Hello worl\n"

This will still help the frontend, one of the major problem, was inferior
outputs were mixed with normal mi outputs.



      reply	other threads:[~2005-03-01 19:24 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-02-10 15:43 Bob Rossi
2005-02-10 17:43 ` Andrew Cagney
2005-02-10 18:16   ` Bob Rossi
2005-02-10 19:58     ` Andrew Cagney
2005-02-10 23:34       ` Bob Rossi
2005-02-11  4:01         ` Andrew Cagney
2005-02-11 19:07           ` Bob Rossi
2005-02-12  3:13             ` Andrew Cagney
2005-02-12 10:59               ` Bob Rossi
2005-02-15 15:07                 ` Bob Rossi
2005-02-16 20:03                   ` Andrew Cagney
2005-02-17  0:28                     ` Bob Rossi
2005-02-17 13:51                       ` Daniel Jacobowitz
2005-02-17 16:58                       ` Andrew Cagney
2005-02-17 20:09                         ` Alain Magloire
     [not found]                         ` <200502171658.LAA02386@smtp.ott.qnx.com>
2005-02-18  2:46                           ` Bob Rossi
2005-02-18 12:10                         ` Nick Roberts
2005-02-18 19:51                         ` Bob Rossi
2005-02-18 21:05                           ` Alain Magloire
2005-02-19 23:51                             ` Bob Rossi
2005-02-21  2:12                               ` Andrew Cagney
2005-02-22 23:24                                 ` Alain Magloire
     [not found]                                 ` <200502221635.LAA07270@smtp.ott.qnx.com>
2005-03-01  2:40                                   ` Bob Rossi
2005-03-01 15:14                                     ` Bob Rossi
2005-03-01 19:24                                       ` Alain Magloire [this message]

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=200503011924.OAA08836@smtp.ott.qnx.com \
    --to=alain@qnx.com \
    --cc=bob@brasko.net \
    --cc=cagney@gnu.org \
    --cc=gdb-patches@sources.redhat.com \
    --cc=nickrob@snap.net.nz \
    /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