mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-29 13:04:46 +08:00
Kill the return value for all MI command functions.
* mi/mi-cmds.h (enum mi_cmd_result): Remove. (mi_cmd_argv_ftype): Change return type to void. * mi/mi-main.c: Adjust all function that implement MI commands to return nothing. (struct captured_mi_execute_command_actions): Remove the rc field. (mi_cmd_execute): Return nothing. (mi_execute_async_cli_command): Return nothing. (mi_cmd_exec_interrupt): Don't print ^done here. (mi_cmd_target_select): Don't print ^connected here. (captured_mi_execute_command): Don't check for MI_CMD_DONE. Special-case -target-select and output ^connected, not ^done. * mi/mi-cmd-break.c: Adjust. * mi/mi-cmd-disas.c: Adjust. * mi/mi-cmd-env.c: Adjust. * mi/mi-cmd-file.c: Adjust. * mi/mi-cmd-stack.c: Adjust. * mi/mi-cmd-target.c: Adjust. * mi/mi-cmd-var.c: Adjust. * mi/mi-interp.c: Adjust. * mi/mi-symbol-cmds.c: Adjust.
This commit is contained in:
parent
a2840c3559
commit
ce8f13f88e
@ -1,3 +1,30 @@
|
||||
2008-06-25 Vladimir Prus <vladimir@codesourcery.com>
|
||||
|
||||
Kill the return value for all MI command functions.
|
||||
* mi/mi-cmds.h (enum mi_cmd_result): Remove.
|
||||
(mi_cmd_argv_ftype): Change return type to void.
|
||||
|
||||
* mi/mi-main.c: Adjust all function that implement
|
||||
MI commands to return nothing.
|
||||
(struct captured_mi_execute_command_actions):
|
||||
Remove the rc field.
|
||||
(mi_cmd_execute): Return nothing.
|
||||
(mi_execute_async_cli_command): Return nothing.
|
||||
(mi_cmd_exec_interrupt): Don't print ^done here.
|
||||
(mi_cmd_target_select): Don't print ^connected here.
|
||||
(captured_mi_execute_command): Don't check for MI_CMD_DONE.
|
||||
Special-case -target-select and output ^connected, not ^done.
|
||||
|
||||
* mi/mi-cmd-break.c: Adjust.
|
||||
* mi/mi-cmd-disas.c: Adjust.
|
||||
* mi/mi-cmd-env.c: Adjust.
|
||||
* mi/mi-cmd-file.c: Adjust.
|
||||
* mi/mi-cmd-stack.c: Adjust.
|
||||
* mi/mi-cmd-target.c: Adjust.
|
||||
* mi/mi-cmd-var.c: Adjust.
|
||||
* mi/mi-interp.c: Adjust.
|
||||
* mi/mi-symbol-cmds.c: Adjust.
|
||||
|
||||
2008-06-25 Vladimir Prus <vladimir@codesourcery.com>
|
||||
|
||||
Emit ^running via observer.
|
||||
|
@ -60,7 +60,7 @@ enum bp_type
|
||||
/* Implements the -break-insert command.
|
||||
See the MI manual for the list of possible options. */
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_break_insert (char *command, char **argv, int argc)
|
||||
{
|
||||
char *address = NULL;
|
||||
@ -156,7 +156,6 @@ mi_cmd_break_insert (char *command, char **argv, int argc)
|
||||
error (_("mi_cmd_break_insert: Unsupported tempoary regexp breakpoint"));
|
||||
else
|
||||
rbreak_command_wrapper (address, FROM_TTY);
|
||||
return MI_CMD_DONE;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
@ -167,8 +166,6 @@ mi_cmd_break_insert (char *command, char **argv, int argc)
|
||||
deprecated_set_gdb_event_hooks (old_hooks);
|
||||
if (e.reason < 0)
|
||||
throw_exception (e);
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum wp_type
|
||||
@ -184,7 +181,7 @@ enum wp_type
|
||||
-break-watch -r <expr> --> insert a read watchpoint.
|
||||
-break-watch -a <expr> --> insert an access wp. */
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_break_watch (char *command, char **argv, int argc)
|
||||
{
|
||||
char *expr = NULL;
|
||||
@ -239,5 +236,4 @@ mi_cmd_break_watch (char *command, char **argv, int argc)
|
||||
default:
|
||||
error (_("mi_cmd_break_watch: Unknown watchpoint type."));
|
||||
}
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
@ -46,10 +46,9 @@
|
||||
|
||||
MODE: 0 or 1 for disassembly only, or mixed source and disassembly,
|
||||
respectively. */
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_disassemble (char *command, char **argv, int argc)
|
||||
{
|
||||
enum mi_cmd_result retval;
|
||||
CORE_ADDR start;
|
||||
|
||||
int mixed_source_and_assembly;
|
||||
@ -157,5 +156,4 @@ mi_cmd_disassemble (char *command, char **argv, int argc)
|
||||
line_num,
|
||||
mixed_source_and_assembly, how_many, low, high);
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ env_execute_cli_command (const char *cmd, const char *args)
|
||||
|
||||
|
||||
/* Print working directory. */
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_env_pwd (char *command, char **argv, int argc)
|
||||
{
|
||||
if (argc > 0)
|
||||
@ -73,27 +73,23 @@ mi_cmd_env_pwd (char *command, char **argv, int argc)
|
||||
if (mi_version (uiout) < 2)
|
||||
{
|
||||
env_execute_cli_command ("pwd", NULL);
|
||||
return MI_CMD_DONE;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Otherwise the mi level is 2 or higher. */
|
||||
|
||||
getcwd (gdb_dirbuf, sizeof (gdb_dirbuf));
|
||||
ui_out_field_string (uiout, "cwd", gdb_dirbuf);
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
/* Change working directory. */
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_env_cd (char *command, char **argv, int argc)
|
||||
{
|
||||
if (argc == 0 || argc > 1)
|
||||
error (_("mi_cmd_env_cd: Usage DIRECTORY"));
|
||||
|
||||
env_execute_cli_command ("cd", argv[0]);
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -108,7 +104,7 @@ env_mod_path (char *dirname, char **which_path)
|
||||
}
|
||||
|
||||
/* Add one or more directories to start of executable search path. */
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_env_path (char *command, char **argv, int argc)
|
||||
{
|
||||
char *exec_path;
|
||||
@ -133,7 +129,7 @@ mi_cmd_env_path (char *command, char **argv, int argc)
|
||||
{
|
||||
for (i = argc - 1; i >= 0; --i)
|
||||
env_execute_cli_command ("path", argv[i]);
|
||||
return MI_CMD_DONE;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Otherwise the mi level is 2 or higher. */
|
||||
@ -177,12 +173,10 @@ mi_cmd_env_path (char *command, char **argv, int argc)
|
||||
xfree (exec_path);
|
||||
env = get_in_environ (inferior_environ, path_var_name);
|
||||
ui_out_field_string (uiout, "path", env);
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
/* Add zero or more directories to the front of the source path. */
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_env_dir (char *command, char **argv, int argc)
|
||||
{
|
||||
int i;
|
||||
@ -205,7 +199,7 @@ mi_cmd_env_dir (char *command, char **argv, int argc)
|
||||
{
|
||||
for (i = argc - 1; i >= 0; --i)
|
||||
env_execute_cli_command ("dir", argv[i]);
|
||||
return MI_CMD_DONE;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Otherwise mi level is 2 or higher. */
|
||||
@ -238,21 +232,17 @@ mi_cmd_env_dir (char *command, char **argv, int argc)
|
||||
|
||||
ui_out_field_string (uiout, "source-path", source_path);
|
||||
forget_cached_source_info ();
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
/* Set the inferior terminal device name. */
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_inferior_tty_set (char *command, char **argv, int argc)
|
||||
{
|
||||
set_inferior_io_terminal (argv[0]);
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
/* Print the inferior terminal device name */
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_inferior_tty_show (char *command, char **argv, int argc)
|
||||
{
|
||||
const char *inferior_io_terminal = get_inferior_io_terminal ();
|
||||
@ -262,8 +252,6 @@ mi_cmd_inferior_tty_show (char *command, char **argv, int argc)
|
||||
|
||||
if (inferior_io_terminal)
|
||||
ui_out_field_string (uiout, "inferior_tty_terminal", inferior_io_terminal);
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -28,7 +28,7 @@
|
||||
/* Return to the client the absolute path and line number of the
|
||||
current file being executed. */
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_file_list_exec_source_file (char *command, char **argv, int argc)
|
||||
{
|
||||
struct symtab_and_line st;
|
||||
@ -60,11 +60,9 @@ mi_cmd_file_list_exec_source_file (char *command, char **argv, int argc)
|
||||
ui_out_field_string (uiout, "fullname", st.symtab->fullname);
|
||||
|
||||
ui_out_field_int (uiout, "macro-info", st.symtab->macro_table ? 1 : 0);
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_file_list_exec_source_files (char *command, char **argv, int argc)
|
||||
{
|
||||
struct symtab *s;
|
||||
@ -113,6 +111,4 @@ mi_cmd_file_list_exec_source_files (char *command, char **argv, int argc)
|
||||
}
|
||||
|
||||
ui_out_end (uiout, ui_out_type_list);
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ static void list_args_or_locals (int locals, int values, struct frame_info *fi);
|
||||
specifying the frame numbers at which to start and stop the
|
||||
display. If the two numbers are equal, a single frame will be
|
||||
displayed. */
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_stack_list_frames (char *command, char **argv, int argc)
|
||||
{
|
||||
int frame_low;
|
||||
@ -88,11 +88,9 @@ mi_cmd_stack_list_frames (char *command, char **argv, int argc)
|
||||
}
|
||||
|
||||
do_cleanups (cleanup_stack);
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_stack_info_depth (char *command, char **argv, int argc)
|
||||
{
|
||||
int frame_high;
|
||||
@ -115,14 +113,12 @@ mi_cmd_stack_info_depth (char *command, char **argv, int argc)
|
||||
QUIT;
|
||||
|
||||
ui_out_field_int (uiout, "depth", i);
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
/* Print a list of the locals for the current frame. With argument of
|
||||
0, print only the names, with argument of 1 print also the
|
||||
values. */
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_stack_list_locals (char *command, char **argv, int argc)
|
||||
{
|
||||
struct frame_info *frame;
|
||||
@ -147,13 +143,12 @@ mi_cmd_stack_list_locals (char *command, char **argv, int argc)
|
||||
0 or \"%s\", 1 or \"%s\", 2 or \"%s\""),
|
||||
mi_no_values, mi_all_values, mi_simple_values);
|
||||
list_args_or_locals (1, print_values, frame);
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
/* Print a list of the arguments for the current frame. With argument
|
||||
of 0, print only the names, with argument of 1 print also the
|
||||
values. */
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_stack_list_args (char *command, char **argv, int argc)
|
||||
{
|
||||
int frame_low;
|
||||
@ -205,8 +200,6 @@ mi_cmd_stack_list_args (char *command, char **argv, int argc)
|
||||
}
|
||||
|
||||
do_cleanups (cleanup_stack_args);
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
/* Print a list of the locals or the arguments for the currently
|
||||
@ -315,22 +308,20 @@ list_args_or_locals (int locals, int values, struct frame_info *fi)
|
||||
ui_out_stream_delete (stb);
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_stack_select_frame (char *command, char **argv, int argc)
|
||||
{
|
||||
if (argc == 0 || argc > 1)
|
||||
error (_("mi_cmd_stack_select_frame: Usage: FRAME_SPEC"));
|
||||
|
||||
select_frame_command (argv[0], 1 /* not used */ );
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_stack_info_frame (char *command, char **argv, int argc)
|
||||
{
|
||||
if (argc > 0)
|
||||
error (_("mi_cmd_stack_info_frame: No arguments required"));
|
||||
|
||||
|
||||
print_frame_info (get_selected_frame (NULL), 1, LOC_AND_ADDRESS, 0);
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
@ -23,7 +23,7 @@
|
||||
|
||||
/* Get a file from the target. */
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_target_file_get (char *command, char **argv, int argc)
|
||||
{
|
||||
int optind = 0;
|
||||
@ -43,13 +43,11 @@ mi_cmd_target_file_get (char *command, char **argv, int argc)
|
||||
local_file = argv[optind + 1];
|
||||
|
||||
remote_file_get (remote_file, local_file, 0);
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
/* Send a file to the target. */
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_target_file_put (char *command, char **argv, int argc)
|
||||
{
|
||||
int optind = 0;
|
||||
@ -69,13 +67,11 @@ mi_cmd_target_file_put (char *command, char **argv, int argc)
|
||||
remote_file = argv[optind + 1];
|
||||
|
||||
remote_file_put (local_file, remote_file, 0);
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
/* Delete a file on the target. */
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_target_file_delete (char *command, char **argv, int argc)
|
||||
{
|
||||
int optind = 0;
|
||||
@ -94,7 +90,5 @@ mi_cmd_target_file_delete (char *command, char **argv, int argc)
|
||||
remote_file = argv[optind];
|
||||
|
||||
remote_file_delete (remote_file, 0);
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
|
@ -78,7 +78,7 @@ print_varobj (struct varobj *var, enum print_values print_values,
|
||||
|
||||
/* VAROBJ operations */
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_var_create (char *command, char **argv, int argc)
|
||||
{
|
||||
CORE_ADDR frameaddr = 0;
|
||||
@ -138,10 +138,9 @@ mi_cmd_var_create (char *command, char **argv, int argc)
|
||||
print_varobj (var, PRINT_ALL_VALUES, 0 /* don't print expression */);
|
||||
|
||||
do_cleanups (old_cleanups);
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_var_delete (char *command, char **argv, int argc)
|
||||
{
|
||||
char *name;
|
||||
@ -193,7 +192,6 @@ mi_cmd_var_delete (char *command, char **argv, int argc)
|
||||
ui_out_field_int (uiout, "ndeleted", numdel);
|
||||
|
||||
do_cleanups (old_cleanups);
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
/* Parse a string argument into a format value. */
|
||||
@ -222,7 +220,7 @@ mi_parse_format (const char *arg)
|
||||
error (_("Must specify the format as: \"natural\", \"binary\", \"decimal\", \"hexadecimal\", or \"octal\""));
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_var_set_format (char *command, char **argv, int argc)
|
||||
{
|
||||
enum varobj_display_formats format;
|
||||
@ -247,10 +245,9 @@ mi_cmd_var_set_format (char *command, char **argv, int argc)
|
||||
|
||||
/* Report the value in the new format */
|
||||
ui_out_field_string (uiout, "value", varobj_get_value (var));
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_var_set_frozen (char *command, char **argv, int argc)
|
||||
{
|
||||
struct varobj *var;
|
||||
@ -275,11 +272,10 @@ mi_cmd_var_set_frozen (char *command, char **argv, int argc)
|
||||
/* We don't automatically return the new value, or what varobjs got new
|
||||
values during unfreezing. If this information is required, client
|
||||
should call -var-update explicitly. */
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_var_show_format (char *command, char **argv, int argc)
|
||||
{
|
||||
enum varobj_display_formats format;
|
||||
@ -297,10 +293,9 @@ mi_cmd_var_show_format (char *command, char **argv, int argc)
|
||||
|
||||
/* Report the current format */
|
||||
ui_out_field_string (uiout, "format", varobj_format_string[(int) format]);
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_var_info_num_children (char *command, char **argv, int argc)
|
||||
{
|
||||
struct varobj *var;
|
||||
@ -314,7 +309,6 @@ mi_cmd_var_info_num_children (char *command, char **argv, int argc)
|
||||
error (_("mi_cmd_var_info_num_children: Variable object not found"));
|
||||
|
||||
ui_out_field_int (uiout, "numchild", varobj_get_num_children (var));
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
/* Parse a string argument into a print_values value. */
|
||||
@ -364,7 +358,7 @@ mi_print_value_p (struct type *type, enum print_values print_values)
|
||||
}
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_var_list_children (char *command, char **argv, int argc)
|
||||
{
|
||||
struct varobj *var;
|
||||
@ -394,7 +388,7 @@ mi_cmd_var_list_children (char *command, char **argv, int argc)
|
||||
print_values = PRINT_NO_VALUES;
|
||||
|
||||
if (VEC_length (varobj_p, children) == 0)
|
||||
return MI_CMD_DONE;
|
||||
return;
|
||||
|
||||
if (mi_version (uiout) == 1)
|
||||
cleanup_children = make_cleanup_ui_out_tuple_begin_end (uiout, "children");
|
||||
@ -408,10 +402,9 @@ mi_cmd_var_list_children (char *command, char **argv, int argc)
|
||||
do_cleanups (cleanup_child);
|
||||
}
|
||||
do_cleanups (cleanup_children);
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_var_info_type (char *command, char **argv, int argc)
|
||||
{
|
||||
struct varobj *var;
|
||||
@ -425,10 +418,9 @@ mi_cmd_var_info_type (char *command, char **argv, int argc)
|
||||
error (_("mi_cmd_var_info_type: Variable object not found"));
|
||||
|
||||
ui_out_field_string (uiout, "type", varobj_get_type (var));
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_var_info_path_expression (char *command, char **argv, int argc)
|
||||
{
|
||||
struct varobj *var;
|
||||
@ -445,11 +437,9 @@ mi_cmd_var_info_path_expression (char *command, char **argv, int argc)
|
||||
path_expr = varobj_get_path_expr (var);
|
||||
|
||||
ui_out_field_string (uiout, "path_expr", path_expr);
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_var_info_expression (char *command, char **argv, int argc)
|
||||
{
|
||||
enum varobj_languages lang;
|
||||
@ -467,10 +457,9 @@ mi_cmd_var_info_expression (char *command, char **argv, int argc)
|
||||
|
||||
ui_out_field_string (uiout, "lang", varobj_language_string[(int) lang]);
|
||||
ui_out_field_string (uiout, "exp", varobj_get_expression (var));
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_var_show_attributes (char *command, char **argv, int argc)
|
||||
{
|
||||
int attr;
|
||||
@ -493,10 +482,9 @@ mi_cmd_var_show_attributes (char *command, char **argv, int argc)
|
||||
attstr = "noneditable";
|
||||
|
||||
ui_out_field_string (uiout, "attr", attstr);
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_var_evaluate_expression (char *command, char **argv, int argc)
|
||||
{
|
||||
struct varobj *var;
|
||||
@ -552,11 +540,9 @@ mi_cmd_var_evaluate_expression (char *command, char **argv, int argc)
|
||||
ui_out_field_string (uiout, "value", varobj_get_formatted_value (var, format));
|
||||
else
|
||||
ui_out_field_string (uiout, "value", varobj_get_value (var));
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_var_assign (char *command, char **argv, int argc)
|
||||
{
|
||||
struct varobj *var;
|
||||
@ -579,10 +565,9 @@ mi_cmd_var_assign (char *command, char **argv, int argc)
|
||||
error (_("mi_cmd_var_assign: Could not assign expression to variable object"));
|
||||
|
||||
ui_out_field_string (uiout, "value", varobj_get_value (var));
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_var_update (char *command, char **argv, int argc)
|
||||
{
|
||||
struct varobj *var;
|
||||
@ -620,7 +605,7 @@ mi_cmd_var_update (char *command, char **argv, int argc)
|
||||
if (nv <= 0)
|
||||
{
|
||||
do_cleanups (cleanup);
|
||||
return MI_CMD_DONE;
|
||||
return;
|
||||
}
|
||||
cr = rootlist;
|
||||
while (*cr != NULL)
|
||||
@ -645,7 +630,6 @@ mi_cmd_var_update (char *command, char **argv, int argc)
|
||||
varobj_update_one (var, print_values, 1 /* explicit */);
|
||||
do_cleanups (cleanup);
|
||||
}
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
/* Helper for mi_cmd_var_update(). */
|
||||
|
@ -23,22 +23,6 @@
|
||||
#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,
|
||||
/* 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
|
||||
};
|
||||
|
||||
enum print_values {
|
||||
PRINT_NO_VALUES,
|
||||
PRINT_ALL_VALUES,
|
||||
@ -49,7 +33,7 @@ extern const char mi_no_values[];
|
||||
extern const char mi_simple_values[];
|
||||
extern const char mi_all_values[];
|
||||
|
||||
typedef enum mi_cmd_result (mi_cmd_argv_ftype) (char *command, char **argv, int argc);
|
||||
typedef void (mi_cmd_argv_ftype) (char *command, char **argv, int argc);
|
||||
|
||||
/* Function implementing each command */
|
||||
extern mi_cmd_argv_ftype mi_cmd_break_insert;
|
||||
|
@ -175,7 +175,7 @@ mi_interpreter_prompt_p (void *data)
|
||||
return 0;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_interpreter_exec (char *command, char **argv, int argc)
|
||||
{
|
||||
struct interp *interp_to_use;
|
||||
@ -220,7 +220,6 @@ mi_cmd_interpreter_exec (char *command, char **argv, int argc)
|
||||
if (mi_error_message != NULL)
|
||||
error ("%s", mi_error_message);
|
||||
do_cleanups (old_chain);
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
/*
|
||||
|
127
gdb/mi/mi-main.c
127
gdb/mi/mi-main.c
@ -75,9 +75,6 @@ enum captured_mi_execute_command_actions
|
||||
to mi_execute_command. */
|
||||
struct captured_mi_execute_command_args
|
||||
{
|
||||
/* This return result of the MI command (output). */
|
||||
enum mi_cmd_result rc;
|
||||
|
||||
/* What action to perform when the call is finished (output). */
|
||||
enum captured_mi_execute_command_actions action;
|
||||
|
||||
@ -98,11 +95,11 @@ char *current_token;
|
||||
int running_result_record_printed = 1;
|
||||
|
||||
extern void _initialize_mi_main (void);
|
||||
static enum mi_cmd_result mi_cmd_execute (struct mi_parse *parse);
|
||||
static void mi_cmd_execute (struct mi_parse *parse);
|
||||
|
||||
static void mi_execute_cli_command (const char *cmd, int args_p,
|
||||
const char *args);
|
||||
static enum mi_cmd_result mi_execute_async_cli_command (char *cli_command,
|
||||
static void mi_execute_async_cli_command (char *cli_command,
|
||||
char **argv, int argc);
|
||||
static int register_changed_p (int regnum, struct regcache *,
|
||||
struct regcache *);
|
||||
@ -117,7 +114,7 @@ static void timestamp (struct mi_timestamp *tv);
|
||||
static void print_diff_now (struct mi_timestamp *start);
|
||||
static void print_diff (struct mi_timestamp *start, struct mi_timestamp *end);
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_gdb_exit (char *command, char **argv, int argc)
|
||||
{
|
||||
/* We have to print everything right here because we never return. */
|
||||
@ -127,59 +124,58 @@ mi_cmd_gdb_exit (char *command, char **argv, int argc)
|
||||
mi_out_put (uiout, raw_stdout);
|
||||
/* FIXME: The function called is not yet a formal libgdb function. */
|
||||
quit_force (NULL, FROM_TTY);
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_exec_run (char *command, char **argv, int argc)
|
||||
{
|
||||
/* FIXME: Should call a libgdb function, not a cli wrapper. */
|
||||
return mi_execute_async_cli_command ("run", argv, argc);
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_exec_next (char *command, char **argv, int argc)
|
||||
{
|
||||
/* FIXME: Should call a libgdb function, not a cli wrapper. */
|
||||
return mi_execute_async_cli_command ("next", argv, argc);
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_exec_next_instruction (char *command, char **argv, int argc)
|
||||
{
|
||||
/* FIXME: Should call a libgdb function, not a cli wrapper. */
|
||||
return mi_execute_async_cli_command ("nexti", argv, argc);
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_exec_step (char *command, char **argv, int argc)
|
||||
{
|
||||
/* FIXME: Should call a libgdb function, not a cli wrapper. */
|
||||
return mi_execute_async_cli_command ("step", argv, argc);
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_exec_step_instruction (char *command, char **argv, int argc)
|
||||
{
|
||||
/* FIXME: Should call a libgdb function, not a cli wrapper. */
|
||||
return mi_execute_async_cli_command ("stepi", argv, argc);
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_exec_finish (char *command, char **argv, int argc)
|
||||
{
|
||||
/* FIXME: Should call a libgdb function, not a cli wrapper. */
|
||||
return mi_execute_async_cli_command ("finish", argv, argc);
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_exec_until (char *command, char **argv, int argc)
|
||||
{
|
||||
/* FIXME: Should call a libgdb function, not a cli wrapper. */
|
||||
return mi_execute_async_cli_command ("until", argv, argc);
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_exec_return (char *command, char **argv, int argc)
|
||||
{
|
||||
/* This command doesn't really execute the target, it just pops the
|
||||
@ -196,11 +192,9 @@ mi_cmd_exec_return (char *command, char **argv, int argc)
|
||||
/* Because we have called return_command with from_tty = 0, we need
|
||||
to print the frame here. */
|
||||
print_stack_frame (get_selected_frame (NULL), 1, LOC_AND_ADDRESS);
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_exec_continue (char *command, char **argv, int argc)
|
||||
{
|
||||
/* FIXME: Should call a libgdb function, not a cli wrapper. */
|
||||
@ -212,23 +206,16 @@ mi_cmd_exec_continue (char *command, char **argv, int argc)
|
||||
the result of the interrupt command, and the previous execution
|
||||
token when the target finally stops. See comments in
|
||||
mi_cmd_execute. */
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_exec_interrupt (char *command, char **argv, int argc)
|
||||
{
|
||||
if (!target_executing)
|
||||
error ("mi_cmd_exec_interrupt: Inferior not executing.");
|
||||
|
||||
interrupt_target_command (NULL, 0);
|
||||
if (current_token)
|
||||
fputs_unfiltered (current_token, raw_stdout);
|
||||
fputs_unfiltered ("^done", raw_stdout);
|
||||
mi_out_put (uiout, raw_stdout);
|
||||
mi_out_rewind (uiout);
|
||||
fputs_unfiltered ("\n", raw_stdout);
|
||||
return MI_CMD_QUIET;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_thread_select (char *command, char **argv, int argc)
|
||||
{
|
||||
enum gdb_rc rc;
|
||||
@ -244,11 +231,9 @@ mi_cmd_thread_select (char *command, char **argv, int argc)
|
||||
make_cleanup (xfree, mi_error_message);
|
||||
error ("%s", mi_error_message);
|
||||
}
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_thread_list_ids (char *command, char **argv, int argc)
|
||||
{
|
||||
enum gdb_rc rc;
|
||||
@ -264,11 +249,9 @@ mi_cmd_thread_list_ids (char *command, char **argv, int argc)
|
||||
make_cleanup (xfree, mi_error_message);
|
||||
error ("%s", mi_error_message);
|
||||
}
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_thread_info (char *command, char **argv, int argc)
|
||||
{
|
||||
int thread = -1;
|
||||
@ -280,10 +263,9 @@ mi_cmd_thread_info (char *command, char **argv, int argc)
|
||||
thread = atoi (argv[0]);
|
||||
|
||||
print_thread_info (uiout, thread);
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_data_list_register_names (char *command, char **argv, int argc)
|
||||
{
|
||||
int regnum, numregs;
|
||||
@ -332,10 +314,9 @@ mi_cmd_data_list_register_names (char *command, char **argv, int argc)
|
||||
gdbarch_register_name (current_gdbarch, regnum));
|
||||
}
|
||||
do_cleanups (cleanup);
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_data_list_changed_registers (char *command, char **argv, int argc)
|
||||
{
|
||||
static struct regcache *this_regs = NULL;
|
||||
@ -400,7 +381,6 @@ mi_cmd_data_list_changed_registers (char *command, char **argv, int argc)
|
||||
error ("bad register number");
|
||||
}
|
||||
do_cleanups (cleanup);
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
static int
|
||||
@ -436,7 +416,7 @@ register_changed_p (int regnum, struct regcache *prev_regs,
|
||||
format argumetn there can be a sequence of numbers, indicating which
|
||||
registers to fetch the content of. If the format is the only argument,
|
||||
a list of all the registers with their values is returned. */
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_data_list_register_values (char *command, char **argv, int argc)
|
||||
{
|
||||
int regnum, numregs, format;
|
||||
@ -494,7 +474,6 @@ mi_cmd_data_list_register_values (char *command, char **argv, int argc)
|
||||
error ("bad register number");
|
||||
}
|
||||
do_cleanups (list_cleanup);
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
/* Output one register's contents in the desired format. */
|
||||
@ -549,7 +528,7 @@ get_register (int regnum, int format)
|
||||
/* Write given values into registers. The registers and values are
|
||||
given as pairs. The corresponding MI command is
|
||||
-data-write-register-values <format> [<regnum1> <value1>...<regnumN> <valueN>]*/
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_data_write_register_values (char *command, char **argv, int argc)
|
||||
{
|
||||
int numregs, i;
|
||||
@ -597,13 +576,12 @@ mi_cmd_data_write_register_values (char *command, char **argv, int argc)
|
||||
else
|
||||
error ("bad register number");
|
||||
}
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
/* Evaluate the value of the argument. The argument is an
|
||||
expression. If the expression contains spaces it needs to be
|
||||
included in double quotes. */
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_data_evaluate_expression (char *command, char **argv, int argc)
|
||||
{
|
||||
struct expression *expr;
|
||||
@ -634,11 +612,9 @@ mi_cmd_data_evaluate_expression (char *command, char **argv, int argc)
|
||||
ui_out_stream_delete (stb);
|
||||
|
||||
do_cleanups (old_chain);
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_target_download (char *command, char **argv, int argc)
|
||||
{
|
||||
char *run;
|
||||
@ -651,11 +627,10 @@ mi_cmd_target_download (char *command, char **argv, int argc)
|
||||
execute_command (run, 0);
|
||||
|
||||
do_cleanups (old_cleanups);
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
/* Connect to the remote target. */
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_target_select (char *command, char **argv, int argc)
|
||||
{
|
||||
char *run = NULL;
|
||||
@ -687,15 +662,6 @@ mi_cmd_target_select (char *command, char **argv, int argc)
|
||||
execute_command (run, 0);
|
||||
|
||||
do_cleanups (old_cleanups);
|
||||
|
||||
/* Issue the completion message here. */
|
||||
if (current_token)
|
||||
fputs_unfiltered (current_token, raw_stdout);
|
||||
fputs_unfiltered ("^connected", raw_stdout);
|
||||
mi_out_put (uiout, raw_stdout);
|
||||
mi_out_rewind (uiout);
|
||||
fputs_unfiltered ("\n", raw_stdout);
|
||||
return MI_CMD_QUIET;
|
||||
}
|
||||
|
||||
/* DATA-MEMORY-READ:
|
||||
@ -717,7 +683,7 @@ mi_cmd_target_select (char *command, char **argv, int argc)
|
||||
Returns:
|
||||
The number of bytes read is SIZE*ROW*COL. */
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_data_read_memory (char *command, char **argv, int argc)
|
||||
{
|
||||
struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
|
||||
@ -891,7 +857,6 @@ mi_cmd_data_read_memory (char *command, char **argv, int argc)
|
||||
do_cleanups (cleanup_list_memory);
|
||||
}
|
||||
do_cleanups (cleanups);
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
/* DATA-MEMORY-WRITE:
|
||||
@ -910,7 +875,7 @@ mi_cmd_data_read_memory (char *command, char **argv, int argc)
|
||||
Writes VALUE into ADDR + (COLUMN_OFFSET * WORD_SIZE).
|
||||
|
||||
Prints nothing. */
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_data_write_memory (char *command, char **argv, int argc)
|
||||
{
|
||||
CORE_ADDR addr;
|
||||
@ -975,11 +940,9 @@ mi_cmd_data_write_memory (char *command, char **argv, int argc)
|
||||
write_memory (addr, buffer, word_size);
|
||||
/* Free the buffer. */
|
||||
do_cleanups (old_chain);
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_enable_timings (char *command, char **argv, int argc)
|
||||
{
|
||||
if (argc == 0)
|
||||
@ -996,14 +959,13 @@ mi_cmd_enable_timings (char *command, char **argv, int argc)
|
||||
else
|
||||
goto usage_error;
|
||||
|
||||
return MI_CMD_DONE;
|
||||
return;
|
||||
|
||||
usage_error:
|
||||
error ("mi_cmd_enable_timings: Usage: %s {yes|no}", command);
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_list_features (char *command, char **argv, int argc)
|
||||
{
|
||||
if (argc == 0)
|
||||
@ -1016,12 +978,10 @@ mi_cmd_list_features (char *command, char **argv, int argc)
|
||||
ui_out_field_string (uiout, NULL, "thread-info");
|
||||
|
||||
do_cleanups (cleanup);
|
||||
|
||||
return MI_CMD_DONE;
|
||||
return;
|
||||
}
|
||||
|
||||
error ("-list-features should be passed no arguments");
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
||||
/* Execute a command within a safe environment.
|
||||
@ -1058,7 +1018,7 @@ captured_mi_execute_command (struct ui_out *uiout, void *data)
|
||||
if (do_timings)
|
||||
current_command_ts = context->cmd_start;
|
||||
|
||||
args->rc = mi_cmd_execute (context);
|
||||
mi_cmd_execute (context);
|
||||
|
||||
if (do_timings)
|
||||
timestamp (&cmd_finished);
|
||||
@ -1069,10 +1029,13 @@ captured_mi_execute_command (struct ui_out *uiout, void *data)
|
||||
to directly use the mi_interp's uiout, since the command could
|
||||
have reset the interpreter, in which case the current uiout
|
||||
will most likely crash in the mi_out_* routines. */
|
||||
if (args->rc == MI_CMD_DONE && !running_result_record_printed)
|
||||
if (!running_result_record_printed)
|
||||
{
|
||||
fputs_unfiltered (context->token, raw_stdout);
|
||||
fputs_unfiltered ("^done", raw_stdout);
|
||||
/* There's no particularly good reason why target-connect results
|
||||
in not ^done. Should kill ^connected for MI3. */
|
||||
fputs_unfiltered (strcmp (context->command, "target-select") == 0
|
||||
? "^connected" : "^done", raw_stdout);
|
||||
mi_out_put (uiout, raw_stdout);
|
||||
mi_out_rewind (uiout);
|
||||
/* Have to check cmd_start, since the command could be
|
||||
@ -1099,7 +1062,7 @@ captured_mi_execute_command (struct ui_out *uiout, void *data)
|
||||
/* Call the "console" interpreter. */
|
||||
argv[0] = "console";
|
||||
argv[1] = context->command;
|
||||
args->rc = mi_cmd_interpreter_exec ("-interpreter-exec", argv, 2);
|
||||
mi_cmd_interpreter_exec ("-interpreter-exec", argv, 2);
|
||||
|
||||
/* If we changed interpreters, DON'T print out anything. */
|
||||
if (current_interp_named_p (INTERP_MI)
|
||||
@ -1107,7 +1070,7 @@ captured_mi_execute_command (struct ui_out *uiout, void *data)
|
||||
|| current_interp_named_p (INTERP_MI2)
|
||||
|| current_interp_named_p (INTERP_MI3))
|
||||
{
|
||||
if (args->rc == MI_CMD_DONE && !running_result_record_printed)
|
||||
if (!running_result_record_printed)
|
||||
{
|
||||
fputs_unfiltered (context->token, raw_stdout);
|
||||
fputs_unfiltered ("^done", raw_stdout);
|
||||
@ -1184,11 +1147,10 @@ mi_execute_command (char *cmd, int from_tty)
|
||||
/* ..... */
|
||||
}
|
||||
|
||||
static enum mi_cmd_result
|
||||
static void
|
||||
mi_cmd_execute (struct mi_parse *parse)
|
||||
{
|
||||
struct cleanup *cleanup;
|
||||
enum mi_cmd_result r;
|
||||
free_all_values ();
|
||||
|
||||
if (parse->cmd->argv_func != NULL)
|
||||
@ -1210,9 +1172,8 @@ mi_cmd_execute (struct mi_parse *parse)
|
||||
}
|
||||
current_token = xstrdup (parse->token);
|
||||
cleanup = make_cleanup (free_current_contents, ¤t_token);
|
||||
r = parse->cmd->argv_func (parse->command, parse->argv, parse->argc);
|
||||
parse->cmd->argv_func (parse->command, parse->argv, parse->argc);
|
||||
do_cleanups (cleanup);
|
||||
return r;
|
||||
}
|
||||
else if (parse->cmd->cli.cmd != 0)
|
||||
{
|
||||
@ -1221,7 +1182,6 @@ mi_cmd_execute (struct mi_parse *parse)
|
||||
/* Must be a synchronous one. */
|
||||
mi_execute_cli_command (parse->cmd->cli.cmd, parse->cmd->cli.args_p,
|
||||
parse->args);
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1236,9 +1196,6 @@ mi_cmd_execute (struct mi_parse *parse)
|
||||
|
||||
make_cleanup_ui_file_delete (stb);
|
||||
error_stream (stb);
|
||||
|
||||
/* unreacheable */
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1268,7 +1225,7 @@ mi_execute_cli_command (const char *cmd, int args_p, const char *args)
|
||||
}
|
||||
}
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_execute_async_cli_command (char *cli_command, char **argv, int argc)
|
||||
{
|
||||
struct cleanup *old_cleanups;
|
||||
@ -1295,9 +1252,7 @@ mi_execute_async_cli_command (char *cli_command, char **argv, int argc)
|
||||
do_cleanups (old_cleanups);
|
||||
if (do_timings)
|
||||
print_diff_now (current_command_ts);
|
||||
return MI_CMD_QUIET;
|
||||
}
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -27,7 +27,7 @@
|
||||
the provided (full or base) source file name. The entries
|
||||
are sorted in ascending PC order. */
|
||||
|
||||
enum mi_cmd_result
|
||||
void
|
||||
mi_cmd_symbol_list_lines (char *command, char **argv, int argc)
|
||||
{
|
||||
char *filename;
|
||||
@ -60,6 +60,4 @@ mi_cmd_symbol_list_lines (char *command, char **argv, int argc)
|
||||
}
|
||||
|
||||
do_cleanups (cleanup_stack);
|
||||
|
||||
return MI_CMD_DONE;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user