summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2015-08-10 14:27:50 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2015-08-10 14:27:50 +0000
commit94515abfd743a965cff9799979fcb72364f863b7 (patch)
tree75e54ee157ce4ee636faa4ac04ab1bd4dcfbef32
parent291f64fd03a8057d4b260a3b74a7d109c017111a (diff)
downloadbcm5719-llvm-94515abfd743a965cff9799979fcb72364f863b7.tar.gz
bcm5719-llvm-94515abfd743a965cff9799979fcb72364f863b7.zip
elf2yaml: Use existing section walk to find the symbol table. NFC.
llvm-svn: 244447
-rw-r--r--llvm/tools/obj2yaml/elf2yaml.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/llvm/tools/obj2yaml/elf2yaml.cpp b/llvm/tools/obj2yaml/elf2yaml.cpp
index 0dcb4ef38f8..214148d41b8 100644
--- a/llvm/tools/obj2yaml/elf2yaml.cpp
+++ b/llvm/tools/obj2yaml/elf2yaml.cpp
@@ -68,15 +68,19 @@ ErrorOr<ELFYAML::Object *> ELFDumper<ELFT>::dump() {
Y->Header.Flags = Obj.getHeader()->e_flags;
Y->Header.Entry = Obj.getHeader()->e_entry;
+ const Elf_Shdr *Symtab = nullptr;
+
// Dump sections
for (const Elf_Shdr &Sec : Obj.sections()) {
switch (Sec.sh_type) {
case ELF::SHT_NULL:
- case ELF::SHT_SYMTAB:
case ELF::SHT_DYNSYM:
case ELF::SHT_STRTAB:
// Do not dump these sections.
break;
+ case ELF::SHT_SYMTAB:
+ Symtab = &Sec;
+ break;
case ELF::SHT_RELA: {
ErrorOr<ELFYAML::RelocationSection *> S = dumpRelaSection(&Sec);
if (std::error_code EC = S.getError())
@@ -122,14 +126,13 @@ ErrorOr<ELFYAML::Object *> ELFDumper<ELFT>::dump() {
}
// Dump symbols
- const Elf_Shdr *Symtab = Obj.getDotSymtabSec();
ErrorOr<StringRef> StrTableOrErr = Obj.getStringTableForSymtab(*Symtab);
if (std::error_code EC = StrTableOrErr.getError())
return EC;
StringRef StrTable = *StrTableOrErr;
bool IsFirstSym = true;
- for (const Elf_Sym &Sym : Obj.symbols(Obj.getDotSymtabSec())) {
+ for (const Elf_Sym &Sym : Obj.symbols(Symtab)) {
if (IsFirstSym) {
IsFirstSym = false;
continue;
@@ -172,7 +175,7 @@ std::error_code ELFDumper<ELFT>::dumpSymbol(const Elf_Sym *Sym,
return EC;
S.Name = NameOrErr.get();
- ErrorOr<const Elf_Shdr *> ShdrOrErr = Obj.getSection(&*Sym);
+ ErrorOr<const Elf_Shdr *> ShdrOrErr = Obj.getSection(Sym);
if (std::error_code EC = ShdrOrErr.getError())
return EC;
const Elf_Shdr *Shdr = *ShdrOrErr;
OpenPOWER on IntegriCloud