X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fmi%2Fmi-symbol-cmds.c;h=f9e464dfcb6718e49c6e4fdbeda7d7167e3ae6ea;hb=2e78302469502f4f8a98144b60c09d4d9b6438fd;hp=49192d89b1f7ead31a3a275ab578b34337ae45b6;hpb=a9762ec78a53fbe9209fe1654db42df0cd328d50;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/mi/mi-symbol-cmds.c b/gdb/mi/mi-symbol-cmds.c index 49192d89b1..f9e464dfcb 100644 --- a/gdb/mi/mi-symbol-cmds.c +++ b/gdb/mi/mi-symbol-cmds.c @@ -1,5 +1,5 @@ /* MI Command Set - symbol commands. - Copyright (C) 2003, 2007 Free Software Foundation, Inc. + Copyright (C) 2003-2017 Free Software Foundation, Inc. This file is part of GDB. @@ -19,47 +19,46 @@ #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. */ - -enum mi_cmd_result -mi_cmd_symbol_list_lines (char *command, char **argv, int argc) +void +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); - - return MI_CMD_DONE; }