This is the mail archive of the gdb-patches@sources.redhat.com 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]

Re: Adding -file-list-exec-source-file command to GDB/MI


This change essentially adds the command -file-list-exec-source-file to
the mi commands.

* mi-cmd-file.c:    Added file to implement mi file commands.
* mi-cmds.c:        Added -file-list-exec-source-file command.
* mi-cmds.h:        Added -file-list-exec-source-file to proto list.
* doc/gdb.texinfo:  Document -file-list-exec-source-file.


* mi-file.exp: Added testcase to test -file-list-exec-source-file.

I've attached a slightly tweaked version. It was checking for the path to the executable instead of the source file (separate build / config directories is the norm) (I'm also not sure what would happen if the configure contained a relative path but worry about that when someone notices :-)



+ @subheading The @code{-file-list-exec-source-file} Command
+ @findex -file-list-exec-source-file
+ + @subsubheading Synopsis
+ + @smallexample
+ -file-list-exec-source-file

Can you please expand this to include sample output vis:


(gdb)
111-file-list-exec-source-file
111^done,line="23",file="/home/scratch/GDB/src/gdb/testsuite/gdb.mi/basics.c"
(gdb)

Rather than file=..., should the field be called something like fullname=...., realpath= or fullpath=? That way, the same term can be used consistently through out MI.

enum mi_cmd_result
mi_cmd_file_list_exec_source_file(char *command, char **argv, int argc)
{
  struct symtab_and_line st;

See: http://sources.redhat.com/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gdb&pr=783


Even though there are no arguments it will want to discard any "--". A mi_getopt() call to strip off any leading "--". I think you'll want to tweak that function so that calling it is easier - allow NULL OPT and OPTARG?

  /* Print to the user the line and absolute file name */
  ui_out_field_int (uiout, "line", st.line);
  ui_out_field_string (uiout, "file", st.symtab->fullname);

Following on from above, should it print both "file" and "fullname"?


  return MI_CMD_DONE;
}

#   Copyright 1999 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 at prep dot ai dot mit dot edu

#
# Test essential Machine interface (MI) operations
#
# Verify that, using the MI, we can run a simple program and perform basic
# debugging activities like: insert breakpoints, run the program,
# step, next, continue until it ends and, last but not least, quit.
#
# 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=mi"

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_delete_breakpoints
mi_gdb_reinitialize_dir $srcdir/$subdir
mi_gdb_load ${binfile}

proc test_tbreak_creation_and_listing {} {
    global srcfile
    global srcdir
    global subdir
    set abs_srcfile [string_to_regexp ${srcdir}/${subdir}/${srcfile}]

    # get the absolute path to the current file
    mi_gdb_test "111-file-list-exec-source-file" \
	    "111\\\^done,line=\"23\",file=\"${abs_srcfile}\"" \
                "request absolute path of current source file (${abs_srcfile})"
}

test_tbreak_creation_and_listing

mi_gdb_exit
return 0

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