move the "main" data into the per-BFD object

This adds the "main"-related data into the per-BFD.  This is needed
because once symbol sharing across objfiles is complete, computing the
main name as a side effect of symbol reading will no longer work --
the symbols simply won't be re-read.

After this change, set_main_name is only used by the main_name
machinery itself, so this patch makes it static.

2014-01-15  Tom Tromey  <tromey@redhat.com>

	* dbxread.c (process_one_symbol): Use set_objfile_main_name.
	* dwarf2read.c (read_partial_die): Use set_objfile_main_name.
	* objfiles.c (get_objfile_bfd_data): Initialize language_of_main.
	(set_objfile_main_name): New function.
	* objfiles.h (struct objfile_per_bfd_storage) <name_of_main,
	language_of_main>: New fields.
	(set_objfile_main_name): Declare.
	* symtab.c (find_main_name): Loop over objfiles to find the main
	name and language.
	(set_main_name): Now static.
	(get_main_info): Add comment.
	* symtab.h (set_main_name): Don't declare.
This commit is contained in:
Tom Tromey
2013-12-30 20:34:16 -07:00
parent 32ac0d11e6
commit 3d548a532d
7 changed files with 68 additions and 4 deletions

View File

@@ -152,6 +152,7 @@ get_objfile_bfd_data (struct objfile *objfile, struct bfd *abfd)
obstack_init (&storage->storage_obstack);
storage->filename_cache = bcache_xmalloc (NULL, NULL);
storage->macro_cache = bcache_xmalloc (NULL, NULL);
storage->language_of_main = language_unknown;
}
return storage;
@@ -186,6 +187,20 @@ set_objfile_per_bfd (struct objfile *objfile)
objfile->per_bfd = get_objfile_bfd_data (objfile, objfile->obfd);
}
/* Set the objfile's per-BFD notion of the "main" name and
language. */
void
set_objfile_main_name (struct objfile *objfile,
const char *name, enum language lang)
{
if (objfile->per_bfd->name_of_main == NULL
|| strcmp (objfile->per_bfd->name_of_main, name) != 0)
objfile->per_bfd->name_of_main
= obstack_copy0 (&objfile->per_bfd->storage_obstack, name, strlen (name));
objfile->per_bfd->language_of_main = lang;
}
/* Called via bfd_map_over_sections to build up the section table that