diff options
author | Pedro Alves <palves@redhat.com> | 2011-09-12 21:25:22 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2011-09-12 21:25:22 +0000 |
commit | 4801a9a3568ed8ffcb4b2fa03d086193bc9ba647 (patch) | |
tree | 71e6009f635c3be3e60c7ce31a7630d15c3e6b9d /gdb/tui | |
parent | d0afda0369ec76c2a334f010914f8155f9533909 (diff) | |
download | gdb-4801a9a3568ed8ffcb4b2fa03d086193bc9ba647.zip gdb-4801a9a3568ed8ffcb4b2fa03d086193bc9ba647.tar.gz gdb-4801a9a3568ed8ffcb4b2fa03d086193bc9ba647.tar.bz2 |
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.c | 17 | ||||
-rw-r--r-- | gdb/tui/tui-io.c | 2 |
2 files changed, 15 insertions, 4 deletions
diff --git a/gdb/tui/tui-interp.c b/gdb/tui/tui-interp.c index 78b8aca..b25b53b 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 5fcb395..1ab28f1 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 |