diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-08-10 14:27:50 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-08-10 14:27:50 +0000 |
| commit | 94515abfd743a965cff9799979fcb72364f863b7 (patch) | |
| tree | 75e54ee157ce4ee636faa4ac04ab1bd4dcfbef32 /llvm/tools/obj2yaml/elf2yaml.cpp | |
| parent | 291f64fd03a8057d4b260a3b74a7d109c017111a (diff) | |
| download | bcm5719-llvm-94515abfd743a965cff9799979fcb72364f863b7.tar.gz bcm5719-llvm-94515abfd743a965cff9799979fcb72364f863b7.zip | |
elf2yaml: Use existing section walk to find the symbol table. NFC.
llvm-svn: 244447
Diffstat (limited to 'llvm/tools/obj2yaml/elf2yaml.cpp')
| -rw-r--r-- | llvm/tools/obj2yaml/elf2yaml.cpp | 11 |
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; |

