[lld] r311497 - Revert r311468: If --dynamic-list is given, only those symbols are preemptible

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 7 14:57:13 PDT 2017


It seems the URLs have expired, so please just re-commit.

On Thu, Sep 7, 2017 at 2:50 PM, Rafael Avila de Espindola <
rafael.espindola at gmail.com> wrote:

> Do you still have the URL?
>
> If not would you be OK with me committing this again and watching the
> bots?
>
> Thanks,
> Rafael
>
> Rui Ueyama via llvm-commits <llvm-commits at lists.llvm.org> writes:
>
> > Author: ruiu
> > Date: Tue Aug 22 14:54:58 2017
> > New Revision: 311497
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=311497&view=rev
> > Log:
> > Revert r311468: If --dynamic-list is given, only those symbols are
> preemptible
> >
> > This reverts commit r311468 because it broke some CFI bots.
> >
> > Removed:
> >     lld/trunk/test/ELF/dynamic-list-preempt.s
> > Modified:
> >     lld/trunk/ELF/Config.h
> >     lld/trunk/ELF/ScriptParser.cpp
> >     lld/trunk/ELF/SymbolTable.cpp
> >     lld/trunk/ELF/SymbolTable.h
> >     lld/trunk/ELF/Writer.cpp
> >
> > Modified: lld/trunk/ELF/Config.h
> > URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Config.
> h?rev=311497&r1=311496&r2=311497&view=diff
> > ============================================================
> ==================
> > --- lld/trunk/ELF/Config.h (original)
> > +++ lld/trunk/ELF/Config.h Tue Aug 22 14:54:58 2017
> > @@ -104,7 +104,6 @@ struct Configuration {
> >    std::vector<llvm::StringRef> SearchPaths;
> >    std::vector<llvm::StringRef> SymbolOrderingFile;
> >    std::vector<llvm::StringRef> Undefined;
> > -  std::vector<SymbolVersion> DynamicList;
> >    std::vector<SymbolVersion> VersionScriptGlobals;
> >    std::vector<SymbolVersion> VersionScriptLocals;
> >    std::vector<uint8_t> BuildIdVector;
> >
> > Modified: lld/trunk/ELF/ScriptParser.cpp
> > URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/
> ScriptParser.cpp?rev=311497&r1=311496&r2=311497&view=diff
> > ============================================================
> ==================
> > --- lld/trunk/ELF/ScriptParser.cpp (original)
> > +++ lld/trunk/ELF/ScriptParser.cpp Tue Aug 22 14:54:58 2017
> > @@ -175,22 +175,9 @@ static ExprValue bitOr(ExprValue A, Expr
> >
> >  void ScriptParser::readDynamicList() {
> >    expect("{");
> > -  std::vector<SymbolVersion> Locals;
> > -  std::vector<SymbolVersion> Globals;
> > -  std::tie(Locals, Globals) = readSymbols();
> > -  expect(";");
> > -
> > -  if (!atEOF()) {
> > +  readAnonymousDeclaration();
> > +  if (!atEOF())
> >      setError("EOF expected, but got " + next());
> > -    return;
> > -  }
> > -  if (!Locals.empty()) {
> > -    setError("\"local:\" scope not supported in --dynamic-list");
> > -    return;
> > -  }
> > -
> > -  for (SymbolVersion V : Globals)
> > -    Config->DynamicList.push_back(V);
> >  }
> >
> >  void ScriptParser::readVersionScript() {
> >
> > Modified: lld/trunk/ELF/SymbolTable.cpp
> > URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/
> SymbolTable.cpp?rev=311497&r1=311496&r2=311497&view=diff
> > ============================================================
> ==================
> > --- lld/trunk/ELF/SymbolTable.cpp (original)
> > +++ lld/trunk/ELF/SymbolTable.cpp Tue Aug 22 14:54:58 2017
> > @@ -680,24 +680,6 @@ void SymbolTable::handleAnonymousVersion
> >      assignWildcardVersion(Ver, VER_NDX_LOCAL);
> >  }
> >
> > -// Handles -dynamic-list.
> > -void SymbolTable::handleDynamicList() {
> > -  for (SymbolVersion &Ver : Config->DynamicList) {
> > -    std::vector<SymbolBody *> Syms;
> > -    if (Ver.HasWildcard)
> > -      Syms = findByVersion(Ver);
> > -    else
> > -      Syms = findAllByVersion(Ver);
> > -
> > -    for (SymbolBody *B : Syms) {
> > -      if (!Config->Shared)
> > -        B->symbol()->VersionId = VER_NDX_GLOBAL;
> > -      else if (B->symbol()->includeInDynsym())
> > -        B->IsPreemptible = true;
> > -    }
> > -  }
> > -}
> > -
> >  // Set symbol versions to symbols. This function handles patterns
> >  // containing no wildcard characters.
> >  void SymbolTable::assignExactVersion(SymbolVersion Ver, uint16_t
> VersionId,
> > @@ -747,7 +729,6 @@ void SymbolTable::assignWildcardVersion(
> >  void SymbolTable::scanVersionScript() {
> >    // Handle edge cases first.
> >    handleAnonymousVersion();
> > -  handleDynamicList();
> >
> >    // Now we have version definitions, so we need to set version ids to
> symbols.
> >    // Each version definition has a glob pattern, and all symbols that
> match
> >
> > Modified: lld/trunk/ELF/SymbolTable.h
> > URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/
> SymbolTable.h?rev=311497&r1=311496&r2=311497&view=diff
> > ============================================================
> ==================
> > --- lld/trunk/ELF/SymbolTable.h (original)
> > +++ lld/trunk/ELF/SymbolTable.h Tue Aug 22 14:54:58 2017
> > @@ -90,8 +90,6 @@ public:
> >
> >    void trace(StringRef Name);
> >
> > -  void handleDynamicList();
> > -
> >  private:
> >    std::vector<SymbolBody *> findByVersion(SymbolVersion Ver);
> >    std::vector<SymbolBody *> findAllByVersion(SymbolVersion Ver);
> >
> > Modified: lld/trunk/ELF/Writer.cpp
> > URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.
> cpp?rev=311497&r1=311496&r2=311497&view=diff
> > ============================================================
> ==================
> > --- lld/trunk/ELF/Writer.cpp (original)
> > +++ lld/trunk/ELF/Writer.cpp Tue Aug 22 14:54:58 2017
> > @@ -1219,9 +1219,8 @@ template <class ELFT> void Writer<ELFT>:
> >    applySynthetic({In<ELFT>::EhFrame},
> >                   [](SyntheticSection *SS) { SS->finalizeContents(); });
> >
> > -  if (Config->DynamicList.empty())
> > -    for (Symbol *S : Symtab->getSymbols())
> > -      S->body()->IsPreemptible = computeIsPreemptible(*S->body());
> > +  for (Symbol *S : Symtab->getSymbols())
> > +    S->body()->IsPreemptible = computeIsPreemptible(*S->body());
> >
> >    // Scan relocations. This must be done after every symbol is declared
> so that
> >    // we can correctly decide if a dynamic relocation is needed.
> >
> > Removed: lld/trunk/test/ELF/dynamic-list-preempt.s
> > URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/
> dynamic-list-preempt.s?rev=311496&view=auto
> > ============================================================
> ==================
> > --- lld/trunk/test/ELF/dynamic-list-preempt.s (original)
> > +++ lld/trunk/test/ELF/dynamic-list-preempt.s (removed)
> > @@ -1,65 +0,0 @@
> > -# REQUIRES: x86
> > -
> > -# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
> > -# RUN: echo "{ foo; zed; };" > %t.list
> > -# RUN: echo "{ global: foo; bar; local: *; };" > %t.vers
> > -# RUN: ld.lld -fatal-warnings -dynamic-list %t.list -version-script
> %t.vers -shared %t.o -o %t.so
> > -# RUN: llvm-readobj -r %t.so | FileCheck --check-prefix=RELOCS %s
> > -# RUN: llvm-readobj -dyn-symbols  %t.so | FileCheck
> --check-prefix=DYNSYMS %s
> > -
> > -# RELOCS:      Relocations [
> > -# RELOCS-NEXT:   Section ({{.*}}) .rela.plt {
> > -# RELOCS-NEXT:     R_X86_64_JUMP_SLOT foo 0x0
> > -# RELOCS-NEXT:   }
> > -# RELOCS-NEXT: ]
> > -
> > -# DYNSYMS:      DynamicSymbols [
> > -# DYNSYMS-NEXT:   Symbol {
> > -# DYNSYMS-NEXT:     Name: @ (0)
> > -# DYNSYMS-NEXT:     Value: 0x0
> > -# DYNSYMS-NEXT:     Size: 0
> > -# DYNSYMS-NEXT:     Binding: Local
> > -# DYNSYMS-NEXT:     Type: None
> > -# DYNSYMS-NEXT:     Other: 0
> > -# DYNSYMS-NEXT:     Section: Undefined
> > -# DYNSYMS-NEXT:   }
> > -# DYNSYMS-NEXT:   Symbol {
> > -# DYNSYMS-NEXT:     Name: bar@
> > -# DYNSYMS-NEXT:     Value:
> > -# DYNSYMS-NEXT:     Size:
> > -# DYNSYMS-NEXT:     Binding: Global
> > -# DYNSYMS-NEXT:     Type:
> > -# DYNSYMS-NEXT:     Other:
> > -# DYNSYMS-NEXT:     Section:
> > -# DYNSYMS-NEXT:   }
> > -# DYNSYMS-NEXT:   Symbol {
> > -# DYNSYMS-NEXT:     Name: foo@
> > -# DYNSYMS-NEXT:     Value:
> > -# DYNSYMS-NEXT:     Size:
> > -# DYNSYMS-NEXT:     Binding: Global
> > -# DYNSYMS-NEXT:     Type:
> > -# DYNSYMS-NEXT:     Other:
> > -# DYNSYMS-NEXT:     Section:
> > -# DYNSYMS-NEXT:   }
> > -# DYNSYMS-NEXT: ]
> > -
> > -        .globl foo
> > -foo:
> > -        ret
> > -
> > -        .globl bar
> > -bar:
> > -        ret
> > -
> > -        .globl baz
> > -baz:
> > -        ret
> > -
> > -        .globl zed
> > -zed:
> > -        ret
> > -
> > -        call   foo at PLT
> > -        call   bar at PLT
> > -        call   baz at PLT
> > -        call   zed at PLT
> >
> >
> > _______________________________________________
> > 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/20170907/dc75a1bd/attachment.html>


More information about the llvm-commits mailing list