aboutsummaryrefslogtreecommitdiff
path: root/gdb/objfiles.h
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@polymtl.ca>2021-04-02 11:45:25 -0400
committerSimon Marchi <simon.marchi@polymtl.ca>2021-04-02 11:45:37 -0400
commit0072c873792829e2be43acf8bbf1c352c266e4c7 (patch)
tree50a2ade2ef271eede88340679e65e81e0c009a0a /gdb/objfiles.h
parent9984dd9994c3d71fd28f41c50cdece48d6be13a6 (diff)
downloadgdb-0072c873792829e2be43acf8bbf1c352c266e4c7.zip
gdb-0072c873792829e2be43acf8bbf1c352c266e4c7.tar.gz
gdb-0072c873792829e2be43acf8bbf1c352c266e4c7.tar.bz2
gdb: pass objfile_per_bfd_storage instead of objfile to partial_symtab
Since partial_symtab is supposed to be objfile-independent (since series [1]), I think it would make sense for partial_symtab to not take an objfile as a parameter in its constructor. This patch replaces that parameter with an objfile_per_bfd_storage parameter. The objfile is used for two things: - to get the objfile_name, for debug messages. We can get that name from the bfd instead. - to intern the partial symtab filename. Even though it goes through an objfile method, the request is actually forwarded to the underlying objfile_per_bfd_storage. So we can ask the new objfile_per_bfd_storage instead. In order to get a reference to the BFD from the objfile_per_bfd_storage, the BFD is saved in the objfile_per_bfd_storage object. [1] https://sourceware.org/pipermail/gdb-patches/2021-February/176625.html gdb/ChangeLog: * psympriv.h (struct partial_symtab) <partial_symtab>: Change objfile parameter for objfile_per_bfd_storage, adjust callers. (struct standard_psymtab) <standard_psymtab>: Likewise. (struct legacy_psymtab) <legacy_psymtab>: Likewise. * psymtab.c (partial_symtab::partial_symtab): Likewise. * ctfread.c (struct ctf_psymtab): Likewise. * dwarf2/read.h (struct dwarf2_psymtab): Likewise. * dwarf2/read.c (struct dwarf2_include_psymtab): Likewise. (dwarf2_create_include_psymtab): Likewise. * objfiles.h (struct objfile_per_bfd_storage) <objfile_per_bfd_storage>: Add bfd parameter, adjust callers. <get_bfd>: New method. <m_bfd>: New field. * objfiles.c (get_objfile_bfd_data): Adjust. Change-Id: I2ed3ab5d2e6f27d034bd4dc26ae2fae7b0b8a2b9
Diffstat (limited to 'gdb/objfiles.h')
-rw-r--r--gdb/objfiles.h16
1 files changed, 14 insertions, 2 deletions
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
index e8a8b5f..bf6e6a1 100644
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
@@ -264,8 +264,8 @@ private:
struct objfile_per_bfd_storage
{
- objfile_per_bfd_storage ()
- : minsyms_read (false)
+ objfile_per_bfd_storage (bfd *bfd)
+ : minsyms_read (false), m_bfd (bfd)
{}
~objfile_per_bfd_storage ();
@@ -287,6 +287,13 @@ struct objfile_per_bfd_storage
return (const char *) string_cache.insert (str.c_str (), str.size () + 1);
}
+ /* Get the BFD this object is associated to. */
+
+ bfd *get_bfd () const
+ {
+ return m_bfd;
+ }
+
/* The storage has an obstack of its own. */
auto_obstack storage_obstack;
@@ -364,6 +371,11 @@ struct objfile_per_bfd_storage
/* All the different languages of symbols found in the demangled
hash table. */
std::bitset<nr_languages> demangled_hash_languages;
+
+private:
+ /* The BFD this object is associated to. */
+
+ bfd *m_bfd;
};
/* An iterator that first returns a parent objfile, and then each