[binutils-gdb] bfd: release the PE COMDAT hash once all sections are made
Jan Beulich
jbeulich@sourceware.org
Wed Aug 26 07:01:48 GMT 2026
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=81d6f0640e78b4987b09690451d4edd80b55217f
commit 81d6f0640e78b4987b09690451d4edd80b55217f
Author: Oleg Tolmatcev <oleg.tolmatcev@gmail.com>
Date: Wed Aug 26 08:58:11 2026 +0200
bfd: release the PE COMDAT hash once all sections are made
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() would recreate the hash whenever it finds it NULL.
Presently that wouldn't ever come into play, though.
This significantly reduces peak memory usage.
bfd/
* coffgen.c (coff_real_object_p): Free the COMDAT hash after
the section table has been built.
Signed-off-by: Oleg Tolmatcev <oleg.tolmatcev@gmail.com>
Diff:
---
bfd/coffgen.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/bfd/coffgen.c b/bfd/coffgen.c
index f3060642a5d..92b867bd187 100644
--- a/bfd/coffgen.c
+++ b/bfd/coffgen.c
@@ -368,6 +368,13 @@ coff_real_object_p (bfd *abfd,
}
_bfd_coff_free_symbols (abfd);
+
+ if (obj_pe (abfd) && pe_data (abfd)->comdat_hash != NULL)
+ {
+ htab_delete (pe_data (abfd)->comdat_hash);
+ pe_data (abfd)->comdat_hash = NULL;
+ }
+
return coff_object_cleanup;
fail:
More information about the Binutils-cvs
mailing list