Re: git: b882d21558f3 - main - arm: link all .rodata variants into one output section
Date: Wed, 20 Nov 2024 16:03:24 UTC
John Baldwin <jhb_at_FreeBSD.org> wrote on Date: Wed, 20 Nov 2024 14:52:06 UTC : > On 11/19/24 08:02, Michal Meloun wrote: > > > > > > On 19.11.2024 16:15, John Baldwin wrote: > >> On 11/17/24 03:36, Michal Meloun wrote: > >>> The branch main has been updated by mmel: > >>> > >>> URL: https://cgit.FreeBSD.org/src/commit/? > >>> id=b882d21558f37e6a565694ac9b8f2a519e5b86fa > >>> > >>> commit b882d21558f37e6a565694ac9b8f2a519e5b86fa > >>> Author: Michal Meloun <mmel@FreeBSD.org> > >>> AuthorDate: 2024-11-17 11:28:47 +0000 > >>> Commit: Michal Meloun <mmel@FreeBSD.org> > >>> CommitDate: 2024-11-17 11:35:55 +0000 > >>> > >>> arm: link all .rodata variants into one output section > >>> MFC after: 1 week > >>> --- > >>> sys/conf/ldscript.arm | 2 +- > >>> 1 file changed, 1 insertion(+), 1 deletion(-) > >>> > >>> diff --git a/sys/conf/ldscript.arm b/sys/conf/ldscript.arm > >>> index d9edcfac9f78..7cf904ce39ff 100644 > >>> --- a/sys/conf/ldscript.arm > >>> +++ b/sys/conf/ldscript.arm > >>> @@ -17,7 +17,7 @@ SECTIONS > >>> _etext = .; > >>> PROVIDE (etext = .); > >>> .fini : { *(.fini) } =0x9090 > >>> - .rodata : { *(.rodata) *(.gnu.linkonce.r*) } > >>> + .rodata : { *(.rodata*) *(.gnu.linkonce.r*) } > >>> .rodata1 : { *(.rodata1) } > >> > >> Is this line now spurious or do linker scripts prefer more exact matches? > >> > >>> .interp : { *(.interp) } > >>> .hash : { *(.hash) } > >> > > Right hit. I want write { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r*) } > > > > Warner already tried to tell me the same thing, but I didn't get it :( > > Btw arm64 has the same problem. > > > > This gives me another question. Who generates the .rodata1 section? This > > section appeared in gnu ld three decades ago, with no real description. > > Do we still need it? > > I have no idea if we still need .rodata1 (or why it exists), I was just > reading the diff of the linker script. Looking around at examples on the web I'm seeing mostly the likes of the following for analogous text: .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } (and somewhat similarly for .data.*) I saw some examples of *(.rodata.str1.4) for examples that lacked use of .rodata.* , giving some idea what would be expected to match the .* part of the pattern. === Mark Millard marklmi at yahoo.com