From: Bob Rossi <bob_rossi@cox.net>
To: gdb-patches@sources.redhat.com
Subject: Adding -file-list-exec-source-file command to GDB/MI
Date: Mon, 10 Feb 2003 22:15:00 -0000 [thread overview]
Message-ID: <20030210221557.GA11238@white> (raw)
[-- Attachment #1: Type: text/plain, Size: 5771 bytes --]
Hi,
This is a patch to add -file-list-exec-source-file to GDB. The command
returns to the client the absolute path and line number of the current
executable. It is a replacement for the old way of getting the line
and file using annotations 1 or 2. It is nice because the client doesn't
have to call the -interpreter-exec command and parse the output of the CLI.
I ran the testsuite and there were no errors. I tested the feature from
GDB when there was not an program being debugged and when GDB had to
find the main file ( before running the exe ).
Both of these cases worked properly.
I tested it on:
uname -a='Linux 2.4.18 #2 Mon Nov 4 18:23:35 EST 2002 i686 unknown'
gdb -v|tail -n1='This GDB was configured as "i386-linux".'
This patch can be applied from src/gdb using patch -p1.
I added a file called mi-cmd-file.c. I was following the pattern created
by the designers of GDB/MI. I was imagining that all of the
unimplemented function -file will go in it when they are ready.
The file is attached.
Index: gdb/Makefile.in
===================================================================
RCS file: /cvs/src/src/gdb/Makefile.in,v
retrieving revision 1.328
diff -c -r1.328 Makefile.in
*** gdb/Makefile.in 7 Feb 2003 05:33:44 -0000 1.328
--- gdb/Makefile.in 10 Feb 2003 20:51:47 -0000
***************
*** 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-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-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-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 =
***************
*** 2494,2499 ****
--- 2494,2503 ----
$(ui_out_h) $(mi_out_h) $(breakpoint_h) $(gdb_string_h) \
$(mi_getopt_h) $(gdb_events_h) $(gdb_h)
$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-cmd-break.c
+ mi-cmd-file.o: $(srcdir)/mi/mi-cmd-file.c $(defs_h) $(mi_cmds_h) \
+ $(ui_out_h) $(mi_out_h) $(breakpoint_h) $(gdb_string_h) \
+ $(mi_getopt_h) $(gdb_events_h) $(gdb_h)
+ $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-cmd-file.c
mi-cmd-disas.o: $(srcdir)/mi/mi-cmd-disas.c $(defs_h) $(target_h) $(value_h) \
$(mi_cmds_h) $(mi_getopt_h) $(ui_out_h) $(gdb_string_h) $(disasm_h)
$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-cmd-disas.c
Index: gdb/mi/ChangeLog
===================================================================
RCS file: /cvs/src/src/gdb/mi/ChangeLog,v
retrieving revision 1.92
diff -c -r1.92 ChangeLog
*** gdb/mi/ChangeLog 9 Feb 2003 10:47:37 -0000 1.92
--- gdb/mi/ChangeLog 10 Feb 2003 20:51:51 -0000
***************
*** 1,3 ****
--- 1,10 ----
+ 2003-02-10 Bob Rossi <bob_rossi@cox.net>
+
+ * mi-cmd-file.c: added file to implement mi file commands.
+ * mi-cmds.c: Add -file-list-exec-source-file command.
+ * mi-cmds.h: Add -file-list-exec-source-file to proto list.
+ * gdbmi.texinfo: Document -file-list-exec-source-file.
+
2003-02-09 Andrew Cagney <ac131313@redhat.com>
* mi-interp.c (mi_remove_notify_hooks): Convert function
Index: gdb/mi/gdbmi.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/mi/gdbmi.texinfo,v
retrieving revision 1.33
diff -c -r1.33 gdbmi.texinfo
*** gdb/mi/gdbmi.texinfo 4 Feb 2003 18:41:29 -0000 1.33
--- gdb/mi/gdbmi.texinfo 10 Feb 2003 20:51:55 -0000
***************
*** 2340,2345 ****
--- 2340,2355 ----
@subsubheading Example
N.A.
+ @subheading The @code{-file-list-exec-source-file} Command
+ @findex -file-list-exec-source-file
+
+ @subsubheading Synopsis
+
+ @example
+ -file-list-exec-source-file
+ @end example
+
+ List the current source file and line for the current executable.
@subheading The @code{-file-list-exec-source-files} Command
@findex -file-list-exec-source-files
Index: gdb/mi/mi-cmds.c
===================================================================
RCS file: /cvs/src/src/gdb/mi/mi-cmds.c,v
retrieving revision 1.10
diff -c -r1.10 mi-cmds.c
*** gdb/mi/mi-cmds.c 6 Feb 2003 01:19:12 -0000 1.10
--- gdb/mi/mi-cmds.c 10 Feb 2003 20:51:55 -0000
***************
*** 80,85 ****
--- 80,86 ----
{"file-exec-and-symbols", "file %s", 0},
{"file-exec-file", "exec-file %s", 0},
{"file-list-exec-sections", 0, 0},
+ {"file-list-exec-source-file", 0, 0, mi_cmd_file_list_exec_source_file},
{"file-list-exec-source-files", 0, 0},
{"file-list-shared-libraries", 0, 0},
{"file-list-symbol-files", 0, 0},
Index: gdb/mi/mi-cmds.h
===================================================================
RCS file: /cvs/src/src/gdb/mi/mi-cmds.h,v
retrieving revision 1.7
diff -c -r1.7 mi-cmds.h
*** gdb/mi/mi-cmds.h 6 Feb 2003 01:19:12 -0000 1.7
--- gdb/mi/mi-cmds.h 10 Feb 2003 20:51:55 -0000
***************
*** 80,85 ****
--- 80,86 ----
extern mi_cmd_args_ftype mi_cmd_exec_step_instruction;
extern mi_cmd_args_ftype mi_cmd_exec_until;
extern mi_cmd_args_ftype mi_cmd_exec_interrupt;
+ extern mi_cmd_argv_ftype mi_cmd_file_list_exec_source_file;
extern mi_cmd_argv_ftype mi_cmd_gdb_exit;
extern mi_cmd_argv_ftype mi_cmd_interpreter_exec;
extern mi_cmd_argv_ftype mi_cmd_stack_info_depth;
[-- Attachment #2: mi-cmd-file.c --]
[-- Type: text/x-csrc, Size: 1138 bytes --]
#include "defs.h"
#include "mi-cmds.h"
#include "ui-out.h"
#include "symtab.h"
#include "source.h"
/* Return to the client the absolute path and line number of the
current file being executed. */
enum mi_cmd_result
mi_cmd_file_list_exec_source_file(char *command, char **argv, int argc)
{
struct symtab_and_line st;
if (argc != 0)
error ("mi_cmd_file_list_exec_source_file: Usage: No args");
/* Set the default file and line, also get them */
set_default_source_symtab_and_line();
st = get_current_source_symtab_and_line();
/* We should always get a symtab. */
if (!st.symtab)
error ("mi_cmd_file_list_exec_source_file: No symtab");
/* Extract the fullname if it is not known yet */
if (st.symtab->fullname == NULL)
symtab_to_filename (st.symtab);
/* We may not be able to open the file (not available). */
if (st.symtab->fullname == NULL)
error ("mi_cmd_file_list_exec_source_file: File not found");
/* 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);
return MI_CMD_DONE;
}
next reply other threads:[~2003-02-10 22:15 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-02-10 22:15 Bob Rossi [this message]
2003-02-11 6:39 ` Eli Zaretskii
2003-02-13 3:00 ` Bob Rossi
2003-02-10 22:28 Michael Elizabeth Chastain
2003-03-10 0:31 Bob Rossi
2003-03-10 4:28 ` Eli Zaretskii
2003-03-18 2:10 ` Bob Rossi
2003-03-18 5:46 ` Eli Zaretskii
2003-03-20 22:44 Bob Rossi
2003-03-21 4:34 ` Eli Zaretskii
2003-03-21 9:53 ` Jason Molenda
2003-03-21 13:16 ` Bob Rossi
2003-03-28 15:26 ` Andrew Cagney
2003-03-30 4:06 ` Bob Rossi
2003-03-31 4:22 ` Andrew Cagney
2003-03-31 8:13 ` Jason Molenda
2003-03-31 14:31 ` Andrew Cagney
2003-03-31 17:16 ` Jason Molenda
2003-03-31 18:52 ` Andrew Cagney
2003-03-31 19:20 ` Jason Molenda
2003-03-31 20:12 ` Andrew Cagney
2003-03-26 22:48 ` Andrew Cagney
2003-03-28 14:35 ` Bob Rossi
2003-03-28 15:30 ` Andrew Cagney
2003-03-28 16:05 ` Bob Rossi
2003-03-28 16:10 ` Daniel Jacobowitz
2003-03-29 0:41 Bob Rossi
2003-03-31 5:38 ` Andrew Cagney
2003-03-31 18:46 ` Bob Rossi
2003-03-31 18:56 ` Andrew Cagney
2003-04-02 16:15 ` Bob Rossi
2003-04-02 16:27 ` Andrew Cagney
2003-04-02 20:24 Bob Rossi
2003-04-02 21:59 ` Andrew Cagney
2003-04-03 2:54 ` Eli Zaretskii
2003-04-02 20:24 Bob Rossi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20030210221557.GA11238@white \
--to=bob_rossi@cox.net \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox