diff --git a/lld/ELF/InputFiles.cpp b/lld/ELF/InputFiles.cpp index cbb1164ca364..80f20ec13bea 100644 --- a/lld/ELF/InputFiles.cpp +++ b/lld/ELF/InputFiles.cpp @@ -67,7 +67,7 @@ ELFFileBase::getNonLocalSymbols() { template ObjectFile::ObjectFile(MemoryBufferRef M) - : ELFFileBase(Base::ObjectKind, getStaticELFKind(), M) {} + : ELFFileBase(Base::ObjectKind, Base::getStaticELFKind(), M) {} template typename ObjectFile::Elf_Sym_Range ObjectFile::getLocalSymbols() { @@ -260,7 +260,7 @@ std::vector ArchiveFile::getMembers() { template SharedFile::SharedFile(MemoryBufferRef M) - : ELFFileBase(Base::SharedKind, getStaticELFKind(), M) { + : ELFFileBase(Base::SharedKind, Base::getStaticELFKind(), M) { AsNeeded = Config->AsNeeded; } diff --git a/lld/ELF/InputFiles.h b/lld/ELF/InputFiles.h index 34ce2bd4c346..2701fac60392 100644 --- a/lld/ELF/InputFiles.h +++ b/lld/ELF/InputFiles.h @@ -70,16 +70,7 @@ public: StringRef getStringTable() const { return StringTable; } protected: - const ELFKind EKind; - llvm::object::ELFFile ELFObj; - const Elf_Shdr *Symtab = nullptr; - StringRef StringTable; - void initStringTable(); - Elf_Sym_Range getNonLocalSymbols(); - Elf_Sym_Range getSymbolsHelper(bool); -}; - -template static ELFKind getStaticELFKind() { + static ELFKind getStaticELFKind() { if (!ELFT::Is64Bits) { if (ELFT::TargetEndianness == llvm::support::little) return ELF32LEKind; @@ -90,6 +81,15 @@ template static ELFKind getStaticELFKind() { return ELF64BEKind; } +const ELFKind EKind; +llvm::object::ELFFile ELFObj; +const Elf_Shdr *Symtab = nullptr; +StringRef StringTable; +void initStringTable(); +Elf_Sym_Range getNonLocalSymbols(); +Elf_Sym_Range getSymbolsHelper(bool); +}; + // .o file. template class ObjectFile : public ELFFileBase { typedef ELFFileBase Base; @@ -106,7 +106,7 @@ template class ObjectFile : public ELFFileBase { public: static bool classof(const InputFile *F) { return F->kind() == Base::ObjectKind && - cast>(F)->getELFKind() == getStaticELFKind(); + cast>(F)->getELFKind() == Base::getStaticELFKind(); } ArrayRef getSymbols() { return this->SymbolBodies; } @@ -183,7 +183,7 @@ public: static bool classof(const InputFile *F) { return F->kind() == Base::SharedKind && - cast>(F)->getELFKind() == getStaticELFKind(); + cast>(F)->getELFKind() == Base::getStaticELFKind(); } explicit SharedFile(MemoryBufferRef M);