From a99b9646625355d9a22d8d347217d166b026b8ce Mon Sep 17 00:00:00 2001 From: Davide Italiano Date: Sun, 23 Aug 2015 14:06:40 +0000 Subject: [PATCH] [llvm-readobj/ELF] Factor out common code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245813 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/llvm-readobj/ELFDumper.cpp | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) 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 -- 2.34.1