[PATCH] amend "ELF: give .note.GNU-stack proper section type"
Jan Beulich
jbeulich@suse.com
Thu Jan 15 12:27:25 GMT 2026
From: H.J. Lu <hjl.tools@gmail.com>
PR ld/33780
Correct the section's special_sections[] entry as well, and further
constrain ld's setting of the section type.
---
Requires either the patch at the bottom of
https://sourceware.org/pipermail/binutils/2026-January/147115.html
or (afaict, didn't check myself)
https://sourceware.org/pipermail/binutils/2026-January/147275.html
as a prereq.
I can't help the impression that the table entry in bfd/elf.c can in fact
simply be deleted, as the subsequent one would now take care of all of the
.note.* sections.
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -3139,7 +3139,7 @@ static const struct bfd_elf_special_sect
static const struct bfd_elf_special_section special_sections_n[] =
{
{ STRING_COMMA_LEN (".noinit"), -2, SHT_NOBITS, SHF_ALLOC + SHF_WRITE },
- { STRING_COMMA_LEN (".note.GNU-stack"), 0, SHT_PROGBITS, 0 },
+ { STRING_COMMA_LEN (".note.GNU-stack"), 0, SHT_NOTE, 0 },
{ STRING_COMMA_LEN (".note"), -1, SHT_NOTE, 0 },
{ NULL, 0, 0, 0, 0 }
};
--- a/ld/ldelf.c
+++ b/ld/ldelf.c
@@ -1329,7 +1329,7 @@ ldelf_after_open (int use_libpath, int n
flagword flags = SEC_READONLY | (link_info.execstack ? SEC_CODE : 0);
s = bfd_make_section_with_flags (link_info.input_bfds,
".note.GNU-stack", flags);
- if (s)
+ if (s && bfd_get_flavour (s->owner) == bfd_target_elf_flavour)
elf_section_type (s) = SHT_NOTE;
}
return;
More information about the Binutils
mailing list