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