Add quick_symbol_functions::compute_main_name

This adds a new compute_main_name method to quick_symbol_functions.
Currently there are no implementations of this, but a subsequent patch
will add one.
This commit is contained in:
Tom Tromey 2022-12-30 11:29:12 -07:00
parent 8e279fda0f
commit 4ea870efec
4 changed files with 26 additions and 0 deletions

View File

@ -605,6 +605,9 @@ struct objfile
void map_symbol_filenames (gdb::function_view<symbol_filename_ftype> fun,
bool need_fullname);
/* See quick_symbol_functions. */
void compute_main_name ();
/* See quick_symbol_functions. */
struct compunit_symtab *find_compunit_symtab_by_address (CORE_ADDR address);

View File

@ -185,6 +185,15 @@ struct quick_symbol_functions
gdb::function_view<symbol_filename_ftype> fun,
bool need_fullname) = 0;
/* Compute the name and language of the main function for the given
objfile. Normally this is done during symbol reading, but this
method exists in case this work is done in a worker thread and
must be waited for. The implementation can call
set_objfile_main_name if results are found. */
virtual void compute_main_name (struct objfile *objfile)
{
}
/* Return true if this class can lazily read the symbols. This may
only return true if there are in fact symbols to be read, because
this is used in the implementation of 'has_partial_symbols'. */

View File

@ -467,6 +467,18 @@ objfile::map_symbol_filenames (gdb::function_view<symbol_filename_ftype> fun,
iter->map_symbol_filenames (this, fun, need_fullname);
}
void
objfile::compute_main_name ()
{
if (debug_symfile)
gdb_printf (gdb_stdlog,
"qf->compute_main_name (%s)\n",
objfile_debug_name (this));
for (const auto &iter : qf_require_partial_symbols ())
iter->compute_main_name (this);
}
struct compunit_symtab *
objfile::find_compunit_symtab_by_address (CORE_ADDR address)
{

View File

@ -6334,6 +6334,8 @@ find_main_name (void)
accurate. */
for (objfile *objfile : current_program_space->objfiles ())
{
objfile->compute_main_name ();
if (objfile->per_bfd->name_of_main != NULL)
{
set_main_name (pspace,