summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2015-07-21 18:15:32 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2015-07-21 18:15:32 +0000
commit5f95fa31b3c7b9efa307546945610071f836a23d (patch)
tree5fb372ea08a8ddbe8bcd5be5a1cfc684196852cd
parentd520a250b6525be399c732871cdacbfcc335bbc5 (diff)
downloadbcm5719-llvm-5f95fa31b3c7b9efa307546945610071f836a23d.tar.gz
bcm5719-llvm-5f95fa31b3c7b9efa307546945610071f836a23d.zip
Drop last use of getDynamicSymbolName.
llvm-svn: 242820
-rw-r--r--lld/lib/ReaderWriter/ELF/DynamicFile.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/lld/lib/ReaderWriter/ELF/DynamicFile.cpp b/lld/lib/ReaderWriter/ELF/DynamicFile.cpp
index d3712de2b3d..a8209dedef2 100644
--- a/lld/lib/ReaderWriter/ELF/DynamicFile.cpp
+++ b/lld/lib/ReaderWriter/ELF/DynamicFile.cpp
@@ -54,23 +54,31 @@ template <class ELFT> bool DynamicFile<ELFT>::canParse(file_magic magic) {
}
template <class ELFT> std::error_code DynamicFile<ELFT>::doParse() {
+ typedef llvm::object::ELFFile<ELFT> ELFO;
+
std::error_code ec;
- _objFile.reset(new llvm::object::ELFFile<ELFT>(_mb->getBuffer(), ec));
+ _objFile.reset(new ELFO(_mb->getBuffer(), ec));
if (ec)
return ec;
- llvm::object::ELFFile<ELFT> &obj = *_objFile;
+ ELFO &obj = *_objFile;
_soname = obj.getLoadName();
if (_soname.empty())
_soname = llvm::sys::path::filename(path());
+ const typename ELFO::Elf_Shdr *dynSymSec = obj.getDotDynSymSec();
+ ErrorOr<StringRef> strTableOrErr = obj.getStringTableForSymtab(*dynSymSec);
+ if (std::error_code ec = strTableOrErr.getError())
+ return ec;
+ StringRef stringTable = *strTableOrErr;
+
// Create a map from names to dynamic symbol table entries.
// TODO: This should use the object file's build in hash table instead if
// it exists.
for (auto i = obj.dynamic_symbol_begin(), e = obj.dynamic_symbol_end();
i != e; ++i) {
- auto name = obj.getDynamicSymbolName(i);
+ auto name = i->getName(stringTable);
if ((ec = name.getError()))
return ec;
OpenPOWER on IntegriCloud