partial_symbol psymbol;
memset (&psymbol, 0, sizeof (psymbol));
psymbol.ginfo.set_language (cu->language, &objfile->objfile_obstack);
+ sect_offset sect_off = sect_offset (0);
+ if (lazy_expand_symtab_p)
+ {
+ struct partial_die_info *top_level = pdi;
+ while (top_level->die_parent != nullptr
+ && top_level->die_parent->tag != DW_TAG_compile_unit
+ && top_level->die_parent->tag != DW_TAG_partial_unit)
+ top_level = top_level->die_parent;
+ sect_off = top_level->sect_off;
+ }
psymbol.ginfo.set_section_index (-1);
/* The code below indicates that the psymbol should be installed by
}
cu->per_cu->v.psymtab->add_psymbol
(psymbol, *where, per_objfile->per_bfd->partial_symtabs.get (),
- objfile);
+ objfile, sect_off);
}
}
void add_psymbol (const partial_symbol &psym,
psymbol_placement where,
psymtab_storage *partial_symtabs,
- struct objfile *objfile);
+ struct objfile *objfile, sect_offset sect_off = sect_offset (0));
/* Indicate that this partial symtab is complete. */
partial_symtab::add_psymbol (const partial_symbol &psymbol,
psymbol_placement where,
psymtab_storage *partial_symtabs,
- struct objfile *objfile)
+ struct objfile *objfile, sect_offset sect_off)
{
bool added;
? static_psymbols
: global_psymbols);
list.push_back (psym);
+
+ if (to_underlying (sect_off) != 0)
+ this->sect_off.emplace (psym, sect_off);
}
/* See psympriv.h. */