Re: [PATCH] bfd: stop over-allocating aux entries for COFF section symbols

Jan Beulich <[email protected]>
Newsgroups gmane.comp.gnu.binutils
Message-ID <[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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.