aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2016-06-14 12:46:56 +0100
committerTom Tromey <tom@tromey.com>2018-05-16 11:15:25 -0600
commit921222e2e8e8427c6a609b1ff66265dceb0d07eb (patch)
tree40ccb1e90d96105b1510c6806f20ff13fd7d9def
parent3acb7083a675fb3077739a2ae41a4a4cd6ef9cc3 (diff)
downloadfsf-binutils-gdb-921222e2e8e8427c6a609b1ff66265dceb0d07eb.zip
fsf-binutils-gdb-921222e2e8e8427c6a609b1ff66265dceb0d07eb.tar.gz
fsf-binutils-gdb-921222e2e8e8427c6a609b1ff66265dceb0d07eb.tar.bz2
Use a distinguishing name for minidebug objfile
One part of PR cli/19551 is that the mini debug info objfile reuses the name of the main objfile from which it comes. This can be seen because gdb claims to be reading symbols from the same file two times, like: Reading symbols from /bin/gdb...Reading symbols from /bin/gdb...(no debugging symbols found)...done. I think this would be less confusing if the minidebug objfile were given a different name. That is what this patch implements. It also arranges for the minidebug objfile to be marked OBJF_NOT_FILENAME. After this patch the output looks like: Reading symbols from /bin/gdb...Reading symbols from .gnu_debugdata for /usr/libexec/gdb...(no debugging symbols found)...done. Tested by the buildbot. gdb/ChangeLog 2018-05-16 Tom Tromey <tom@tromey.com> PR cli/19551: * symfile-add-flags.h (enum symfile_add_flags) <SYMFILE_NOT_FILENAME>: New constant. * symfile.c (read_symbols): Use SYMFILE_NOT_FILENAME. Get objfile name from BFD. (symbol_file_add_with_addrs): Check SYMFILE_NOT_FILENAME. * minidebug.c (find_separate_debug_file_in_section): Put ".gnu_debugdata" into BFD's file name.
-rw-r--r--gdb/ChangeLog11
-rw-r--r--gdb/minidebug.c5
-rw-r--r--gdb/symfile-add-flags.h7
-rw-r--r--gdb/symfile.c7
4 files changed, 25 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 3e0c53d..65b9098 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,14 @@
+2018-05-16 Tom Tromey <tom@tromey.com>
+
+ PR cli/19551:
+ * symfile-add-flags.h (enum symfile_add_flags)
+ <SYMFILE_NOT_FILENAME>: New constant.
+ * symfile.c (read_symbols): Use SYMFILE_NOT_FILENAME. Get
+ objfile name from BFD.
+ (symbol_file_add_with_addrs): Check SYMFILE_NOT_FILENAME.
+ * minidebug.c (find_separate_debug_file_in_section): Put
+ ".gnu_debugdata" into BFD's file name.
+
2018-05-16 Simon Marchi <simon.marchi@ericsson.com>
* regcache.c (regcache_read_ftype, regcache_write_ftype):
diff --git a/gdb/minidebug.c b/gdb/minidebug.c
index 693c715..e21353d 100644
--- a/gdb/minidebug.c
+++ b/gdb/minidebug.c
@@ -269,7 +269,10 @@ find_separate_debug_file_in_section (struct objfile *objfile)
return NULL;
#ifdef HAVE_LIBLZMA
- abfd = gdb_bfd_openr_iovec (objfile_name (objfile), gnutarget, lzma_open,
+ std::string filename = string_printf (_(".gnu_debugdata for %s"),
+ objfile_name (objfile));
+
+ abfd = gdb_bfd_openr_iovec (filename.c_str (), gnutarget, lzma_open,
section, lzma_pread, lzma_close, lzma_stat);
if (abfd == NULL)
return NULL;
diff --git a/gdb/symfile-add-flags.h b/gdb/symfile-add-flags.h
index f07ba79..3c07513 100644
--- a/gdb/symfile-add-flags.h
+++ b/gdb/symfile-add-flags.h
@@ -40,8 +40,11 @@ enum symfile_add_flag
/* Do not immediately read symbols for this file. By default,
symbols are read when the objfile is created. */
- SYMFILE_NO_READ = 1 << 4
- };
+ SYMFILE_NO_READ = 1 << 4,
+
+ /* The new objfile should be marked OBJF_NOT_FILENAME. */
+ SYMFILE_NOT_FILENAME = 1 << 5,
+ };
DEF_ENUM_FLAGS_TYPE (enum symfile_add_flag, symfile_add_flags);
diff --git a/gdb/symfile.c b/gdb/symfile.c
index b0a5f11..1f5d761 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -808,8 +808,9 @@ read_symbols (struct objfile *objfile, symfile_add_flags add_flags)
virtual section-as-bfd like the bfd filename containing the
section. Therefore use also non-canonical name form for the same
file containing the section. */
- symbol_file_add_separate (abfd.get (), objfile->original_name,
- add_flags, objfile);
+ symbol_file_add_separate (abfd.get (),
+ bfd_get_filename (abfd.get ()),
+ add_flags | SYMFILE_NOT_FILENAME, objfile);
}
}
if ((add_flags & SYMFILE_NO_READ) == 0)
@@ -1079,6 +1080,8 @@ symbol_file_add_with_addrs (bfd *abfd, const char *name,
flags |= OBJF_READNEVER;
add_flags |= SYMFILE_NO_READ;
}
+ if ((add_flags & SYMFILE_NOT_FILENAME) != 0)
+ flags |= OBJF_NOT_FILENAME;
/* Give user a chance to burp if we'd be
interactively wiping out any existing symbols. */