xref: /openbsd-src/gnu/usr.bin/binutils/gdb/mi/mi-cmds.h (revision 11efff7f3ac2b3cfeff0c0cddc14294d9b3aca4f)
1b725ae77Skettenis /* MI Command Set for GDB, the GNU debugger.
2b725ae77Skettenis 
3b725ae77Skettenis    Copyright 2000, 2003, 2004 Free Software Foundation, Inc.
4b725ae77Skettenis 
5b725ae77Skettenis    Contributed by Cygnus Solutions (a Red Hat company).
6b725ae77Skettenis 
7b725ae77Skettenis    This file is part of GDB.
8b725ae77Skettenis 
9b725ae77Skettenis    This program is free software; you can redistribute it and/or modify
10b725ae77Skettenis    it under the terms of the GNU General Public License as published by
11b725ae77Skettenis    the Free Software Foundation; either version 2 of the License, or
12b725ae77Skettenis    (at your option) any later version.
13b725ae77Skettenis 
14b725ae77Skettenis    This program is distributed in the hope that it will be useful,
15b725ae77Skettenis    but WITHOUT ANY WARRANTY; without even the implied warranty of
16b725ae77Skettenis    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17b725ae77Skettenis    GNU General Public License for more details.
18b725ae77Skettenis 
19b725ae77Skettenis    You should have received a copy of the GNU General Public License
20b725ae77Skettenis    along with this program; if not, write to the Free Software
21b725ae77Skettenis    Foundation, Inc., 59 Temple Place - Suite 330,
22b725ae77Skettenis    Boston, MA 02111-1307, USA.  */
23b725ae77Skettenis 
24b725ae77Skettenis #ifndef MI_CMDS_H
25b725ae77Skettenis #define MI_CMDS_H
26b725ae77Skettenis 
27b725ae77Skettenis /* An MI command can return any of the following. */
28b725ae77Skettenis 
29b725ae77Skettenis enum mi_cmd_result
30b725ae77Skettenis   {
31b725ae77Skettenis     /* Report the command as ``done''.  Display both the ``NNN^done''
32b725ae77Skettenis        message and the completion prompt.  */
33b725ae77Skettenis     MI_CMD_DONE = 0,
34b725ae77Skettenis     /* The command is still running in the forground.  Main loop should
35b725ae77Skettenis        display the completion prompt. */
36b725ae77Skettenis     MI_CMD_FORGROUND,
37b725ae77Skettenis     /* An error condition was detected and an error message was
38b725ae77Skettenis        asprintf'd into the mi_error_message buffer.  The main loop will
39b725ae77Skettenis        display the error message and the completion prompt. */
40b725ae77Skettenis     MI_CMD_ERROR,
41b725ae77Skettenis     /* An error condition was detected and caught.  The error message is
42b725ae77Skettenis        in the global error message buffer. The main loop will display
43b725ae77Skettenis        the error message and the completion prompt. */
44b725ae77Skettenis     MI_CMD_CAUGHT_ERROR,
45b725ae77Skettenis     /* The MI command has already displayed its completion message.
46b725ae77Skettenis        Main loop will not display a completion message but will display
47b725ae77Skettenis        the completion prompt. */
48b725ae77Skettenis     MI_CMD_QUIET
49b725ae77Skettenis   };
50b725ae77Skettenis 
51b725ae77Skettenis enum print_values {
52b725ae77Skettenis    PRINT_NO_VALUES,
53b725ae77Skettenis    PRINT_ALL_VALUES,
54b725ae77Skettenis    PRINT_SIMPLE_VALUES
55b725ae77Skettenis };
56b725ae77Skettenis 
57b725ae77Skettenis typedef enum mi_cmd_result (mi_cmd_argv_ftype) (char *command, char **argv, int argc);
58b725ae77Skettenis 
59b725ae77Skettenis /* Older MI commands have this interface. Retained until all old
60b725ae77Skettenis    commands are flushed. */
61b725ae77Skettenis 
62b725ae77Skettenis typedef enum mi_cmd_result (mi_cmd_args_ftype) ( /*ui */ char *args, int from_tty);
63b725ae77Skettenis 
64b725ae77Skettenis /* Function implementing each command */
65b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_break_insert;
66b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_break_watch;
67b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_disassemble;
68b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_data_evaluate_expression;
69b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_data_list_register_names;
70b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_data_list_register_values;
71b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_data_list_changed_registers;
72b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_data_read_memory;
73b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_data_write_memory;
74b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_data_write_register_values;
75b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_env_cd;
76b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_env_dir;
77b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_env_path;
78b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_env_pwd;
79b725ae77Skettenis extern mi_cmd_args_ftype mi_cmd_exec_continue;
80b725ae77Skettenis extern mi_cmd_args_ftype mi_cmd_exec_finish;
81b725ae77Skettenis extern mi_cmd_args_ftype mi_cmd_exec_next;
82b725ae77Skettenis extern mi_cmd_args_ftype mi_cmd_exec_next_instruction;
83b725ae77Skettenis extern mi_cmd_args_ftype mi_cmd_exec_return;
84b725ae77Skettenis extern mi_cmd_args_ftype mi_cmd_exec_run;
85b725ae77Skettenis extern mi_cmd_args_ftype mi_cmd_exec_step;
86b725ae77Skettenis extern mi_cmd_args_ftype mi_cmd_exec_step_instruction;
87b725ae77Skettenis extern mi_cmd_args_ftype mi_cmd_exec_until;
88b725ae77Skettenis extern mi_cmd_args_ftype mi_cmd_exec_interrupt;
89b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_file_list_exec_source_file;
90*11efff7fSkettenis extern mi_cmd_argv_ftype mi_cmd_file_list_exec_source_files;
91b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_gdb_exit;
92b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_interpreter_exec;
93b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_stack_info_depth;
94b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_stack_list_args;
95b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_stack_list_frames;
96b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_stack_list_locals;
97b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_stack_select_frame;
98b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_symbol_list_lines;
99b725ae77Skettenis extern mi_cmd_args_ftype mi_cmd_target_download;
100b725ae77Skettenis extern mi_cmd_args_ftype mi_cmd_target_select;
101b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_thread_list_ids;
102b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_thread_select;
103b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_var_assign;
104b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_var_create;
105b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_var_delete;
106b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_var_evaluate_expression;
107b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_var_info_expression;
108b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_var_info_num_children;
109b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_var_info_type;
110b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_var_list_children;
111b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_var_set_format;
112b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_var_show_attributes;
113b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_var_show_format;
114b725ae77Skettenis extern mi_cmd_argv_ftype mi_cmd_var_update;
115b725ae77Skettenis 
116b725ae77Skettenis /* Description of a single command. */
117b725ae77Skettenis 
118b725ae77Skettenis struct mi_cli
119b725ae77Skettenis {
120b725ae77Skettenis   /* Corresponding CLI command.  If ARGS_P is non-zero, the MI
121b725ae77Skettenis      command's argument list is appended to the CLI command.  */
122b725ae77Skettenis   const char *cmd;
123b725ae77Skettenis   int args_p;
124b725ae77Skettenis };
125b725ae77Skettenis 
126b725ae77Skettenis struct mi_cmd
127b725ae77Skettenis {
128b725ae77Skettenis   /* official name of the command.  */
129b725ae77Skettenis   const char *name;
130b725ae77Skettenis   /* The corresponding CLI command that can be used to implement this
131b725ae77Skettenis      MI command (if cli.lhs is non NULL).  */
132b725ae77Skettenis   struct mi_cli cli;
133b725ae77Skettenis   /* If non-null, the function implementing the MI command.  */
134b725ae77Skettenis   mi_cmd_args_ftype *args_func;
135b725ae77Skettenis   /* If non-null, the function implementing the MI command.  */
136b725ae77Skettenis   mi_cmd_argv_ftype *argv_func;
137b725ae77Skettenis };
138b725ae77Skettenis 
139b725ae77Skettenis /* Lookup a command in the mi comand table */
140b725ae77Skettenis 
141b725ae77Skettenis extern struct mi_cmd *mi_lookup (const char *command);
142b725ae77Skettenis 
143b725ae77Skettenis /* Debug flag */
144b725ae77Skettenis extern int mi_debug_p;
145b725ae77Skettenis 
146b725ae77Skettenis /* Raw console output - FIXME: should this be a parameter? */
147b725ae77Skettenis extern struct ui_file *raw_stdout;
148b725ae77Skettenis 
149b725ae77Skettenis extern char *mi_error_message;
150b725ae77Skettenis extern void mi_execute_command (char *cmd, int from_tty);
151b725ae77Skettenis 
152b725ae77Skettenis #endif
153