summaryrefslogtreecommitdiff
path: root/gdb/tui
diff options
context:
space:
mode:
authorPedro Alves <pedro@codesourcery.com>2011-09-12 21:24:47 +0000
committerPedro Alves <pedro@codesourcery.com>2011-09-12 21:24:47 +0000
commit17bdafbc84cbd5d4a7ab004086f3380355bd11e8 (patch)
treeac5848f546d37b6a4658552a8b246192e6160bcb /gdb/tui
parentbe6ea846156ab73309712e82a2ac1db1f4536107 (diff)
downloadgdb-17bdafbc84cbd5d4a7ab004086f3380355bd11e8.tar.gz
gdb/
2011-09-12 Pedro Alves <pedro@codesourcery.com> Matt Rice <ratmice@gmail.com> PR gdb/13175 * interps.c (struct interp) <interpreter_out>: Delete field. (interp_new): Remove the data and uiout parameters and adjust. (interp_set): Only set the current_uiout from the interpreter's uiout after initializing the interpreter. Adjust call to init_proc. (interp_ui_out): Adjust to call procs->ui_out_proc. (interp_data, interp_name): New. * interps.h (interp_init_ftype): Add `self' parameter. (interp_ui_out_ftype): New typedef. (struct interp_procs) <ui_out_proc>: New method pointer. (interp_new): Remove the data and uiout parameters. (interp_data, interp_name): Declare. * tui/tui-interp.c (tui_init): Adjust prototype. (tui_ui_out): New. (_initialize_tui_interp): Install tui_ui_out. Don't instanciate tui_out here. Adjust call to interp_new. * tui/tui-io.c (tui_initialize_io): Don't set current_uiout here. * cli/cli-interp.c (cli_interpreter_init): Adjust prototype. (cli_ui_out): New. (_initialize_cli_interp): Install it. Adjust call to interp_new. * mi/mi-common.h (struct mi_interp) <uiout>: New field. * mi/mi-interp.c (mi_interpreter_init): Adjust prototype. Initialize mi->uiout depending on the mi_version as extracted from the interpreter's name. (mi_ui_out): New. (_initialize_mi_interp): Install mi_ui_out. Adjust calls to interp_new. Don't allocate the ui_out's of the interpreters here. gdb/testsuite/ 2011-09-12 Matt Rice <ratmice@gmail.com> Pedro Alves <pedro@codesourcery.com> PR gdb/13175 * gdb.base/interp.exp: New tests. * gdb.base/interp.c: New file.
Diffstat (limited to 'gdb/tui')
-rw-r--r--gdb/tui/tui-interp.c17
-rw-r--r--gdb/tui/tui-io.c2
2 files changed, 15 insertions, 4 deletions
diff --git a/gdb/tui/tui-interp.c b/gdb/tui/tui-interp.c
index 78b8aca3d02..b25b53b16c7 100644
--- a/gdb/tui/tui-interp.c
+++ b/gdb/tui/tui-interp.c
@@ -52,7 +52,7 @@ static int tui_is_toplevel = 0;
/* These implement the TUI interpreter. */
static void *
-tui_init (int top_level)
+tui_init (struct interp *self, int top_level)
{
tui_is_toplevel = top_level;
@@ -126,6 +126,15 @@ tui_display_prompt_p (void *data)
return 1;
}
+static struct ui_out *
+tui_ui_out (struct interp *self)
+{
+ if (tui_active)
+ return tui_out;
+ else
+ return tui_old_uiout;
+}
+
static struct gdb_exception
tui_exec (void *data, const char *command_str)
{
@@ -144,11 +153,13 @@ _initialize_tui_interp (void)
tui_suspend,
tui_exec,
tui_display_prompt_p,
+ tui_ui_out,
};
+ struct interp *tui_interp;
/* Create a default uiout builder for the TUI. */
- tui_out = tui_out_new (gdb_stdout);
- interp_add (interp_new (INTERP_TUI, NULL, tui_out, &procs));
+ tui_interp = interp_new (INTERP_TUI, &procs);
+ interp_add (tui_interp);
if (interpreter_p && strcmp (interpreter_p, INTERP_TUI) == 0)
tui_start_enabled = 1;
diff --git a/gdb/tui/tui-io.c b/gdb/tui/tui-io.c
index 5fcb39540fb..1ab28f10498 100644
--- a/gdb/tui/tui-io.c
+++ b/gdb/tui/tui-io.c
@@ -607,7 +607,7 @@ tui_initialize_io (void)
/* Create the default UI. It is not created because we installed a
deprecated_init_ui_hook. */
- tui_old_uiout = current_uiout = cli_out_new (gdb_stdout);
+ tui_old_uiout = cli_out_new (gdb_stdout);
#ifdef TUI_USE_PIPE_FOR_READLINE
/* Temporary solution for readline writing to stdout: redirect