[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