[PATCH] bfd: release the PE COMDAT hash once all sections are made

Jan Beulich jbeulich@suse.com
Fri Aug 21 11:51:58 GMT 2026


On 20.08.2026 21:23, Oleg Tolmatcev wrote:
> styp_to_sec_flags builds pe_data (abfd)->comdat_hash, one entry plus a
> strdup'd symbol name per input section.  Nothing frees it during a link,
> so it survives to exit.
> 
> Free it once the section table has been built.  This is safe because
> styp_to_sec_flags recreates the hash whenever it finds it NULL.
> 
> This significantly reduces peak memory usage.

This is the positive side. How much extra overhead does recreating the
hash impose? How often might it need recreating in the worst case? Looks
like the answer is zero / never (make_a_section_from_file() is called
solely from coff_real_object_p(), and is the sole caller of
bfd_coff_styp_to_sec_flags_hook()), but your description suggests
otherwise. May I suggest to replace the paragraph with

"Free it once the section table has been built.  This is safe because
 styp_to_sec_flags() would recreate the hash whenever it finds it NULL.
 That's not presently necessary, though."

? If that's okay with you, I can replace the piece of text while
committing.

Jan


More information about the Binutils mailing list