diff options
author | Davide Italiano <davide@freebsd.org> | 2015-08-23 14:06:40 +0000 |
---|---|---|
committer | Davide Italiano <davide@freebsd.org> | 2015-08-23 14:06:40 +0000 |
commit | 5e3f9ff87dd0d10090fa8aed52e0fc16f43de14c (patch) | |
tree | c6a5f83b3bc46edc05cab935c5b80c9b7e57ae3c /llvm/tools/llvm-readobj/ELFDumper.cpp | |
parent | 0a774c0a4d261fc9a8356a96f6176a36f0117207 (diff) | |
download | bcm5719-llvm-5e3f9ff87dd0d10090fa8aed52e0fc16f43de14c.tar.gz bcm5719-llvm-5e3f9ff87dd0d10090fa8aed52e0fc16f43de14c.zip |
[llvm-readobj/ELF] Factor out common code.
llvm-svn: 245813
Diffstat (limited to 'llvm/tools/llvm-readobj/ELFDumper.cpp')
-rw-r--r-- | llvm/tools/llvm-readobj/ELFDumper.cpp | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp index 7feb6e038a7..0115c1af5b2 100644 --- a/llvm/tools/llvm-readobj/ELFDumper.cpp +++ b/llvm/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<ELFT>::printRelocation(const Elf_Shdr *Sec, Elf_Rela Rel) { } template<class ELFT> -void ELFDumper<ELFT>::printSymbols() { - ListScope Group(W, "Symbols"); - - const Elf_Shdr *Symtab = DotSymtabSec; +void ELFDumper<ELFT>::printSymbolsHelper(bool IsDynamic) { + const Elf_Shdr *Symtab = (IsDynamic) ? DotDynSymSec : DotSymtabSec; ErrorOr<StringRef> 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<class ELFT> +void ELFDumper<ELFT>::printSymbols() { + ListScope Group(W, "Symbols"); + printSymbolsHelper(false); } template<class ELFT> void ELFDumper<ELFT>::printDynamicSymbols() { ListScope Group(W, "DynamicSymbols"); - - const Elf_Shdr *Symtab = DotDynSymSec; - ErrorOr<StringRef> 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 <class ELFT> |