diff options
-rw-r--r-- | llvm/include/llvm/Object/ELFObjectFile.h | 6 | ||||
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.cpp | 29 |
2 files changed, 13 insertions, 22 deletions
diff --git a/llvm/include/llvm/Object/ELFObjectFile.h b/llvm/include/llvm/Object/ELFObjectFile.h index d10c1f60233..e1cbced3fea 100644 --- a/llvm/include/llvm/Object/ELFObjectFile.h +++ b/llvm/include/llvm/Object/ELFObjectFile.h @@ -247,9 +247,6 @@ protected: return *Sec; } - const Elf_Rel *getRel(DataRefImpl Rel) const; - const Elf_Rela *getRela(DataRefImpl Rela) const; - const Elf_Sym *toELFSymIter(DataRefImpl Sym) const { return reinterpret_cast<const Elf_Sym *>(Sym.p & ~uintptr_t(1)); } @@ -304,6 +301,9 @@ protected: public: ELFObjectFile(MemoryBufferRef Object, std::error_code &EC); + const Elf_Rel *getRel(DataRefImpl Rel) const; + const Elf_Rela *getRela(DataRefImpl Rela) const; + const Elf_Sym *getSymbol(DataRefImpl Symb) const; basic_symbol_iterator symbol_begin_impl() const override; diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index 6139cfbea1b..d225d4943ec 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -298,25 +298,14 @@ PrettyPrinter &selectPrettyPrinter(Triple const &Triple) { } template <class ELFT> -static const typename ELFObjectFile<ELFT>::Elf_Rel * -getRel(const ELFFile<ELFT> &EF, DataRefImpl Rel) { - typedef typename ELFObjectFile<ELFT>::Elf_Rel Elf_Rel; - return EF.template getEntry<Elf_Rel>(Rel.d.a, Rel.d.b); -} - -template <class ELFT> -static const typename ELFObjectFile<ELFT>::Elf_Rela * -getRela(const ELFFile<ELFT> &EF, DataRefImpl Rela) { - typedef typename ELFObjectFile<ELFT>::Elf_Rela Elf_Rela; - return EF.template getEntry<Elf_Rela>(Rela.d.a, Rela.d.b); -} - -template <class ELFT> static std::error_code getRelocationValueString(const ELFObjectFile<ELFT> *Obj, DataRefImpl Rel, SmallVectorImpl<char> &Result) { typedef typename ELFObjectFile<ELFT>::Elf_Sym Elf_Sym; typedef typename ELFObjectFile<ELFT>::Elf_Shdr Elf_Shdr; + typedef typename ELFObjectFile<ELFT>::Elf_Rel Elf_Rel; + typedef typename ELFObjectFile<ELFT>::Elf_Rela Elf_Rela; + const ELFFile<ELFT> &EF = *Obj->getELFFile(); ErrorOr<const Elf_Shdr *> SecOrErr = EF.getSection(Rel.d.a); @@ -344,15 +333,17 @@ static std::error_code getRelocationValueString(const ELFObjectFile<ELFT> *Obj, default: return object_error::parse_failed; case ELF::SHT_REL: { - type = getRel(EF, Rel)->getType(EF.isMips64EL()); - symbol_index = getRel(EF, Rel)->getSymbol(EF.isMips64EL()); + const Elf_Rel *ERel = Obj->getRel(Rel); + type = ERel->getType(EF.isMips64EL()); + symbol_index = ERel->getSymbol(EF.isMips64EL()); // TODO: Read implicit addend from section data. break; } case ELF::SHT_RELA: { - type = getRela(EF, Rel)->getType(EF.isMips64EL()); - symbol_index = getRela(EF, Rel)->getSymbol(EF.isMips64EL()); - addend = getRela(EF, Rel)->r_addend; + const Elf_Rela *ERela = Obj->getRela(Rel); + type = ERela->getType(EF.isMips64EL()); + symbol_index = ERela->getSymbol(EF.isMips64EL()); + addend = ERela->r_addend; break; } } |