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 | |
| 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
| -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;  | 

