aboutsummaryrefslogtreecommitdiff
path: root/gdb/mi
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/mi')
-rw-r--r--gdb/mi/mi-cmds.h5
-rw-r--r--gdb/mi/mi-main.c15
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 (&current_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. */