This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: MI testsuite improvements


> > Hi Alain,
> > 

Bonjour,

> > There are 2 different ideas being suggested, 
> >    - To create an mi command, that does the same thing as the console
> >      'tty' command, and each of these internally can be wrappers around
> >      some data that can be accessed with GDB's set/show mechanism. For
> >      example,
> >         -mi-set-tty /dev/pts/1 (mi command)
> >         tty /dev/pts/1         (console command)
> >         set tty /dev/pts/1     (set command)
> 
> and I belive:
> 	set tty
> I need to confirm it but it appears that there's an ``optional 
> filename'' class of variable (grep for filename_completer in the sources).
> 
> If the last is implemented, an existing MI command should already let 
> you set/show the variable.


Ok, so far.

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

And the slave is use internally by the front end to read/write when
communicating with the inferior.

TTY is good for a few things:
 - allow to separate the inferior stream from the mi protocol
 - some programs need a real pty to work i.e. passwd, ...
 - correct behaviour of buffering, stdio will be line buffer
   we have a lot of PR from folks asking after doing a next on
	printf("print this\n");
   why is the pring not showing up.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]