Leak in i386_elf_section_change_hook

Jan Beulich jbeulich@suse.com
Thu Feb 22 09:20:50 GMT 2024


On 21.02.2024 22:41, Alan Modra wrote:
> notes_alloc is perfect for assorted memory you can't free easily
> and/or would rather leave freeing until just before exit.
> 
> 	* config/tc-i386.c (i386_elf_section_change_hook): Use notes_alloc.
> 
> diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
> index ed7c4a5ea03..c56ca4a2b4b 100644
> --- a/gas/config/tc-i386.c
> +++ b/gas/config/tc-i386.c
> @@ -17627,7 +17627,7 @@ i386_elf_section_change_hook (void)
>        break;
>    if (!curr)
>      {
> -      curr = XNEW (struct i386_segment_info);
> +      curr = notes_alloc (sizeof (*curr));
>        curr->subseg = info->subseg;
>        curr->next = NULL;
>        prev->next = curr;
> 

Just for my understanding: Is it an unwritten(?) requirement then that
all XNEW()-ed (and alike) memory be freed before exiting? If so, why
would that be? I can certainly see that library code may not leak
memory, but something like gas, which is an isolated process, gives
up all resources anyway once finished with the (singular) task.

Jan


More information about the Binutils mailing list