[lld] r332038 - Mitigate relocation overflow [part 1 of 2].
Han Shen via llvm-commits
llvm-commits at lists.llvm.org
Mon May 14 09:20:02 PDT 2018
Hi Peter, thanks.
On Mon, May 14, 2018 at 7:04 AM Peter Smith <peter.smith at linaro.org> wrote:
> Hello Han,
> I've no objections to changing the order of sections within the RO
> output section myself. I've put a few small comments inline:
> On 10 May 2018 at 21:44, Han Shen via llvm-commits
> <llvm-commits at lists.llvm.org> wrote:
> > Author: shenhan
> > Date: Thu May 10 13:44:42 2018
> > New Revision: 332038
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=332038&view=rev
> > Log:
> > Mitigate relocation overflow [part 1 of 2].
> >
> > This CL is to mitigate R_X86_64_PC32 relocation overflow problems for
huge binaries that has near 4G allocated sections.
> >
> I'm guessing these are binaries where -mcmodel=small from
> R_X86_64_PC32? My understanding from intel's documentation is that
> mcmodel=small on x86 requires the code and data to be within 2G? Did
> you mean 2G allocated sections?
Ha yes, acknowledged, it should be "2G".
> > + // Place .dynsym and .dynstr at the beginning of SHF_ALLOC
> > + // sections. We want to do this to mitigate the possibility that
> > + // huge .dynsym and .dynstr sections placed between text sections
> > + // cause relocation overflow. Note: .dynstr has SHT_STRTAB type and
> > + // SHF_ALLOC attribute, whereas sections that only have SHT_STRTAB
> > + // but without SHF_ALLOC is placed at the end. All "Sec" reaching
> > + // here has SHF_ALLOC bit set.
> > + if (Sec->Type == SHT_DYNSYM || Sec->Type == SHT_STRTAB)
> > + return Rank | RF_ALLOC_FIRST;
> > +
> May I suggest "We want to do this to mitigate the possibility that
> huge .dynsym and .dynstr sections placed between ro-data and text
> sections cause relocation overflow." as the .dynsym and .dynstr won't
> be placed in between text sections.
Yes, acknowledged.
> Peter
I'll modify the CL (together with other comments from George) shortly,
thanks again for reviewing.
Han
More information about the llvm-commits
mailing list