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