[PATCH v1 5/7] aarch64: clean up subsection used to initialize the frozen attributes set
Richard Earnshaw (foss)
Richard.Earnshaw@arm.com
Fri Feb 6 11:50:41 GMT 2026
On 03/02/2026 10:00, Matthieu Longo wrote:
> On AArch64, some attributes are set globally when software protections
> options such as BTI, PAC or GCS are enabled. These attributes are then
> used as the frozen set during the attributes merge.
>
> In the current implementation of bfd_elfNN_aarch64_set_options, the
> subsection is created before linker options are examined. If relevant
> options are provided, the subsection is appended to the frozen set;
> otherwise, it is left unused and leaked. This issue was detected by
> LeakSanitizer (see the stack trace below).
>
> This patch fixes the memory leak by handling the case where no attributes
> are recorded. An 'else' is added to free the empty subsection when it is
> not added to the frozen set.
>
> ==ERROR: LeakSanitizer: detected memory leaks
> Indirect leak of 23 byte(s) in 1 object(s) allocated from:
> #2 0x56bec58a661c in xstrdup ../../libiberty/xstrdup.c:34
> #3 0x56bec559cc8d in bfd_elf64_aarch64_set_options ../../bfd/elfnn-aarch64.c:5046
> #4 0x56bec54d839a in aarch64_elf_create_output_section_statements <build-dir>/ld/eaarch64linux.c:358
> #5 0x56bec54c2b04 in ldemul_create_output_section_statements ../../ld/ldemul.c:130
> #6 0x56bec549fa50 in lang_process ../../ld/ldlang.c:8367
> #7 0x56bec54b2b2c in main ../../ld/ldmain.c:958
> ---
> bfd/elfnn-aarch64.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
> index 08077fb74f8..d50f3bcbf48 100644
> --- a/bfd/elfnn-aarch64.c
> +++ b/bfd/elfnn-aarch64.c
> @@ -5125,6 +5125,8 @@ bfd_elfNN_aarch64_set_options (struct bfd *output_bfd,
> if (attrs_subsection->size > 0)
> LINKED_LIST_APPEND (obj_attr_subsection_v2_t)
> (&elf_obj_attr_subsections (output_bfd), attrs_subsection);
> + else
> + _bfd_elf_obj_attr_subsection_v2_free (attrs_subsection);
>
> elf_aarch64_tdata (output_bfd)->gnu_property_aarch64_feature_1_and
> = gnu_property_aarch64_feature_1_and;
OK
R.
More information about the Binutils
mailing list