diff options
Diffstat (limited to 'gdb/mi')
-rw-r--r-- | gdb/mi/mi-cmds.h | 5 | ||||
-rw-r--r-- | gdb/mi/mi-main.c | 15 |
2 files changed, 20 insertions, 0 deletions
diff --git a/gdb/mi/mi-cmds.h b/gdb/mi/mi-cmds.h index d867c29..c62b134 100644 --- a/gdb/mi/mi-cmds.h +++ b/gdb/mi/mi-cmds.h @@ -206,6 +206,11 @@ extern mi_command *mi_cmd_lookup (const char *command); extern void mi_execute_command (const char *cmd, int from_tty); +/* Execute an MI command given an already-constructed parse + object. */ + +extern void mi_execute_command (mi_parse *context); + /* Insert COMMAND into the global mi_cmd_table. Return false if COMMAND->name already exists in mi_cmd_table, in which case COMMAND will not have been added to mi_cmd_table. Otherwise, return true, and diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c index b430115..f3b7490 100644 --- a/gdb/mi/mi-main.c +++ b/gdb/mi/mi-main.c @@ -1965,6 +1965,21 @@ mi_execute_command (const char *cmd, int from_tty) } } +/* See mi-cmds.h. */ + +void +mi_execute_command (mi_parse *context) +{ + if (context->op != MI_COMMAND) + error (_("Command is not an MI command")); + + scoped_restore save_token = make_scoped_restore (¤t_token, + context->token); + scoped_restore save_debug = make_scoped_restore (&mi_debug_p, 0); + + mi_cmd_execute (context); +} + /* Captures the current user selected context state, that is the current thread and frame. Later we can then check if the user selected context has changed at all. */ |