From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14307 invoked by alias); 19 Apr 2003 02:49:47 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 14300 invoked from network); 19 Apr 2003 02:49:45 -0000 Received: from unknown (HELO tigercat.int.brobecker.org) (142.179.108.108) by sources.redhat.com with SMTP; 19 Apr 2003 02:49:45 -0000 Received: by tigercat.int.brobecker.org (Postfix, from userid 1001) id D0B8DE72C0; Fri, 18 Apr 2003 19:49:44 -0700 (PDT) Date: Sat, 19 Apr 2003 02:49:00 -0000 From: Thierry Schneider To: Elena Zannoni Cc: Thierry Schneider , gdb-patches@sources.redhat.com Subject: Re: [RFA] new GDB/MI command: -symbol-info-linetable Message-ID: <20030419024944.GA21248@gnat.com> References: <20030310021923.GB27274@gnat.com> <16026.59307.319875.214299@localhost.redhat.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="u3/rZRmxL6MmkK24" Content-Disposition: inline In-Reply-To: <16026.59307.319875.214299@localhost.redhat.com> User-Agent: Mutt/1.4i X-SW-Source: 2003-04/txt/msg00355.txt.bz2 --u3/rZRmxL6MmkK24 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-length: 1232 Elena, Thank you for reviewing my changes and for the constructive feedback. I have incorporated all your suggestions, as well as the one from Bob Rossi who kindly informed me that the MI documentation had been merged gdb/doc/gdb.texinfo, and this is where I added my new documentation. Here is the updated ChangeLog: 2003-04-18 Thierry Schneider * mi-cmds.h (mi_cmd_symbol_list_lines): Add declaration. * mi-cmds.c (mi_cmds): Add entry for new MI command. * mi-cmd-symbol.c (mi_cmd_symbol_list_lines): New source file for all symbol-related commands. 2003-04-18 Thierry Schneider * gdb.texinfo (section GDB/MI Symbol Query): Add documentation for new MI command. 2003-04-18 Thierry Schneider * mi1-symbol.exp (-symbol-list-lines): New test file to validate all symbol-related commands > > I unfortunately do not have a valid FSF assignement on file, yet. > > I have sent my application to the FSF, and I am waiting for the papers > > to arrive by mail. > > > > I think this has been sorted out now, right? Yes, I now have an FSF assignment on file. Thierry S. --u3/rZRmxL6MmkK24 Content-Type: text/plain; charset=us-ascii Content-Description: all_diffs Content-Disposition: attachment; filename=all_diffs Content-length: 4464 Index: Makefile.in =================================================================== RCS file: /cvs/src/src/gdb/Makefile.in,v retrieving revision 1.364 diff -c -3 -p -r1.364 Makefile.in *** Makefile.in 15 Apr 2003 23:07:11 -0000 1.364 --- Makefile.in 19 Apr 2003 02:18:04 -0000 *************** SUBDIR_CLI_UNINSTALL= *** 168,181 **** SUBDIR_MI_OBS = \ mi-out.o mi-console.o \ mi-cmds.o mi-cmd-env.o mi-cmd-var.o mi-cmd-break.o mi-cmd-stack.o \ ! mi-cmd-file.o mi-cmd-disas.o \ mi-interp.o \ mi-main.o mi-parse.o mi-getopt.o SUBDIR_MI_SRCS = \ mi/mi-out.c mi/mi-console.c \ mi/mi-cmds.c mi/mi-cmd-env.c \ mi/mi-cmd-var.c mi/mi-cmd-break.c mi/mi-cmd-stack.c \ ! mi/mi-cmd-file.c mi/mi-cmd-disas.c \ mi/mi-interp.c \ mi/mi-main.c mi/mi-parse.c mi/mi-getopt.c SUBDIR_MI_DEPS = --- 168,181 ---- SUBDIR_MI_OBS = \ mi-out.o mi-console.o \ mi-cmds.o mi-cmd-env.o mi-cmd-var.o mi-cmd-break.o mi-cmd-stack.o \ ! mi-cmd-file.o mi-cmd-disas.o mi-cmd-symbol.o \ mi-interp.o \ mi-main.o mi-parse.o mi-getopt.o SUBDIR_MI_SRCS = \ mi/mi-out.c mi/mi-console.c \ mi/mi-cmds.c mi/mi-cmd-env.c \ mi/mi-cmd-var.c mi/mi-cmd-break.c mi/mi-cmd-stack.c \ ! mi/mi-cmd-file.c mi/mi-cmd-disas.c mi/mi-cmd-symbol.c \ mi/mi-interp.c \ mi/mi-main.c mi/mi-parse.c mi/mi-getopt.c SUBDIR_MI_DEPS = *************** mi-cmd-env.o: $(srcdir)/mi/mi-cmd-env.c *** 2566,2571 **** --- 2566,2574 ---- mi-cmd-stack.o: $(srcdir)/mi/mi-cmd-stack.c $(defs_h) $(target_h) $(frame_h) \ $(value_h) $(mi_cmds_h) $(ui_out_h) $(symtab_h) $(block_h) $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-cmd-stack.c + mi-cmd-symbol.o: $(srcdir)/mi/mi-cmd-symbol.c $(defs_h) \ + $(mi_cmds_h) $(ui_out_h) $(symtab_h) + $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-cmd-symbol.c mi-cmd-var.o: $(srcdir)/mi/mi-cmd-var.c $(defs_h) $(mi_cmds_h) $(ui_out_h) \ $(mi_out_h) $(varobj_h) $(value_h) $(gdb_string_h) $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-cmd-var.c Index: doc/gdb.texinfo =================================================================== RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v retrieving revision 1.156 diff -c -3 -p -r1.156 gdb.texinfo *** doc/gdb.texinfo 14 Apr 2003 18:42:28 -0000 1.156 --- doc/gdb.texinfo 19 Apr 2003 02:18:18 -0000 *************** List the functions in the executable. *** 17117,17122 **** --- 17117,17148 ---- N.A. + @subheading The @code{-symbol-list-lines} Command + @findex -symbol-list-lines + + @subsubheading Synopsis + + @smallexample + -symbol-list-lines @var{filename} + @end smallexample + + Print the list of lines that contain code and their associated program + addresses for the given source filename. The entries are sorted in + ascending PC order. + + @subsubheading @value{GDBN} Command + + There is no corresponding @value{GDBN} command. + + @subsubheading Example + @smallexample + (@value{GDBP}) + -symbol-list-lines basics.c + ^done,lines=[{pc="0x08048554",line="7"},{pc="0x0804855a",line="8"}] + (@value{GDBP}) + @end smallexample + + @subheading The @code{-symbol-list-types} Command @findex -symbol-list-types Index: mi/mi-cmds.c =================================================================== RCS file: /cvs/src/src/gdb/mi/mi-cmds.c,v retrieving revision 1.11 diff -c -3 -p -r1.11 mi-cmds.c *** mi/mi-cmds.c 2 Apr 2003 22:10:35 -0000 1.11 --- mi/mi-cmds.c 19 Apr 2003 02:18:18 -0000 *************** struct mi_cmd mi_cmds[] = *** 119,124 **** --- 119,125 ---- {"symbol-info-line", 0, 0}, {"symbol-info-symbol", 0, 0}, {"symbol-list-functions", 0, 0}, + {"symbol-list-lines", 0, 0, mi_cmd_symbol_list_lines}, {"symbol-list-types", 0, 0}, {"symbol-list-variables", 0, 0}, {"symbol-locate", 0, 0}, Index: mi/mi-cmds.h =================================================================== RCS file: /cvs/src/src/gdb/mi/mi-cmds.h,v retrieving revision 1.8 diff -c -3 -p -r1.8 mi-cmds.h *** mi/mi-cmds.h 2 Apr 2003 22:10:35 -0000 1.8 --- mi/mi-cmds.h 19 Apr 2003 02:18:18 -0000 *************** extern mi_cmd_argv_ftype mi_cmd_stack_li *** 88,93 **** --- 88,94 ---- extern mi_cmd_argv_ftype mi_cmd_stack_list_frames; extern mi_cmd_argv_ftype mi_cmd_stack_list_locals; extern mi_cmd_argv_ftype mi_cmd_stack_select_frame; + extern mi_cmd_argv_ftype mi_cmd_symbol_list_lines; extern mi_cmd_args_ftype mi_cmd_target_download; extern mi_cmd_args_ftype mi_cmd_target_select; extern mi_cmd_argv_ftype mi_cmd_thread_list_ids; --u3/rZRmxL6MmkK24 Content-Type: text/x-csrc; charset=us-ascii Content-Description: mi-cmd-symbol.c Content-Disposition: attachment; filename="mi-cmd-symbol.c" Content-length: 2176 /* MI Command Set - symbol commands. Copyright 2003 Free Software Foundation, Inc. This file is part of GDB. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "defs.h" #include "mi-cmds.h" #include "symtab.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. */ enum mi_cmd_result mi_cmd_symbol_list_lines (char *command, char **argv, int argc) { char *filename; struct symtab *s; int i; struct cleanup *cleanup_stack, *cleanup_tuple; if (argc != 1) error ("mi_cmd_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."); /* 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. */ 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++) { 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); } do_cleanups (cleanup_stack); return MI_CMD_DONE; } --u3/rZRmxL6MmkK24 Content-Type: text/plain; charset=us-ascii Content-Description: mi1-symbol.exp Content-Disposition: attachment; filename="mi1-symbol.exp" Content-length: 1820 # Copyright 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Please email any bugs, comments, and/or additions to this file to: # bug-gdb@prep.ai.mit.edu # # The goal is not to test gdb functionality, which is done by other tests, # but to verify the correct output response to MI operations. # load_lib mi-support.exp set MIFLAGS "-i=mi1" gdb_exit if [mi_gdb_start] { continue } set testfile "basics" set srcfile ${testfile}.c set binfile ${objdir}/${subdir}/${testfile} if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } { gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." } mi_run_to_main proc test_list_lines {} { global mi_gdb_prompt global hex global decimal global srcfile # Test list-lines. # Tests: # -symbol-list-lines ${srcfile} mi_gdb_test "-symbol-list-lines ${srcfile}" \ "\\^done,lines=\[\{pc=\"$hex\",line=\"$decimal\"\}.*\]" \ "symbol-list-lines for source file ${srcfile}" } test_list_lines mi_gdb_exit return 0 --u3/rZRmxL6MmkK24--