Skip to content

Commit

Permalink
ELF: Move SymtabSHNDX and getSectionIndex() to ObjFile. NFCI.
Browse files Browse the repository at this point in the history
Differential Revision: https://reviews.llvm.org/D60244

llvm-svn: 357670
  • Loading branch information
pcc committed Apr 4, 2019
1 parent f5de7ad commit 8238604
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 11 deletions.
14 changes: 6 additions & 8 deletions lld/ELF/InputFiles.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -258,11 +258,6 @@ typename ELFT::SymRange ELFFileBase<ELFT>::getGlobalELFSyms() {
return makeArrayRef(ELFSyms.begin() + FirstGlobal, ELFSyms.end());
}

template <class ELFT>
uint32_t ELFFileBase<ELFT>::getSectionIndex(const Elf_Sym &Sym) const {
return CHECK(getObj().getSectionIndex(&Sym, ELFSyms, SymtabSHNDX), this);
}

template <class ELFT>
void ELFFileBase<ELFT>::initSymtab(ArrayRef<Elf_Shdr> Sections,
const Elf_Shdr *Symtab) {
Expand All @@ -281,6 +276,12 @@ ObjFile<ELFT>::ObjFile(MemoryBufferRef M, StringRef ArchiveName)
this->ArchiveName = ArchiveName;
}

template <class ELFT>
uint32_t ObjFile<ELFT>::getSectionIndex(const Elf_Sym &Sym) const {
return CHECK(this->getObj().getSectionIndex(&Sym, this->ELFSyms, SymtabSHNDX),
this);
}

template <class ELFT> ArrayRef<Symbol *> ObjFile<ELFT>::getLocalSymbols() {
if (this->Symbols.empty())
return {};
Expand Down Expand Up @@ -890,9 +891,6 @@ template <class ELFT> void SharedFile<ELFT>::parseDynamic() {
case SHT_DYNAMIC:
DynamicSec = &Sec;
break;
case SHT_SYMTAB_SHNDX:
this->SymtabSHNDX = CHECK(Obj.getSHNDXTable(Sec, Sections), this);
break;
case SHT_GNU_versym:
this->VersymSec = &Sec;
break;
Expand Down
7 changes: 4 additions & 3 deletions lld/ELF/InputFiles.h
Original file line number Diff line number Diff line change
Expand Up @@ -161,15 +161,12 @@ template <typename ELFT> class ELFFileBase : public InputFile {

StringRef getStringTable() const { return StringTable; }

uint32_t getSectionIndex(const Elf_Sym &Sym) const;

Elf_Sym_Range getGlobalELFSyms();
Elf_Sym_Range getELFSyms() const { return ELFSyms; }

protected:
ArrayRef<Elf_Sym> ELFSyms;
uint32_t FirstGlobal = 0;
ArrayRef<Elf_Word> SymtabSHNDX;
StringRef StringTable;
void initSymtab(ArrayRef<Elf_Shdr> Sections, const Elf_Shdr *Symtab);
};
Expand Down Expand Up @@ -202,6 +199,8 @@ template <class ELFT> class ObjFile : public ELFFileBase<ELFT> {
return *this->Symbols[SymbolIndex];
}

uint32_t getSectionIndex(const Elf_Sym &Sym) const;

template <typename RelT> Symbol &getRelocTargetSym(const RelT &Rel) const {
uint32_t SymIndex = Rel.getSymbol(Config->IsMips64EL);
return getSymbol(SymIndex);
Expand Down Expand Up @@ -247,6 +246,8 @@ template <class ELFT> class ObjFile : public ELFFileBase<ELFT> {
bool shouldMerge(const Elf_Shdr &Sec);
Symbol *createSymbol(const Elf_Sym *Sym);

ArrayRef<Elf_Word> SymtabSHNDX;

// .shstrtab contents.
StringRef SectionStringTable;

Expand Down

0 comments on commit 8238604

Please sign in to comment.