From: Davide Italiano Date: Sun, 23 Aug 2015 14:06:40 +0000 (+0000) Subject: [llvm-readobj/ELF] Factor out common code. X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=a99b9646625355d9a22d8d347217d166b026b8ce;hp=d2681e88129a763fc16f9d0c1977670d0370fee4 [llvm-readobj/ELF] Factor out common code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245813 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/llvm-readobj/ELFDumper.cpp b/tools/llvm-readobj/ELFDumper.cpp index 7feb6e038a7..0115c1af5b2 100644 --- a/tools/llvm-readobj/ELFDumper.cpp +++ b/tools/llvm-readobj/ELFDumper.cpp @@ -95,6 +95,7 @@ private: uintX_t EntSize; }; + void printSymbolsHelper(bool IsDynamic); void printSymbol(const Elf_Sym *Symbol, const Elf_Shdr *SymTab, StringRef StrTable, bool IsDynamic); @@ -1148,27 +1149,25 @@ void ELFDumper::printRelocation(const Elf_Shdr *Sec, Elf_Rela Rel) { } template -void ELFDumper::printSymbols() { - ListScope Group(W, "Symbols"); - - const Elf_Shdr *Symtab = DotSymtabSec; +void ELFDumper::printSymbolsHelper(bool IsDynamic) { + const Elf_Shdr *Symtab = (IsDynamic) ? DotDynSymSec : DotSymtabSec; ErrorOr StrTableOrErr = Obj->getStringTableForSymtab(*Symtab); error(StrTableOrErr.getError()); StringRef StrTable = *StrTableOrErr; for (const Elf_Sym &Sym : Obj->symbols(Symtab)) - printSymbol(&Sym, Symtab, StrTable, false); + printSymbol(&Sym, Symtab, StrTable, IsDynamic); +} + +template +void ELFDumper::printSymbols() { + ListScope Group(W, "Symbols"); + printSymbolsHelper(false); } template void ELFDumper::printDynamicSymbols() { ListScope Group(W, "DynamicSymbols"); - - const Elf_Shdr *Symtab = DotDynSymSec; - ErrorOr StrTableOrErr = Obj->getStringTableForSymtab(*Symtab); - error(StrTableOrErr.getError()); - StringRef StrTable = *StrTableOrErr; - for (const Elf_Sym &Sym : Obj->symbols(Symtab)) - printSymbol(&Sym, Symtab, StrTable, true); + printSymbolsHelper(true); } template