aboutsummaryrefslogtreecommitdiff
path: root/gdb/cli
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/cli')
-rw-r--r--gdb/cli/cli-cmds.c16
-rw-r--r--gdb/cli/cli-decode.c12
-rw-r--r--gdb/cli/cli-decode.h10
3 files changed, 32 insertions, 6 deletions
diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c
index 96abe8c..ce7378e 100644
--- a/gdb/cli/cli-cmds.c
+++ b/gdb/cli/cli-cmds.c
@@ -1202,8 +1202,9 @@ The commands below can be used to select other frames by number or address."),
/* Define general commands. */
- add_com ("pwd", class_files, pwd_command, _("\
+ c = add_com ("pwd", class_files, pwd_command, _("\
Print working directory. This is used for your program as well."));
+ set_cmd_async_ok (c);
c = add_cmd ("cd", class_files, cd_command, _("\
Set working directory to DIR for debugger and program being debugged.\n\
The change does not take effect for the program being debugged\n\
@@ -1243,6 +1244,7 @@ when GDB is started."), gdbinit);
c = add_com ("help", class_support, help_command,
_("Print list of commands."));
set_cmd_completer (c, command_completer);
+ set_cmd_async_ok (c);
add_com_alias ("q", "quit", class_support, 1);
add_com_alias ("h", "help", class_support, 1);
@@ -1268,17 +1270,19 @@ Without an argument, history expansion is enabled."),
show_history_expansion_p,
&sethistlist, &showhistlist);
- add_prefix_cmd ("info", class_info, info_command, _("\
+ c = add_prefix_cmd ("info", class_info, info_command, _("\
Generic command for showing things about the program being debugged."),
- &infolist, "info ", 0, &cmdlist);
+ &infolist, "info ", 0, &cmdlist);
+ set_cmd_async_ok (c);
add_com_alias ("i", "info", class_info, 1);
add_com ("complete", class_obscure, complete_command,
_("List the completions for the rest of the line as a command."));
- add_prefix_cmd ("show", class_info, show_command,
- _("Generic command for showing things about the debugger."),
- &showlist, "show ", 0, &cmdlist);
+ c = add_prefix_cmd ("show", class_info, show_command, _("\
+Generic command for showing things about the debugger."),
+ &showlist, "show ", 0, &cmdlist);
+ set_cmd_async_ok (c);
/* Another way to get at the same thing. */
add_info ("set", show_command, _("Show all GDB settings."));
diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c
index 65fcdcc..4e68f93 100644
--- a/gdb/cli/cli-decode.c
+++ b/gdb/cli/cli-decode.c
@@ -105,6 +105,18 @@ get_cmd_context (struct cmd_list_element *cmd)
return cmd->context;
}
+void
+set_cmd_async_ok (struct cmd_list_element *cmd)
+{
+ cmd->flags |= CMD_ASYNC_OK;
+}
+
+int
+get_cmd_async_ok (struct cmd_list_element *cmd)
+{
+ return cmd->flags & CMD_ASYNC_OK;
+}
+
enum cmd_types
cmd_type (struct cmd_list_element *cmd)
{
diff --git a/gdb/cli/cli-decode.h b/gdb/cli/cli-decode.h
index 59a8239..f133b3d 100644
--- a/gdb/cli/cli-decode.h
+++ b/gdb/cli/cli-decode.h
@@ -48,6 +48,9 @@ cmd_types;
#define DEPRECATED_WARN_USER 0x2
#define MALLOCED_REPLACEMENT 0x4
+/* This flag is set if the command is allowed during async execution. */
+#define CMD_ASYNC_OK 0x8
+
struct cmd_list_element
{
/* Points to next command in this list. */
@@ -243,6 +246,13 @@ extern int cmd_cfunc_eq (struct cmd_list_element *cmd,
extern void set_cmd_context (struct cmd_list_element *cmd, void *context);
extern void *get_cmd_context (struct cmd_list_element *cmd);
+/* Mark command as async-ready; there is no way to disable this once
+ set. */
+extern void set_cmd_async_ok (struct cmd_list_element *);
+
+/* Return true if command is async-ok. */
+extern int get_cmd_async_ok (struct cmd_list_element *);
+
extern struct cmd_list_element *lookup_cmd (char **,
struct cmd_list_element *, char *,
int, int);