summaryrefslogtreecommitdiff
path: root/gdb/elfread.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/elfread.c')
-rw-r--r--gdb/elfread.c43
1 files changed, 22 insertions, 21 deletions
diff --git a/gdb/elfread.c b/gdb/elfread.c
index e0de52cd1b..08db208ebb 100644
--- a/gdb/elfread.c
+++ b/gdb/elfread.c
@@ -211,7 +211,7 @@ record_minimal_symbol (minimal_symbol_reader &reader,
create an msymbol that references an uninitialised section object. */
int section_index = 0;
if ((bfd_section_flags (bfd_section) & SEC_ALLOC) == SEC_ALLOC)
- section_index = gdb_bfd_section_index (objfile->obfd, bfd_section);
+ section_index = gdb_bfd_section_index (objfile->obfd.get (), bfd_section);
struct minimal_symbol *result
= reader.record_full (name, copy_name, address, ms_type, section_index);
@@ -252,7 +252,7 @@ elf_symtab_read (minimal_symbol_reader &reader,
/* Name of the last file symbol. This is either a constant string or is
saved on the objfile's filename cache. */
const char *filesymname = "";
- int stripped = (bfd_get_symcount (objfile->obfd) == 0);
+ int stripped = (bfd_get_symcount (objfile->obfd.get ()) == 0);
int elf_make_msymbol_special_p
= gdbarch_elf_make_msymbol_special_p (gdbarch);
@@ -271,7 +271,7 @@ elf_symtab_read (minimal_symbol_reader &reader,
/* Skip "special" symbols, e.g. ARM mapping symbols. These are
symbols which do not correspond to objects in the symbol table,
but have some other target-specific meaning. */
- if (bfd_is_target_special_symbol (objfile->obfd, sym))
+ if (bfd_is_target_special_symbol (objfile->obfd.get (), sym))
{
if (gdbarch_record_special_symbol_p (gdbarch))
gdbarch_record_special_symbol (gdbarch, objfile, sym);
@@ -283,7 +283,7 @@ elf_symtab_read (minimal_symbol_reader &reader,
&& (sym->flags & BSF_FUNCTION))
{
struct minimal_symbol *msym;
- bfd *abfd = objfile->obfd;
+ bfd *abfd = objfile->obfd.get ();
asection *sect;
/* Symbol is a reference to a function defined in
@@ -547,7 +547,7 @@ static void
elf_rel_plt_read (minimal_symbol_reader &reader,
struct objfile *objfile, asymbol **dyn_symbol_table)
{
- bfd *obfd = objfile->obfd;
+ bfd *obfd = objfile->obfd.get ();
const struct elf_backend_data *bed = get_elf_backend_data (obfd);
asection *relplt, *got_plt;
bfd_size_type reloc_count, reloc;
@@ -816,7 +816,7 @@ elf_gnu_ifunc_resolve_by_got (const char *name, CORE_ADDR *addr_p)
for (objfile *objfile : current_program_space->objfiles ())
{
- bfd *obfd = objfile->obfd;
+ bfd *obfd = objfile->obfd.get ();
struct gdbarch *gdbarch = objfile->arch ();
struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
size_t ptr_size = TYPE_LENGTH (ptr_type);
@@ -1041,7 +1041,7 @@ static void
elf_read_minimal_symbols (struct objfile *objfile, int symfile_flags,
const struct elfinfo *ei)
{
- bfd *synth_abfd, *abfd = objfile->obfd;
+ bfd *synth_abfd, *abfd = objfile->obfd.get ();
long symcount = 0, dynsymcount = 0, synthcount, storage_needed;
asymbol **symbol_table = NULL, **dyn_symbol_table = NULL;
asymbol *synthsyms;
@@ -1067,10 +1067,10 @@ elf_read_minimal_symbols (struct objfile *objfile, int symfile_flags,
/* Process the normal ELF symbol table first. */
- storage_needed = bfd_get_symtab_upper_bound (objfile->obfd);
+ storage_needed = bfd_get_symtab_upper_bound (objfile->obfd.get ());
if (storage_needed < 0)
error (_("Can't read symbols from %s: %s"),
- bfd_get_filename (objfile->obfd),
+ bfd_get_filename (objfile->obfd.get ()),
bfd_errmsg (bfd_get_error ()));
if (storage_needed > 0)
@@ -1079,11 +1079,11 @@ elf_read_minimal_symbols (struct objfile *objfile, int symfile_flags,
bfd_canonicalize_symtab so it must not get freed before ABFD gets. */
symbol_table = (asymbol **) bfd_alloc (abfd, storage_needed);
- symcount = bfd_canonicalize_symtab (objfile->obfd, symbol_table);
+ symcount = bfd_canonicalize_symtab (objfile->obfd.get (), symbol_table);
if (symcount < 0)
error (_("Can't read symbols from %s: %s"),
- bfd_get_filename (objfile->obfd),
+ bfd_get_filename (objfile->obfd.get ()),
bfd_errmsg (bfd_get_error ()));
elf_symtab_read (reader, objfile, ST_REGULAR, symcount, symbol_table,
@@ -1092,7 +1092,7 @@ elf_read_minimal_symbols (struct objfile *objfile, int symfile_flags,
/* Add the dynamic symbols. */
- storage_needed = bfd_get_dynamic_symtab_upper_bound (objfile->obfd);
+ storage_needed = bfd_get_dynamic_symtab_upper_bound (objfile->obfd.get ());
if (storage_needed > 0)
{
@@ -1104,12 +1104,12 @@ elf_read_minimal_symbols (struct objfile *objfile, int symfile_flags,
implementation detail, though. */
dyn_symbol_table = (asymbol **) bfd_alloc (abfd, storage_needed);
- dynsymcount = bfd_canonicalize_dynamic_symtab (objfile->obfd,
+ dynsymcount = bfd_canonicalize_dynamic_symtab (objfile->obfd.get (),
dyn_symbol_table);
if (dynsymcount < 0)
error (_("Can't read symbols from %s: %s"),
- bfd_get_filename (objfile->obfd),
+ bfd_get_filename (objfile->obfd.get ()),
bfd_errmsg (bfd_get_error ()));
elf_symtab_read (reader, objfile, ST_DYNAMIC, dynsymcount,
@@ -1131,7 +1131,7 @@ elf_read_minimal_symbols (struct objfile *objfile, int symfile_flags,
backlinked binary where it is valid. */
if (objfile->separate_debug_objfile_backlink)
- synth_abfd = objfile->separate_debug_objfile_backlink->obfd;
+ synth_abfd = objfile->separate_debug_objfile_backlink->obfd.get ();
else
synth_abfd = abfd;
@@ -1193,7 +1193,7 @@ elf_read_minimal_symbols (struct objfile *objfile, int symfile_flags,
static void
elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
{
- bfd *abfd = objfile->obfd;
+ bfd *abfd = objfile->obfd.get ();
struct elfinfo ei;
bool has_dwarf2 = true;
@@ -1271,13 +1271,14 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
{
gdb_bfd_ref_ptr debug_bfd (symfile_bfd_open (debugfile.c_str ()));
- symbol_file_add_separate (debug_bfd.get (), debugfile.c_str (),
+ symbol_file_add_separate (debug_bfd, debugfile.c_str (),
symfile_flags, objfile);
}
else
{
has_dwarf2 = false;
- const struct bfd_build_id *build_id = build_id_bfd_get (objfile->obfd);
+ const struct bfd_build_id *build_id
+ = build_id_bfd_get (objfile->obfd.get ());
if (build_id != nullptr)
{
@@ -1297,7 +1298,7 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
objfile->original_name);
else if (build_id_verify (debug_bfd.get (), build_id->size, build_id->data))
{
- symbol_file_add_separate (debug_bfd.get (), symfile_path.get (),
+ symbol_file_add_separate (debug_bfd, symfile_path.get (),
symfile_flags, objfile);
has_dwarf2 = true;
}
@@ -1348,11 +1349,11 @@ elf_symfile_init (struct objfile *objfile)
static const elfread_data &
elf_get_probes (struct objfile *objfile)
{
- elfread_data *probes_per_bfd = probe_key.get (objfile->obfd);
+ elfread_data *probes_per_bfd = probe_key.get (objfile->obfd.get ());
if (probes_per_bfd == NULL)
{
- probes_per_bfd = probe_key.emplace (objfile->obfd);
+ probes_per_bfd = probe_key.emplace (objfile->obfd.get ());
/* Here we try to gather information about all types of probes from the
objfile. */