X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fmi%2Fmi-cmds.h;h=af96585e798ec39fbd94adb2761fdb2b15616db8;hb=76727919ceb590f03ff0f6db08b7ceab5b7aeaff;hp=f4fe64d279e617a5ac9768bb0b12dbcde9c8be43;hpb=068890be59b98a2f5e269cbc070f6d3f36676aca;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/mi/mi-cmds.h b/gdb/mi/mi-cmds.h index f4fe64d279..af96585e79 100644 --- a/gdb/mi/mi-cmds.h +++ b/gdb/mi/mi-cmds.h @@ -1,12 +1,14 @@ -/* MI Command Set. - Copyright 2000 Free Software Foundation, Inc. +/* MI Command Set for GDB, the GNU debugger. + + Copyright (C) 2000-2018 Free Software Foundation, Inc. + Contributed by Cygnus Solutions (a Red Hat company). This file is part of GDB. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -15,115 +17,149 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + along with this program. If not, see . */ #ifndef MI_CMDS_H #define MI_CMDS_H -/* An MI command can return any of the following. */ - -enum mi_cmd_result - { - /* Report the command as ``done''. Display both the ``NNN^done'' - message and the completion prompt. */ - MI_CMD_DONE = 0, - /* The command is still running in the forground. Main loop should - display the completion prompt. */ - MI_CMD_FORGROUND, - /* An error condition was detected and an error message was - asprintf'd into the mi_error_message buffer. The main loop will - display the error message and the completion prompt. */ - MI_CMD_ERROR, - /* An error condition was detected and caught. The error message is - in the global error message buffer. The main loop will display - the error message and the completion prompt. */ - MI_CMD_CAUGHT_ERROR, - /* The MI command has already displayed its completion message. - Main loop will not display a completion message but will display - the completion prompt. */ - MI_CMD_QUIET - }; - -typedef enum mi_cmd_result (mi_cmd_argv_ftype) (char *command, char **argv, int argc); - -/* Older MI commands have this interface. Retained until all old - commands are flushed. */ - -typedef enum mi_cmd_result (mi_cmd_args_ftype) ( /*ui */ char *args, int from_tty); - -/* Function implementing each command */ +enum print_values { + PRINT_NO_VALUES, + PRINT_ALL_VALUES, + PRINT_SIMPLE_VALUES +}; + +typedef void (mi_cmd_argv_ftype) (const char *command, char **argv, int argc); + +/* Declarations of the functions implementing each command. */ + +extern mi_cmd_argv_ftype mi_cmd_ada_task_info; +extern mi_cmd_argv_ftype mi_cmd_add_inferior; extern mi_cmd_argv_ftype mi_cmd_break_insert; +extern mi_cmd_argv_ftype mi_cmd_dprintf_insert; +extern mi_cmd_argv_ftype mi_cmd_break_commands; +extern mi_cmd_argv_ftype mi_cmd_break_passcount; extern mi_cmd_argv_ftype mi_cmd_break_watch; +extern mi_cmd_argv_ftype mi_cmd_catch_assert; +extern mi_cmd_argv_ftype mi_cmd_catch_exception; +extern mi_cmd_argv_ftype mi_cmd_catch_handlers; +extern mi_cmd_argv_ftype mi_cmd_catch_load; +extern mi_cmd_argv_ftype mi_cmd_catch_unload; extern mi_cmd_argv_ftype mi_cmd_disassemble; extern mi_cmd_argv_ftype mi_cmd_data_evaluate_expression; extern mi_cmd_argv_ftype mi_cmd_data_list_register_names; extern mi_cmd_argv_ftype mi_cmd_data_list_register_values; extern mi_cmd_argv_ftype mi_cmd_data_list_changed_registers; extern mi_cmd_argv_ftype mi_cmd_data_read_memory; +extern mi_cmd_argv_ftype mi_cmd_data_read_memory_bytes; extern mi_cmd_argv_ftype mi_cmd_data_write_memory; +extern mi_cmd_argv_ftype mi_cmd_data_write_memory_bytes; extern mi_cmd_argv_ftype mi_cmd_data_write_register_values; +extern mi_cmd_argv_ftype mi_cmd_enable_timings; extern mi_cmd_argv_ftype mi_cmd_env_cd; extern mi_cmd_argv_ftype mi_cmd_env_dir; extern mi_cmd_argv_ftype mi_cmd_env_path; extern mi_cmd_argv_ftype mi_cmd_env_pwd; -extern mi_cmd_args_ftype mi_cmd_exec_continue; -extern mi_cmd_args_ftype mi_cmd_exec_finish; -extern mi_cmd_args_ftype mi_cmd_exec_next; -extern mi_cmd_args_ftype mi_cmd_exec_next_instruction; -extern mi_cmd_args_ftype mi_cmd_exec_return; -extern mi_cmd_args_ftype mi_cmd_exec_run; -extern mi_cmd_args_ftype mi_cmd_exec_step; -extern mi_cmd_args_ftype mi_cmd_exec_step_instruction; -extern mi_cmd_args_ftype mi_cmd_exec_until; -extern mi_cmd_args_ftype mi_cmd_exec_interrupt; +extern mi_cmd_argv_ftype mi_cmd_exec_continue; +extern mi_cmd_argv_ftype mi_cmd_exec_finish; +extern mi_cmd_argv_ftype mi_cmd_exec_interrupt; +extern mi_cmd_argv_ftype mi_cmd_exec_jump; +extern mi_cmd_argv_ftype mi_cmd_exec_next; +extern mi_cmd_argv_ftype mi_cmd_exec_next_instruction; +extern mi_cmd_argv_ftype mi_cmd_exec_return; +extern mi_cmd_argv_ftype mi_cmd_exec_run; +extern mi_cmd_argv_ftype mi_cmd_exec_step; +extern mi_cmd_argv_ftype mi_cmd_exec_step_instruction; +extern mi_cmd_argv_ftype mi_cmd_file_list_exec_source_file; +extern mi_cmd_argv_ftype mi_cmd_file_list_exec_source_files; +extern mi_cmd_argv_ftype mi_cmd_file_list_shared_libraries; extern mi_cmd_argv_ftype mi_cmd_gdb_exit; +extern mi_cmd_argv_ftype mi_cmd_inferior_tty_set; +extern mi_cmd_argv_ftype mi_cmd_inferior_tty_show; +extern mi_cmd_argv_ftype mi_cmd_info_ada_exceptions; +extern mi_cmd_argv_ftype mi_cmd_info_gdb_mi_command; +extern mi_cmd_argv_ftype mi_cmd_info_os; +extern mi_cmd_argv_ftype mi_cmd_interpreter_exec; +extern mi_cmd_argv_ftype mi_cmd_list_features; +extern mi_cmd_argv_ftype mi_cmd_list_target_features; +extern mi_cmd_argv_ftype mi_cmd_list_thread_groups; +extern mi_cmd_argv_ftype mi_cmd_remove_inferior; extern mi_cmd_argv_ftype mi_cmd_stack_info_depth; +extern mi_cmd_argv_ftype mi_cmd_stack_info_frame; extern mi_cmd_argv_ftype mi_cmd_stack_list_args; extern mi_cmd_argv_ftype mi_cmd_stack_list_frames; extern mi_cmd_argv_ftype mi_cmd_stack_list_locals; +extern mi_cmd_argv_ftype mi_cmd_stack_list_variables; extern mi_cmd_argv_ftype mi_cmd_stack_select_frame; -extern mi_cmd_args_ftype mi_cmd_target_download; -extern mi_cmd_args_ftype mi_cmd_target_select; +extern mi_cmd_argv_ftype mi_cmd_symbol_list_lines; +extern mi_cmd_argv_ftype mi_cmd_target_detach; +extern mi_cmd_argv_ftype mi_cmd_target_file_get; +extern mi_cmd_argv_ftype mi_cmd_target_file_put; +extern mi_cmd_argv_ftype mi_cmd_target_file_delete; +extern mi_cmd_argv_ftype mi_cmd_target_flash_erase; +extern mi_cmd_argv_ftype mi_cmd_thread_info; extern mi_cmd_argv_ftype mi_cmd_thread_list_ids; extern mi_cmd_argv_ftype mi_cmd_thread_select; +extern mi_cmd_argv_ftype mi_cmd_trace_define_variable; +extern mi_cmd_argv_ftype mi_cmd_trace_find; +extern mi_cmd_argv_ftype mi_cmd_trace_frame_collected; +extern mi_cmd_argv_ftype mi_cmd_trace_list_variables; +extern mi_cmd_argv_ftype mi_cmd_trace_save; +extern mi_cmd_argv_ftype mi_cmd_trace_start; +extern mi_cmd_argv_ftype mi_cmd_trace_status; +extern mi_cmd_argv_ftype mi_cmd_trace_stop; extern mi_cmd_argv_ftype mi_cmd_var_assign; extern mi_cmd_argv_ftype mi_cmd_var_create; extern mi_cmd_argv_ftype mi_cmd_var_delete; extern mi_cmd_argv_ftype mi_cmd_var_evaluate_expression; extern mi_cmd_argv_ftype mi_cmd_var_info_expression; +extern mi_cmd_argv_ftype mi_cmd_var_info_path_expression; extern mi_cmd_argv_ftype mi_cmd_var_info_num_children; extern mi_cmd_argv_ftype mi_cmd_var_info_type; extern mi_cmd_argv_ftype mi_cmd_var_list_children; extern mi_cmd_argv_ftype mi_cmd_var_set_format; +extern mi_cmd_argv_ftype mi_cmd_var_set_frozen; +extern mi_cmd_argv_ftype mi_cmd_var_set_visualizer; extern mi_cmd_argv_ftype mi_cmd_var_show_attributes; extern mi_cmd_argv_ftype mi_cmd_var_show_format; extern mi_cmd_argv_ftype mi_cmd_var_update; +extern mi_cmd_argv_ftype mi_cmd_enable_pretty_printing; +extern mi_cmd_argv_ftype mi_cmd_enable_frame_filters; +extern mi_cmd_argv_ftype mi_cmd_var_set_update_range; + +/* Description of a single command. */ -/* Description of a single command. */ +struct mi_cli +{ + /* Corresponding CLI command. If ARGS_P is non-zero, the MI + command's argument list is appended to the CLI command. */ + const char *cmd; + int args_p; +}; struct mi_cmd - { - /* official name of the command */ - const char *name; - /* If non-null, the corresponding CLI command that can be used to - implement this MI command */ - const char *cli; - /* If non-null, the function implementing the MI command */ - mi_cmd_args_ftype *args_func; - /* If non-null, the function implementing the MI command */ - mi_cmd_argv_ftype *argv_func; - }; - -/* Lookup a command in the mi comand table */ +{ + /* Official name of the command. */ + const char *name; + /* The corresponding CLI command that can be used to implement this + MI command (if cli.lhs is non NULL). */ + struct mi_cli cli; + /* If non-null, the function implementing the MI command. */ + mi_cmd_argv_ftype *argv_func; + /* If non-null, the pointer to a field in + 'struct mi_suppress_notification', which will be set to true by MI + command processor (mi-main.c:mi_cmd_execute) when this command is + being executed. It will be set back to false when command has been + executed. */ + int *suppress_notification; +}; + +/* Lookup a command in the MI command table. */ extern struct mi_cmd *mi_lookup (const char *command); /* Debug flag */ extern int mi_debug_p; -/* Raw console output - FIXME: should this be a parameter? */ -extern struct ui_file *raw_stdout; +extern void mi_execute_command (const char *cmd, int from_tty); #endif