This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Put .gnu.linkonce.d.rel.ro.* sections into .data.rel.ro output section


On Thu, Dec 15, 2005 at 01:03:29AM +1030, Alan Modra wrote:
> On Wed, Dec 14, 2005 at 03:09:50PM +0100, Jakub Jelinek wrote:
> > --- ld/scripttempl/elf.sc.jj	2005-12-14 13:50:35.000000000 +0100
> > +++ ld/scripttempl/elf.sc	2005-12-14 13:56:15.000000000 +0100
> > @@ -117,7 +117,7 @@ if test -z "$GOT"; then
> >  fi
> >  DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
> >  RODATA=".rodata       ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
> > -DATARELRO=".data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) }"
> > +DATARELRO=".data.rel.ro : { *(.data.rel.ro.local) *(.gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro*) *(.gnu.linkonce.d.rel.ro.*) }"
> 
> Is there any good reason why all the .data.rel.ro.local input sections
> must be first?  I suspect it might be better to keep the ordering as
> given in input files, for data locality.  ie. use
> 
> DATARELRO=".data.rel.ro : { *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }"

Yes.  .data.rel.ro.local* sections contain only relative relocations, while
other .data.rel.ro* sections contain also other relocations.
When prelinking relative relocations don't need any runtime adjustements,
while the others do.  So if you have say 16KB of .data.rel.ro.local*
sections and 32KB of .data.rel.ro*, the first 16KB don't need to be COWed,
only the rest.

Guess *(.data.rel.ro.local) should be *(.data.rel.ro.local*) though.

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]