[PATCH] D19430: ELF: Implement basic support for --version-script.

Peter Collingbourne via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 22 12:24:33 PDT 2016


pcc created this revision.
pcc added reviewers: rafael, ruiu, davide, grimar.
pcc added a subscriber: llvm-commits.
Herald added a subscriber: joker.eph.

This patch only implements support for version scripts of the form:
  { [ global: symbol1; symbol2; [...]; symbolN; ] local: *; };
No wildcards are supported, other than for the local entry. Symbol versioning
is also not supported.

It works by introducing a new Symbol flag which tracks whether a symbol
appears in the global section of a version script.

This patch also simplifies the logic in SymbolBody::isPreemptible(), and
teaches it to handle the case where symbols with default visibility in DSOs
do not appear in the dynamic symbol table because of a version script.

Fixes PR27482.

http://reviews.llvm.org/D19430

Files:
  ELF/CMakeLists.txt
  ELF/Config.h
  ELF/Driver.cpp
  ELF/Driver.h
  ELF/DynamicList.cpp
  ELF/DynamicList.h
  ELF/Options.td
  ELF/SymbolListFile.cpp
  ELF/SymbolListFile.h
  ELF/SymbolTable.cpp
  ELF/SymbolTable.h
  ELF/Symbols.cpp
  ELF/Symbols.h
  test/ELF/lto/internalize-version-script.ll
  test/ELF/no-inhibit-exec.s
  test/ELF/version-script.s

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D19430.54701.patch
Type: text/x-patch
Size: 15197 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160422/8307beb3/attachment-0001.bin>


More information about the llvm-commits mailing list