[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