[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