This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[MI/RFC] Kill the return value for all MI command functions.


Each MI command is implemented by a function returning something. It
turns out, we don't need to return anything, because:

   - If function errors out, it throws.
   - Otherwise, it succeeds, and we should print ^done
   - Except that for backward compatibility:
        - If command resumes target, we should print ^running.
        However, my previous patch introduces a global flag that allows
        to check if ^running was printed
        - For -target-select, we should print ^connected. But we can
        special-case the command name.

So, return value is actually not necessary. This patch kills it, removing
some 100 lines of code.

I'll check this in in a few days if there are no objections.

- Volodya	

	* 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.
---
 gdb/mi/mi-cmd-break.c   |    8 +--
 gdb/mi/mi-cmd-disas.c   |    4 +-
 gdb/mi/mi-cmd-env.c     |   30 +++--------
 gdb/mi/mi-cmd-file.c    |    8 +--
 gdb/mi/mi-cmd-stack.c   |   23 +++------
 gdb/mi/mi-cmd-target.c  |   12 +---
 gdb/mi/mi-cmd-var.c     |   48 ++++++------------
 gdb/mi/mi-cmds.h        |   18 +------
 gdb/mi/mi-interp.c      |    3 +-
 gdb/mi/mi-main.c        |  127 +++++++++++++++--------------------------------
 gdb/mi/mi-symbol-cmds.c |    4 +-
 11 files changed, 84 insertions(+), 201 deletions(-)

diff --git a/gdb/mi/mi-cmd-break.c b/gdb/mi/mi-cmd-break.c
index 3a5faf3..1bfb567 100644
--- a/gdb/mi/mi-cmd-break.c
+++ b/gdb/mi/mi-cmd-break.c
@@ -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;
 }
diff --git a/gdb/mi/mi-cmd-disas.c b/gdb/mi/mi-cmd-disas.c
index d2cb655..300f6b7 100644
--- a/gdb/mi/mi-cmd-disas.c
+++ b/gdb/mi/mi-cmd-disas.c
@@ -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;
 }
diff --git a/gdb/mi/mi-cmd-env.c b/gdb/mi/mi-cmd-env.c
index aee7994..327ddc5 100644
--- a/gdb/mi/mi-cmd-env.c
+++ b/gdb/mi/mi-cmd-env.c
@@ -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 
diff --git a/gdb/mi/mi-cmd-file.c b/gdb/mi/mi-cmd-file.c
index 8c74170..de045cb 100644
--- a/gdb/mi/mi-cmd-file.c
+++ b/gdb/mi/mi-cmd-file.c
@@ -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;
 }
diff --git a/gdb/mi/mi-cmd-stack.c b/gdb/mi/mi-cmd-stack.c
index cddb8a1..baf9b6d 100644
--- a/gdb/mi/mi-cmd-stack.c
+++ b/gdb/mi/mi-cmd-stack.c
@@ -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;
 }
diff --git a/gdb/mi/mi-cmd-target.c b/gdb/mi/mi-cmd-target.c
index 8ca4def..7dd55bd 100644
--- a/gdb/mi/mi-cmd-target.c
+++ b/gdb/mi/mi-cmd-target.c
@@ -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;
 }
 
diff --git a/gdb/mi/mi-cmd-var.c b/gdb/mi/mi-cmd-var.c
index 50f7add..0adcf1f 100644
--- a/gdb/mi/mi-cmd-var.c
+++ b/gdb/mi/mi-cmd-var.c
@@ -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().  */
diff --git a/gdb/mi/mi-cmds.h b/gdb/mi/mi-cmds.h
index 087b5e4..e4450da 100644
--- a/gdb/mi/mi-cmds.h
+++ b/gdb/mi/mi-cmds.h
@@ -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;
diff --git a/gdb/mi/mi-interp.c b/gdb/mi/mi-interp.c
index e329b8b..4a1821d 100644
--- a/gdb/mi/mi-interp.c
+++ b/gdb/mi/mi-interp.c
@@ -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;
 }
 
 /*
diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c
index 0f7b8ed..6dd7107 100644
--- a/gdb/mi/mi-main.c
+++ b/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 (!is_running (inferior_ptid))
     error ("mi_cmd_exec_interrupt: Inferior not running.");
 
   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);
@@ -1191,11 +1154,10 @@ do_restore_selected_thread_and_frame_cleanup (void *arg)
   restore_selected_thread_and_frame ();
 }
 
-static enum mi_cmd_result
+static void
 mi_cmd_execute (struct mi_parse *parse)
 {
   struct cleanup *cleanup = make_cleanup (null_cleanup, NULL);
-  enum mi_cmd_result r;
   free_all_values ();
 
   /* Switch to the frontend selected thread, before invoking the
@@ -1246,9 +1208,8 @@ mi_cmd_execute (struct mi_parse *parse)
 	}
       current_token = xstrdup (parse->token);
       cleanup = make_cleanup (free_current_contents, &current_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)
     {
@@ -1257,7 +1218,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
     {
@@ -1272,9 +1232,6 @@ mi_cmd_execute (struct mi_parse *parse)
 
       make_cleanup_ui_file_delete (stb);
       error_stream (stb);
-
-      /* unreacheable */
-      return MI_CMD_DONE;
     }
 }
 
@@ -1304,7 +1261,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;
@@ -1331,9 +1288,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
diff --git a/gdb/mi/mi-symbol-cmds.c b/gdb/mi/mi-symbol-cmds.c
index 4e8b3ff..b4b6c1a 100644
--- a/gdb/mi/mi-symbol-cmds.c
+++ b/gdb/mi/mi-symbol-cmds.c
@@ -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;
 }
-- 
1.5.3.5


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]