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.
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