Skip to content

Commit

Permalink
Allow resetting an empty inferior-tty
Browse files Browse the repository at this point in the history
This patch allows the user to set the inferior-tty to "empty", in order
to come back to the default behaviour of using the same tty as gdb is
using.

This is already supported in MI (and tested in gdb.mi/mi-basics.exp).

I added a new test, set-inferior-tty.exp, where I test only the setting
and unsetting of the parameter.  It would be nice to actually test that
the inferior output properly goes to the separate tty, but that will be
for another day.

gdb/ChangeLog:

	* infcmd.c (set_inferior_io_terminal): Set inferior terminal to
	NULL if terminal_name is an empty string.
	(_initialize_infcmd): Make the argument of "set inferior-tty"
	optional, mention it in the help doc.

gdb/doc/ChangeLog:

	* gdb.texinfo (Input/Output): Mention possibility to unset
	inferior-tty.

gdb/testsuite/ChangeLog:

	* gdb.base/set-inferior-tty.exp: New file.
	* gdb.base/set-inferior-tty.c: New file.
  • Loading branch information
Simon Marchi committed Aug 24, 2016
1 parent bdd7871 commit 0a1ddfa
Show file tree
Hide file tree
Showing 7 changed files with 98 additions and 9 deletions.
7 changes: 7 additions & 0 deletions gdb/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
2016-08-24 Simon Marchi <[email protected]>

* infcmd.c (set_inferior_io_terminal): Set inferior terminal to
NULL if terminal_name is an empty string.
(_initialize_infcmd): Make the argument of "set inferior-tty"
optional, mention it in the help doc.

2016-08-24 Carl Love <[email protected]>

* rs6000-tdep.c (rs6000_gdbarch_init): Remove call
Expand Down
5 changes: 5 additions & 0 deletions gdb/doc/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
2016-08-24 Simon Marchi <[email protected]>

* gdb.texinfo (Input/Output): Mention possibility to unset
inferior-tty.

2016-07-25 Tim Wiederhake <[email protected]>

* gdb.texinfo: Resume btrace on reconnect.
Expand Down
6 changes: 4 additions & 2 deletions gdb/doc/gdb.texinfo
Original file line number Diff line number Diff line change
Expand Up @@ -2499,9 +2499,11 @@ display the name of the terminal that will be used for future runs of your
program.

@table @code
@item set inferior-tty /dev/ttyb
@item set inferior-tty [ @var{tty} ]
@kindex set inferior-tty
Set the tty for the program being debugged to /dev/ttyb.
Set the tty for the program being debugged to @var{tty}. Omitting @var{tty}
restores the default behavior, which is to use the same terminal as
@value{GDBN}.

@item show inferior-tty
@kindex show inferior-tty
Expand Down
20 changes: 13 additions & 7 deletions gdb/infcmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,11 @@ void
set_inferior_io_terminal (const char *terminal_name)
{
xfree (current_inferior ()->terminal);
current_inferior ()->terminal = terminal_name ? xstrdup (terminal_name) : 0;

if (terminal_name != NULL && *terminal_name != '\0')
current_inferior ()->terminal = xstrdup (terminal_name);
else
current_inferior ()->terminal = NULL;
}

const char *
Expand Down Expand Up @@ -3224,14 +3228,16 @@ _initialize_infcmd (void)
const char *cmd_name;

/* Add the filename of the terminal connected to inferior I/O. */
add_setshow_filename_cmd ("inferior-tty", class_run,
&inferior_io_terminal_scratch, _("\
add_setshow_optional_filename_cmd ("inferior-tty", class_run,
&inferior_io_terminal_scratch, _("\
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"),
set_inferior_tty_command,
show_inferior_tty_command,
&setlist, &showlist);
Usage: set inferior-tty [TTY]\n\n\
If TTY is omitted, the default behavior of using the same terminal as GDB\n\
is restored."),
set_inferior_tty_command,
show_inferior_tty_command,
&setlist, &showlist);
add_com_alias ("tty", "set inferior-tty", class_alias, 0);

cmd_name = "args";
Expand Down
5 changes: 5 additions & 0 deletions gdb/testsuite/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
2016-08-24 Simon Marchi <[email protected]>

* gdb.base/set-inferior-tty.exp: New file.
* gdb.base/set-inferior-tty.c: New file.

2016-08-23 Pedro Alves <[email protected]>

PR gdb/20494
Expand Down
24 changes: 24 additions & 0 deletions gdb/testsuite/gdb.base/set-inferior-tty.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/* This testcase is part of GDB, the GNU debugger.
Copyright 2016 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
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

int
main (void)
{
return 0;
}
40 changes: 40 additions & 0 deletions gdb/testsuite/gdb.base/set-inferior-tty.exp
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Copyright 2016 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
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

standard_testfile

set compile_options "debug"
if {[build_executable $testfile.exp $testfile ${srcfile} ${compile_options}] == -1} {
untested "failed to compile $testfile"
return -1
}

proc test_set_inferior_tty { } {
global binfile

clean_restart ${binfile}

gdb_test_no_output "set inferior-tty hello" "set inferior-tty to hello"
gdb_test "show inferior-tty" \
"Terminal for future runs of program being debugged is \"hello\"." \
"show inferior-tty shows hello"

gdb_test_no_output "set inferior-tty" "set inferior-tty to empty"
gdb_test "show inferior-tty" \
"Terminal for future runs of program being debugged is \"\"." \
"show inferior-tty shows empty"
}

test_set_inferior_tty

0 comments on commit 0a1ddfa

Please sign in to comment.