From: Rafael Espindola Date: Mon, 10 Aug 2015 14:27:50 +0000 (+0000) Subject: elf2yaml: Use existing section walk to find the symbol table. NFC. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=229544960811680d4f87ab1f9a70d06b04220e0f;p=oota-llvm.git elf2yaml: Use existing section walk to find the symbol table. NFC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244447 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/obj2yaml/elf2yaml.cpp b/tools/obj2yaml/elf2yaml.cpp index 0dcb4ef38f8..214148d41b8 100644 --- a/tools/obj2yaml/elf2yaml.cpp +++ b/tools/obj2yaml/elf2yaml.cpp @@ -68,15 +68,19 @@ ErrorOr ELFDumper::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 S = dumpRelaSection(&Sec); if (std::error_code EC = S.getError()) @@ -122,14 +126,13 @@ ErrorOr ELFDumper::dump() { } // Dump symbols - const Elf_Shdr *Symtab = Obj.getDotSymtabSec(); ErrorOr 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::dumpSymbol(const Elf_Sym *Sym, return EC; S.Name = NameOrErr.get(); - ErrorOr ShdrOrErr = Obj.getSection(&*Sym); + ErrorOr ShdrOrErr = Obj.getSection(Sym); if (std::error_code EC = ShdrOrErr.getError()) return EC; const Elf_Shdr *Shdr = *ShdrOrErr;