gdb/
authorJan Kratochvil <jan.kratochvil@redhat.com>
Wed, 14 Mar 2012 07:58:06 +0000 (07:58 +0000)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Wed, 14 Mar 2012 07:58:06 +0000 (07:58 +0000)
Fix double prompt of 'interpreter-exec mi'.
* mi/mi-interp.c (mi_execute_command_input_handler): New prototype.
(mi_interpreter_resume): use it.
(mi_execute_command_input_handler): New function.
* mi/mi-main.c (mi_execute_command): Move prompt printing to
mi_execute_command_input_handler.

gdb/testsuite/
* gdb.mi/mi2-prompt.exp: New file.

gdb/ChangeLog
gdb/mi/mi-interp.c
gdb/mi/mi-main.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.mi/mi2-prompt.exp [new file with mode: 0644]

index 18008734beceed35870cc6b6e2d7c810405c6f68..f3d56c18535b0068d2f4c4b7323a29863cb4b98c 100644 (file)
@@ -1,3 +1,12 @@
+2012-03-14  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       Fix double prompt of 'interpreter-exec mi'.
+       * mi/mi-interp.c (mi_execute_command_input_handler): New prototype.
+       (mi_interpreter_resume): use it.
+       (mi_execute_command_input_handler): New function.
+       * mi/mi-main.c (mi_execute_command): Move prompt printing to
+       mi_execute_command_input_handler.
+
 2012-03-13  Josh Matthews  <josh@joshmatthews.net>  (tiny change)
 
        * darwin-nat-info.c (_initialize_darwin_info_commands): Add
index cb125494beafeab35a473575027de223f1edb55b..daae48017e25fd6ab1c3f98e0aa7a0c56951f88c 100644 (file)
@@ -40,6 +40,7 @@
    interpreter.  */
 
 static void mi_execute_command_wrapper (char *cmd);
+static void mi_execute_command_input_handler (char *cmd);
 static void mi_command_loop (int mi_version);
 
 /* These are hooks that we put in place while doing interpreter_exec
@@ -151,7 +152,7 @@ mi_interpreter_resume (void *data)
   /* These overwrite some of the initialization done in
      _intialize_event_loop.  */
   call_readline = gdb_readline2;
-  input_handler = mi_execute_command_wrapper;
+  input_handler = mi_execute_command_input_handler;
   add_file_handler (input_fd, stdin_event_handler, 0);
   async_command_editing_p = 0;
   /* FIXME: This is a total hack for now.  PB's use of the MI
@@ -297,6 +298,17 @@ mi_execute_command_wrapper (char *cmd)
   mi_execute_command (cmd, stdin == instream);
 }
 
+/* mi_execute_command_wrapper wrapper suitable for INPUT_HANDLER.  */
+
+static void
+mi_execute_command_input_handler (char *cmd)
+{
+  mi_execute_command_wrapper (cmd);
+
+  fputs_unfiltered ("(gdb) \n", raw_stdout);
+  gdb_flush (raw_stdout);
+}
+
 static void
 mi1_command_loop (void)
 {
index 787d2475de2d186a98c01af90a80d2b802c4e2ac..9f14f016f9a594401f32066020ab0b5130ee62f8 100644 (file)
@@ -2029,9 +2029,6 @@ mi_execute_command (char *cmd, int from_tty)
 
       mi_parse_free (command);
     }
-
-  fputs_unfiltered ("(gdb) \n", raw_stdout);
-  gdb_flush (raw_stdout);
 }
 
 static void
index f83a8ba305b973c591dddc3b63a134dfe2b77d9a..79462051fe694f7908972c989feac3a88d06f896 100644 (file)
@@ -1,3 +1,7 @@
+2012-03-14  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       * gdb.mi/mi2-prompt.exp: New file.
+
 2012-03-13  Joel Brobecker  <brobecker@adacore.com>
 
        * gdb.base/enum_cond.c, gdb.base/enum_cond.exp: New testcase.
diff --git a/gdb/testsuite/gdb.mi/mi2-prompt.exp b/gdb/testsuite/gdb.mi/mi2-prompt.exp
new file mode 100644 (file)
index 0000000..6145c38
--- /dev/null
@@ -0,0 +1,38 @@
+# Copyright 2011 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/>.
+
+load_lib mi-support.exp
+set MIFLAGS "-i=mi2"
+
+gdb_exit
+if [mi_gdb_start] {
+    continue
+}
+
+# Check console 'set prompt' does not affect the MI output.
+
+mi_gdb_test {-interpreter-exec console "set prompt (banana) "} {\^done} \
+           "console set prompt"
+mi_gdb_test "-break-list" ".*}" "-break-list"
+
+gdb_exit
+gdb_start
+
+# Check 'set prompt' affects console output even for "interpreter-exec mi".
+
+set gdb_prompt {\(banana\)}
+gdb_test_no_output "set prompt (banana) "
+
+gdb_test "interpreter-exec mi -break-list" "\r\n\\^done,.*}"