Use ui_out_emit_tuple
[deliverable/binutils-gdb.git] / gdb / mi / mi-symbol-cmds.c
index b4b6c1a5f22d77337d6cef816ebc869b8cbed491..f9e464dfcb6718e49c6e4fdbeda7d7167e3ae6ea 100644 (file)
@@ -1,5 +1,5 @@
 /* MI Command Set - symbol commands.
-   Copyright (C) 2003, 2007, 2008 Free Software Foundation, Inc.
+   Copyright (C) 2003-2017 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
 #include "defs.h"
 #include "mi-cmds.h"
 #include "symtab.h"
+#include "objfiles.h"
 #include "ui-out.h"
 
-/* SYMBOL-LIST-LINES:
-
-   Print the list of all pc addresses and lines of code for
-   the provided (full or base) source file name.  The entries
-   are sorted in ascending PC order. */
+/* Print the list of all pc addresses and lines of code for the
+   provided (full or base) source file name.  The entries are sorted
+   in ascending PC order.  */
 
 void
-mi_cmd_symbol_list_lines (char *command, char **argv, int argc)
+mi_cmd_symbol_list_lines (const char *command, char **argv, int argc)
 {
+  struct gdbarch *gdbarch;
   char *filename;
   struct symtab *s;
   int i;
-  struct cleanup *cleanup_stack, *cleanup_tuple;
+  struct cleanup *cleanup_stack;
+  struct ui_out *uiout = current_uiout;
 
   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
-     perform any other sorting. */
+  /* Now, dump the associated line table.  The pc addresses are
+     already sorted by increasing values in the symbol table, so no
+     need to perform any other sorting.  */
 
+  gdbarch = get_objfile_arch (SYMTAB_OBJFILE (s));
   cleanup_stack = make_cleanup_ui_out_list_begin_end (uiout, "lines");
 
-  if (LINETABLE (s) != NULL && LINETABLE (s)->nitems > 0)
-    for (i = 0; i < LINETABLE (s)->nitems; i++)
+  if (SYMTAB_LINETABLE (s) != NULL && SYMTAB_LINETABLE (s)->nitems > 0)
+    for (i = 0; i < SYMTAB_LINETABLE (s)->nitems; i++)
     {
-      cleanup_tuple = make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
-      ui_out_field_core_addr (uiout, "pc", LINETABLE (s)->item[i].pc);
-      ui_out_field_int (uiout, "line", LINETABLE (s)->item[i].line);
-      do_cleanups (cleanup_tuple);
+      ui_out_emit_tuple tuple_emitter (uiout, NULL);
+      uiout->field_core_addr ("pc", gdbarch, SYMTAB_LINETABLE (s)->item[i].pc);
+      uiout->field_int ("line", SYMTAB_LINETABLE (s)->item[i].line);
     }
 
   do_cleanups (cleanup_stack);
This page took 0.027104 seconds and 4 git commands to generate.