auto_obstack storage_obstack;
- /* Byte cache for file names. */
+ /* String cache. */
- gdb::bcache filename_cache;
-
- /* Byte cache for macros. */
-
- gdb::bcache macro_cache;
+ gdb::bcache string_cache;
/* The gdbarch associated with the BFD. Note that this gdbarch is
determined solely from BFD information, without looking at target
return section_offsets[SECT_OFF_DATA (this)];
}
+ /* Intern STRING and return the unique copy. The copy has the same
+ lifetime as the per-BFD object. */
+ const char *intern (const char *str)
+ {
+ return (const char *) per_bfd->string_cache.insert (str, strlen (str) + 1);
+ }
+
+ /* Intern STRING and return the unique copy. The copy has the same
+ lifetime as the per-BFD object. */
+ const char *intern (const std::string &str)
+ {
+ return (const char *) per_bfd->string_cache.insert (str.c_str (),
+ str.size () + 1);
+ }
+
+ /* Retrieve the gdbarch associated with this objfile. */
+ struct gdbarch *arch () const
+ {
+ return per_bfd->gdbarch;
+ }
+
+
/* The object file's original name as specified by the user,
made absolute, and tilde-expanded. However, it is not canonicalized
(i.e., it has not been passed through gdb_realpath).
/* The partial symbol tables. */
- std::unique_ptr<psymtab_storage> partial_symtabs;
+ std::shared_ptr<psymtab_storage> partial_symtabs;
/* The object file's BFD. Can be null if the objfile contains only
minimal symbols, e.g. the run time common symbols for SunOS4. */
/* Declarations for functions defined in objfiles.c */
-extern struct gdbarch *get_objfile_arch (const struct objfile *);
-
extern int entry_point_address_query (CORE_ADDR *entry_p);
extern CORE_ADDR entry_point_address (void);
extern void objfiles_changed (void);
-extern int is_addr_in_objfile (CORE_ADDR addr, const struct objfile *objfile);
+/* Return true if ADDR maps into one of the sections of OBJFILE and false
+ otherwise. */
+
+extern bool is_addr_in_objfile (CORE_ADDR addr, const struct objfile *objfile);
/* Return true if ADDRESS maps into one of the sections of a
OBJF_SHARED objfile of PSPACE and false otherwise. */
-extern int shared_objfile_contains_address_p (struct program_space *pspace,
- CORE_ADDR address);
+extern bool shared_objfile_contains_address_p (struct program_space *pspace,
+ CORE_ADDR address);
/* This operation deletes all objfile entries that represent solibs that
weren't explicitly loaded by the user, via e.g., the add-symbol-file