[llvm] r241266 - Expose getRel and getRela to reduce code duplication.
Rafael Espindola
rafael.espindola at gmail.com
Thu Jul 2 07:21:38 PDT 2015
Author: rafael
Date: Thu Jul 2 09:21:38 2015
New Revision: 241266
URL: http://llvm.org/viewvc/llvm-project?rev=241266&view=rev
Log:
Expose getRel and getRela to reduce code duplication.
Modified:
llvm/trunk/include/llvm/Object/ELFObjectFile.h
llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp
Modified: llvm/trunk/include/llvm/Object/ELFObjectFile.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/ELFObjectFile.h?rev=241266&r1=241265&r2=241266&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/ELFObjectFile.h (original)
+++ llvm/trunk/include/llvm/Object/ELFObjectFile.h Thu Jul 2 09:21:38 2015
@@ -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;
Modified: llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp?rev=241266&r1=241265&r2=241266&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp (original)
+++ llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp Thu Jul 2 09:21:38 2015
@@ -298,25 +298,14 @@ PrettyPrinter &selectPrettyPrinter(Tripl
}
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 getRelocationValu
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;
}
}
More information about the llvm-commits
mailing list