[lld] r292910 - [ELF] Correct sh_info for static symbol table

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 24 11:25:32 PST 2017


That's OK.

On Tue, Jan 24, 2017 at 10:02 AM, Rafael Avila de Espindola <
rafael.espindola at gmail.com> wrote:

>
> Thanks!
>
> I think we should port this to 4.0. Is that OK?
>
> Cheers,
> Rafael
>
> Peter Smith via llvm-commits <llvm-commits at lists.llvm.org> writes:
>
> > Author: psmith
> > Date: Tue Jan 24 04:43:40 2017
> > New Revision: 292910
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=292910&view=rev
> > Log:
> > [ELF] Correct sh_info for static symbol table
> >
> > The sh_info field of the SHT_SYMTAB section holds the index for the
> > first non-local symbol. When there are global symbols that are output
> > with STB_LOCAL binding due to having hidden visibility or matching
> > the local version from a version script, the calculated value of
> > NumLocals + 1 does not account for them. This change accounts for
> > global symbols being output with local binding.
> >
> > Differential Revision: https://reviews.llvm.org/D28950
> >
> > Modified:
> >     lld/trunk/ELF/SyntheticSections.cpp
> >     lld/trunk/test/ELF/basic-mips.s
> >     lld/trunk/test/ELF/basic-ppc.s
> >
> > Modified: lld/trunk/ELF/SyntheticSections.cpp
> > URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/
> SyntheticSections.cpp?rev=292910&r1=292909&r2=292910&view=diff
> > ============================================================
> ==================
> > --- lld/trunk/ELF/SyntheticSections.cpp (original)
> > +++ lld/trunk/ELF/SyntheticSections.cpp Tue Jan 24 04:43:40 2017
> > @@ -1073,11 +1073,13 @@ template <class ELFT> void SymbolTableSe
> >
> >    if (!StrTabSec.isDynamic()) {
> >      auto GlobBegin = Symbols.begin() + NumLocals;
> > -    std::stable_sort(GlobBegin, Symbols.end(), [](const
> SymbolTableEntry &L,
> > -                                                  const
> SymbolTableEntry &R) {
> > -      return L.Symbol->symbol()->computeBinding() == STB_LOCAL &&
> > -             R.Symbol->symbol()->computeBinding() != STB_LOCAL;
> > -    });
> > +    auto It = std::stable_partition(
> > +        GlobBegin, Symbols.end(), [](const SymbolTableEntry &S) {
> > +          return S.Symbol->symbol()->computeBinding() == STB_LOCAL;
> > +        });
> > +    // update sh_info with number of Global symbols output with computed
> > +    // binding of STB_LOCAL
> > +    this->OutSec->Info = this->Info = 1 + It - Symbols.begin();
> >      return;
> >    }
> >
> >
> > Modified: lld/trunk/test/ELF/basic-mips.s
> > URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/
> basic-mips.s?rev=292910&r1=292909&r2=292910&view=diff
> > ============================================================
> ==================
> > --- lld/trunk/test/ELF/basic-mips.s (original)
> > +++ lld/trunk/test/ELF/basic-mips.s Tue Jan 24 04:43:40 2017
> > @@ -176,7 +176,7 @@ __start:
> >  # CHECK-NEXT:     Offset: 0x20010
> >  # CHECK-NEXT:     Size: 48
> >  # CHECK-NEXT:     Link: 10
> > -# CHECK-NEXT:     Info: 1
> > +# CHECK-NEXT:     Info: 2
> >  # CHECK-NEXT:     AddressAlignment: 4
> >  # CHECK-NEXT:     EntrySize: 16
> >  # CHECK-NEXT:   }
> >
> > Modified: lld/trunk/test/ELF/basic-ppc.s
> > URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/
> basic-ppc.s?rev=292910&r1=292909&r2=292910&view=diff
> > ============================================================
> ==================
> > --- lld/trunk/test/ELF/basic-ppc.s (original)
> > +++ lld/trunk/test/ELF/basic-ppc.s Tue Jan 24 04:43:40 2017
> > @@ -178,7 +178,7 @@
> >  // CHECK-NEXT:     Offset: 0x2038
> >  // CHECK-NEXT:     Size: 32
> >  // CHECK-NEXT:     Link: 9
> > -// CHECK-NEXT:     Info: 1
> > +// CHECK-NEXT:     Info: 2
> >  // CHECK-NEXT:     AddressAlignment: 4
> >  // CHECK-NEXT:     EntrySize: 16
> >  // CHECK-NEXT:     SectionData (
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170124/7c9f7735/attachment.html>


More information about the llvm-commits mailing list