Add set/show debug dwarf-line.
authorDoug Evans <dje@google.com>
Wed, 27 May 2015 19:55:19 +0000 (12:55 -0700)
committerDoug Evans <dje@google.com>
Wed, 27 May 2015 19:55:19 +0000 (12:55 -0700)
gdb/ChangeLog:

* NEWS: Mention "set debug dwarf-line".
* dwarf2read.c (dwarf_line_debug): New static global.
(add_include_dir): Add debug dwarf-line support.
(add_file_name, dwarf_record_line, dwarf_finish_line): Ditto.
(_initialize_dwarf2_read): New parameter "debug dwarf-line".

gdb/doc/ChangeLog:

* gdb.texinfo (Debugging Output): Mention set/show debug dwarf-line.

gdb/ChangeLog
gdb/NEWS
gdb/doc/ChangeLog
gdb/doc/gdb.texinfo
gdb/dwarf2read.c

index 8122b98bedce064f79c6cad317f6cd8712422450..e5317270bc0bfaaca639abd2ac41c2b2eab74911 100644 (file)
@@ -1,3 +1,11 @@
+2015-05-27  Doug Evans  <dje@google.com>
+
+       * NEWS: Mention "set debug dwarf-line".
+       * dwarf2read.c (dwarf_line_debug): New static global.
+       (add_include_dir): Add debug dwarf-line support.
+       (add_file_name, dwarf_record_line, dwarf_finish_line): Ditto.
+       (_initialize_dwarf2_read): New parameter "debug dwarf-line".
+
 2015-05-27  Doug Evans  <dje@google.com>
 
        * cp-namespace.c (cp_lookup_nested_symbol): New arg "domain".
index 4c4e28c597daec896f97626d44ed90a1bccb19cb..bbfb55dcf1a6cdb9aa466bfca664239a1dd96699 100644 (file)
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -112,6 +112,10 @@ maint set dwarf max-cache-age
 maint show dwarf max-cache-age
   Renamed from "maint show dwarf2 max-cache-age".
 
+set debug dwarf-line
+show debug dwarf-line
+  Control display of debugging info regarding DWARF line processing.
+
 set max-completions
 show max-completions
   Set the maximum number of candidates to be considered during
index 490afe21e41ccf9772ce2df6ee5fc7dfb6ac00a9..171d30e455902f371bddbe82627e2b675335d166 100644 (file)
@@ -1,3 +1,7 @@
+2015-05-27  Doug Evans  <dje@google.com>
+
+       * gdb.texinfo (Debugging Output): Mention set/show debug dwarf-line.
+
 2015-05-26  Doug Evans  <dje@google.com>
 
        * gdb.texinfo (Debugging Output): Update for DWARF "set debug"
index 6cc6c7e08bf03a89b9e4837d70d29d726ac6ee9c..9ea846a5083b94fe9df8d7164980c77ac1a5f6ef 100644 (file)
@@ -23417,6 +23417,14 @@ The value is the number of nesting levels to print.
 A value of zero turns off the display.
 @item show debug dwarf-die
 Show the current state of DWARF DIE debugging.
+@item set debug dwarf-line
+@cindex DWARF Line Tables
+Turns on or off display of debugging messages related to reading
+DWARF line tables.  The default is 0 (off).
+A value of 1 provides basic information.
+A value greater than 1 provides more verbose information.
+@item show debug dwarf-line
+Show the current state of DWARF line table debugging.
 @item set debug dwarf-read
 @cindex DWARF Reading
 Turns on or off display of debugging messages related to reading
index 8e30ff384f64772f1b561e6a912dc82a88ce87c0..e6d6b309275f41fe7e3abb54ff794b27195a1ad6 100644 (file)
@@ -84,6 +84,9 @@ static unsigned int dwarf_read_debug = 0;
 /* When non-zero, dump DIEs after they are read in.  */
 static unsigned int dwarf_die_debug = 0;
 
+/* When non-zero, dump line number entries as they are read in.  */
+static unsigned int dwarf_line_debug = 0;
+
 /* When non-zero, cross-check physname against demangler.  */
 static int check_physname = 0;
 
@@ -17152,6 +17155,10 @@ free_line_header_voidp (void *arg)
 static void
 add_include_dir (struct line_header *lh, const char *include_dir)
 {
+  if (dwarf_line_debug >= 2)
+    fprintf_unfiltered (gdb_stdlog, "Adding dir %u: %s\n",
+                       lh->num_include_dirs + 1, include_dir);
+
   /* Grow the array if necessary.  */
   if (lh->include_dirs_size == 0)
     {
@@ -17181,6 +17188,10 @@ add_file_name (struct line_header *lh,
 {
   struct file_entry *fe;
 
+  if (dwarf_line_debug >= 2)
+    fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
+                       lh->num_file_names + 1, name);
+
   /* Grow the array if necessary.  */
   if (lh->file_names_size == 0)
     {
@@ -17529,6 +17540,14 @@ dwarf_record_line (struct gdbarch *gdbarch, struct subfile *subfile,
 {
   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
 
+  if (dwarf_line_debug)
+    {
+      fprintf_unfiltered (gdb_stdlog,
+                         "Recording line %u, file %s, address %s\n",
+                         line, lbasename (subfile->name),
+                         paddress (gdbarch, address));
+    }
+
   (*p_record_line) (subfile, line, addr);
 }
 
@@ -17541,8 +17560,18 @@ static void
 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
                   CORE_ADDR address, record_line_ftype p_record_line)
 {
-  if (subfile != NULL)
-    dwarf_record_line (gdbarch, subfile, 0, address, p_record_line);
+  if (subfile == NULL)
+    return;
+
+  if (dwarf_line_debug)
+    {
+      fprintf_unfiltered (gdb_stdlog,
+                         "Finishing current line, file %s, address %s\n",
+                         lbasename (subfile->name),
+                         paddress (gdbarch, address));
+    }
+
+  dwarf_record_line (gdbarch, subfile, 0, address, p_record_line);
 }
 
 /* Subroutine of dwarf_decode_lines to simplify it.
@@ -23321,6 +23350,16 @@ The value is the maximum depth to print."),
                             NULL,
                             &setdebuglist, &showdebuglist);
 
+  add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
+Set debugging of the dwarf line reader."), _("\
+Show debugging of the dwarf line reader."), _("\
+When enabled (non-zero), line number entries are dumped as they are read in.\n\
+A value of 1 (one) provides basic information.\n\
+A value greater than 1 provides more verbose information."),
+                            NULL,
+                            NULL,
+                            &setdebuglist, &showdebuglist);
+
   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
 Set cross-checking of \"physname\" code against demangler."), _("\
 Show cross-checking of \"physname\" code against demangler."), _("\