mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 12:03:41 +08:00
Cache .gnu_debugdata BFD
While looking at the output of "maint info bfd" with multiple inferiors, I noticed that there were duplicate entries for .gnu_debugdata. There is no reason to re-create this BFD each time it is needed. This patch arranges to share the data. gdb/ChangeLog 2020-02-14 Tom Tromey <tom@tromey.com> * minidebug.c (gnu_debug_key): New global. (find_separate_debug_file_in_section): Use it. Change-Id: If139f89f0f07db33f399afdbcfbf5aaeffe4de46
This commit is contained in:
parent
f251f50533
commit
a4a38eb437
@ -1,3 +1,8 @@
|
|||||||
|
2020-02-14 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
|
* minidebug.c (gnu_debug_key): New global.
|
||||||
|
(find_separate_debug_file_in_section): Use it.
|
||||||
|
|
||||||
2020-02-14 Simon Marchi <simon.marchi@efficios.com>
|
2020-02-14 Simon Marchi <simon.marchi@efficios.com>
|
||||||
|
|
||||||
* gdbarch.sh (displaced_step_copy_insn): Change return type to an
|
* gdbarch.sh (displaced_step_copy_insn): Change return type to an
|
||||||
|
@ -26,6 +26,10 @@
|
|||||||
|
|
||||||
#ifdef HAVE_LIBLZMA
|
#ifdef HAVE_LIBLZMA
|
||||||
|
|
||||||
|
/* We stash a reference to the .gnu_debugdata BFD on the enclosing
|
||||||
|
BFD. */
|
||||||
|
static const bfd_key<gdb_bfd_ref_ptr> gnu_debug_key;
|
||||||
|
|
||||||
#include <lzma.h>
|
#include <lzma.h>
|
||||||
|
|
||||||
/* Allocator function for LZMA. */
|
/* Allocator function for LZMA. */
|
||||||
@ -269,6 +273,10 @@ find_separate_debug_file_in_section (struct objfile *objfile)
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
#ifdef HAVE_LIBLZMA
|
#ifdef HAVE_LIBLZMA
|
||||||
|
gdb_bfd_ref_ptr *shared = gnu_debug_key.get (objfile->obfd);
|
||||||
|
if (shared != nullptr)
|
||||||
|
return *shared;
|
||||||
|
|
||||||
std::string filename = string_printf (_(".gnu_debugdata for %s"),
|
std::string filename = string_printf (_(".gnu_debugdata for %s"),
|
||||||
objfile_name (objfile));
|
objfile_name (objfile));
|
||||||
|
|
||||||
@ -282,6 +290,9 @@ find_separate_debug_file_in_section (struct objfile *objfile)
|
|||||||
warning (_("Cannot parse .gnu_debugdata section; not a BFD object"));
|
warning (_("Cannot parse .gnu_debugdata section; not a BFD object"));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gnu_debug_key.emplace (objfile->obfd, abfd);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
warning (_("Cannot parse .gnu_debugdata section; LZMA support was "
|
warning (_("Cannot parse .gnu_debugdata section; LZMA support was "
|
||||||
"disabled at compile time"));
|
"disabled at compile time"));
|
||||||
|
Loading…
Reference in New Issue
Block a user