Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* RFA: fix PR mi/8138
@ 2011-01-10 20:16 Tom Tromey
  2011-01-11  0:07 ` Pedro Alves
  2011-01-11  4:01 ` Eli Zaretskii
  0 siblings, 2 replies; 7+ messages in thread
From: Tom Tromey @ 2011-01-10 20:16 UTC (permalink / raw)
  To: gdb-patches

This needs at least a doc review.

This fixes PR 8138.  The bug is that there is no MI equivalent of "info
shared".

This patch fixes the bug in a reasonably straightforward way.  There is
a little ugliness in info_sharedlibrary_command, because the MI docs say
that new MI commands will always output lists, but this command was
emitting a table.

Built and regested on x86-64 (compile farm).
A new test case is included; this requires my previous patch.

Tom

2011-01-10  Tom Tromey  <tromey@redhat.com>

	PR mi/8138:
	* solib.h (info_sharedlibrary_command): Declare.
	* solib.c (info_sharedlibrary_command): No longer 'static'.
	Handle MI output.
	* mi/mi-cmds.c (mi_cmds): Add "file-list-shared-libraries" entry.
	* mi/mi-cmd-file.c (mi_cmd_file_list_shared_libraries): New
	function.
	* mi/mi-cmds.h (mi_cmd_file_list_shared_libraries): Declare.

2011-01-10  Tom Tromey  <tromey@redhat.com>

	* gdb.texinfo (GDB/MI File Commands): Document
	-file-list-shared-libraries.

2011-01-10  Tom Tromey  <tromey@redhat.com>

	* gdb.mi/mi-solib.exp: Add test for -file-list-shared-libraries.

diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 7f8c785..e3a59cd 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -28847,7 +28847,7 @@ The @value{GDBN} equivalent is @samp{info sources}.
 (gdb)
 @end smallexample
 
-@ignore
+
 @subheading The @code{-file-list-shared-libraries} Command
 @findex -file-list-shared-libraries
 
@@ -28859,14 +28859,41 @@ The @value{GDBN} equivalent is @samp{info sources}.
 
 List the shared libraries in the program.
 
+@subsubheading Result
+
+The result is a table of libraries.  The following attributes are
+defined for a given library:
+
+@table @samp
+@item from
+@itemx to
+These items, if provided, are a range of addresses belonging to this
+shared library.
+
+@item syms-read
+This indicates whether debugging information has been read for this
+library.  This is either @samp{0}, meaning that debugging information
+for this library has not been read; @samp{1}, meaning that the library
+does not have debugging information; or @samp{2}, meaning that the
+debugging information exists and has been read.
+
+@item name
+The name of the library.
+@end table
+
 @subsubheading @value{GDBN} Command
 
 The corresponding @value{GDBN} command is @samp{info shared}.
 
 @subsubheading Example
-N.A.
+@smallexample
+(gdb)
+-file-list-shared-libraries
+^done,sharedlibs=[lib=[from="0x00111360",to="0x00111498",syms-read="2",name="/lib/libexample.so"]]
+@end smallexample
 
 
+@ignore
 @subheading The @code{-file-list-symbol-files} Command
 @findex -file-list-symbol-files
 
diff --git a/gdb/mi/mi-cmd-file.c b/gdb/mi/mi-cmd-file.c
index e575012..b7d0030 100644
--- a/gdb/mi/mi-cmd-file.c
+++ b/gdb/mi/mi-cmd-file.c
@@ -26,6 +26,7 @@
 #include "source.h"
 #include "objfiles.h"
 #include "psymtab.h"
+#include "solib.h"
 
 /* Return to the client the absolute path and line number of the 
    current file being executed. */
@@ -109,3 +110,14 @@ mi_cmd_file_list_exec_source_files (char *command, char **argv, int argc)
 
   ui_out_end (uiout, ui_out_type_list);
 }
+
+/* Implementation of the -file-list-shared-libraries command.  */
+
+void
+mi_cmd_file_list_shared_libraries (char *command, char **argv, int argc)
+{
+  if (!mi_valid_noargs ("mi_cmd_file_list_shared_libraries", argc, argv))
+    error (_("mi_cmd_file_list_shared_libraries: Usage: No args"));
+
+  info_sharedlibrary_command (NULL, 0);
+}
diff --git a/gdb/mi/mi-cmds.c b/gdb/mi/mi-cmds.c
index 0b32db0..3e6da2e 100644
--- a/gdb/mi/mi-cmds.c
+++ b/gdb/mi/mi-cmds.c
@@ -82,6 +82,8 @@ struct mi_cmd mi_cmds[] =
     mi_cmd_file_list_exec_source_file},
   { "file-list-exec-source-files", { NULL, 0 },
     mi_cmd_file_list_exec_source_files },
+  { "file-list-shared-libraries", { NULL, 0 },
+    mi_cmd_file_list_shared_libraries },
   { "file-symbol-file", { "symbol-file", 1 }, NULL },
   { "gdb-exit", { NULL, 0 }, mi_cmd_gdb_exit},
   { "gdb-set", { "set", 1 }, NULL },
diff --git a/gdb/mi/mi-cmds.h b/gdb/mi/mi-cmds.h
index 18b4ad7..1cb5556 100644
--- a/gdb/mi/mi-cmds.h
+++ b/gdb/mi/mi-cmds.h
@@ -68,6 +68,7 @@ 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;
diff --git a/gdb/solib.c b/gdb/solib.c
index 8fe35e5..975e9fb 100644
--- a/gdb/solib.c
+++ b/gdb/solib.c
@@ -1002,14 +1002,14 @@ solib_add (char *pattern, int from_tty,
    print them all.
  */
 
-static void
+void
 info_sharedlibrary_command (char *pattern, int from_tty)
 {
   struct so_list *so = NULL;	/* link map state variable */
   int so_missing_debug_info = 0;
   int addr_width;
-  int nr_libs;
-  struct cleanup *table_cleanup;
+  int nr_libs = 0;
+  struct cleanup *content_cleanup;
   struct gdbarch *gdbarch = target_gdbarch;
 
   if (pattern)
@@ -1025,42 +1025,56 @@ info_sharedlibrary_command (char *pattern, int from_tty)
 
   update_solib_list (from_tty, 0);
 
-  /* make_cleanup_ui_out_table_begin_end needs to know the number of
-     rows, so we need to make two passes over the libs.  */
-
-  for (nr_libs = 0, so = so_list_head; so; so = so->next)
+  if (ui_out_is_mi_like_p (uiout))
+    {
+      /* Output a simple list for MI.  */
+      content_cleanup = make_cleanup_ui_out_list_begin_end (uiout,
+							    "sharedlibs");
+    }
+  else
     {
-      if (so->so_name[0])
+      /* make_cleanup_ui_out_table_begin_end needs to know the number
+	 of rows, so we need to make two passes over the libs.  */
+
+      for (nr_libs = 0, so = so_list_head; so; so = so->next)
 	{
-	  if (pattern && ! re_exec (so->so_name))
-	    continue;
-	  ++nr_libs;
+	  if (so->so_name[0])
+	    {
+	      if (pattern && ! re_exec (so->so_name))
+		continue;
+	      ++nr_libs;
+	    }
 	}
-    }
 
-  table_cleanup =
-    make_cleanup_ui_out_table_begin_end (uiout, 4, nr_libs,
-					 "SharedLibraryTable");
+      content_cleanup =
+	make_cleanup_ui_out_table_begin_end (uiout, 4, nr_libs,
+					     "SharedLibraryTable");
 
-  /* The "- 1" is because ui_out adds one space between columns.  */
-  ui_out_table_header (uiout, addr_width - 1, ui_left, "from", "From");
-  ui_out_table_header (uiout, addr_width - 1, ui_left, "to", "To");
-  ui_out_table_header (uiout, 12 - 1, ui_left, "syms-read", "Syms Read");
-  ui_out_table_header (uiout, 0, ui_noalign,
-		       "name", "Shared Object Library");
+      /* The "- 1" is because ui_out adds one space between columns.  */
+      ui_out_table_header (uiout, addr_width - 1, ui_left, "from", "From");
+      ui_out_table_header (uiout, addr_width - 1, ui_left, "to", "To");
+      ui_out_table_header (uiout, 12 - 1, ui_left, "syms-read", "Syms Read");
+      ui_out_table_header (uiout, 0, ui_noalign,
+			   "name", "Shared Object Library");
 
-  ui_out_table_body (uiout);
+      ui_out_table_body (uiout);
+    }
 
   for (so = so_list_head; so; so = so->next)
     {
       struct cleanup *lib_cleanup;
+      static const char *read_names[] = { "No", "Yes (*)", "Yes" };
+      int read_kind;
 
       if (! so->so_name[0])
 	continue;
       if (pattern && ! re_exec (so->so_name))
 	continue;
 
-      lib_cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, "lib");
+      if (ui_out_is_mi_like_p (uiout))
+	lib_cleanup = make_cleanup_ui_out_list_begin_end (uiout, "lib");
+      else
+	lib_cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, "lib");
 
       if (so->addr_high != 0)
 	{
@@ -1073,16 +1087,28 @@ info_sharedlibrary_command (char *pattern, int from_tty)
 	  ui_out_field_skip (uiout, "to");
 	}
 
-      if (! ui_out_is_mi_like_p (interp_ui_out (top_level_interpreter ()))
+      /* We check the top-level interpreter's ui-out object here for
+	 historical compatibility: older versions of gdb did not
+	 expose this function to MI, and so clients were forced to
+	 parse the "info shared" output.  The additional check for the
+	 current ui-out object lets us avoid this backward
+	 compatibility in the case of a "native" MI request.  */
+      if ((ui_out_is_mi_like_p (uiout)
+	   || ! ui_out_is_mi_like_p (interp_ui_out (top_level_interpreter ())))
 	  && so->symbols_loaded
 	  && !objfile_has_symbols (so->objfile))
 	{
 	  so_missing_debug_info = 1;
+	  read_kind = 1;
 	  ui_out_field_string (uiout, "syms-read", "Yes (*)");
 	}
       else
-	ui_out_field_string (uiout, "syms-read", 
-			     so->symbols_loaded ? "Yes" : "No");
+	read_kind = so->symbols_loaded ? 2 : 0;
+
+      if (ui_out_is_mi_like_p (uiout))
+	ui_out_field_int (uiout, "syms-read", read_kind);
+      else
+	ui_out_field_string (uiout, "syms-read", read_names[read_kind]);
 
       ui_out_field_string (uiout, "name", so->so_name);
 
@@ -1091,9 +1117,13 @@ info_sharedlibrary_command (char *pattern, int from_tty)
       do_cleanups (lib_cleanup);
     }
 
-  do_cleanups (table_cleanup);
+  do_cleanups (content_cleanup);
 
-  if (nr_libs == 0)
+  if (ui_out_is_mi_like_p (uiout))
+    {
+      /* Nothing.  */
+    }
+  else if (nr_libs == 0)
     {
       if (pattern)
 	ui_out_message (uiout, 0,
diff --git a/gdb/solib.h b/gdb/solib.h
index bce21e5..c121d3a 100644
--- a/gdb/solib.h
+++ b/gdb/solib.h
@@ -78,4 +78,8 @@ extern void set_solib_ops (struct gdbarch *gdbarch,
 
 extern int libpthread_name_p (const char *name);
 
+/* Print information about shared libraries.  */
+
+extern void info_sharedlibrary_command (char *pattern, int from_tty);
+
 #endif /* SOLIB_H */
diff --git a/gdb/testsuite/gdb.mi/mi-solib.exp b/gdb/testsuite/gdb.mi/mi-solib.exp
index ec2623e..7a94db5 100644
--- a/gdb/testsuite/gdb.mi/mi-solib.exp
+++ b/gdb/testsuite/gdb.mi/mi-solib.exp
@@ -50,6 +50,10 @@ if [mi_gdb_start] {
 
 mi_gdb_load ${binfile}
 
+mi_gdb_test "200-break-insert -t main" \
+    "200\\^done,bkpt=\{.*\}" \
+    "set temporary breakpoint at main for solib test"
+
 mi_run_cmd
 
 set libtest "*${libname}*"
@@ -68,7 +72,7 @@ gdb_expect {
     -re "(${thread_selected_re})?${mi_gdb_prompt}" {
     }
     timeout {
-	perror "Unable to start target"
+	perror "timeout waiting for =library-loaded"
 	return -1
     }
 }
@@ -78,3 +82,7 @@ if {$lib_found} {
 } else {
     fail "checking library load $libname"
 }
+
+mi_gdb_test "201-file-list-shared-libraries" \
+    "201\\^done,.*name=.*$libname.*\]\]" \
+    "test -file-list-shared-libraries"
-- 
1.7.2.3


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: RFA: fix PR mi/8138
  2011-01-10 20:16 RFA: fix PR mi/8138 Tom Tromey
@ 2011-01-11  0:07 ` Pedro Alves
  2011-01-12 20:57   ` Tom Tromey
  2011-02-04 16:18   ` Tom Tromey
  2011-01-11  4:01 ` Eli Zaretskii
  1 sibling, 2 replies; 7+ messages in thread
From: Pedro Alves @ 2011-01-11  0:07 UTC (permalink / raw)
  To: gdb-patches; +Cc: Tom Tromey

On Monday 10 January 2011 20:15:56, Tom Tromey wrote:
> +@table @samp
> +@item from
> +@itemx to
> +These items, if provided, are a range of addresses belonging to this
> +shared library.

> +^done,sharedlibs=[lib=[from="0x00111360",to="0x00111498",syms-read="2",name="/lib/libexample.so"]]

The =library-loaded event was added with the "from" and "to"
fields left out on purpose.  I think that this command should
be consistent with the event.  The event outputs both target and
host paths to the shared library, this prints only a single "name".

I'm not objecting, but I'm almost certain that I remember
someone bringing up that this MI command was missing, but
it was then mentioned that there's no real need for it
since the frontend should be getting everything it needs
from the =library-loaded / =library-unloaded events.
(This PR predates these events by a few years).

> +void
> +mi_cmd_file_list_shared_libraries (char *command, char **argv, int argc)
> +{
> +  if (!mi_valid_noargs ("mi_cmd_file_list_shared_libraries", argc, argv))
> +    error (_("mi_cmd_file_list_shared_libraries: Usage: No args"));

These errors should not show GDB's function name, but instead the MI command
name.  We have many instances of this issue, but we have been fasing them
out, and avoiding introducing new ones.

-- 
Pedro Alves


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: RFA: fix PR mi/8138
  2011-01-10 20:16 RFA: fix PR mi/8138 Tom Tromey
  2011-01-11  0:07 ` Pedro Alves
@ 2011-01-11  4:01 ` Eli Zaretskii
  1 sibling, 0 replies; 7+ messages in thread
From: Eli Zaretskii @ 2011-01-11  4:01 UTC (permalink / raw)
  To: Tom Tromey; +Cc: gdb-patches

> From: Tom Tromey <tromey@redhat.com>
> Date: Mon, 10 Jan 2011 13:15:56 -0700
> 
> +@smallexample
> +(gdb)
> +-file-list-shared-libraries
> +^done,sharedlibs=[lib=[from="0x00111360",to="0x00111498",syms-read="2",name="/lib/libexample.so"]]
> +@end smallexample

Please break this long line into 2.

The patch for the manual is okay with that change.

Thanks.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: RFA: fix PR mi/8138
  2011-01-11  0:07 ` Pedro Alves
@ 2011-01-12 20:57   ` Tom Tromey
  2011-01-12 21:23     ` Pedro Alves
  2011-02-04 16:18   ` Tom Tromey
  1 sibling, 1 reply; 7+ messages in thread
From: Tom Tromey @ 2011-01-12 20:57 UTC (permalink / raw)
  To: Pedro Alves; +Cc: gdb-patches

>>>>> "Pedro" == Pedro Alves <pedro@codesourcery.com> writes:

Pedro> These errors should not show GDB's function name, but instead the
Pedro> MI command name.  We have many instances of this issue, but we
Pedro> have been fasing them out, and avoiding introducing new ones.

I'll reply to the rest later, but in the meantime I came up with this
patch to fix this problem everywhere.  I mostly did it with a perl
script, but then I checked all the errors since some functions don't
follow the naming scheme.

What do you think?

Built and regtested on x86-64 (compile farm).

Tom

2011-01-12  Tom Tromey  <tromey@redhat.com>

	* mi/mi-symbol-cmds.c (mi_cmd_symbol_list_lines): Fix error
	messages.
	* mi/mi-main.c (mi_cmd_thread_select): Fix error messages.
	(mi_cmd_thread_list_ids): Likewise.
	(mi_cmd_data_list_changed_registers): Likewise.
	(mi_cmd_data_list_register_values): Likewise.
	(mi_cmd_data_write_register_values): Likewise.
	(mi_cmd_data_evaluate_expression): Likewise.
	(mi_cmd_data_read_memory): Likewise.
	(mi_cmd_data_read_memory_bytes): Likewise.
	(mi_cmd_data_write_memory): Likewise.
	(mi_cmd_enable_timings): Likewise.
	* mi/mi-interp.c (mi_cmd_interpreter_exec): Fix error messages.
	* mi/mi-cmd-var.c (mi_cmd_var_create): Fix error messages.
	(mi_cmd_var_delete): Likewise.
	(mi_cmd_var_set_format): Likewise.
	(mi_cmd_var_show_format): Likewise.
	(mi_cmd_var_info_num_children): Likewise.
	(mi_cmd_var_list_children): Likewise.
	(mi_cmd_var_info_type): Likewise.
	(mi_cmd_var_info_expression): Likewise.
	(mi_cmd_var_show_attributes): Likewise.
	(mi_cmd_var_assign): Likewise.
	(mi_cmd_var_update): Likewise.
	(mi_cmd_enable_pretty_printing): Likewise.
	(mi_cmd_var_set_update_range): Likewise.
	* mi/mi-cmd-target.c (mi_cmd_target_file_get): Fix error
	messages.
	(mi_cmd_target_file_put): Likewise.
	(mi_cmd_target_file_delete): Likewise.
	* mi/mi-cmd-stack.c (mi_cmd_stack_list_frames): Fix error
	messages.
	(mi_cmd_stack_info_depth): Likewise.
	(mi_cmd_stack_list_locals): Likewise.
	(mi_cmd_stack_list_args): Likewise.
	(mi_cmd_stack_select_frame): Likewise.
	(mi_cmd_stack_select_frame): Likewise.
	(mi_cmd_stack_info_frame): Likewise.
	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_file): Fix error
	messages.
	(mi_cmd_file_list_exec_source_files): Likewise.
	* mi/mi-cmd-env.c (mi_cmd_env_pwd): Fix error messages.
	(mi_cmd_env_cd): Likewise.
	(mi_cmd_env_path): Likewise.
	(mi_cmd_env_dir): Likewise.
	(mi_cmd_inferior_tty_show): Likewise.
	* mi/mi-cmd-disas.c (mi_cmd_disassemble): Fix error messages.
	* mi/mi-cmd-break.c (mi_cmd_break_insert): Fix error messages.
	(mi_cmd_break_watch): Likewise.

2011-01-12  Tom Tromey  <tromey@redhat.com>

	* gdb.mi/gdb2549.exp: Update for error message changes.
	* gdb.mi/mi-cli.exp: Likewise.
	* gdb.mi/mi-disassemble.exp: Likewise.
	* gdb.mi/mi-pthreads.exp: Likewise.
	* gdb.mi/mi-regs.exp: Likewise.
	* gdb.mi/mi-stack.exp: Likewise.
	* gdb.mi/mi-var-block.exp: Likewise.
	* gdb.mi/mi-var-cmd.exp: Likewise.
	* gdb.mi/mi2-cli.exp: Likewise.
	* gdb.mi/mi2-disassemble.exp: Likewise.
	* gdb.mi/mi2-pthreads.exp: Likewise.
	* gdb.mi/mi2-regs.exp: Likewise.
	* gdb.mi/mi2-stack.exp: Likewise.
	* gdb.mi/mi2-var-block.exp: Likewise.
	* gdb.mi/mi2-var-cmd.exp: Likewise.

diff --git a/gdb/mi/mi-cmd-break.c b/gdb/mi/mi-cmd-break.c
index a04be98..fe007a5 100644
--- a/gdb/mi/mi-cmd-break.c
+++ b/gdb/mi/mi-cmd-break.c
@@ -103,7 +103,7 @@ mi_cmd_break_insert (char *command, char **argv, int argc)
 
   while (1)
     {
-      int opt = mi_getopt ("mi_cmd_break_insert", argc, argv,
+      int opt = mi_getopt ("-break-insert", argc, argv,
 			   opts, &optind, &optarg);
       if (opt < 0)
 	break;
@@ -137,9 +137,9 @@ mi_cmd_break_insert (char *command, char **argv, int argc)
     }
 
   if (optind >= argc)
-    error (_("mi_cmd_break_insert: Missing <location>"));
+    error (_("-break-insert: Missing <location>"));
   if (optind < argc - 1)
-    error (_("mi_cmd_break_insert: Garbage following <location>"));
+    error (_("-break-insert: Garbage following <location>"));
   address = argv[optind];
 
   /* Now we have what we need, let's insert the breakpoint! */
@@ -235,7 +235,7 @@ mi_cmd_break_watch (char *command, char **argv, int argc)
 
   while (1)
     {
-      int opt = mi_getopt ("mi_cmd_break_watch", argc, argv,
+      int opt = mi_getopt ("-break-watch", argc, argv,
 			   opts, &optind, &optarg);
 
       if (opt < 0)
@@ -251,9 +251,9 @@ mi_cmd_break_watch (char *command, char **argv, int argc)
 	}
     }
   if (optind >= argc)
-    error (_("mi_cmd_break_watch: Missing <expression>"));
+    error (_("-break-watch: Missing <expression>"));
   if (optind < argc - 1)
-    error (_("mi_cmd_break_watch: Garbage following <expression>"));
+    error (_("-break-watch: Garbage following <expression>"));
   expr = argv[optind];
 
   /* Now we have what we need, let's insert the watchpoint! */
@@ -269,7 +269,7 @@ mi_cmd_break_watch (char *command, char **argv, int argc)
       awatch_command_wrapper (expr, FROM_TTY, 0);
       break;
     default:
-      error (_("mi_cmd_break_watch: Unknown watchpoint type."));
+      error (_("-break-watch: Unknown watchpoint type."));
     }
 }
 
diff --git a/gdb/mi/mi-cmd-disas.c b/gdb/mi/mi-cmd-disas.c
index e5ce66f..bfe1769 100644
--- a/gdb/mi/mi-cmd-disas.c
+++ b/gdb/mi/mi-cmd-disas.c
@@ -94,7 +94,7 @@ mi_cmd_disassemble (char *command, char **argv, int argc)
      encountered. */
   while (1)
     {
-      int opt = mi_getopt ("mi_cmd_disassemble", argc, argv, opts,
+      int opt = mi_getopt ("-data-disassemble", argc, argv, opts,
 			   &optind, &optarg);
       if (opt < 0)
 	break;
@@ -131,16 +131,16 @@ mi_cmd_disassemble (char *command, char **argv, int argc)
   if (!((line_seen && file_seen && num_seen && !start_seen && !end_seen)
 	|| (line_seen && file_seen && !num_seen && !start_seen && !end_seen)
 	|| (!line_seen && !file_seen && !num_seen && start_seen && end_seen)))
-    error (_("mi_cmd_disassemble: Usage: ( [-f filename -l linenum [-n "
+    error (_("-data-disassemble: Usage: ( [-f filename -l linenum [-n "
 	     "howmany]] | [-s startaddr -e endaddr]) [--] mode."));
 
   if (argc != 1)
-    error (_("mi_cmd_disassemble: Usage: [-f filename -l linenum "
+    error (_("-data-disassemble: Usage: [-f filename -l linenum "
 	     "[-n howmany]] [-s startaddr -e endaddr] [--] mode."));
 
   mode = atoi (argv[0]);
   if (mode < 0 || mode > 3)
-    error (_("mi_cmd_disassemble: Mode argument must be 0, 1, 2, or 3."));
+    error (_("-data-disassemble: Mode argument must be 0, 1, 2, or 3."));
 
   /* Convert the mode into a set of disassembly flags */
 
@@ -157,11 +157,11 @@ mi_cmd_disassemble (char *command, char **argv, int argc)
     {
       s = lookup_symtab (file_string);
       if (s == NULL)
-	error (_("mi_cmd_disassemble: Invalid filename."));
+	error (_("-data-disassemble: Invalid filename."));
       if (!find_line_pc (s, line_num, &start))
-	error (_("mi_cmd_disassemble: Invalid line number"));
+	error (_("-data-disassemble: Invalid line number"));
       if (find_pc_partial_function (start, NULL, &low, &high) == 0)
-	error (_("mi_cmd_disassemble: "
+	error (_("-data-disassemble: "
 		 "No function contains specified address"));
     }
 
diff --git a/gdb/mi/mi-cmd-env.c b/gdb/mi/mi-cmd-env.c
index c463099..f77474b 100644
--- a/gdb/mi/mi-cmd-env.c
+++ b/gdb/mi/mi-cmd-env.c
@@ -70,7 +70,7 @@ void
 mi_cmd_env_pwd (char *command, char **argv, int argc)
 {
   if (argc > 0)
-    error (_("mi_cmd_env_pwd: No arguments required"));
+    error (_("-environment-pwd: No arguments required"));
           
   if (mi_version (uiout) < 2)
     {
@@ -81,7 +81,7 @@ mi_cmd_env_pwd (char *command, char **argv, int argc)
   /* Otherwise the mi level is 2 or higher.  */
 
   if (! getcwd (gdb_dirbuf, sizeof (gdb_dirbuf)))
-    error (_("mi_cmd_env_pwd: error finding name of working directory: %s"),
+    error (_("-environment-pwd: error finding name of working directory: %s"),
            safe_strerror (errno));
     
   ui_out_field_string (uiout, "cwd", gdb_dirbuf);
@@ -92,7 +92,7 @@ void
 mi_cmd_env_cd (char *command, char **argv, int argc)
 {
   if (argc == 0 || argc > 1)
-    error (_("mi_cmd_env_cd: Usage DIRECTORY"));
+    error (_("-environment-cd: Usage DIRECTORY"));
           
   env_execute_cli_command ("cd", argv[0]);
 }
@@ -140,7 +140,7 @@ mi_cmd_env_path (char *command, char **argv, int argc)
   /* Otherwise the mi level is 2 or higher.  */
   while (1)
     {
-      int opt = mi_getopt ("mi_cmd_env_path", argc, argv, opts,
+      int opt = mi_getopt ("-environment-path", argc, argv, opts,
                            &optind, &optarg);
 
       if (opt < 0)
@@ -211,7 +211,7 @@ mi_cmd_env_dir (char *command, char **argv, int argc)
   /* Otherwise mi level is 2 or higher.  */
   while (1)
     {
-      int opt = mi_getopt ("mi_cmd_env_dir", argc, argv, opts,
+      int opt = mi_getopt ("-environment-directory", argc, argv, opts,
                            &optind, &optarg);
 
       if (opt < 0)
@@ -253,8 +253,8 @@ mi_cmd_inferior_tty_show (char *command, char **argv, int argc)
 {
   const char *inferior_io_terminal = get_inferior_io_terminal ();
   
-  if ( !mi_valid_noargs ("mi_cmd_inferior_tty_show", argc, argv))
-    error (_("mi_cmd_inferior_tty_show: Usage: No args"));
+  if ( !mi_valid_noargs ("-inferior-tty-show", argc, argv))
+    error (_("-inferior-tty-show: Usage: No args"));
 
   if (inferior_io_terminal)
     ui_out_field_string (uiout, "inferior_tty_terminal", inferior_io_terminal);
diff --git a/gdb/mi/mi-cmd-file.c b/gdb/mi/mi-cmd-file.c
index e575012..0150ca0 100644
--- a/gdb/mi/mi-cmd-file.c
+++ b/gdb/mi/mi-cmd-file.c
@@ -35,8 +35,8 @@ mi_cmd_file_list_exec_source_file (char *command, char **argv, int argc)
 {
   struct symtab_and_line st;
   
-  if (!mi_valid_noargs ("mi_cmd_file_list_exec_source_file", argc, argv))
-    error (_("mi_cmd_file_list_exec_source_file: Usage: No args"));
+  if (!mi_valid_noargs ("-file-list-exec-source-file", argc, argv))
+    error (_("-file-list-exec-source-file: Usage: No args"));
 
   /* Set the default file and line, also get them */
   set_default_source_symtab_and_line ();
@@ -46,7 +46,7 @@ mi_cmd_file_list_exec_source_file (char *command, char **argv, int argc)
      Apparently, filename does not need to be tested for NULL.
      The documentation in symtab.h suggests it will always be correct */
   if (!st.symtab)
-    error (_("mi_cmd_file_list_exec_source_file: No symtab"));
+    error (_("-file-list-exec-source-file: No symtab"));
 
   /* Extract the fullname if it is not known yet */
   symtab_to_fullname (st.symtab);
@@ -83,8 +83,8 @@ mi_cmd_file_list_exec_source_files (char *command, char **argv, int argc)
   struct symtab *s;
   struct objfile *objfile;
 
-  if (!mi_valid_noargs ("mi_cmd_file_list_exec_source_files", argc, argv))
-    error (_("mi_cmd_file_list_exec_source_files: Usage: No args"));
+  if (!mi_valid_noargs ("-file-list-exec-source-files", argc, argv))
+    error (_("-file-list-exec-source-files: Usage: No args"));
 
   /* Print the table header */
   ui_out_begin (uiout, ui_out_type_list, "files");
diff --git a/gdb/mi/mi-cmd-stack.c b/gdb/mi/mi-cmd-stack.c
index cdc7475..ad20851 100644
--- a/gdb/mi/mi-cmd-stack.c
+++ b/gdb/mi/mi-cmd-stack.c
@@ -53,7 +53,7 @@ mi_cmd_stack_list_frames (char *command, char **argv, int argc)
   struct frame_info *fi;
 
   if (argc > 2 || argc == 1)
-    error (_("mi_cmd_stack_list_frames: Usage: [FRAME_LOW FRAME_HIGH]"));
+    error (_("-stack-list-frames: Usage: [FRAME_LOW FRAME_HIGH]"));
 
   if (argc == 2)
     {
@@ -76,7 +76,7 @@ mi_cmd_stack_list_frames (char *command, char **argv, int argc)
        i++, fi = get_prev_frame (fi));
 
   if (fi == NULL)
-    error (_("mi_cmd_stack_list_frames: Not enough frames in stack."));
+    error (_("-stack-list-frames: Not enough frames in stack."));
 
   cleanup_stack = make_cleanup_ui_out_list_begin_end (uiout, "stack");
 
@@ -103,7 +103,7 @@ mi_cmd_stack_info_depth (char *command, char **argv, int argc)
   struct frame_info *fi;
 
   if (argc > 1)
-    error (_("mi_cmd_stack_info_depth: Usage: [MAX_DEPTH]"));
+    error (_("-stack-info-depth: Usage: [MAX_DEPTH]"));
 
   if (argc == 1)
     frame_high = atoi (argv[0]);
@@ -147,7 +147,7 @@ mi_cmd_stack_list_locals (char *command, char **argv, int argc)
   struct frame_info *frame;
 
   if (argc != 1)
-    error (_("mi_cmd_stack_list_locals: Usage: PRINT_VALUES"));
+    error (_("-stack-list-locals: Usage: PRINT_VALUES"));
 
    frame = get_selected_frame (NULL);
 
@@ -168,7 +168,7 @@ mi_cmd_stack_list_args (char *command, char **argv, int argc)
   enum print_values print_values;
 
   if (argc < 1 || argc > 3 || argc == 2)
-    error (_("mi_cmd_stack_list_args: Usage: "
+    error (_("-stack-list-arguments: Usage: "
 	     "PRINT_VALUES [FRAME_LOW FRAME_HIGH]"));
 
   if (argc == 3)
@@ -194,7 +194,7 @@ mi_cmd_stack_list_args (char *command, char **argv, int argc)
        i++, fi = get_prev_frame (fi));
 
   if (fi == NULL)
-    error (_("mi_cmd_stack_list_args: Not enough frames in stack."));
+    error (_("-stack-list-arguments: Not enough frames in stack."));
 
   cleanup_stack_args
     = make_cleanup_ui_out_list_begin_end (uiout, "stack-args");
@@ -399,7 +399,7 @@ 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"));
+    error (_("-stack-select-frame: Usage: FRAME_SPEC"));
 
   select_frame_command (argv[0], 1 /* not used */ );
 }
@@ -408,7 +408,7 @@ void
 mi_cmd_stack_info_frame (char *command, char **argv, int argc)
 {
   if (argc > 0)
-    error (_("mi_cmd_stack_info_frame: No arguments required"));
+    error (_("-stack-info-frame: No arguments required"));
 
   print_frame_info (get_selected_frame (NULL), 1, LOC_AND_ADDRESS, 0);
 }
diff --git a/gdb/mi/mi-cmd-target.c b/gdb/mi/mi-cmd-target.c
index 3e99021..295a38b 100644
--- a/gdb/mi/mi-cmd-target.c
+++ b/gdb/mi/mi-cmd-target.c
@@ -33,11 +33,11 @@ mi_cmd_target_file_get (char *command, char **argv, int argc)
   {
     { 0, 0, 0 }
   };
-  static const char *prefix = "mi_cmd_target_file_get";
+  static const char *prefix = "-target-file-get";
 
   if (mi_getopt (prefix, argc, argv, opts, &optind, &optarg) != -1
       || optind != argc - 2)
-    error (_("mi_cmd_target_file_get: Usage: REMOTE_FILE LOCAL_FILE"));
+    error (_("-target-file-get: Usage: REMOTE_FILE LOCAL_FILE"));
 
   remote_file = argv[optind];
   local_file = argv[optind + 1];
@@ -57,11 +57,11 @@ mi_cmd_target_file_put (char *command, char **argv, int argc)
   {
     { 0, 0, 0 }
   };
-  static const char *prefix = "mi_cmd_target_file_put";
+  static const char *prefix = "-target-file-put";
 
   if (mi_getopt (prefix, argc, argv, opts, &optind, &optarg) != -1
       || optind != argc - 2)
-    error (_("mi_cmd_target_file_put: Usage: LOCAL_FILE REMOTE_FILE"));
+    error (_("-target-file-put: Usage: LOCAL_FILE REMOTE_FILE"));
 
   local_file = argv[optind];
   remote_file = argv[optind + 1];
@@ -81,11 +81,11 @@ mi_cmd_target_file_delete (char *command, char **argv, int argc)
   {
     { 0, 0, 0 }
   };
-  static const char *prefix = "mi_cmd_target_file_delete";
+  static const char *prefix = "-target-file-delete";
 
   if (mi_getopt (prefix, argc, argv, opts, &optind, &optarg) != -1
       || optind != argc - 1)
-    error (_("mi_cmd_target_file_delete: Usage: REMOTE_FILE"));
+    error (_("-target-file-delete: Usage: REMOTE_FILE"));
 
   remote_file = argv[optind];
 
diff --git a/gdb/mi/mi-cmd-var.c b/gdb/mi/mi-cmd-var.c
index cdb6aa1..a401846 100644
--- a/gdb/mi/mi-cmd-var.c
+++ b/gdb/mi/mi-cmd-var.c
@@ -108,9 +108,9 @@ mi_cmd_var_create (char *command, char **argv, int argc)
 
   if (argc != 3)
     {
-      /* mi_error_message = xstrprintf ("mi_cmd_var_create: Usage:
+      /* mi_error_message = xstrprintf ("-var-create: Usage:
          ...."); return MI_CMD_ERROR; */
-      error (_("mi_cmd_var_create: Usage: NAME FRAME EXPRESSION."));
+      error (_("-var-create: Usage: NAME FRAME EXPRESSION."));
     }
 
   name = xstrdup (argv[0]);
@@ -130,7 +130,7 @@ mi_cmd_var_create (char *command, char **argv, int argc)
       name = varobj_gen_name ();
     }
   else if (!isalpha (*name))
-    error (_("mi_cmd_var_create: name of object must begin with a letter"));
+    error (_("-var-create: name of object must begin with a letter"));
 
   if (strcmp (frame, "*") == 0)
     var_type = USE_CURRENT_FRAME;
@@ -150,7 +150,7 @@ mi_cmd_var_create (char *command, char **argv, int argc)
   var = varobj_create (name, expr, frameaddr, var_type);
 
   if (var == NULL)
-    error (_("mi_cmd_var_create: unable to create variable object"));
+    error (_("-var-create: unable to create variable object"));
 
   print_varobj (var, PRINT_ALL_VALUES, 0 /* don't print expression */);
 
@@ -169,7 +169,7 @@ mi_cmd_var_delete (char *command, char **argv, int argc)
   struct cleanup *old_cleanups;
 
   if (argc < 1 || argc > 2)
-    error (_("mi_cmd_var_delete: Usage: [-c] EXPRESSION."));
+    error (_("-var-delete: Usage: [-c] EXPRESSION."));
 
   name = xstrdup (argv[0]);
   /* Add cleanup for name. Must be free_current_contents as
@@ -181,10 +181,10 @@ mi_cmd_var_delete (char *command, char **argv, int argc)
   if (argc == 1)
     {
       if (strcmp (name, "-c") == 0)
-	error (_("mi_cmd_var_delete: Missing required "
+	error (_("-var-delete: Missing required "
 		 "argument after '-c': variable object name"));
       if (*name == '-')
-	error (_("mi_cmd_var_delete: Illegal variable object name"));
+	error (_("-var-delete: Illegal variable object name"));
     }
 
   /* If we have 2 arguments they must be '-c' followed by a string
@@ -192,7 +192,7 @@ mi_cmd_var_delete (char *command, char **argv, int argc)
   if (argc == 2)
     {
       if (strcmp (name, "-c") != 0)
-	error (_("mi_cmd_var_delete: Invalid option."));
+	error (_("-var-delete: Invalid option."));
       children_only_p = 1;
       do_cleanups (old_cleanups);
       name = xstrdup (argv[1]);
@@ -246,7 +246,7 @@ mi_cmd_var_set_format (char *command, char **argv, int argc)
   char *val;
 
   if (argc != 2)
-    error (_("mi_cmd_var_set_format: Usage: NAME FORMAT."));
+    error (_("-var-set-format: Usage: NAME FORMAT."));
 
   /* Get varobj handle, if a valid var obj name was specified */
   var = varobj_get_handle (argv[0]);
@@ -314,7 +314,7 @@ mi_cmd_var_show_format (char *command, char **argv, int argc)
   struct varobj *var;
 
   if (argc != 1)
-    error (_("mi_cmd_var_show_format: Usage: NAME."));
+    error (_("-var-show-format: Usage: NAME."));
 
   /* Get varobj handle, if a valid var obj name was specified */
   var = varobj_get_handle (argv[0]);
@@ -331,7 +331,7 @@ mi_cmd_var_info_num_children (char *command, char **argv, int argc)
   struct varobj *var;
 
   if (argc != 1)
-    error (_("mi_cmd_var_info_num_children: Usage: NAME."));
+    error (_("-var-info-num-children: Usage: NAME."));
 
   /* Get varobj handle, if a valid var obj name was specified */
   var = varobj_get_handle (argv[0]);
@@ -403,7 +403,7 @@ mi_cmd_var_list_children (char *command, char **argv, int argc)
   char *display_hint;
 
   if (argc < 1 || argc > 4)
-    error (_("mi_cmd_var_list_children: Usage: "
+    error (_("-var-list-children: Usage: "
 	     "[PRINT_VALUES] NAME [FROM TO]"));
 
   /* Get varobj handle, if a valid var obj name was specified */
@@ -469,7 +469,7 @@ mi_cmd_var_info_type (char *command, char **argv, int argc)
   struct varobj *var;
 
   if (argc != 1)
-    error (_("mi_cmd_var_info_type: Usage: NAME."));
+    error (_("-var-info-type: Usage: NAME."));
 
   /* Get varobj handle, if a valid var obj name was specified */
   var = varobj_get_handle (argv[0]);
@@ -501,7 +501,7 @@ mi_cmd_var_info_expression (char *command, char **argv, int argc)
   struct varobj *var;
 
   if (argc != 1)
-    error (_("mi_cmd_var_info_expression: Usage: NAME."));
+    error (_("-var-info-expression: Usage: NAME."));
 
   /* Get varobj handle, if a valid var obj name was specified */
   var = varobj_get_handle (argv[0]);
@@ -520,7 +520,7 @@ mi_cmd_var_show_attributes (char *command, char **argv, int argc)
   struct varobj *var;
 
   if (argc != 1)
-    error (_("mi_cmd_var_show_attributes: Usage: NAME."));
+    error (_("-var-show-attributes: Usage: NAME."));
 
   /* Get varobj handle, if a valid var obj name was specified */
   var = varobj_get_handle (argv[0]);
@@ -610,18 +610,18 @@ mi_cmd_var_assign (char *command, char **argv, int argc)
   char *expression, *val;
 
   if (argc != 2)
-    error (_("mi_cmd_var_assign: Usage: NAME EXPRESSION."));
+    error (_("-var-assign: Usage: NAME EXPRESSION."));
 
   /* Get varobj handle, if a valid var obj name was specified */
   var = varobj_get_handle (argv[0]);
 
   if (!varobj_editable_p (var))
-    error (_("mi_cmd_var_assign: Variable object is not editable"));
+    error (_("-var-assign: Variable object is not editable"));
 
   expression = xstrdup (argv[1]);
 
   if (!varobj_set_value (var, expression))
-    error (_("mi_cmd_var_assign: Could not assign "
+    error (_("-var-assign: Could not assign "
 	     "expression to variable object"));
 
   val = varobj_get_value (var);
@@ -672,7 +672,7 @@ mi_cmd_var_update (char *command, char **argv, int argc)
   enum print_values print_values;
 
   if (argc != 1 && argc != 2)
-    error (_("mi_cmd_var_update: Usage: [PRINT_VALUES] NAME."));
+    error (_("-var-update: Usage: [PRINT_VALUES] NAME."));
 
   if (argc == 1)
     name = argv[0];
@@ -819,7 +819,7 @@ void
 mi_cmd_enable_pretty_printing (char *command, char **argv, int argc)
 {
   if (argc != 0)
-    error (_("mi_cmd_enable_pretty_printing: no arguments allowed"));
+    error (_("-enable-pretty-printing: no arguments allowed"));
   varobj_enable_pretty_printing ();
 }
 
@@ -830,7 +830,7 @@ mi_cmd_var_set_update_range (char *command, char **argv, int argc)
   int from, to;
 
   if (argc != 3)
-    error (_("mi_cmd_var_set_update_range: Usage: VAROBJ FROM TO"));
+    error (_("-var-set-update-range: Usage: VAROBJ FROM TO"));
   
   var = varobj_get_handle (argv[0]);
   from = atoi (argv[1]);
diff --git a/gdb/mi/mi-interp.c b/gdb/mi/mi-interp.c
index e42bffe..23c60f6 100644
--- a/gdb/mi/mi-interp.c
+++ b/gdb/mi/mi-interp.c
@@ -192,16 +192,16 @@ mi_cmd_interpreter_exec (char *command, char **argv, int argc)
   struct cleanup *old_chain;
 
   if (argc < 2)
-    error (_("mi_cmd_interpreter_exec: "
+    error (_("-interpreter-exec: "
 	     "Usage: -interpreter-exec interp command"));
 
   interp_to_use = interp_lookup (argv[0]);
   if (interp_to_use == NULL)
-    error (_("mi_cmd_interpreter_exec: could not find interpreter \"%s\""),
+    error (_("-interpreter-exec: could not find interpreter \"%s\""),
 	   argv[0]);
 
   if (!interp_exec_p (interp_to_use))
-    error (_("mi_cmd_interpreter_exec: interpreter \"%s\" "
+    error (_("-interpreter-exec: interpreter \"%s\" "
 	     "does not support command execution"),
 	      argv[0]);
 
diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c
index 91db352..c6694bc 100644
--- a/gdb/mi/mi-main.c
+++ b/gdb/mi/mi-main.c
@@ -471,7 +471,7 @@ mi_cmd_thread_select (char *command, char **argv, int argc)
   char *mi_error_message;
 
   if (argc != 1)
-    error (_("mi_cmd_thread_select: USAGE: threadnum."));
+    error (_("-thread-select: USAGE: threadnum."));
 
   rc = gdb_thread_select (uiout, argv[0], &mi_error_message);
 
@@ -489,7 +489,7 @@ mi_cmd_thread_list_ids (char *command, char **argv, int argc)
   char *mi_error_message;
 
   if (argc != 0)
-    error ("mi_cmd_thread_list_ids: No arguments required.");
+    error ("-thread-list-ids: No arguments required.");
 
   rc = gdb_list_thread_ids (uiout, &mi_error_message);
 
@@ -984,7 +984,7 @@ mi_cmd_data_list_changed_registers (char *command, char **argv, int argc)
 	    continue;
 	  changed = register_changed_p (regnum, prev_regs, this_regs);
 	  if (changed < 0)
-	    error ("mi_cmd_data_list_changed_registers: "
+	    error ("-data-list-changed-registers: "
 		   "Unable to read register contents.");
 	  else if (changed)
 	    ui_out_field_int (uiout, NULL, regnum);
@@ -1003,7 +1003,7 @@ mi_cmd_data_list_changed_registers (char *command, char **argv, int argc)
 	{
 	  changed = register_changed_p (regnum, prev_regs, this_regs);
 	  if (changed < 0)
-	    error ("mi_cmd_data_list_register_change: "
+	    error ("-data-list-changed-registers: "
 		   "Unable to read register contents.");
 	  else if (changed)
 	    ui_out_field_int (uiout, NULL, regnum);
@@ -1063,7 +1063,7 @@ mi_cmd_data_list_register_values (char *command, char **argv, int argc)
      upon the particular processor being debugged.  */
 
   if (argc == 0)
-    error ("mi_cmd_data_list_register_values: Usage: "
+    error ("-data-list-register-values: Usage: "
 	   "-data-list-register-values <format> [<regnum1>...<regnumN>]");
 
   format = (int) argv[0][0];
@@ -1187,19 +1187,19 @@ mi_cmd_data_write_register_values (char *command, char **argv, int argc)
   numregs = gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch);
 
   if (argc == 0)
-    error ("mi_cmd_data_write_register_values: Usage: -data-write-register-"
+    error ("-data-write-register-values: Usage: -data-write-register-"
 	   "values <format> [<regnum1> <value1>...<regnumN> <valueN>]");
 
   format = (int) argv[0][0];
 
   if (!target_has_registers)
-    error ("mi_cmd_data_write_register_values: No registers.");
+    error ("-data-write-register-values: No registers.");
 
   if (!(argc - 1))
-    error ("mi_cmd_data_write_register_values: No regs and values specified.");
+    error ("-data-write-register-values: No regs and values specified.");
 
   if ((argc - 1) % 2)
-    error ("mi_cmd_data_write_register_values: "
+    error ("-data-write-register-values: "
 	   "Regs and vals are not in pairs.");
 
   for (i = 1; i < argc; i = i + 2)
@@ -1240,7 +1240,7 @@ mi_cmd_data_evaluate_expression (char *command, char **argv, int argc)
   if (argc != 1)
     {
       ui_out_stream_delete (stb);
-      error ("mi_cmd_data_evaluate_expression: "
+      error ("-data-evaluate-expression: "
 	     "Usage: -data-evaluate-expression expression");
     }
 
@@ -1311,7 +1311,7 @@ mi_cmd_data_read_memory (char *command, char **argv, int argc)
 
   while (1)
     {
-      int opt = mi_getopt ("mi_cmd_data_read_memory", argc, argv, opts,
+      int opt = mi_getopt ("-data-read-memory", argc, argv, opts,
 			   &optind, &optarg);
 
       if (opt < 0)
@@ -1327,7 +1327,7 @@ mi_cmd_data_read_memory (char *command, char **argv, int argc)
   argc -= optind;
 
   if (argc < 5 || argc > 6)
-    error ("mi_cmd_data_read_memory: Usage: "
+    error ("-data-read-memory: Usage: "
 	   "ADDR WORD-FORMAT WORD-SIZE NR-ROWS NR-COLS [ASCHAR].");
 
   /* Extract all the arguments. */
@@ -1364,12 +1364,12 @@ mi_cmd_data_read_memory (char *command, char **argv, int argc)
   /* The number of rows.  */
   nr_rows = atol (argv[3]);
   if (nr_rows <= 0)
-    error ("mi_cmd_data_read_memory: invalid number of rows.");
+    error ("-data-read-memory: invalid number of rows.");
 
   /* Number of bytes per row.  */
   nr_cols = atol (argv[4]);
   if (nr_cols <= 0)
-    error ("mi_cmd_data_read_memory: invalid number of columns.");
+    error ("-data-read-memory: invalid number of columns.");
 
   /* The un-printable character when printing ascii.  */
   if (argc == 6)
@@ -1496,7 +1496,7 @@ mi_cmd_data_read_memory_bytes (char *command, char **argv, int argc)
 
   while (1)
     {
-      int opt = mi_getopt ("mi_cmd_data_read_memory_bytes", argc, argv, opts,
+      int opt = mi_getopt ("-data-read-memory-bytes", argc, argv, opts,
 			   &optind, &optarg);
       if (opt < 0)
 	break;
@@ -1597,7 +1597,7 @@ mi_cmd_data_write_memory (char *command, char **argv, int argc)
 
   while (1)
     {
-      int opt = mi_getopt ("mi_cmd_data_write_memory", argc, argv, opts,
+      int opt = mi_getopt ("-data-write-memory", argc, argv, opts,
 			   &optind, &optarg);
 
       if (opt < 0)
@@ -1613,7 +1613,7 @@ mi_cmd_data_write_memory (char *command, char **argv, int argc)
   argc -= optind;
 
   if (argc != 4)
-    error ("mi_cmd_data_write_memory: Usage: "
+    error ("-data-write-memory: Usage: "
 	   "[-o COLUMN_OFFSET] ADDR FORMAT WORD-SIZE VALUE.");
 
   /* Extract all the arguments.  */
@@ -1698,7 +1698,7 @@ mi_cmd_enable_timings (char *command, char **argv, int argc)
   return;
 
  usage_error:
-  error ("mi_cmd_enable_timings: Usage: %s {yes|no}", command);
+  error ("-enable-timings: Usage: %s {yes|no}", command);
 }
 
 void
diff --git a/gdb/mi/mi-symbol-cmds.c b/gdb/mi/mi-symbol-cmds.c
index 87dc19c..17ff8c3 100644
--- a/gdb/mi/mi-symbol-cmds.c
+++ b/gdb/mi/mi-symbol-cmds.c
@@ -39,13 +39,13 @@ mi_cmd_symbol_list_lines (char *command, char **argv, int argc)
   struct cleanup *cleanup_stack, *cleanup_tuple;
 
   if (argc != 1)
-    error (_("mi_cmd_symbol_list_lines: Usage: SOURCE_FILENAME"));
+    error (_("-symbol-list-lines: Usage: SOURCE_FILENAME"));
 
   filename = argv[0];
   s = lookup_symtab (filename);
 
   if (s == NULL)
-    error (_("mi_cmd_symbol_list_lines: Unknown source file name."));
+    error (_("-symbol-list-lines: Unknown source file name."));
 
   /* Now, dump the associated line table.  The pc addresses are already
      sorted by increasing values in the symbol table, so no need to
diff --git a/gdb/testsuite/gdb.mi/gdb2549.exp b/gdb/testsuite/gdb.mi/gdb2549.exp
index 7d1c5cc..53ad539 100644
--- a/gdb/testsuite/gdb.mi/gdb2549.exp
+++ b/gdb/testsuite/gdb.mi/gdb2549.exp
@@ -41,7 +41,7 @@ if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb
 proc register_tests_no_exec { } {
 	# Test the generic IDT chip.
 	mi_gdb_test "111-data-list-register-values" \
-		".*111\\^error,msg=\"mi_cmd_data_list_register_values: Usage: -data-list-register-values <format> \\\[<regnum1>...<regnumN>\\\]\"" \
+		".*111\\^error,msg=\"-data-list-register-values: Usage: -data-list-register-values <format> \\\[<regnum1>...<regnumN>\\\]\"" \
 		"wrong arguments"
 
 	mi_gdb_test "111-data-list-register-values x" \
diff --git a/gdb/testsuite/gdb.mi/mi-cli.exp b/gdb/testsuite/gdb.mi/mi-cli.exp
index 5f87947..e3096f8 100644
--- a/gdb/testsuite/gdb.mi/mi-cli.exp
+++ b/gdb/testsuite/gdb.mi/mi-cli.exp
@@ -37,15 +37,15 @@ if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb
 }
 
 mi_gdb_test "-interpreter-exec" \
-  {\^error,msg="mi_cmd_interpreter_exec: Usage: -interpreter-exec interp command"} \
+  {\^error,msg="-interpreter-exec: Usage: -interpreter-exec interp command"} \
   "-interpreter-exec with no arguments"
 
 mi_gdb_test "-interpreter-exec console" \
-  {\^error,msg="mi_cmd_interpreter_exec: Usage: -interpreter-exec interp command"} \
+  {\^error,msg="-interpreter-exec: Usage: -interpreter-exec interp command"} \
   "-interpreter-exec with one argument"
 
 mi_gdb_test "-interpreter-exec bogus command" \
-  {\^error,msg="mi_cmd_interpreter_exec: could not find interpreter \\\"bogus\\\""} \
+  {\^error,msg="-interpreter-exec: could not find interpreter \\\"bogus\\\""} \
   "-interpreter-exec with bogus interpreter"
 
 set msg {Undefined command: \\\"bogus\\\"\.  Try \\\"help\\\"\.}
diff --git a/gdb/testsuite/gdb.mi/mi-disassemble.exp b/gdb/testsuite/gdb.mi/mi-disassemble.exp
index 7141201..55d06d0 100644
--- a/gdb/testsuite/gdb.mi/mi-disassemble.exp
+++ b/gdb/testsuite/gdb.mi/mi-disassemble.exp
@@ -210,7 +210,7 @@ proc test_disassembly_bogus_args {} {
     # -data-disassembly -f basics.c -l 32 -- 9
 
     mi_gdb_test "123-data-disassemble -f foo -l abc -n 0 -- 0" \
-             "123\\^error,msg=\"mi_cmd_disassemble: Invalid filename.\"" \
+             "123\\^error,msg=\"-data-disassemble: Invalid filename.\"" \
              "data-disassemble bogus filename"
 
     mi_gdb_test "321-data-disassemble -s foo -e bar -- 0" \
@@ -218,11 +218,11 @@ proc test_disassembly_bogus_args {} {
              "data-disassemble bogus address"
 
     mi_gdb_test "456-data-disassemble -s \$pc -f basics.c -- 0" \
-             "456\\^error,msg=\"mi_cmd_disassemble: Usage: \\( .-f filename -l linenum .-n howmany.. \\| .-s startaddr -e endaddr.\\) .--. mode.\"" \
+             "456\\^error,msg=\"-data-disassemble: Usage: \\( .-f filename -l linenum .-n howmany.. \\| .-s startaddr -e endaddr.\\) .--. mode.\"" \
              "data-disassemble mix different args"
 
     mi_gdb_test "789-data-disassemble -f basics.c -l $line_main_body -- 9" \
-             "789\\^error,msg=\"mi_cmd_disassemble: Mode argument must be 0, 1, 2, or 3.\"" \
+             "789\\^error,msg=\"-data-disassemble: Mode argument must be 0, 1, 2, or 3.\"" \
              "data-disassemble wrong mode arg"
 
 }
diff --git a/gdb/testsuite/gdb.mi/mi-pthreads.exp b/gdb/testsuite/gdb.mi/mi-pthreads.exp
index 73baf0e..6021d68 100644
--- a/gdb/testsuite/gdb.mi/mi-pthreads.exp
+++ b/gdb/testsuite/gdb.mi/mi-pthreads.exp
@@ -41,7 +41,7 @@ proc check_mi_thread_command_set {} {
   set thread_list [get_mi_thread_list "in check_mi_thread_command_set"]
   
   mi_gdb_test "-thread-select" \
-    {\^error,msg="mi_cmd_thread_select: USAGE: threadnum."} \
+    {\^error,msg="-thread-select: USAGE: threadnum."} \
     "check_mi_thread_command_set: -thread-select"
 
   mi_gdb_test "-thread-select 123456789" \
diff --git a/gdb/testsuite/gdb.mi/mi-regs.exp b/gdb/testsuite/gdb.mi/mi-regs.exp
index 5f22700..676ee00 100644
--- a/gdb/testsuite/gdb.mi/mi-regs.exp
+++ b/gdb/testsuite/gdb.mi/mi-regs.exp
@@ -42,7 +42,7 @@ if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb
 proc sparc_register_tests_no_exec { } {
 	# Test the generic IDT chip.
 	mi_gdb_test "111-data-list-register-values" \
-		".*111\\^error,msg=\"mi_cmd_data_list_register_values: Usage: -data-list-register-values <format> \\\[<regnum1>...<regnumN>\\\]\"" \
+		".*111\\^error,msg=\"-data-list-register-values: Usage: -data-list-register-values <format> \\\[<regnum1>...<regnumN>\\\]\"" \
 		"wrong arguments"
 
 	mi_gdb_test "111-data-list-register-values x" \
diff --git a/gdb/testsuite/gdb.mi/mi-stack.exp b/gdb/testsuite/gdb.mi/mi-stack.exp
index f3d6105..719aa4b 100644
--- a/gdb/testsuite/gdb.mi/mi-stack.exp
+++ b/gdb/testsuite/gdb.mi/mi-stack.exp
@@ -69,7 +69,7 @@ proc test_stack_frame_listing {} {
                 "stack frame listing 1 3"
 
     mi_gdb_test "234-stack-list-frames 1" \
-	    "234\\^error,msg=\"mi_cmd_stack_list_frames: Usage.*FRAME_LOW FRAME_HIGH.*\"" \
+	    "234\\^error,msg=\"-stack-list-frames: Usage.*FRAME_LOW FRAME_HIGH.*\"" \
 	    "stack frame listing wrong"
 
     mi_gdb_test "235-stack-info-frame" \
@@ -120,7 +120,7 @@ proc test_stack_args_listing {} {
                 "stack args listing 1 1 3"
 
     mi_gdb_test "234-stack-list-arguments" \
-	    "234\\^error,msg=\"mi_cmd_stack_list_args: Usage.*PRINT_VALUES.*FRAME_LOW FRAME_HIGH.*\"" \
+	    "234\\^error,msg=\"-stack-list-arguments: Usage.*PRINT_VALUES.*FRAME_LOW FRAME_HIGH.*\"" \
 	    "stack args listing wrong"
 
     mi_gdb_test "235-stack-list-arguments 1 1 300" \
@@ -151,7 +151,7 @@ proc test_stack_info_depth {} {
                 "stack info-depth 99"
 
     mi_gdb_test "231-stack-info-depth 99 99" \
-	    "231\\^error,msg=\"mi_cmd_stack_info_depth: Usage: .MAX_DEPTH.\"" \
+	    "231\\^error,msg=\"-stack-info-depth: Usage: .MAX_DEPTH.\"" \
                 "stack info-depth wrong usage"
 }
 
@@ -185,7 +185,7 @@ mi_execute_to "exec-next 4" "end-stepping-range" "callee4" "" ".*${srcfile}" $li
   "stack locals listing, simple types: names and values, complex type: names and types"
 
     mi_gdb_test "234-stack-list-locals" \
-	    "234\\^error,msg=\"mi_cmd_stack_list_locals: Usage.*PRINT_VALUES.*\"" \
+	    "234\\^error,msg=\"-stack-list-locals: Usage.*PRINT_VALUES.*\"" \
 	    "stack locals listing wrong"
 
     mi_gdb_test "232-stack-select-frame 1" \
diff --git a/gdb/testsuite/gdb.mi/mi-var-block.exp b/gdb/testsuite/gdb.mi/mi-var-block.exp
index 35141f8..d31a79d 100644
--- a/gdb/testsuite/gdb.mi/mi-var-block.exp
+++ b/gdb/testsuite/gdb.mi/mi-var-block.exp
@@ -47,7 +47,7 @@ mi_runto do_block_tests
 mi_create_varobj "cb" "cb" "create local variable cb"
 
 mi_gdb_test "-var-create foo * foo" \
-       "\\^error,msg=\"mi_cmd_var_create: unable to create variable object\"" \
+       "\\^error,msg=\"-var-create: unable to create variable object\"" \
        "try to create local variable foo"
 
 # step to "foo = 123;"
diff --git a/gdb/testsuite/gdb.mi/mi-var-cmd.exp b/gdb/testsuite/gdb.mi/mi-var-cmd.exp
index 8f31309..5d153fd 100644
--- a/gdb/testsuite/gdb.mi/mi-var-cmd.exp
+++ b/gdb/testsuite/gdb.mi/mi-var-cmd.exp
@@ -56,14 +56,14 @@ mi_create_varobj "global_simple" "global_simple" "create global variable"
 # Desc: Create non-existent variable
 
 mi_gdb_test "112-var-create bogus_unknown_variable * bogus_unknown_variable" \
-	"112\\^error,msg=\"mi_cmd_var_create: unable to create variable object\"" \
+	"112\\^error,msg=\"-var-create: unable to create variable object\"" \
 	"create non-existent variable"
 
 # Test: c_variable-1.3
 # Desc: Create out of scope variable
 
 mi_gdb_test "113-var-create argc * argc" \
-	"113\\^error,msg=\"mi_cmd_var_create: unable to create variable object\"" \
+	"113\\^error,msg=\"-var-create: unable to create variable object\"" \
 	"create out of scope variable"
 
 mi_runto do_locals_tests
@@ -123,7 +123,7 @@ mi_create_varobj_checked lsimple.integer lsimple.integer "int" \
 #    Type names (like int, long, etc..) are all proper expressions to gdb.
 #    make sure variable code does not allow users to create variables, though.
 mi_gdb_test "-var-create int * int" \
-	"&\"Attempt to use a type name as an expression.\\\\n\".*\\^error,msg=\"mi_cmd_var_create: unable to create variable object\"" \
+	"&\"Attempt to use a type name as an expression.\\\\n\".*\\^error,msg=\"-var-create: unable to create variable object\"" \
 	"create int"
 
 
@@ -244,7 +244,7 @@ mi_gdb_test "-var-update *" \
 #
 ###
 mi_gdb_test "-var-assign global_simple 0" \
-	"\\^error,msg=\"mi_cmd_var_assign: Variable object is not editable\"" \
+	"\\^error,msg=\"-var-assign: Variable object is not editable\"" \
 	"assign to global_simple"
 
 mi_gdb_test "-var-assign linteger 3333" \
@@ -414,7 +414,7 @@ mi_create_varobj_checked l l {long int \*} "create l"
 # Test: c_variable-2.11
 # Desc: create do_locals_tests local in subroutine1
 mi_gdb_test "-var-create linteger * linteger" \
-	"\\^error,msg=\"mi_cmd_var_create: unable to create variable object\"" \
+	"\\^error,msg=\"-var-create: unable to create variable object\"" \
 	"create linteger"
 
 mi_step_to "subroutine1" "\{name=\"i\",value=\".*\"\},\{name=\"l\",value=\".*\"\}" \
diff --git a/gdb/testsuite/gdb.mi/mi2-cli.exp b/gdb/testsuite/gdb.mi/mi2-cli.exp
index a12e5c4..ba4a770 100644
--- a/gdb/testsuite/gdb.mi/mi2-cli.exp
+++ b/gdb/testsuite/gdb.mi/mi2-cli.exp
@@ -37,15 +37,15 @@ if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb
 }
 
 mi_gdb_test "-interpreter-exec" \
-  {\^error,msg="mi_cmd_interpreter_exec: Usage: -interpreter-exec interp command"} \
+  {\^error,msg="-interpreter-exec: Usage: -interpreter-exec interp command"} \
   "-interpreter-exec with no arguments"
 
 mi_gdb_test "-interpreter-exec console" \
-  {\^error,msg="mi_cmd_interpreter_exec: Usage: -interpreter-exec interp command"} \
+  {\^error,msg="-interpreter-exec: Usage: -interpreter-exec interp command"} \
   "-interpreter-exec with one argument"
 
 mi_gdb_test "-interpreter-exec bogus command" \
-  {\^error,msg="mi_cmd_interpreter_exec: could not find interpreter \\\"bogus\\\""} \
+  {\^error,msg="-interpreter-exec: could not find interpreter \\\"bogus\\\""} \
   "-interpreter-exec with bogus interpreter"
 
 set msg {Undefined command: \\\"bogus\\\"\.  Try \\\"help\\\"\.}
diff --git a/gdb/testsuite/gdb.mi/mi2-disassemble.exp b/gdb/testsuite/gdb.mi/mi2-disassemble.exp
index 53f65e5..39eae35 100644
--- a/gdb/testsuite/gdb.mi/mi2-disassemble.exp
+++ b/gdb/testsuite/gdb.mi/mi2-disassemble.exp
@@ -210,7 +210,7 @@ proc test_disassembly_bogus_args {} {
     # -data-disassembly -f basics.c -l 32 -- 9
 
     mi_gdb_test "123-data-disassemble -f foo -l abc -n 0 -- 0" \
-             "123\\^error,msg=\"mi_cmd_disassemble: Invalid filename.\"" \
+             "123\\^error,msg=\"-data-disassemble: Invalid filename.\"" \
              "data-disassemble bogus filename"
 
     mi_gdb_test "321-data-disassemble -s foo -e bar -- 0" \
@@ -218,11 +218,11 @@ proc test_disassembly_bogus_args {} {
              "data-disassemble bogus address"
 
     mi_gdb_test "456-data-disassemble -s \$pc -f basics.c -- 0" \
-             "456\\^error,msg=\"mi_cmd_disassemble: Usage: \\( .-f filename -l linenum .-n howmany.. \\| .-s startaddr -e endaddr.\\) .--. mode.\"" \
+             "456\\^error,msg=\"-data-disassemble: Usage: \\( .-f filename -l linenum .-n howmany.. \\| .-s startaddr -e endaddr.\\) .--. mode.\"" \
              "data-disassemble mix different args"
 
     mi_gdb_test "789-data-disassemble -f basics.c -l $line_main_body -- 9" \
-             "789\\^error,msg=\"mi_cmd_disassemble: Mode argument must be 0, 1, 2, or 3.\"" \
+             "789\\^error,msg=\"-data-disassemble: Mode argument must be 0, 1, 2, or 3.\"" \
              "data-disassemble wrong mode arg"
 
 }
diff --git a/gdb/testsuite/gdb.mi/mi2-pthreads.exp b/gdb/testsuite/gdb.mi/mi2-pthreads.exp
index f869078..9588fd3 100644
--- a/gdb/testsuite/gdb.mi/mi2-pthreads.exp
+++ b/gdb/testsuite/gdb.mi/mi2-pthreads.exp
@@ -41,7 +41,7 @@ proc check_mi_thread_command_set {} {
   set thread_list [get_mi_thread_list "in check_mi_thread_command_set"]
   
   mi_gdb_test "-thread-select" \
-    {\^error,msg="mi_cmd_thread_select: USAGE: threadnum."} \
+    {\^error,msg="-thread-select: USAGE: threadnum."} \
     "check_mi_thread_command_set: -thread-select"
 
   mi_gdb_test "-thread-select 123456789" \
diff --git a/gdb/testsuite/gdb.mi/mi2-regs.exp b/gdb/testsuite/gdb.mi/mi2-regs.exp
index bb870b1..70360f5 100644
--- a/gdb/testsuite/gdb.mi/mi2-regs.exp
+++ b/gdb/testsuite/gdb.mi/mi2-regs.exp
@@ -42,7 +42,7 @@ if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb
 proc sparc_register_tests_no_exec { } {
 	# Test the generic IDT chip.
 	mi_gdb_test "111-data-list-register-values" \
-		".*111\\^error,msg=\"mi_cmd_data_list_register_values: Usage: -data-list-register-values <format> \\\[<regnum1>...<regnumN>\\\]\"" \
+		".*111\\^error,msg=\"-data-list-register-values: Usage: -data-list-register-values <format> \\\[<regnum1>...<regnumN>\\\]\"" \
 		"wrong arguments"
 
 	mi_gdb_test "111-data-list-register-values x" \
diff --git a/gdb/testsuite/gdb.mi/mi2-stack.exp b/gdb/testsuite/gdb.mi/mi2-stack.exp
index 7b96128..50a95a1 100644
--- a/gdb/testsuite/gdb.mi/mi2-stack.exp
+++ b/gdb/testsuite/gdb.mi/mi2-stack.exp
@@ -69,7 +69,7 @@ proc test_stack_frame_listing {} {
                 "stack frame listing 1 3"
 
     mi_gdb_test "234-stack-list-frames 1" \
-	    "234\\^error,msg=\"mi_cmd_stack_list_frames: Usage.*FRAME_LOW FRAME_HIGH.*\"" \
+	    "234\\^error,msg=\"-stack-list-frames: Usage.*FRAME_LOW FRAME_HIGH.*\"" \
 	    "stack frame listing wrong"
 
     mi_gdb_test "235-stack-info-frame" \
@@ -120,7 +120,7 @@ proc test_stack_args_listing {} {
                 "stack args listing 1 1 3"
 
     mi_gdb_test "234-stack-list-arguments" \
-	    "234\\^error,msg=\"mi_cmd_stack_list_args: Usage.*PRINT_VALUES.*FRAME_LOW FRAME_HIGH.*\"" \
+	    "234\\^error,msg=\"-stack-list-arguments: Usage.*PRINT_VALUES.*FRAME_LOW FRAME_HIGH.*\"" \
 	    "stack args listing wrong"
 
     mi_gdb_test "235-stack-list-arguments 1 1 300" \
@@ -151,7 +151,7 @@ proc test_stack_info_depth {} {
                 "stack info-depth 99"
 
     mi_gdb_test "231-stack-info-depth 99 99" \
-	    "231\\^error,msg=\"mi_cmd_stack_info_depth: Usage: .MAX_DEPTH.\"" \
+	    "231\\^error,msg=\"-stack-info-depth: Usage: .MAX_DEPTH.\"" \
                 "stack info-depth wrong usage"
 }
 
@@ -185,7 +185,7 @@ mi_execute_to "exec-next 4" "end-stepping-range" "callee4" "" ".*${srcfile}" $li
   "stack locals listing, simple types: names and values, complex type: names and types"
 
     mi_gdb_test "234-stack-list-locals" \
-	    "234\\^error,msg=\"mi_cmd_stack_list_locals: Usage.*PRINT_VALUES.*\"" \
+	    "234\\^error,msg=\"-stack-list-locals: Usage.*PRINT_VALUES.*\"" \
 	    "stack locals listing wrong"
 
     mi_gdb_test "232-stack-select-frame 1" \
diff --git a/gdb/testsuite/gdb.mi/mi2-var-block.exp b/gdb/testsuite/gdb.mi/mi2-var-block.exp
index 0778839..58f0dbe 100644
--- a/gdb/testsuite/gdb.mi/mi2-var-block.exp
+++ b/gdb/testsuite/gdb.mi/mi2-var-block.exp
@@ -47,7 +47,7 @@ mi_runto do_block_tests
 mi_create_varobj "cb" "cb" "create local variable cb"
 
 mi_gdb_test "-var-create foo * foo" \
-	"\\^error,msg=\"mi_cmd_var_create: unable to create variable object\"" \
+	"\\^error,msg=\"-var-create: unable to create variable object\"" \
 	"create local variable foo"
 
 # step to "foo = 123;"
diff --git a/gdb/testsuite/gdb.mi/mi2-var-cmd.exp b/gdb/testsuite/gdb.mi/mi2-var-cmd.exp
index 3d59ae7..38a2501 100644
--- a/gdb/testsuite/gdb.mi/mi2-var-cmd.exp
+++ b/gdb/testsuite/gdb.mi/mi2-var-cmd.exp
@@ -56,14 +56,14 @@ mi_create_varobj "global_simple" "global_simple" "create global variable"
 # Desc: Create non-existent variable
 
 mi_gdb_test "112-var-create bogus_unknown_variable * bogus_unknown_variable" \
-	"112\\^error,msg=\"mi_cmd_var_create: unable to create variable object\"" \
+	"112\\^error,msg=\"-var-create: unable to create variable object\"" \
 	"create non-existent variable"
 
 # Test: c_variable-1.3
 # Desc: Create out of scope variable
 
 mi_gdb_test "113-var-create argc * argc" \
-	"113\\^error,msg=\"mi_cmd_var_create: unable to create variable object\"" \
+	"113\\^error,msg=\"-var-create: unable to create variable object\"" \
 	"create out of scope variable"
 
 mi_runto do_locals_tests
@@ -123,7 +123,7 @@ mi_create_varobj_checked lsimple.integer lsimple.integer "int" \
 #    Type names (like int, long, etc..) are all proper expressions to gdb.
 #    make sure variable code does not allow users to create variables, though.
 mi_gdb_test "-var-create int * int" \
-	"&\"Attempt to use a type name as an expression.\\\\n\".*\\^error,msg=\"mi_cmd_var_create: unable to create variable object\"" \
+	"&\"Attempt to use a type name as an expression.\\\\n\".*\\^error,msg=\"-var-create: unable to create variable object\"" \
 	"create int"
 
 
@@ -244,7 +244,7 @@ mi_gdb_test "-var-update *" \
 #
 ###
 mi_gdb_test "-var-assign global_simple 0" \
-	"\\^error,msg=\"mi_cmd_var_assign: Variable object is not editable\"" \
+	"\\^error,msg=\"-var-assign: Variable object is not editable\"" \
 	"assign to global_simple"
 
 mi_gdb_test "-var-assign linteger 3333" \
@@ -377,7 +377,7 @@ mi_create_varobj_checked l l {long int \*} "create l"
 # Test: c_variable-2.11
 # Desc: create do_locals_tests local in subroutine1
 mi_gdb_test "-var-create linteger * linteger" \
-	"\\^error,msg=\"mi_cmd_var_create: unable to create variable object\"" \
+	"\\^error,msg=\"-var-create: unable to create variable object\"" \
 	"create linteger"
 
 mi_step_to "subroutine1" "\{name=\"i\",value=\".*\"\},\{name=\"l\",value=\".*\"\}" \


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: RFA: fix PR mi/8138
  2011-01-12 20:57   ` Tom Tromey
@ 2011-01-12 21:23     ` Pedro Alves
  0 siblings, 0 replies; 7+ messages in thread
From: Pedro Alves @ 2011-01-12 21:23 UTC (permalink / raw)
  To: Tom Tromey; +Cc: gdb-patches

On Wednesday 12 January 2011 20:48:01, Tom Tromey wrote:
> >>>>> "Pedro" == Pedro Alves <pedro@codesourcery.com> writes:
> 
> Pedro> These errors should not show GDB's function name, but instead the
> Pedro> MI command name.  We have many instances of this issue, but we
> Pedro> have been fasing them out, and avoiding introducing new ones.
> 
> I'll reply to the rest later, but in the meantime I came up with this
> patch to fix this problem everywhere.  I mostly did it with a perl
> script, but then I checked all the errors since some functions don't
> follow the naming scheme.
> 
> What do you think?

Groovy.  Go for it.  Thanks!

-- 
Pedro Alves


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: RFA: fix PR mi/8138
  2011-01-11  0:07 ` Pedro Alves
  2011-01-12 20:57   ` Tom Tromey
@ 2011-02-04 16:18   ` Tom Tromey
  2011-02-04 16:35     ` Daniel Jacobowitz
  1 sibling, 1 reply; 7+ messages in thread
From: Tom Tromey @ 2011-02-04 16:18 UTC (permalink / raw)
  To: Pedro Alves; +Cc: gdb-patches

>>>>> "Pedro" == Pedro Alves <pedro@codesourcery.com> writes:

>> +^done,sharedlibs=[lib=[from="0x00111360",to="0x00111498",syms-read="2",name="/lib/libexample.so"]]

Pedro> The =library-loaded event was added with the "from" and "to"
Pedro> fields left out on purpose.

I think it actually makes sense to emit something here, to let the MI
client distinguish between multiple copies of dlmopen()d libraries.

This may not be the best way to do it, though.

Pedro> I'm not objecting, but I'm almost certain that I remember
Pedro> someone bringing up that this MI command was missing, but
Pedro> it was then mentioned that there's no real need for it
Pedro> since the frontend should be getting everything it needs
Pedro> from the =library-loaded / =library-unloaded events.
Pedro> (This PR predates these events by a few years).

Yeah, I agree now.  I am going to drop this.

Tom


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: RFA: fix PR mi/8138
  2011-02-04 16:18   ` Tom Tromey
@ 2011-02-04 16:35     ` Daniel Jacobowitz
  0 siblings, 0 replies; 7+ messages in thread
From: Daniel Jacobowitz @ 2011-02-04 16:35 UTC (permalink / raw)
  To: Tom Tromey; +Cc: Pedro Alves, gdb-patches

On Fri, Feb 04, 2011 at 09:17:55AM -0700, Tom Tromey wrote:
> >>>>> "Pedro" == Pedro Alves <pedro@codesourcery.com> writes:
> 
> >> +^done,sharedlibs=[lib=[from="0x00111360",to="0x00111498",syms-read="2",name="/lib/libexample.so"]]
> 
> Pedro> The =library-loaded event was added with the "from" and "to"
> Pedro> fields left out on purpose.
> 
> I think it actually makes sense to emit something here, to let the MI
> client distinguish between multiple copies of dlmopen()d libraries.
> 
> This may not be the best way to do it, though.

Yeah, I agree with you.  From and to are unrealistic; it works on
Linux, although I think we use completely the wrong values for from
and to (.text rather than the whole library).  On other targets there
can be multiple distinct ranges.  I'd rather have a "base" of some
sort, but I'm not sure that'd work everywhere either - can you get two
copies of the data segment sharing one copy of the text segment on
some platform?  Probably.

-- 
Daniel Jacobowitz
CodeSourcery


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2011-02-04 16:35 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-10 20:16 RFA: fix PR mi/8138 Tom Tromey
2011-01-11  0:07 ` Pedro Alves
2011-01-12 20:57   ` Tom Tromey
2011-01-12 21:23     ` Pedro Alves
2011-02-04 16:18   ` Tom Tromey
2011-02-04 16:35     ` Daniel Jacobowitz
2011-01-11  4:01 ` Eli Zaretskii

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox