gas: use notes_calloc in string hash
authorAlan Modra <amodra@gmail.com>
Wed, 6 Jul 2022 23:19:09 +0000 (08:49 +0930)
committerAlan Modra <amodra@gmail.com>
Sat, 9 Jul 2022 12:17:24 +0000 (21:47 +0930)
commit0edfd2985b3ce036bcee5e5d3518eab317018b4d
tree5c5c2515e77b7670a6dc7d65ad063f52a5a1b7a3
parent7bfc4db2893c5de00197e40ab52394979f83a75d
gas: use notes_calloc in string hash

Using notes_calloc means all of the string hash table memory should
now be freed before gas exits, even though htab_delete isn't called.
This also means that the hash table free_f and del_f must be NULL,
because freeing notes obstack memory results in all more recently
allocated notes memory being freed too.  So hash table resizing won't
free any memory, and will be a little faster.  Also, htab_delete won't
do anything (and be quick about it).

Since htab_traverse can also resize hash tables (to make another
traversal faster if the table is largely empty), stop that happening
when only one traversal is done.

* as.h: Reorder hash.h after symbols.h for notes_calloc decl.
* hash.h (str_htab_create): Use notes_calloc.  Do not free.
* symbols.c (resolve_local_symbol_values): Don't resize
during hash table traversal.
* config/obj-elf.c (elf_frob_file_after_relocs): Likewise.
* config/tc-ia64.c (ia64_adjust_symtab, ia64_frob_file): Likewise.
* config/tc-nds32.c (nds32_elf_analysis_relax_hint): Likewise.
gas/as.h
gas/config/obj-elf.c
gas/config/tc-ia64.c
gas/config/tc-nds32.c
gas/hash.h
gas/symbols.c