Re: [PATCH] bfd: stop over-allocating aux entries for COFF section symbols
Oleg Tolmatcev <[email protected]>
| Newsgroups | gmane.comp.gnu.binutils |
|---|---|
| Message-ID | <CACcXsZhnYSs4cy+oYORbAV=iV4xvmzFGSwDVPFCxjxq2XyymtQ@mail.gmail.com> |
пт, 21 авг. 2026 г. в 14:00, Jan Beulich <[email protected]>: > > On 20.08.2026 21:29, Oleg Tolmatcev wrote: > > coff_new_section_hook allocated ten combined_entry_type slots for every > > section symbol, behind a comment conceding that the ten was a guess and > > should not be a constant. Nothing in BFD sets n_numaux above 1 on a > > section symbol, and nothing indexes the array past native[1], so eight > > of the ten were never touched on any target. > > > > This runs once per input section, so it significantly reduces peak > > memory usage. > > > > bfd/ > > * coffcode.h (coff_new_section_hook): Allocate one syment plus > > one aux entry rather than ten. > > > > Signed-off-by: Oleg Tolmatcev <[email protected]> > > Fundamentally okay, one comment though: > > > --- a/bfd/coffcode.h > > +++ b/bfd/coffcode.h > > @@ -1831,9 +1831,9 @@ coff_new_section_hook (bfd * abfd, asection * section) > > /* Allocate aux records for section symbols, to store size and > > related info. > > > > - @@ The 10 is a guess at a plausible maximum number of aux entries > > - (but shouldn't be a constant). */ > > - amt = sizeof (combined_entry_type) * 10; > > + One syment plus one aux: nothing sets n_numaux above 1 on a > > + section symbol, or indexes this array past native[1]. */ > > + amt = sizeof (combined_entry_type) * 2; > > native = (combined_entry_type *) bfd_zalloc (abfd, amt); > > if (native == NULL) > > return false; > > sizeof(<type>) is generally at risk of going out of sync with the type > of the variable that is really meant to be used. Since you're already > touching that line, may I suggest to switch to > > amt = sizeof (*native) * 2; > > ? Again - if that's okay with you, I can replace the piece of code while > committing. > > Jan I am of course okay with it. Thank you. Oleg