[PATCH] ld: Handle special ELF readonly output sections
H.J. Lu
hjl.tools@gmail.com
Wed Apr 22 08:49:12 GMT 2026
On Wed, Apr 22, 2026 at 4:04 PM Jan Beulich <jbeulich@suse.com> wrote:
>
> On 31.03.2026 20:15, H.J. Lu wrote:
> > @@ -3309,7 +3308,25 @@ _bfd_elf_get_sec_type_attr (bfd *abfd, asection *sec)
> > if (spec == NULL)
> > return NULL;
> >
> > - return _bfd_elf_get_special_section (sec->name, spec, sec->use_rela_p);
> > + return _bfd_elf_get_special_section (name, spec, use_rela_p);
> > +}
> > +
> > +const struct bfd_elf_special_section *
> > +_bfd_elf_get_sec_type_attr (bfd *abfd, asection *sec)
> > +{
> > + return elf_get_special_section (abfd, sec->name, sec->use_rela_p);
> > +}
> > +
> > +bool
> > +_bfd_elf_is_special_readonly_section (bfd *abfd, const char *name)
> > +{
> > + elf_backend_data *bed;
> > + const struct bfd_elf_special_section *spec;
> > + bed = get_elf_backend_data (abfd);
> > + spec = elf_get_special_section (abfd, name, bed->default_use_rela_p);
> > + if (spec == NULL)
> > + return false;
> > + return (spec->attr & SHF_WRITE) == 0;
> > }
>
> This once again being solely name-based, ...
>
> > --- /dev/null
> > +++ b/ld/testsuite/ld-elf/flags2.ld
> > @@ -0,0 +1 @@
> > +SECTIONS { .rodata : ALIGN(4) { __crc_hello = .; LONG(0x05d25769); } }
>
> ... what's wrong with using the READONLY keyword here instead? If people
> create a section solely(?) from a linker script, can't they be expected
> to set the section's properties correctly? While it's against conventions,
> someone wanting a writable .rodata section ought to be able to get one.
> Much like they can from e.g. an assembly source file.
>
> Related, but not for this patch: Seeing get_os_init_flag(), why is
> typed_readonly_section not also resulting in SEC_READONLY there?
>
> > --- /dev/null
> > +++ b/ld/testsuite/ld-elf/flags2.s
> > @@ -0,0 +1,6 @@
> > + .text
> > + .globl start
> > + .type start, %function
> > +start:
> > + .byte 0
> > + .section .note.GNU-stack, "", %progbits
>
> I think new testcases better wouldn't use %progbits for .note.GNU-stack
> anymore.
>
> Jan
READONLY works. I withdrew this patch.
--
H.J.
More information about the Binutils
mailing list