Rename SharedFile::parse -> SharedFile::parseRest.

Unlike ObjectFile or ArchiveFile, SharedFile had two parse functions,
parseSoName() and parse(). parse must have been called after parseSoName,
but that requirement was not obvious from their names. (So it looked
like you could call parse() on a shared object file right away.)

This patch rename parseRest. It is now obvious that there's no single
parse function for the shared object file.

llvm-svn: 256898
This commit is contained in:
Rui Ueyama 2016-01-06 01:56:36 +00:00
parent a2ef81fde5
commit 7c713319b9
3 changed files with 6 additions and 3 deletions

View File

@ -354,6 +354,8 @@ SharedFile<ELFT>::getSection(const Elf_Sym &Sym) const {
return *Ret;
}
// Partially parse the shared object file so that we can call
// getSoName on this object.
template <class ELFT> void SharedFile<ELFT>::parseSoName() {
typedef typename ELFFile<ELFT>::Elf_Dyn Elf_Dyn;
typedef typename ELFFile<ELFT>::uintX_t uintX_t;
@ -399,7 +401,8 @@ template <class ELFT> void SharedFile<ELFT>::parseSoName() {
}
}
template <class ELFT> void SharedFile<ELFT>::parse() {
// Fully parse the shared object file. This must be called after parseSoName().
template <class ELFT> void SharedFile<ELFT>::parseRest() {
Elf_Sym_Range Syms = this->getNonLocalSymbols();
uint32_t NumSymbols = std::distance(Syms.begin(), Syms.end());
SymbolBodies.reserve(NumSymbols);

View File

@ -193,7 +193,7 @@ public:
explicit SharedFile(MemoryBufferRef M);
void parseSoName();
void parse();
void parseRest();
// Used for --as-needed
bool AsNeeded = false;

View File

@ -68,7 +68,7 @@ void SymbolTable<ELFT>::addFile(std::unique_ptr<InputFile> File) {
return;
SharedFiles.emplace_back(cast<SharedFile<ELFT>>(File.release()));
F->parse();
F->parseRest();
for (SharedSymbol<ELFT> &B : F->getSharedSymbols())
resolve(&B);
return;