1 /* MI Command Set for GDB, the GNU debugger. 2 3 Copyright (C) 2000-2019 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 3 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, see <http://www.gnu.org/licenses/>. */ 21 22 #ifndef MI_MI_CMDS_H 23 #define MI_MI_CMDS_H 24 25 enum print_values { 26 PRINT_NO_VALUES, 27 PRINT_ALL_VALUES, 28 PRINT_SIMPLE_VALUES 29 }; 30 31 typedef void (mi_cmd_argv_ftype) (const char *command, char **argv, int argc); 32 33 /* Declarations of the functions implementing each command. */ 34 35 extern mi_cmd_argv_ftype mi_cmd_ada_task_info; 36 extern mi_cmd_argv_ftype mi_cmd_add_inferior; 37 extern mi_cmd_argv_ftype mi_cmd_break_insert; 38 extern mi_cmd_argv_ftype mi_cmd_dprintf_insert; 39 extern mi_cmd_argv_ftype mi_cmd_break_commands; 40 extern mi_cmd_argv_ftype mi_cmd_break_passcount; 41 extern mi_cmd_argv_ftype mi_cmd_break_watch; 42 extern mi_cmd_argv_ftype mi_cmd_catch_assert; 43 extern mi_cmd_argv_ftype mi_cmd_catch_exception; 44 extern mi_cmd_argv_ftype mi_cmd_catch_handlers; 45 extern mi_cmd_argv_ftype mi_cmd_catch_load; 46 extern mi_cmd_argv_ftype mi_cmd_catch_unload; 47 extern mi_cmd_argv_ftype mi_cmd_disassemble; 48 extern mi_cmd_argv_ftype mi_cmd_data_evaluate_expression; 49 extern mi_cmd_argv_ftype mi_cmd_data_list_register_names; 50 extern mi_cmd_argv_ftype mi_cmd_data_list_register_values; 51 extern mi_cmd_argv_ftype mi_cmd_data_list_changed_registers; 52 extern mi_cmd_argv_ftype mi_cmd_data_read_memory; 53 extern mi_cmd_argv_ftype mi_cmd_data_read_memory_bytes; 54 extern mi_cmd_argv_ftype mi_cmd_data_write_memory; 55 extern mi_cmd_argv_ftype mi_cmd_data_write_memory_bytes; 56 extern mi_cmd_argv_ftype mi_cmd_data_write_register_values; 57 extern mi_cmd_argv_ftype mi_cmd_enable_timings; 58 extern mi_cmd_argv_ftype mi_cmd_env_cd; 59 extern mi_cmd_argv_ftype mi_cmd_env_dir; 60 extern mi_cmd_argv_ftype mi_cmd_env_path; 61 extern mi_cmd_argv_ftype mi_cmd_env_pwd; 62 extern mi_cmd_argv_ftype mi_cmd_exec_continue; 63 extern mi_cmd_argv_ftype mi_cmd_exec_finish; 64 extern mi_cmd_argv_ftype mi_cmd_exec_interrupt; 65 extern mi_cmd_argv_ftype mi_cmd_exec_jump; 66 extern mi_cmd_argv_ftype mi_cmd_exec_next; 67 extern mi_cmd_argv_ftype mi_cmd_exec_next_instruction; 68 extern mi_cmd_argv_ftype mi_cmd_exec_return; 69 extern mi_cmd_argv_ftype mi_cmd_exec_run; 70 extern mi_cmd_argv_ftype mi_cmd_exec_step; 71 extern mi_cmd_argv_ftype mi_cmd_exec_step_instruction; 72 extern mi_cmd_argv_ftype mi_cmd_file_list_exec_source_file; 73 extern mi_cmd_argv_ftype mi_cmd_file_list_exec_source_files; 74 extern mi_cmd_argv_ftype mi_cmd_file_list_shared_libraries; 75 extern mi_cmd_argv_ftype mi_cmd_gdb_exit; 76 extern mi_cmd_argv_ftype mi_cmd_inferior_tty_set; 77 extern mi_cmd_argv_ftype mi_cmd_inferior_tty_show; 78 extern mi_cmd_argv_ftype mi_cmd_info_ada_exceptions; 79 extern mi_cmd_argv_ftype mi_cmd_info_gdb_mi_command; 80 extern mi_cmd_argv_ftype mi_cmd_info_os; 81 extern mi_cmd_argv_ftype mi_cmd_interpreter_exec; 82 extern mi_cmd_argv_ftype mi_cmd_list_features; 83 extern mi_cmd_argv_ftype mi_cmd_list_target_features; 84 extern mi_cmd_argv_ftype mi_cmd_list_thread_groups; 85 extern mi_cmd_argv_ftype mi_cmd_remove_inferior; 86 extern mi_cmd_argv_ftype mi_cmd_stack_info_depth; 87 extern mi_cmd_argv_ftype mi_cmd_stack_info_frame; 88 extern mi_cmd_argv_ftype mi_cmd_stack_list_args; 89 extern mi_cmd_argv_ftype mi_cmd_stack_list_frames; 90 extern mi_cmd_argv_ftype mi_cmd_stack_list_locals; 91 extern mi_cmd_argv_ftype mi_cmd_stack_list_variables; 92 extern mi_cmd_argv_ftype mi_cmd_stack_select_frame; 93 extern mi_cmd_argv_ftype mi_cmd_symbol_list_lines; 94 extern mi_cmd_argv_ftype mi_cmd_target_detach; 95 extern mi_cmd_argv_ftype mi_cmd_target_file_get; 96 extern mi_cmd_argv_ftype mi_cmd_target_file_put; 97 extern mi_cmd_argv_ftype mi_cmd_target_file_delete; 98 extern mi_cmd_argv_ftype mi_cmd_target_flash_erase; 99 extern mi_cmd_argv_ftype mi_cmd_thread_info; 100 extern mi_cmd_argv_ftype mi_cmd_thread_list_ids; 101 extern mi_cmd_argv_ftype mi_cmd_thread_select; 102 extern mi_cmd_argv_ftype mi_cmd_trace_define_variable; 103 extern mi_cmd_argv_ftype mi_cmd_trace_find; 104 extern mi_cmd_argv_ftype mi_cmd_trace_frame_collected; 105 extern mi_cmd_argv_ftype mi_cmd_trace_list_variables; 106 extern mi_cmd_argv_ftype mi_cmd_trace_save; 107 extern mi_cmd_argv_ftype mi_cmd_trace_start; 108 extern mi_cmd_argv_ftype mi_cmd_trace_status; 109 extern mi_cmd_argv_ftype mi_cmd_trace_stop; 110 extern mi_cmd_argv_ftype mi_cmd_var_assign; 111 extern mi_cmd_argv_ftype mi_cmd_var_create; 112 extern mi_cmd_argv_ftype mi_cmd_var_delete; 113 extern mi_cmd_argv_ftype mi_cmd_var_evaluate_expression; 114 extern mi_cmd_argv_ftype mi_cmd_var_info_expression; 115 extern mi_cmd_argv_ftype mi_cmd_var_info_path_expression; 116 extern mi_cmd_argv_ftype mi_cmd_var_info_num_children; 117 extern mi_cmd_argv_ftype mi_cmd_var_info_type; 118 extern mi_cmd_argv_ftype mi_cmd_var_list_children; 119 extern mi_cmd_argv_ftype mi_cmd_var_set_format; 120 extern mi_cmd_argv_ftype mi_cmd_var_set_frozen; 121 extern mi_cmd_argv_ftype mi_cmd_var_set_visualizer; 122 extern mi_cmd_argv_ftype mi_cmd_var_show_attributes; 123 extern mi_cmd_argv_ftype mi_cmd_var_show_format; 124 extern mi_cmd_argv_ftype mi_cmd_var_update; 125 extern mi_cmd_argv_ftype mi_cmd_enable_pretty_printing; 126 extern mi_cmd_argv_ftype mi_cmd_enable_frame_filters; 127 extern mi_cmd_argv_ftype mi_cmd_var_set_update_range; 128 129 /* Description of a single command. */ 130 131 struct mi_cli 132 { 133 /* Corresponding CLI command. If ARGS_P is non-zero, the MI 134 command's argument list is appended to the CLI command. */ 135 const char *cmd; 136 int args_p; 137 }; 138 139 struct mi_cmd 140 { 141 /* Official name of the command. */ 142 const char *name; 143 /* The corresponding CLI command that can be used to implement this 144 MI command (if cli.lhs is non NULL). */ 145 struct mi_cli cli; 146 /* If non-null, the function implementing the MI command. */ 147 mi_cmd_argv_ftype *argv_func; 148 /* If non-null, the pointer to a field in 149 'struct mi_suppress_notification', which will be set to true by MI 150 command processor (mi-main.c:mi_cmd_execute) when this command is 151 being executed. It will be set back to false when command has been 152 executed. */ 153 int *suppress_notification; 154 }; 155 156 /* Lookup a command in the MI command table. */ 157 158 extern struct mi_cmd *mi_lookup (const char *command); 159 160 /* Debug flag */ 161 extern int mi_debug_p; 162 163 extern void mi_execute_command (const char *cmd, int from_tty); 164 165 #endif /* MI_MI_CMDS_H */ 166