diff options
author | Andrew Burgess <aburgess@broadcom.com> | 2013-09-06 08:53:09 +0000 |
---|---|---|
committer | Andrew Burgess <aburgess@broadcom.com> | 2013-09-06 08:53:09 +0000 |
commit | 4d09c5b4239111b21fd6ee20054c71b260c3b8ae (patch) | |
tree | fdfcd9b917ef2bbad1e2cd7b7cf94e1cfa303a9f | |
parent | 8eb3d7b6ca8ba08fba66a25ffe1e26a571187c55 (diff) | |
download | gdb-4d09c5b4239111b21fd6ee20054c71b260c3b8ae.zip gdb-4d09c5b4239111b21fd6ee20054c71b260c3b8ae.tar.gz gdb-4d09c5b4239111b21fd6ee20054c71b260c3b8ae.tar.bz2 |
Give every interpreter a command_loop_proc.
https://sourceware.org/ml/gdb-patches/2013-09/msg00179.html
gdb/ChangeLog
* cli/cli-interp.c (_initialize_cli_interp): Add a
command_loop_proc to interp_procs.
* event-top.c (cli_command_loop): Change signature to match
interp_command_loop_ftype.
* event-top.h (cli_command_loop): Same.
* interps.c (interp_new): Require every interpreter to have a
command_loop_proc.
(current_interp_command_loop): Just call the command_loop_proc on
the current interpreter.
* tui/tui-interp.c (_initialize_tui_interp): Add a
command_loop_proc to interp_procs.
-rw-r--r-- | gdb/ChangeLog | 14 | ||||
-rw-r--r-- | gdb/cli/cli-interp.c | 4 | ||||
-rw-r--r-- | gdb/event-top.c | 6 | ||||
-rw-r--r-- | gdb/event-top.h | 2 | ||||
-rw-r--r-- | gdb/interps.c | 13 | ||||
-rw-r--r-- | gdb/tui/tui-interp.c | 2 |
6 files changed, 30 insertions, 11 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 8a30eb2..e4ebab8 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,17 @@ +2013-09-06 Andrew Burgess <aburgess@broadcom.com> + + * cli/cli-interp.c (_initialize_cli_interp): Add a + command_loop_proc to interp_procs. + * event-top.c (cli_command_loop): Change signature to match + interp_command_loop_ftype. + * event-top.h (cli_command_loop): Same. + * interps.c (interp_new): Require every interpreter to have a + command_loop_proc. + (current_interp_command_loop): Just call the command_loop_proc on + the current interpreter. + * tui/tui-interp.c (_initialize_tui_interp): Add a + command_loop_proc to interp_procs. + 2013-09-06 Ricard Wanderlof <ricardw@axis.com> * cris-tdep.c (cris_gdbarch_init): Add call to diff --git a/gdb/cli/cli-interp.c b/gdb/cli/cli-interp.c index 1003cc7..ac3d9a8 100644 --- a/gdb/cli/cli-interp.c +++ b/gdb/cli/cli-interp.c @@ -151,7 +151,9 @@ _initialize_cli_interp (void) cli_interpreter_suspend, /* suspend_proc */ cli_interpreter_exec, /* exec_proc */ cli_interpreter_display_prompt_p, /* prompt_proc_p */ - cli_ui_out /* ui_out_proc */ + cli_ui_out, /* ui_out_proc */ + NULL, /* set_logging_proc */ + cli_command_loop /* command_loop_proc */ }; struct interp *cli_interp; diff --git a/gdb/event-top.c b/gdb/event-top.c index f1d55b3..1f2e6fb 100644 --- a/gdb/event-top.c +++ b/gdb/event-top.c @@ -167,9 +167,11 @@ rl_callback_read_char_wrapper (gdb_client_data client_data) } /* Initialize all the necessary variables, start the event loop, - register readline, and stdin, start the loop. */ + register readline, and stdin, start the loop. The DATA is the + interpreter data cookie, ignored for now. */ + void -cli_command_loop (void) +cli_command_loop (void *data) { display_gdb_prompt (0); diff --git a/gdb/event-top.h b/gdb/event-top.h index e6166f6..97142d4 100644 --- a/gdb/event-top.h +++ b/gdb/event-top.h @@ -62,6 +62,6 @@ extern void (*input_handler) (char *); extern int input_fd; extern void (*after_char_processing_hook) (void); -extern void cli_command_loop (void); +extern void cli_command_loop (void *); #endif diff --git a/gdb/interps.c b/gdb/interps.c index 33e0f72..7f19385 100644 --- a/gdb/interps.c +++ b/gdb/interps.c @@ -101,6 +101,9 @@ interp_new (const char *name, const struct interp_procs *procs) new_interp->procs = procs; new_interp->inited = 0; + /* Check for required procs. */ + gdb_assert (procs->command_loop_proc != NULL); + return new_interp; } @@ -319,13 +322,9 @@ current_interp_display_prompt_p (void) void current_interp_command_loop (void) { - /* Somewhat messy. For the moment prop up all the old ways of - selecting the command loop. */ - if (current_interpreter != NULL - && current_interpreter->procs->command_loop_proc != NULL) - current_interpreter->procs->command_loop_proc (current_interpreter->data); - else - cli_command_loop (); + gdb_assert (current_interpreter != NULL); + + current_interpreter->procs->command_loop_proc (current_interpreter->data); } int diff --git a/gdb/tui/tui-interp.c b/gdb/tui/tui-interp.c index 42526e6..1095220 100644 --- a/gdb/tui/tui-interp.c +++ b/gdb/tui/tui-interp.c @@ -153,6 +153,8 @@ _initialize_tui_interp (void) tui_exec, tui_display_prompt_p, tui_ui_out, + NULL, + cli_command_loop }; struct interp *tui_interp; |