1 /* MI Command Set for GDB, the GNU debugger. 2 3 Copyright (C) 2000, 2003, 2004, 2005, 2007, 2008, 2009 4 Free Software Foundation, Inc. 5 6 Contributed by Cygnus Solutions (a Red Hat company). 7 8 This file is part of GDB. 9 10 This program is free software; you can redistribute it and/or modify 11 it under the terms of the GNU General Public License as published by 12 the Free Software Foundation; either version 3 of the License, or 13 (at your option) any later version. 14 15 This program is distributed in the hope that it will be useful, 16 but WITHOUT ANY WARRANTY; without even the implied warranty of 17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 GNU General Public License for more details. 19 20 You should have received a copy of the GNU General Public License 21 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 22 23 #ifndef MI_CMDS_H 24 #define MI_CMDS_H 25 26 enum print_values { 27 PRINT_NO_VALUES, 28 PRINT_ALL_VALUES, 29 PRINT_SIMPLE_VALUES 30 }; 31 32 extern const char mi_no_values[]; 33 extern const char mi_simple_values[]; 34 extern const char mi_all_values[]; 35 36 typedef void (mi_cmd_argv_ftype) (char *command, char **argv, int argc); 37 38 /* Function implementing each command */ 39 extern mi_cmd_argv_ftype mi_cmd_break_insert; 40 extern mi_cmd_argv_ftype mi_cmd_break_commands; 41 extern mi_cmd_argv_ftype mi_cmd_break_watch; 42 extern mi_cmd_argv_ftype mi_cmd_disassemble; 43 extern mi_cmd_argv_ftype mi_cmd_data_evaluate_expression; 44 extern mi_cmd_argv_ftype mi_cmd_data_list_register_names; 45 extern mi_cmd_argv_ftype mi_cmd_data_list_register_values; 46 extern mi_cmd_argv_ftype mi_cmd_data_list_changed_registers; 47 extern mi_cmd_argv_ftype mi_cmd_data_read_memory; 48 extern mi_cmd_argv_ftype mi_cmd_data_write_memory; 49 extern mi_cmd_argv_ftype mi_cmd_data_write_register_values; 50 extern mi_cmd_argv_ftype mi_cmd_enable_timings; 51 extern mi_cmd_argv_ftype mi_cmd_env_cd; 52 extern mi_cmd_argv_ftype mi_cmd_env_dir; 53 extern mi_cmd_argv_ftype mi_cmd_env_path; 54 extern mi_cmd_argv_ftype mi_cmd_env_pwd; 55 extern mi_cmd_argv_ftype mi_cmd_exec_continue; 56 extern mi_cmd_argv_ftype mi_cmd_exec_finish; 57 extern mi_cmd_argv_ftype mi_cmd_exec_jump; 58 extern mi_cmd_argv_ftype mi_cmd_exec_next; 59 extern mi_cmd_argv_ftype mi_cmd_exec_next_instruction; 60 extern mi_cmd_argv_ftype mi_cmd_exec_return; 61 extern mi_cmd_argv_ftype mi_cmd_exec_step; 62 extern mi_cmd_argv_ftype mi_cmd_exec_step_instruction; 63 extern mi_cmd_argv_ftype mi_cmd_exec_interrupt; 64 extern mi_cmd_argv_ftype mi_cmd_file_list_exec_source_file; 65 extern mi_cmd_argv_ftype mi_cmd_file_list_exec_source_files; 66 extern mi_cmd_argv_ftype mi_cmd_gdb_exit; 67 extern mi_cmd_argv_ftype mi_cmd_inferior_tty_set; 68 extern mi_cmd_argv_ftype mi_cmd_inferior_tty_show; 69 extern mi_cmd_argv_ftype mi_cmd_interpreter_exec; 70 extern mi_cmd_argv_ftype mi_cmd_list_features; 71 extern mi_cmd_argv_ftype mi_cmd_list_target_features; 72 extern mi_cmd_argv_ftype mi_cmd_list_thread_groups; 73 extern mi_cmd_argv_ftype mi_cmd_stack_info_depth; 74 extern mi_cmd_argv_ftype mi_cmd_stack_info_frame; 75 extern mi_cmd_argv_ftype mi_cmd_stack_list_args; 76 extern mi_cmd_argv_ftype mi_cmd_stack_list_frames; 77 extern mi_cmd_argv_ftype mi_cmd_stack_list_locals; 78 extern mi_cmd_argv_ftype mi_cmd_stack_select_frame; 79 extern mi_cmd_argv_ftype mi_cmd_symbol_list_lines; 80 extern mi_cmd_argv_ftype mi_cmd_target_detach; 81 extern mi_cmd_argv_ftype mi_cmd_target_file_get; 82 extern mi_cmd_argv_ftype mi_cmd_target_file_put; 83 extern mi_cmd_argv_ftype mi_cmd_target_file_delete; 84 extern mi_cmd_argv_ftype mi_cmd_thread_info; 85 extern mi_cmd_argv_ftype mi_cmd_thread_list_ids; 86 extern mi_cmd_argv_ftype mi_cmd_thread_select; 87 extern mi_cmd_argv_ftype mi_cmd_var_assign; 88 extern mi_cmd_argv_ftype mi_cmd_var_create; 89 extern mi_cmd_argv_ftype mi_cmd_var_delete; 90 extern mi_cmd_argv_ftype mi_cmd_var_evaluate_expression; 91 extern mi_cmd_argv_ftype mi_cmd_var_info_expression; 92 extern mi_cmd_argv_ftype mi_cmd_var_info_path_expression; 93 extern mi_cmd_argv_ftype mi_cmd_var_info_num_children; 94 extern mi_cmd_argv_ftype mi_cmd_var_info_type; 95 extern mi_cmd_argv_ftype mi_cmd_var_list_children; 96 extern mi_cmd_argv_ftype mi_cmd_var_set_format; 97 extern mi_cmd_argv_ftype mi_cmd_var_set_frozen; 98 extern mi_cmd_argv_ftype mi_cmd_var_set_visualizer; 99 extern mi_cmd_argv_ftype mi_cmd_var_show_attributes; 100 extern mi_cmd_argv_ftype mi_cmd_var_show_format; 101 extern mi_cmd_argv_ftype mi_cmd_var_update; 102 extern mi_cmd_argv_ftype mi_cmd_enable_pretty_printing; 103 extern mi_cmd_argv_ftype mi_cmd_var_set_update_range; 104 105 /* Description of a single command. */ 106 107 struct mi_cli 108 { 109 /* Corresponding CLI command. If ARGS_P is non-zero, the MI 110 command's argument list is appended to the CLI command. */ 111 const char *cmd; 112 int args_p; 113 }; 114 115 struct mi_cmd 116 { 117 /* official name of the command. */ 118 const char *name; 119 /* The corresponding CLI command that can be used to implement this 120 MI command (if cli.lhs is non NULL). */ 121 struct mi_cli cli; 122 /* If non-null, the function implementing the MI command. */ 123 mi_cmd_argv_ftype *argv_func; 124 }; 125 126 /* Lookup a command in the mi comand table */ 127 128 extern struct mi_cmd *mi_lookup (const char *command); 129 130 /* Debug flag */ 131 extern int mi_debug_p; 132 133 /* Raw console output - FIXME: should this be a parameter? */ 134 extern struct ui_file *raw_stdout; 135 136 extern void mi_execute_command (char *cmd, int from_tty); 137 138 #endif 139