[lld] r250190 - [ELF2] Ensure strict weak ordering in section sorting (v2)
Hal Finkel via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 13 12:29:25 PDT 2015
----- Original Message -----
> From: "Rafael EspĂndola" <rafael.espindola at gmail.com>
> To: "Hal Finkel" <hfinkel at anl.gov>
> Cc: "llvm-commits" <llvm-commits at lists.llvm.org>
> Sent: Tuesday, October 13, 2015 1:42:08 PM
> Subject: Re: [lld] r250190 - [ELF2] Ensure strict weak ordering in section sorting (v2)
>
> At this point it is probably test to write this like the previous
> tests in this function:
>
> bool AIsNobits = ..
> bool BIsNobits = ...
> if (AIsNobits != BIsNobits)
> ...
>
Agreed. r250212.
Thanks again,
Hal
>
> On 13 October 2015 at 13:57, Hal Finkel via llvm-commits
> <llvm-commits at lists.llvm.org> wrote:
> > Author: hfinkel
> > Date: Tue Oct 13 12:57:46 2015
> > New Revision: 250190
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=250190&view=rev
> > Log:
> > [ELF2] Ensure strict weak ordering in section sorting (v2)
> >
> > The fix in r250109 to ensure a strict weak ordering in the section
> > sorting was
> > a bit overzealous. We only use the NOBITS comparison if either A or
> > B is a
> > NOBITS section. Otherwise, we fall through to the target-specific
> > ranking
> > function. Failure to do this causes the sorting to fail in cases
> > where, for
> > example, a .dynamic section happens to end up in between .got and
> > .toc, etc. in
> > the initial ordering (.dynamic has a type SHT_DYNAMIC, compared to
> > SHT_PROGBITS
> > or SHT_NOBITS).
> >
> > Modified:
> > lld/trunk/ELF/Writer.cpp
> >
> > Modified: lld/trunk/ELF/Writer.cpp
> > URL:
> > http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=250190&r1=250189&r2=250190&view=diff
> > ==============================================================================
> > --- lld/trunk/ELF/Writer.cpp (original)
> > +++ lld/trunk/ELF/Writer.cpp Tue Oct 13 12:57:46 2015
> > @@ -312,13 +312,14 @@ static bool compareOutputSections(Output
> > if (AIsExec != BIsExec)
> > return BIsExec;
> >
> > - // If we got here we know that both A and B and in the same
> > PT_LOAD.
> > + // If we got here we know that both A and B are in the same
> > PT_LOAD.
> > // The last requirement we have is to put nobits section last.
> > The
> > // reason is that the only thing the dynamic linker will see
> > about
> > // them is a p_memsz that is larger than p_filesz. Seeing that
> > it
> > // zeros the end of the PT_LOAD, so that has to correspond to
> > the
> > // nobits sections.
> > - if (A->getType() != B->getType())
> > + if ((A->getType() == SHT_NOBITS || B->getType() == SHT_NOBITS)
> > &&
> > + A->getType() != B->getType())
> > return A->getType() != SHT_NOBITS && B->getType() ==
> > SHT_NOBITS;
> >
> > return getPPC64SectionRank(A->getName()) <
> > getPPC64SectionRank(B->getName());
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
--
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
More information about the llvm-commits
mailing list