]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
PR 33676 ld segfaults when using binary input inside NOLOAD
authorMagnus Wållberg <magnus@tagpad.net>
Mon, 8 Dec 2025 09:33:40 +0000 (20:03 +1030)
committerAlan Modra <amodra@gmail.com>
Mon, 8 Dec 2025 09:38:58 +0000 (20:08 +1030)
The code at ldlang.c:2840-2841 checks if the output BFD is ELF format,
then unconditionally uses elf_section_type() on the input section
without verifying the input section is also ELF format.

This was introduced in commit d87be451e (PR ld/32787) which added
special handling for NOLOAD note sections.

PR 33676
PR 32787
* ldlang.c (lang_add_section): Check section owner's BFD
flavour before using elf_section_type.

ld/ldlang.c

index 53bbff1f2a67bec03b14f1b9521708428a6ed301..9963d5eb98fbc0d8ba2540073414941c570e294f 100644 (file)
@@ -2835,6 +2835,7 @@ lang_add_section (lang_statement_list_type *ptr,
         section.  Unlike a .bss style section, if a note section is
         marked as NOLOAD, also clear SEC_ALLOC.  */
       if (bfd_get_flavour (link_info.output_bfd) == bfd_target_elf_flavour
+         && bfd_get_flavour (section->owner) == bfd_target_elf_flavour
          && elf_section_type (section) != SHT_NOTE)
        flags &= ~SEC_HAS_CONTENTS;
       else