aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2022-12-30 11:29:12 -0700
committerTom Tromey <tom@tromey.com>2024-01-08 18:40:21 -0700
commit4ea870efec420b8c9010a7bf397ec1806889f535 (patch)
treedfba51c935eaee2eba44e223661b7ef164965820 /gdb
parent8e279fda0f725500c8f84a8b2ed56b0ee8d00ce0 (diff)
downloadfsf-binutils-gdb-4ea870efec420b8c9010a7bf397ec1806889f535.zip
fsf-binutils-gdb-4ea870efec420b8c9010a7bf397ec1806889f535.tar.gz
fsf-binutils-gdb-4ea870efec420b8c9010a7bf397ec1806889f535.tar.bz2
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.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/objfiles.h3
-rw-r--r--gdb/quick-symbol.h9
-rw-r--r--gdb/symfile-debug.c12
-rw-r--r--gdb/symtab.c2
4 files changed, 26 insertions, 0 deletions
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
index 0cad596..a7b5a71 100644
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
@@ -606,6 +606,9 @@ public:
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);
/* See quick_symbol_functions. */
diff --git a/gdb/quick-symbol.h b/gdb/quick-symbol.h
index e48eeed..56714ba 100644
--- a/gdb/quick-symbol.h
+++ b/gdb/quick-symbol.h
@@ -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'. */
diff --git a/gdb/symfile-debug.c b/gdb/symfile-debug.c
index d31ff33..7b73b42 100644
--- a/gdb/symfile-debug.c
+++ b/gdb/symfile-debug.c
@@ -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)
{
diff --git a/gdb/symtab.c b/gdb/symtab.c
index ffb095a..cc0bdb8 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -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,