From e837f12a8d57a112a5ec40a3b3387aac3768c016 Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Wed, 14 Mar 2012 07:58:06 +0000 Subject: [PATCH] gdb/ 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 | 9 +++++++ gdb/mi/mi-interp.c | 14 ++++++++++- gdb/mi/mi-main.c | 3 --- gdb/testsuite/ChangeLog | 4 +++ gdb/testsuite/gdb.mi/mi2-prompt.exp | 38 +++++++++++++++++++++++++++++ 5 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 gdb/testsuite/gdb.mi/mi2-prompt.exp diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 18008734be..f3d56c1853 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2012-03-14 Jan Kratochvil + + 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 (tiny change) * darwin-nat-info.c (_initialize_darwin_info_commands): Add diff --git a/gdb/mi/mi-interp.c b/gdb/mi/mi-interp.c index cb125494be..daae48017e 100644 --- a/gdb/mi/mi-interp.c +++ b/gdb/mi/mi-interp.c @@ -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) { diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c index 787d2475de..9f14f016f9 100644 --- a/gdb/mi/mi-main.c +++ b/gdb/mi/mi-main.c @@ -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 diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index f83a8ba305..79462051fe 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2012-03-14 Jan Kratochvil + + * gdb.mi/mi2-prompt.exp: New file. + 2012-03-13 Joel Brobecker * 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 index 0000000000..6145c38fc1 --- /dev/null +++ b/gdb/testsuite/gdb.mi/mi2-prompt.exp @@ -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 . + +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,.*}"