[llvm] r285920 - Move a free function out of ELFFile.
Rafael Espindola via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 3 07:41:17 PDT 2016
Author: rafael
Date: Thu Nov 3 09:41:17 2016
New Revision: 285920
URL: http://llvm.org/viewvc/llvm-project?rev=285920&view=rev
Log:
Move a free function out of ELFFile.
Modified:
llvm/trunk/include/llvm/Object/ELF.h
llvm/trunk/tools/llvm-readobj/ELFDumper.cpp
Modified: llvm/trunk/include/llvm/Object/ELF.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/ELF.h?rev=285920&r1=285919&r2=285920&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/ELF.h (original)
+++ llvm/trunk/include/llvm/Object/ELF.h Thu Nov 3 09:41:17 2016
@@ -150,9 +150,6 @@ public:
ErrorOr<uint32_t>
getExtendedSymbolTableIndex(const Elf_Sym *Sym, const Elf_Shdr *SymTab,
ArrayRef<Elf_Word> ShndxTable) const;
- ErrorOr<uint32_t>
- getExtendedSymbolTableIndex(const Elf_Sym *Sym, const Elf_Sym *FirstSym,
- ArrayRef<Elf_Word> ShndxTable) const;
const Elf_Ehdr *getHeader() const { return Header; }
ErrorOr<uint32_t> getSectionIndex(const Elf_Sym *Sym, const Elf_Shdr *SymTab,
ArrayRef<Elf_Word> ShndxTable) const;
@@ -194,19 +191,10 @@ getSection(typename ELFT::ShdrRange Sect
}
template <class ELFT>
-ErrorOr<uint32_t> ELFFile<ELFT>::getExtendedSymbolTableIndex(
- const Elf_Sym *Sym, const Elf_Shdr *SymTab,
- ArrayRef<Elf_Word> ShndxTable) const {
- auto SymsOrErr = symbols(SymTab);
- if (std::error_code EC = SymsOrErr.getError())
- return EC;
- return getExtendedSymbolTableIndex(Sym, SymsOrErr->begin(), ShndxTable);
-}
-
-template <class ELFT>
-ErrorOr<uint32_t> ELFFile<ELFT>::getExtendedSymbolTableIndex(
- const Elf_Sym *Sym, const Elf_Sym *FirstSym,
- ArrayRef<Elf_Word> ShndxTable) const {
+inline ErrorOr<uint32_t>
+getExtendedSymbolTableIndex(const typename ELFT::Sym *Sym,
+ const typename ELFT::Sym *FirstSym,
+ ArrayRef<typename ELFT::Word> ShndxTable) {
assert(Sym->st_shndx == ELF::SHN_XINDEX);
unsigned Index = Sym - FirstSym;
if (Index >= ShndxTable.size())
@@ -216,6 +204,17 @@ ErrorOr<uint32_t> ELFFile<ELFT>::getExte
}
template <class ELFT>
+ErrorOr<uint32_t> ELFFile<ELFT>::getExtendedSymbolTableIndex(
+ const Elf_Sym *Sym, const Elf_Shdr *SymTab,
+ ArrayRef<Elf_Word> ShndxTable) const {
+ auto SymsOrErr = symbols(SymTab);
+ if (std::error_code EC = SymsOrErr.getError())
+ return EC;
+ return object::getExtendedSymbolTableIndex<ELFT>(Sym, SymsOrErr->begin(),
+ ShndxTable);
+}
+
+template <class ELFT>
ErrorOr<uint32_t>
ELFFile<ELFT>::getSectionIndex(const Elf_Sym *Sym, const Elf_Shdr *SymTab,
ArrayRef<Elf_Word> ShndxTable) const {
Modified: llvm/trunk/tools/llvm-readobj/ELFDumper.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/ELFDumper.cpp?rev=285920&r1=285919&r2=285920&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-readobj/ELFDumper.cpp (original)
+++ llvm/trunk/tools/llvm-readobj/ELFDumper.cpp Thu Nov 3 09:41:17 2016
@@ -696,11 +696,11 @@ std::string ELFDumper<ELFT>::getFullSymb
return FullSymbolName;
}
-template <typename ELFO>
+template <typename ELFT>
static void
-getSectionNameIndex(const ELFO &Obj, const typename ELFO::Elf_Sym *Symbol,
- const typename ELFO::Elf_Sym *FirstSym,
- ArrayRef<typename ELFO::Elf_Word> ShndxTable,
+getSectionNameIndex(const ELFFile<ELFT> &Obj, const typename ELFT::Sym *Symbol,
+ const typename ELFT::Sym *FirstSym,
+ ArrayRef<typename ELFT::Word> ShndxTable,
StringRef &SectionName, unsigned &SectionIndex) {
SectionIndex = Symbol->st_shndx;
if (Symbol->isUndefined())
@@ -717,9 +717,9 @@ getSectionNameIndex(const ELFO &Obj, con
SectionName = "Reserved";
else {
if (SectionIndex == SHN_XINDEX)
- SectionIndex = unwrapOrError(
- Obj.getExtendedSymbolTableIndex(Symbol, FirstSym, ShndxTable));
- const typename ELFO::Elf_Shdr *Sec =
+ SectionIndex = unwrapOrError(object::getExtendedSymbolTableIndex<ELFT>(
+ Symbol, FirstSym, ShndxTable));
+ const typename ELFT::Shdr *Sec =
unwrapOrError(Obj.getSection(SectionIndex));
SectionName = unwrapOrError(Obj.getSectionName(Sec));
}
@@ -2737,7 +2737,7 @@ std::string GNUStyle<ELFT>::getSymbolSec
case ELF::SHN_COMMON:
return "COM";
case ELF::SHN_XINDEX:
- SectionIndex = unwrapOrError(Obj->getExtendedSymbolTableIndex(
+ SectionIndex = unwrapOrError(object::getExtendedSymbolTableIndex<ELFT>(
Symbol, FirstSym, this->dumper()->getShndxTable()));
default:
// Find if:
More information about the llvm-commits
mailing list