Allow resetting an empty inferior-tty
authorSimon Marchi <simon.marchi@ericsson.com>
Wed, 24 Aug 2016 17:10:08 +0000 (13:10 -0400)
committerSimon Marchi <simon.marchi@ericsson.com>
Wed, 24 Aug 2016 17:10:08 +0000 (13:10 -0400)
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.

gdb/ChangeLog
gdb/doc/ChangeLog
gdb/doc/gdb.texinfo
gdb/infcmd.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/set-inferior-tty.c [new file with mode: 0644]
gdb/testsuite/gdb.base/set-inferior-tty.exp [new file with mode: 0644]

index 229a62b4cd26a926b5d5097bb243c9c9b14a30af..0d875c84eab7011e132b9a042d163a141fd9a710 100644 (file)
@@ -1,3 +1,10 @@
+2016-08-24  Simon Marchi  <simon.marchi@ericsson.com>
+
+       * 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  <cel@us.ibm.com>
 
        * rs6000-tdep.c (rs6000_gdbarch_init): Remove call
index cc9bc70e3ad2865ca2dfdf09e02259ca0e8416df..c6fe47c602d51af2612f5b46cc58291ccd0b777a 100644 (file)
@@ -1,3 +1,8 @@
+2016-08-24  Simon Marchi  <simon.marchi@ericsson.com>
+
+       * gdb.texinfo (Input/Output): Mention possibility to unset
+       inferior-tty.
+
 2016-07-25  Tim Wiederhake  <tim.wiederhake@intel.com>
 
        * gdb.texinfo: Resume btrace on reconnect.
index f5dde61325fb1139ad177d0641149b68c7cfb2ef..d1a5e7cf2ff2d534b23f2b1341d00effe42db19e 100644 (file)
@@ -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
index 58ba1cb8d01cdb4b6cc30f90ee6bc0c1de91499d..44a1fd10daeebcfdcb4244d2d64d192e26fc0c72 100644 (file)
@@ -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";
index 26ce978b29068719e6166416994d26a6edae80fe..f400a7b4e32d91d411f55e956aa7b76c6d261a0d 100644 (file)
@@ -1,3 +1,8 @@
+2016-08-24  Simon Marchi  <simon.marchi@ericsson.com>
+
+       * gdb.base/set-inferior-tty.exp: New file.
+       * gdb.base/set-inferior-tty.c: New file.
+
 2016-08-23  Pedro Alves  <palves@redhat.com>
 
        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 (file)
index 0000000..863fa99
--- /dev/null
@@ -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;
+}
diff --git a/gdb/testsuite/gdb.base/set-inferior-tty.exp b/gdb/testsuite/gdb.base/set-inferior-tty.exp
new file mode 100644 (file)
index 0000000..1a5f49c
--- /dev/null
@@ -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