Index: gdb/ChangeLog

+2005-07-06  Bob Rossi  <bob@brasko.net>
+
+	* fork-child.c (fork-inferior): Use accessor function for
+	inferior_io_terminal.
+	* infcmd.c (inferior_io_terminal): Make static.
+	(set_inferior_io_terminal): New function.
+	(get_inferior_io_terminal): Ditto.
+	(tty_command): Use accessor function.
+	(_initialize_infcmd): Add inferior_tty setshow variable.
+	(_initialize_infcmd): Remove tty command.
+	(_initialize_infcmd): Add a tty command that is an alias.
+	* inferior.h (set_inferior_io_terminal): New prototype.
+	(get_inferior_io_terminal): Ditto.
+	(new_tty_prefork): Add const qualifier to parameter.
+	* inflow.c (inferior_thisrun_terminal): Add const qualifier.
+	(new_tty_prefork): Add const qualifier to parameter.
+	* nto-procfs (procfs_create_inferior): Use accessor function.
+	(procfs_create_inferior): Add const qualifier to locals.
+	* win32-nat.c (child_create_inferior): Ditto.
+	* mi/mi-cmd-env.c (mi_cmd_inferior_tty_set): New function.
+	(mi_cmd_inferior_tty_set): Ditto.
+	* mi/mi-cmds.c (mi_cmds): Add inferior-tty-set and inferior-tty-show
+	* mi/mi-cmds.h (mi_cmd_inferior_tty_set): Add prototype.
+	(mi_cmd_inferior_tty_show): Ditto.

Index: gdb/doc/ChangeLog
+2005-07-06  Bob Rossi  <bob@brasko.net>
+
+	* gdb.texinfo (GDB/MI Miscellaneous Commands): Add -inferior-tty-set
+	and -inferior-tty-show.
+	(Input/Output): Document "set/show inferior-tty" and tty alias.

Index: gdb/testsuite/ChangeLog
+2005-07-06  Bob Rossi  <bob@brasko.net>
+
+	* gdb.mi/mi-basics.exp (test_setshow_inferior_tty): Test MI tty
+	command.
+	(Copyright): Update copyright.
This commit is contained in:
Bob Rossi 2005-07-06 14:54:37 +00:00
parent 5cf2e3f01e
commit 3cb3b8dfd1
15 changed files with 204 additions and 14 deletions

View File

@ -1,3 +1,28 @@
2005-07-06 Bob Rossi <bob@brasko.net>
* fork-child.c (fork-inferior): Use accessor function for
inferior_io_terminal.
* infcmd.c (inferior_io_terminal): Make static.
(set_inferior_io_terminal): New function.
(get_inferior_io_terminal): Ditto.
(tty_command): Use accessor function.
(_initialize_infcmd): Add inferior_tty setshow variable.
(_initialize_infcmd): Remove tty command.
(_initialize_infcmd): Add a tty command that is an alias.
* inferior.h (set_inferior_io_terminal): New prototype.
(get_inferior_io_terminal): Ditto.
(new_tty_prefork): Add const qualifier to parameter.
* inflow.c (inferior_thisrun_terminal): Add const qualifier.
(new_tty_prefork): Add const qualifier to parameter.
* nto-procfs (procfs_create_inferior): Use accessor function.
(procfs_create_inferior): Add const qualifier to locals.
* win32-nat.c (child_create_inferior): Ditto.
* mi/mi-cmd-env.c (mi_cmd_inferior_tty_set): New function.
(mi_cmd_inferior_tty_set): Ditto.
* mi/mi-cmds.c (mi_cmds): Add inferior-tty-set and inferior-tty-show
* mi/mi-cmds.h (mi_cmd_inferior_tty_set): Add prototype.
(mi_cmd_inferior_tty_show): Ditto.
2005-07-06 Wu Zhou <woodzltc@cn.ibm.com>
* tui/tui-win.c (parse_scrolling_args): Fix SEGV error with invalid

View File

@ -1,3 +1,9 @@
2005-07-06 Bob Rossi <bob@brasko.net>
* gdb.texinfo (GDB/MI Miscellaneous Commands): Add -inferior-tty-set
and -inferior-tty-show.
(Input/Output): Document "set/show inferior-tty" and tty alias.
2005-07-02 Nathan J. Williams <nathanw@wasabisystems.com>
* gdb.texinfo (Packets): Change description of 'D' packet to note

View File

@ -2095,7 +2095,24 @@ terminal.
When you use the @code{tty} command or redirect input in the @code{run}
command, only the input @emph{for your program} is affected. The input
for @value{GDBN} still comes from your terminal.
for @value{GDBN} still comes from your terminal. @code{tty} is an alias
for @code{set inferior-tty}.
@cindex inferior tty
@cindex set inferior controlling terminal
You can use the @code{show inferior-tty} command to tell @value{GDBN} to
display the name of the terminal that will be used for future runs of your
program.
@table @code
@item set inferior-tty /dev/ttyb
@kindex set inferior-tty
Set the tty for the program being debugged to /dev/ttyb.
@item show inferior-tty
@kindex show inferior-tty
Show the current tty for the program being debugged.
@end table
@node Attach
@section Debugging an already-running process
@ -19181,6 +19198,57 @@ The corresponding @value{GDBN} command is @samp{interpreter-exec}.
(@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 the 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

View File

@ -138,6 +138,7 @@ fork_inferior (char *exec_file_arg, char *allargs, char **env,
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. */

View File

@ -136,7 +136,7 @@ static char **inferior_argv;
/* 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
@ -203,6 +203,24 @@ struct gdb_environ *inferior_environ;
/* Accessor routines. */
void
set_inferior_io_terminal (const 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)
{
@ -376,7 +394,7 @@ tty_command (char *file, int from_tty)
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
@ -1988,11 +2006,15 @@ unset_command (char *args, int from_tty)
void
_initialize_infcmd (void)
{
struct cmd_list_element *c;
struct cmd_list_element *c = NULL;
c = add_com ("tty", class_run, tty_command,
_("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_filename_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);
add_com_alias ("tty", "set inferior-tty", class_alias, 0);
add_setshow_optional_filename_cmd ("args", class_run,
&inferior_args, _("\

View File

@ -103,9 +103,10 @@ extern void set_sigio_trap (void);
extern void clear_sigio_trap (void);
/* File name for default use for standard in/out in the inferior. */
/* Set/get file name for default use for standard in/out in the inferior. */
extern char *inferior_io_terminal;
extern void set_inferior_io_terminal (const 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. */
@ -264,7 +265,7 @@ extern char *construct_inferior_arguments (struct gdbarch *, int, char **);
/* From inflow.c */
extern void new_tty_prefork (char *);
extern void new_tty_prefork (const char *);
extern int gdb_has_a_terminal (void);

View File

@ -94,7 +94,7 @@ static void (*sigquit_ours) ();
/* The name of the tty (from the `tty' command) that we gave to the inferior
when it was last started. */
static char *inferior_thisrun_terminal;
static const char *inferior_thisrun_terminal;
/* Nonzero if our terminal settings are in effect. Zero if the
inferior's settings are in effect. Ignored if !gdb_has_a_terminal
@ -509,7 +509,7 @@ child_terminal_info (char *args, int from_tty)
the terminal specified in the NEW_TTY_PREFORK call. */
void
new_tty_prefork (char *ttyname)
new_tty_prefork (const char *ttyname)
{
/* Save the name for later, for determining whether we and the child
are sharing a tty. */

View File

@ -244,6 +244,30 @@ mi_cmd_env_dir (char *command, char **argv, int argc)
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)
{

View File

@ -91,6 +91,8 @@ struct mi_cmd mi_cmds[] =
{ "gdb-show", { "show", 1 }, NULL, NULL },
{ "gdb-source", { NULL, 0 }, NULL, NULL },
{ "gdb-version", { "show version", 0 }, 0 },
{ "inferior-tty-set", { NULL, 0 }, NULL, mi_cmd_inferior_tty_set},
{ "inferior-tty-show", { NULL, 0 }, NULL, mi_cmd_inferior_tty_show},
{ "interpreter-exec", { NULL, 0 }, 0, mi_cmd_interpreter_exec},
{ "kod-info", { NULL, 0 }, NULL, NULL },
{ "kod-list", { NULL, 0 }, NULL, NULL },

View File

@ -85,6 +85,8 @@ extern mi_cmd_args_ftype mi_cmd_exec_interrupt;
extern mi_cmd_argv_ftype mi_cmd_file_list_exec_source_file;
extern mi_cmd_argv_ftype mi_cmd_file_list_exec_source_files;
extern mi_cmd_argv_ftype mi_cmd_gdb_exit;
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_interpreter_exec;
extern mi_cmd_argv_ftype mi_cmd_stack_info_depth;
extern mi_cmd_argv_ftype mi_cmd_stack_info_frame;

View File

@ -981,9 +981,10 @@ procfs_create_inferior (char *exec_file, char *allargs, char **env,
pid_t pid;
int flags, errn;
char **argv, *args;
char *in = "", *out = "", *err = "";
const 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));

View File

@ -1,3 +1,9 @@
2005-07-06 Bob Rossi <bob@brasko.net>
* gdb.mi/mi-basics.exp (test_setshow_inferior_tty): Test MI tty
command.
(Copyright): Update copyright.
2005-07-06 Wu Zhou <woodzltc@cn.ibm.com>
* gdb.fortran/exprs.exp (test_arithmetic_expressions): Add five

View File

@ -1,4 +1,4 @@
# Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
# Copyright 1999, 2000, 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -236,12 +236,42 @@ proc test_path_specification {} {
}
proc test_setshow_inferior_tty {} {
global mi_gdb_prompt
# Test that the commands,
# -inferior-tty-set
# -inferior-tty-show
# are setting/getting the same data in GDB.
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

View File

@ -1735,6 +1735,7 @@ child_create_inferior (char *exec_file, char *allargs, char **env,
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'."));

View File

@ -1735,6 +1735,7 @@ child_create_inferior (char *exec_file, char *allargs, char **env,
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'."));