mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-11 19:03:32 +08:00
Make objfile::static_links an htab_up
This changes objfile::static_links to be an htab_up, so that ~objfile no longer has to explicitly destroy it. Tested by the buildbot. gdb/ChangeLog 2019-04-19 Tom Tromey <tom@tromey.com> * symfile.c (reread_symbols): Update. * objfiles.c (objfile_register_static_link) (objfile_lookup_static_link): Update (~objfile) Don't delete static_links. * objfiles.h (struct objfile) <static_links>: Now an htab_up.
This commit is contained in:
@ -1,3 +1,11 @@
|
|||||||
|
2019-04-19 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
|
* symfile.c (reread_symbols): Update.
|
||||||
|
* objfiles.c (objfile_register_static_link)
|
||||||
|
(objfile_lookup_static_link): Update
|
||||||
|
(~objfile) Don't delete static_links.
|
||||||
|
* objfiles.h (struct objfile) <static_links>: Now an htab_up.
|
||||||
|
|
||||||
2019-04-19 Tom Tromey <tom@tromey.com>
|
2019-04-19 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
* type-stack.h (struct type_stack) <insert>: Constify string.
|
* type-stack.h (struct type_stack) <insert>: Constify string.
|
||||||
|
@ -231,14 +231,14 @@ objfile_register_static_link (struct objfile *objfile,
|
|||||||
struct static_link_htab_entry *entry;
|
struct static_link_htab_entry *entry;
|
||||||
|
|
||||||
if (objfile->static_links == NULL)
|
if (objfile->static_links == NULL)
|
||||||
objfile->static_links = htab_create_alloc
|
objfile->static_links.reset (htab_create_alloc
|
||||||
(1, &static_link_htab_entry_hash, static_link_htab_entry_eq, NULL,
|
(1, &static_link_htab_entry_hash, static_link_htab_entry_eq, NULL,
|
||||||
xcalloc, xfree);
|
xcalloc, xfree));
|
||||||
|
|
||||||
/* Create a slot for the mapping, make sure it's the first mapping for this
|
/* Create a slot for the mapping, make sure it's the first mapping for this
|
||||||
block and then create the mapping itself. */
|
block and then create the mapping itself. */
|
||||||
lookup_entry.block = block;
|
lookup_entry.block = block;
|
||||||
slot = htab_find_slot (objfile->static_links, &lookup_entry, INSERT);
|
slot = htab_find_slot (objfile->static_links.get (), &lookup_entry, INSERT);
|
||||||
gdb_assert (*slot == NULL);
|
gdb_assert (*slot == NULL);
|
||||||
|
|
||||||
entry = XOBNEW (&objfile->objfile_obstack, static_link_htab_entry);
|
entry = XOBNEW (&objfile->objfile_obstack, static_link_htab_entry);
|
||||||
@ -260,9 +260,8 @@ objfile_lookup_static_link (struct objfile *objfile,
|
|||||||
if (objfile->static_links == NULL)
|
if (objfile->static_links == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
lookup_entry.block = block;
|
lookup_entry.block = block;
|
||||||
entry
|
entry = ((struct static_link_htab_entry *)
|
||||||
= (struct static_link_htab_entry *) htab_find (objfile->static_links,
|
htab_find (objfile->static_links.get (), &lookup_entry));
|
||||||
&lookup_entry);
|
|
||||||
if (entry == NULL)
|
if (entry == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@ -691,11 +690,6 @@ objfile::~objfile ()
|
|||||||
|
|
||||||
/* Rebuild section map next time we need it. */
|
/* Rebuild section map next time we need it. */
|
||||||
get_objfile_pspace_data (pspace)->section_map_dirty = 1;
|
get_objfile_pspace_data (pspace)->section_map_dirty = 1;
|
||||||
|
|
||||||
/* Free the map for static links. There's no need to free static link
|
|
||||||
themselves since they were allocated on the objstack. */
|
|
||||||
if (static_links != NULL)
|
|
||||||
htab_delete (static_links);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Free all the object files at once and clean up their users. */
|
/* Free all the object files at once and clean up their users. */
|
||||||
|
@ -615,7 +615,7 @@ struct objfile
|
|||||||
Very few blocks have a static link, so it's more memory efficient to
|
Very few blocks have a static link, so it's more memory efficient to
|
||||||
store these here rather than in struct block. Static links must be
|
store these here rather than in struct block. Static links must be
|
||||||
allocated on the objfile's obstack. */
|
allocated on the objfile's obstack. */
|
||||||
htab_t static_links {};
|
htab_up static_links;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Declarations for functions defined in objfiles.c */
|
/* Declarations for functions defined in objfiles.c */
|
||||||
|
@ -2549,7 +2549,7 @@ reread_symbols (void)
|
|||||||
objfile->sections = NULL;
|
objfile->sections = NULL;
|
||||||
objfile->compunit_symtabs = NULL;
|
objfile->compunit_symtabs = NULL;
|
||||||
objfile->template_symbols = NULL;
|
objfile->template_symbols = NULL;
|
||||||
objfile->static_links = NULL;
|
objfile->static_links.reset (nullptr);
|
||||||
|
|
||||||
/* obstack_init also initializes the obstack so it is
|
/* obstack_init also initializes the obstack so it is
|
||||||
empty. We could use obstack_specify_allocation but
|
empty. We could use obstack_specify_allocation but
|
||||||
|
Reference in New Issue
Block a user