aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog13
-rw-r--r--gdb/NEWS6
-rw-r--r--gdb/build-id.c7
-rw-r--r--gdb/doc/ChangeLog5
-rw-r--r--gdb/doc/gdb.texinfo6
-rw-r--r--gdb/symfile.c18
-rw-r--r--gdb/symfile.h4
7 files changed, 59 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index c48fb92..38a40e1 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,16 @@
+2017-06-11 Simon Marchi <simon.marchi@ericsson.com>
+
+ * NEWS (Changes since GDB 8.0): Announce {set,show} debug
+ separate-debug-file commands.
+ * symfile.h (separate_debug_file_debug): New global.
+ * symfile.c (separate_debug_file_debug): New global.
+ (separate_debug_file_exists, find_separate_debug_file): Add
+ debug output.
+ (_initialize_symfile): Add "set debug separate-debug-file"
+ command.
+ * build-id.c (build_id_to_debug_bfd,
+ find_separate_debug_file_by_buildid): Add debug output.
+
2017-06-10 Simon Marchi <simon.marchi@polymtl.ca>
* gdbarch.sh (displaced_step_free_closure): Remove.
diff --git a/gdb/NEWS b/gdb/NEWS
index 8dab5d3..7c8a8f6 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -17,6 +17,12 @@
QStartupWithShell
Indicates whether the inferior must be started with a shell or not.
+* New commands
+
+set debug separate-debug-file
+show debug separate-debug-file
+ Control the display of debug output about separate debug file search.
+
*** Changes in GDB 8.0
* GDB now supports access to the PKU register on GNU/Linux. The register is
diff --git a/gdb/build-id.c b/gdb/build-id.c
index 0f63223..4b2b63e 100644
--- a/gdb/build-id.c
+++ b/gdb/build-id.c
@@ -112,6 +112,9 @@ build_id_to_debug_bfd (size_t build_id_len, const bfd_byte *build_id)
s += sprintf (s, "%02x", (unsigned) *data++);
strcpy (s, ".debug");
+ if (separate_debug_file_debug)
+ printf_unfiltered (_(" Trying %s\n"), link);
+
/* lrealpath() is expensive even for the usually non-existent files. */
if (access (link, F_OK) == 0)
filename = lrealpath (link);
@@ -147,6 +150,10 @@ find_separate_debug_file_by_buildid (struct objfile *objfile)
build_id = build_id_bfd_get (objfile->obfd);
if (build_id != NULL)
{
+ if (separate_debug_file_debug)
+ printf_unfiltered (_("\nLooking for separate debug info (build-id) for "
+ "%s\n"), objfile_name (objfile));
+
gdb_bfd_ref_ptr abfd (build_id_to_debug_bfd (build_id->size,
build_id->data));
/* Prevent looping on a stripped .debug file. */
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 868cde9..aa4a9ce 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,8 @@
+2017-06-11 Simon Marchi <simon.marchi@ericsson.com>
+
+ * gdb.texinfo (Optional Messages about Internal Happenings):
+ Document {set,show} debug separate-debug-file commands.
+
2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com>
* gdb.texinfo (Starting) <startup-with-shell>: Add @anchor.
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 8d7a1c9..c167a86 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -23984,6 +23984,12 @@ the serial line to the remote machine. The info is printed on the
@value{GDBN} standard output stream. The default is off.
@item show debug remote
Displays the state of display of remote packets.
+
+@item set debug separate-debug-file
+Turns on or off display of debug output about separate debug file search.
+@item show debug separate-debug-file
+Displays the state of separate debug file search debug output.
+
@item set debug serial
Turns on or off display of @value{GDBN} serial debugging info. The
default is off.
diff --git a/gdb/symfile.c b/gdb/symfile.c
index 846aabe..f936cf3 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -1333,6 +1333,10 @@ symbol_file_clear (int from_tty)
printf_unfiltered (_("No symbol file now.\n"));
}
+/* See symfile.h. */
+
+int separate_debug_file_debug = 0;
+
static int
separate_debug_file_exists (const char *name, unsigned long crc,
struct objfile *parent_objfile)
@@ -1351,6 +1355,9 @@ separate_debug_file_exists (const char *name, unsigned long crc,
if (filename_cmp (name, objfile_name (parent_objfile)) == 0)
return 0;
+ if (separate_debug_file_debug)
+ printf_unfiltered (_(" Trying %s\n"), name);
+
gdb_bfd_ref_ptr abfd (gdb_bfd_open (name, gnutarget, -1));
if (abfd == NULL)
@@ -1444,6 +1451,10 @@ find_separate_debug_file (const char *dir,
struct cleanup *back_to;
int ix;
+ if (separate_debug_file_debug)
+ printf_unfiltered (_("\nLooking for separate debug info (debug link) for "
+ "%s\n"), objfile_name (objfile));
+
/* Set I to std::max (strlen (canon_dir), strlen (dir)). */
i = strlen (dir);
if (canon_dir != NULL && strlen (canon_dir) > i)
@@ -3975,4 +3986,11 @@ full == print messages for the executable,\n\
NULL,
NULL,
&setprintlist, &showprintlist);
+
+ add_setshow_boolean_cmd ("separate-debug-file", no_class,
+ &separate_debug_file_debug, _("\
+Set printing of separate debug info file search debug."), _("\
+Show printing of separate debug info file search debug."), _("\
+When on, GDB prints the searched locations while looking for separate debug \
+info files."), NULL, NULL, &setdebuglist, &showdebuglist);
}
diff --git a/gdb/symfile.h b/gdb/symfile.h
index ab536e8..bb47fdf 100644
--- a/gdb/symfile.h
+++ b/gdb/symfile.h
@@ -646,4 +646,8 @@ extern void elfmdebug_build_psymtabs (struct objfile *,
extern gdb_bfd_ref_ptr find_separate_debug_file_in_section (struct objfile *);
+/* True if we are printing debug output about separate debug info files. */
+
+extern int separate_debug_file_debug;
+
#endif /* !defined(SYMFILE_H) */