summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-readobj/ELFDumper.cpp
diff options
context:
space:
mode:
authorDavide Italiano <davide@freebsd.org>2015-08-23 14:06:40 +0000
committerDavide Italiano <davide@freebsd.org>2015-08-23 14:06:40 +0000
commit5e3f9ff87dd0d10090fa8aed52e0fc16f43de14c (patch)
treec6a5f83b3bc46edc05cab935c5b80c9b7e57ae3c /llvm/tools/llvm-readobj/ELFDumper.cpp
parent0a774c0a4d261fc9a8356a96f6176a36f0117207 (diff)
downloadbcm5719-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.cpp23
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>
OpenPOWER on IntegriCloud