[PATCH] "info source" now includes producer string

Doug Evans dje@google.com
Mon Jan 5 20:41:00 GMT 2015


Hi.

This is something I've wanted for awhile.

bash$ g++ -g -Og hello.cc -o hello
bash$ gdb hello
(gdb) start
(gdb) info source
Current source file is hello.cc
Compilation directory is /home/dje
Located in /home/dje/hello.cc
Contains 8 lines.
Source language is c++.
Producer is GNU C++ 4.8.2 -mtune=generic -march=x86-64 -g -Og -fstack-protector.
Compiled with DWARF 2 debugging format.
Does not include preprocessor macro info.
(gdb) 

Regression tested on amd64-linux.

2015-01-05  Doug Evans  <dje@google.com>

	* NEWS: "info source" command now display producer string if present.
	* source.c (source_info): Print producer string if present.

	doc/
	* gdb.texinfo (Symbols) <info source>: Output now contains producer
	string if present.

diff --git a/gdb/NEWS b/gdb/NEWS
index 9a668c4..ebcc0e3 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -113,6 +113,9 @@ VAX running Ultrix 			vax-*-ultrix*
   and "assf"), have been removed.  Use the "sharedlibrary" command, or
   its alias "share", instead.
 
+* The "info source" command now displays the producer string if it was
+  present in the debug info.
+
 *** Changes in GDB 7.8
 
 * New command line options
diff --git a/gdb/source.c b/gdb/source.c
index 574d9fa..49c9d83 100644
--- a/gdb/source.c
+++ b/gdb/source.c
@@ -654,12 +654,15 @@ static void
 source_info (char *ignore, int from_tty)
 {
   struct symtab *s = current_source_symtab;
+  struct compunit_symtab *cust;
 
   if (!s)
     {
       printf_filtered (_("No current source file.\n"));
       return;
     }
+
+  cust = SYMTAB_COMPUNIT (s);
   printf_filtered (_("Current source file is %s\n"), s->filename);
   if (SYMTAB_DIRNAME (s) != NULL)
     printf_filtered (_("Compilation directory is %s\n"), SYMTAB_DIRNAME (s));
@@ -670,10 +673,13 @@ source_info (char *ignore, int from_tty)
 		     s->nlines == 1 ? "" : "s");
 
   printf_filtered (_("Source language is %s.\n"), language_str (s->language));
+  printf_filtered (_("Producer is %s.\n"),
+		   COMPUNIT_PRODUCER (cust) != NULL
+		   ? COMPUNIT_PRODUCER (cust) : _("unknown"));
   printf_filtered (_("Compiled with %s debugging format.\n"),
-		   COMPUNIT_DEBUGFORMAT (SYMTAB_COMPUNIT (s)));
+		   COMPUNIT_DEBUGFORMAT (cust));
   printf_filtered (_("%s preprocessor macro info.\n"),
-		   COMPUNIT_MACRO_TABLE (SYMTAB_COMPUNIT (s)) != NULL
+		   COMPUNIT_MACRO_TABLE (cust) != NULL
 		   ? "Includes" : "Does not include");
 }
 
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index f4d7132..b22f644 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -16279,6 +16279,8 @@ its length, in lines,
 @item
 which programming language it is written in,
 @item
+if the debug information provides it, the program that compiled the file,
+@item
 whether the executable includes debugging information for that file, and
 if so, what format the information is in (e.g., STABS, Dwarf 2, etc.), and
 @item



More information about the Gdb-patches mailing list