diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 229a62b4cd..0d875c84ea 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2016-08-24 Simon Marchi + + * 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 * rs6000-tdep.c (rs6000_gdbarch_init): Remove call diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index cc9bc70e3a..c6fe47c602 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,8 @@ +2016-08-24 Simon Marchi + + * gdb.texinfo (Input/Output): Mention possibility to unset + inferior-tty. + 2016-07-25 Tim Wiederhake * gdb.texinfo: Resume btrace on reconnect. diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index f5dde61325..d1a5e7cf2f 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -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 diff --git a/gdb/infcmd.c b/gdb/infcmd.c index 58ba1cb8d0..44a1fd10da 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -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 * @@ -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"; diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 26ce978b29..f400a7b4e3 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-08-24 Simon Marchi + + * gdb.base/set-inferior-tty.exp: New file. + * gdb.base/set-inferior-tty.c: New file. + 2016-08-23 Pedro Alves PR gdb/20494 diff --git a/gdb/testsuite/gdb.base/set-inferior-tty.c b/gdb/testsuite/gdb.base/set-inferior-tty.c new file mode 100644 index 0000000000..863fa994ec --- /dev/null +++ b/gdb/testsuite/gdb.base/set-inferior-tty.c @@ -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 . + +*/ + +int +main (void) +{ + return 0; +} diff --git a/gdb/testsuite/gdb.base/set-inferior-tty.exp b/gdb/testsuite/gdb.base/set-inferior-tty.exp new file mode 100644 index 0000000000..1a5f49c074 --- /dev/null +++ b/gdb/testsuite/gdb.base/set-inferior-tty.exp @@ -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 . + +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