diff options
author | Armando Montanez <amontanez@google.com> | 2019-01-24 22:39:21 +0000 |
---|---|---|
committer | Armando Montanez <amontanez@google.com> | 2019-01-24 22:39:21 +0000 |
commit | 8367b0750fe1129f1a95ba182c19e36ae4f4d4c5 (patch) | |
tree | 346bafc87569c782d5e9c9516f1351aaf3034b95 /llvm/lib/CodeGen/MachineDominanceFrontier.cpp | |
parent | 7211c571756a55175ef50962888e3e9501402f4d (diff) | |
download | bcm5719-llvm-8367b0750fe1129f1a95ba182c19e36ae4f4d4c5.tar.gz bcm5719-llvm-8367b0750fe1129f1a95ba182c19e36ae4f4d4c5.zip |
[elfabi] Add support for reading dynamic symbols from binaries
This patch adds initial support for reading dynamic symbols from ELF binaries. Currently, STT_NOTYPE, STT_OBJECT, STT_FUNC, and STT_TLS are explicitly supported. Other symbol types are mapped to ELFSymbolType::Unknown to improve signal/noise ratio.
Symbols must meet two criteria to be read into in an ELFStub:
- The symbol's binding must be STB_GLOBAL or STB_WEAK.
- The symbol's visibility must be STV_DEFAULT or STV_PROTECTED.
This filters out symbols that aren't of interest during compile-time linking against a shared object.
This change uses DT_HASH and DT_GNU_HASH to determine the size of .dynsym. Using hash tables to determine the number of symbols in .dynsym allows llvm-elfabi to work on binaries without relying on section headers.
Differential Revision: https://reviews.llvm.org/D56031
llvm-svn: 352121
Diffstat (limited to 'llvm/lib/CodeGen/MachineDominanceFrontier.cpp')
0 files changed, 0 insertions, 0 deletions