From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7980 invoked by alias); 11 Mar 2005 02:26:58 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 7839 invoked from network); 11 Mar 2005 02:26:46 -0000 Received: from unknown (HELO lakermmtao07.cox.net) (68.230.240.32) by sourceware.org with SMTP; 11 Mar 2005 02:26:46 -0000 Received: from white ([68.9.64.121]) by lakermmtao07.cox.net (InterMail vM.6.01.04.00 201-2131-118-20041027) with ESMTP id <20050311022641.RBLU19214.lakermmtao07.cox.net@white>; Thu, 10 Mar 2005 21:26:41 -0500 Received: from bob by white with local (Exim 3.35 #1 (Debian)) id 1D9ZrQ-00043C-00; Thu, 10 Mar 2005 21:26:44 -0500 Date: Fri, 11 Mar 2005 02:26:00 -0000 From: Bob Rossi To: Andrew Cagney , gdb-patches@sources.redhat.com Subject: Re: mi tty commands Message-ID: <20050311022644.GA15563@white> Mail-Followup-To: Andrew Cagney , gdb-patches@sources.redhat.com References: <20050224203535.GA19967@white> <01c51b79$Blat.v2.4$4089e9a0@zahav.net.il> <20050225211911.GA21363@white> <20050225212201.GA3592@nevyn.them.org> <20050228162003.GA27783@white> <20050302025219.GA29948@white> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20050302025219.GA29948@white> User-Agent: Mutt/1.3.28i X-SW-Source: 2005-03/txt/msg00181.txt.bz2 Ping Bob Rossi On Tue, Mar 01, 2005 at 09:52:19PM -0500, Bob Rossi wrote: > Ping > > Hi Andrew, > > I know this patch hasn't been posted long, but I was hoping to get a > speedy review. I've got another patch that depends on this, and once > that is in, another patch that depends on that. Maybe more. > > Thanks, > Bob Rossi > > On Mon, Feb 28, 2005 at 11:20:03AM -0500, Bob Rossi wrote: > > On Fri, Feb 25, 2005 at 04:22:02PM -0500, Daniel Jacobowitz wrote: > > > On Fri, Feb 25, 2005 at 04:19:11PM -0500, Bob Rossi wrote: > > > > On Fri, Feb 25, 2005 at 10:32:21PM +0200, Eli Zaretskii wrote: > > > > > > Date: Thu, 24 Feb 2005 15:35:35 -0500 > > > > > > From: Bob Rossi > > > > > > > > > > > > What doco needs to be done for this? > > > > > > > > > > Any new MI commands should be documented in gdb.texinfo. > > > > > > > > Is everyone happy with these commands? or should I remove them, and make > > > > an interface to the set/show CLI commands (which would access the same > > > > data)? > > > > > > No, I think individual MI commands is a much better idea. There's too > > > much historical baggage in the CLI's set/show, and MI is not supposed > > > to depend on the CLI. > > > > OK, here is an updated patch with doco. > > > > Index: src/gdb/ChangeLog > > + * fork-child.c (fork-inferior): Use accessor function for > > + inferior_io_terminal > > + * infcmd.c (inferior_io_terminal): make static > > + (set_inferior_io_terminal): Add accessor definition > > + (get_inferior_io_terminal): Add accessor definition > > + (tty_command): Use accessor function > > + (_initialize_infcmd): Add inferior_tty setshow variable > > + * inferior.h (set_inferior_io_terminal): Add accessor declaration > > + (get_inferior_io_terminal): Add accessor declaration > > + * nto-procfs (procfs_create_inferior): Use accessor function > > + * win32-nat.c (child_create_inferior): Use accessor function > > + * mi/mi-cmd-env.c (mi_cmd_inferior_tty_set): Add MI definition > > + (mi_cmd_inferior_tty_set): Add MI definition > > + * mi/mi-cmds.c (mi_cmds): Add inferior-tty-set/inferior-tty-show > > + * mi/mi-cmds.h (mi_cmd_inferior_tty_set): Add prototype > > + (mi_cmd_inferior_tty_show): Add prototype > > > > Index: src/gdb/doc/ChangeLog > > +2005-02-28 Bob Rossi > > + > > + * gdb.texinfo (GDB/MI Miscellaneous Commands): Add '-inferior-tty-set' > > + (GDB/MI Miscellaneous Commands): Add '-inferior-tty-show' > > > > Index: src/gdb/testsuite/ChangeLog > > +2005-02-28 Bob Rossi > > + > > + * gdb.mi/mi-basics.exp (test_setshow_inferior_tty): Test MI tty > > + command > > > > > > Thanks, > > Bob Rossi > > > > Index: src/gdb/fork-child.c > > =================================================================== > > RCS file: /cvs/src/src/gdb/fork-child.c,v > > retrieving revision 1.25 > > diff -w -u -r1.25 fork-child.c > > --- src/gdb/fork-child.c 11 Feb 2005 18:13:49 -0000 1.25 > > +++ src/gdb/fork-child.c 28 Feb 2005 16:11:43 -0000 > > @@ -137,6 +137,7 @@ > > char **save_our_env; > > int shell = 0; > > static char **argv; > > + const char *inferior_io_terminal = get_inferior_io_terminal(); > > > > /* If no exec file handed to us, get it from the exec-file command > > -- with a good, common error message if none is specified. */ > > @@ -260,7 +261,7 @@ > > > > /* Tell the terminal handling subsystem what tty we plan to run on; > > it will just record the information for later. */ > > - new_tty_prefork (inferior_io_terminal); > > + new_tty_prefork ((char*)inferior_io_terminal); > > > > /* It is generally good practice to flush any possible pending stdio > > output prior to doing a fork, to avoid the possibility of both > > Index: src/gdb/infcmd.c > > =================================================================== > > RCS file: /cvs/src/src/gdb/infcmd.c,v > > retrieving revision 1.134 > > diff -w -u -r1.134 infcmd.c > > --- src/gdb/infcmd.c 21 Feb 2005 03:25:56 -0000 1.134 > > +++ src/gdb/infcmd.c 28 Feb 2005 16:11:44 -0000 > > @@ -135,7 +135,7 @@ > > > > /* File name for default use for standard in/out in the inferior. */ > > > > -char *inferior_io_terminal; > > +static char *inferior_io_terminal; > > > > /* Pid of our debugged inferior, or 0 if no inferior now. > > Since various parts of infrun.c test this to see whether there is a program > > @@ -202,6 +202,24 @@ > > > > /* Accessor routines. */ > > > > +void > > +set_inferior_io_terminal (char *terminal_name) > > +{ > > + if (inferior_io_terminal) > > + xfree ( inferior_io_terminal ); > > + > > + if (!terminal_name) > > + inferior_io_terminal = NULL; > > + else > > + inferior_io_terminal = savestring (terminal_name, strlen (terminal_name)); > > +} > > + > > +const char * > > +get_inferior_io_terminal (void) > > +{ > > + return inferior_io_terminal; > > +} > > + > > char * > > get_inferior_args (void) > > { > > @@ -375,7 +393,7 @@ > > if (file == 0) > > error_no_arg (_("terminal name for running target process")); > > > > - inferior_io_terminal = savestring (file, strlen (file)); > > + set_inferior_io_terminal (file); > > } > > > > /* Kill the inferior if already running. This function is designed > > @@ -1982,6 +2000,14 @@ > > _("Set terminal for future runs of program being debugged.")); > > set_cmd_completer (c, filename_completer); > > > > + /* add the filename of the terminal connected to inferior I/O */ > > + add_setshow_string_noescape_cmd ( "inferior_tty", class_run, > > + &inferior_io_terminal, _("\ > > +Set terminal for future runs of program being debugged."), _("\ > > +Show terminal for future runs of program being debugged."), _("\ > > +Usage: set inferior_tty /dev/pts/1"), NULL, NULL, &setlist, &showlist); > > + set_cmd_completer (c, filename_completer); > > + > > add_setshow_optional_filename_cmd ("args", class_run, > > &inferior_args, _("\ > > Set argument list to give program being debugged when it is started."), _("\ > > Index: src/gdb/inferior.h > > =================================================================== > > RCS file: /cvs/src/src/gdb/inferior.h,v > > retrieving revision 1.69 > > diff -w -u -r1.69 inferior.h > > --- src/gdb/inferior.h 12 Sep 2004 15:05:05 -0000 1.69 > > +++ src/gdb/inferior.h 28 Feb 2005 16:11:44 -0000 > > @@ -102,9 +102,10 @@ > > > > extern void clear_sigio_trap (void); > > > > -/* File name for default use for standard in/out in the inferior. */ > > +/* Set/Get name for default use for standard in/out in the inferior. */ > > > > -extern char *inferior_io_terminal; > > +extern void set_inferior_io_terminal (char *terminal_name); > > +extern const char *get_inferior_io_terminal (void); > > > > /* Collected pid, tid, etc. of the debugged inferior. When there's > > no inferior, PIDGET (inferior_ptid) will be 0. */ > > Index: src/gdb/nto-procfs.c > > =================================================================== > > RCS file: /cvs/src/src/gdb/nto-procfs.c,v > > retrieving revision 1.13 > > diff -w -u -r1.13 nto-procfs.c > > --- src/gdb/nto-procfs.c 15 Feb 2005 15:49:14 -0000 1.13 > > +++ src/gdb/nto-procfs.c 28 Feb 2005 16:11:45 -0000 > > @@ -984,6 +984,7 @@ > > char *in = "", *out = "", *err = ""; > > int fd, fds[3]; > > sigset_t set; > > + const char *inferior_io_terminal = get_inferior_io_terminal(); > > > > argv = xmalloc (((strlen (allargs) + 1) / (unsigned) 2 + 2) * > > sizeof (*argv)); > > @@ -1010,11 +1011,11 @@ > > if (inferior_io_terminal) > > { > > if (!in[0]) > > - in = inferior_io_terminal; > > + in = (char*)inferior_io_terminal; > > if (!out[0]) > > - out = inferior_io_terminal; > > + out = (char*)inferior_io_terminal; > > if (!err[0]) > > - err = inferior_io_terminal; > > + err = (char*)inferior_io_terminal; > > } > > > > if (in[0]) > > Index: src/gdb/win32-nat.c > > =================================================================== > > RCS file: /cvs/src/src/gdb/win32-nat.c,v > > retrieving revision 1.108 > > diff -w -u -r1.108 win32-nat.c > > --- src/gdb/win32-nat.c 18 Feb 2005 15:25:31 -0000 1.108 > > +++ src/gdb/win32-nat.c 28 Feb 2005 16:11:46 -0000 > > @@ -1725,6 +1725,7 @@ > > const char *sh; > > int tty; > > int ostdin, ostdout, ostderr; > > + const char *inferior_io_terminal = get_inferior_io_terminal(); > > > > if (!exec_file) > > error (_("No executable specified, use `target exec'.")); > > Index: src/gdb/doc/gdb.texinfo > > =================================================================== > > RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v > > retrieving revision 1.232 > > diff -w -u -r1.232 gdb.texinfo > > --- src/gdb/doc/gdb.texinfo 9 Feb 2005 19:06:08 -0000 1.232 > > +++ src/gdb/doc/gdb.texinfo 28 Feb 2005 16:12:01 -0000 > > @@ -17525,6 +17525,57 @@ > > (@value{GDBP}) > > @end smallexample > > > > +@subheading The @code{-inferior-tty-set} Command > > +@findex -inferior-tty-set > > + > > +@subheading Synopsis > > + > > +@smallexample > > +-inferior-tty-set /dev/pts/1 > > +@end smallexample > > + > > +Set terminal for future runs of program being debugged. > > + > > +@subheading @value{GDBN} Command > > + > > +The corresponding @value{GDBN} command is @samp{set inferior_tty /dev/pts/1}. > > + > > +@subheading Example > > + > > +@smallexample > > +(@value{GDBP}) > > +-inferior-tty-set /dev/pts/1 > > +^done > > +(@value{GDBP}) > > +@end smallexample > > + > > +@subheading The @code{-inferior-tty-show} Command > > +@findex -inferior-tty-show > > + > > +@subheading Synopsis > > + > > +@smallexample > > +-inferior-tty-show > > +@end smallexample > > + > > +Show terminal for future runs of program being debugged. > > + > > +@subheading @value{GDBN} Command > > + > > +The corresponding @value{GDBN} command is @samp{show inferior_tty /dev/pts/1}. > > + > > +@subheading Example > > + > > +@smallexample > > +(@value{GDBP}) > > +-inferior-tty-set /dev/pts/1 > > +^done > > +(@value{GDBP}) > > +-inferior-tty-show > > +^done,inferior_tty_terminal="/dev/pts/1" > > +(@value{GDBP}) > > +@end smallexample > > + > > @ignore > > @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% > > @node GDB/MI Kod Commands > > Index: src/gdb/mi/mi-cmd-env.c > > =================================================================== > > RCS file: /cvs/src/src/gdb/mi/mi-cmd-env.c,v > > retrieving revision 1.8 > > diff -w -u -r1.8 mi-cmd-env.c > > --- src/gdb/mi/mi-cmd-env.c 11 Feb 2005 04:06:11 -0000 1.8 > > +++ src/gdb/mi/mi-cmd-env.c 28 Feb 2005 16:12:01 -0000 > > @@ -244,6 +244,30 @@ > > return MI_CMD_DONE; > > } > > > > +/* Set the inferior terminal device name */ > > +enum mi_cmd_result > > +mi_cmd_inferior_tty_set(char *command, char **argv, int argc) > > +{ > > + set_inferior_io_terminal (argv[0]); > > + > > + return MI_CMD_DONE; > > +} > > + > > +/* Print the inferior terminal device name */ > > +enum mi_cmd_result > > +mi_cmd_inferior_tty_show(char *command, char **argv, int argc) > > +{ > > + const char *inferior_io_terminal = get_inferior_io_terminal (); > > + > > + if ( !mi_valid_noargs("mi_cmd_inferior_tty_show", argc, argv) ) > > + error (_("mi_cmd_inferior_tty_show: Usage: No args")); > > + > > + if (inferior_io_terminal) > > + ui_out_field_string (uiout, "inferior_tty_terminal", inferior_io_terminal); > > + > > + return MI_CMD_DONE; > > +} > > + > > void > > _initialize_mi_cmd_env (void) > > { > > Index: src/gdb/mi/mi-cmds.c > > =================================================================== > > RCS file: /cvs/src/src/gdb/mi/mi-cmds.c,v > > retrieving revision 1.16 > > diff -w -u -r1.16 mi-cmds.c > > --- src/gdb/mi/mi-cmds.c 11 Feb 2005 18:13:55 -0000 1.16 > > +++ src/gdb/mi/mi-cmds.c 28 Feb 2005 16:12:01 -0000 > > @@ -153,6 +153,8 @@ > > { "trace-save", { NULL, 0 }, NULL, NULL }, > > { "trace-start", { NULL, 0 }, NULL, NULL }, > > { "trace-stop", { NULL, 0 }, NULL, NULL }, > > + { "inferior-tty-set", { NULL, 0 }, NULL, mi_cmd_inferior_tty_set }, > > + { "inferior-tty-show", { NULL, 0 }, NULL, mi_cmd_inferior_tty_show }, > > { "var-assign", { NULL, 0 }, 0, mi_cmd_var_assign}, > > { "var-create", { NULL, 0 }, 0, mi_cmd_var_create}, > > { "var-delete", { NULL, 0 }, 0, mi_cmd_var_delete}, > > Index: src/gdb/mi/mi-cmds.h > > =================================================================== > > RCS file: /cvs/src/src/gdb/mi/mi-cmds.h,v > > retrieving revision 1.15 > > diff -w -u -r1.15 mi-cmds.h > > --- src/gdb/mi/mi-cmds.h 13 Jan 2005 22:08:27 -0000 1.15 > > +++ src/gdb/mi/mi-cmds.h 28 Feb 2005 16:12:01 -0000 > > @@ -96,6 +96,8 @@ > > extern mi_cmd_args_ftype mi_cmd_target_select; > > extern mi_cmd_argv_ftype mi_cmd_thread_list_ids; > > extern mi_cmd_argv_ftype mi_cmd_thread_select; > > +extern mi_cmd_argv_ftype mi_cmd_inferior_tty_set; > > +extern mi_cmd_argv_ftype mi_cmd_inferior_tty_show; > > extern mi_cmd_argv_ftype mi_cmd_var_assign; > > extern mi_cmd_argv_ftype mi_cmd_var_create; > > extern mi_cmd_argv_ftype mi_cmd_var_delete; > > Index: src/gdb/testsuite/gdb.mi/mi-basics.exp > > =================================================================== > > RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-basics.exp,v > > retrieving revision 1.9 > > diff -w -u -r1.9 mi-basics.exp > > --- src/gdb/testsuite/gdb.mi/mi-basics.exp 9 Aug 2004 16:32:44 -0000 1.9 > > +++ src/gdb/testsuite/gdb.mi/mi-basics.exp 28 Feb 2005 16:12:09 -0000 > > @@ -236,12 +236,41 @@ > > > > } > > > > +proc test_setshow_inferior_tty {} { > > + global mi_gdb_prompt > > + > > + # test that the commands, > > + # -inferior-tty-set > > + # -inferior-tth-show > > + > > + mi_gdb_test "301-inferior-tty-show" \ > > + "301\\\^done" \ > > + "initial tty is empty" > > + > > + mi_gdb_test "302-inferior-tty-set /dev/pts/1" \ > > + "302\\\^done" \ > > + "set tty to /dev/pts/1" > > + > > + mi_gdb_test "303-inferior-tty-show" \ > > + "303\\\^done,inferior_tty_terminal=\"/dev/pts/1\"" \ > > + "tty was set correctly" > > + > > + mi_gdb_test "304-inferior-tty-set" \ > > + "304\\\^done" \ > > + "set tty to the empty string" > > + > > + mi_gdb_test "305-inferior-tty-show" \ > > + "305\\\^done" \ > > + "final tty is empty" > > +} > > + > > if [test_mi_interpreter_selection] { > > test_exec_and_symbol_mi_operatons > > test_breakpoints_deletion > > test_dir_specification > > test_cwd_specification > > test_path_specification > > + test_setshow_inferior_tty > > } > > > > mi_gdb_exit