diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-07-21 18:04:29 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-07-21 18:04:29 +0000 |
| commit | bd05101e67f975ef4a42585b732ee03d135645d2 (patch) | |
| tree | ab4c1c70f5d73fc5f2d34dfd64b404339ae99095 /llvm/tools | |
| parent | 3fdf3294ab72b07986a92ea7f2d37843ca6ce1d7 (diff) | |
| download | bcm5719-llvm-bd05101e67f975ef4a42585b732ee03d135645d2.tar.gz bcm5719-llvm-bd05101e67f975ef4a42585b732ee03d135645d2.zip | |
Remove getStaticSymbolName.
Every user now keeps track of the correct string table to use.
llvm-svn: 242818
Diffstat (limited to 'llvm/tools')
| -rw-r--r-- | llvm/tools/obj2yaml/elf2yaml.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/llvm/tools/obj2yaml/elf2yaml.cpp b/llvm/tools/obj2yaml/elf2yaml.cpp index 05efdb6c759..def3981eae1 100644 --- a/llvm/tools/obj2yaml/elf2yaml.cpp +++ b/llvm/tools/obj2yaml/elf2yaml.cpp @@ -27,7 +27,8 @@ class ELFDumper { const object::ELFFile<ELFT> &Obj; - std::error_code dumpSymbol(const Elf_Sym *Sym, ELFYAML::Symbol &S); + std::error_code dumpSymbol(const Elf_Sym *Sym, StringRef StrTable, + ELFYAML::Symbol &S); std::error_code dumpCommonSection(const Elf_Shdr *Shdr, ELFYAML::Section &S); std::error_code dumpCommonRelocationSection(const Elf_Shdr *Shdr, ELFYAML::RelocationSection &S); @@ -121,6 +122,12 @@ 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()) { if (IsFirstSym) { @@ -129,7 +136,7 @@ ErrorOr<ELFYAML::Object *> ELFDumper<ELFT>::dump() { } ELFYAML::Symbol S; - if (std::error_code EC = ELFDumper<ELFT>::dumpSymbol(&Sym, S)) + if (std::error_code EC = ELFDumper<ELFT>::dumpSymbol(&Sym, StrTable, S)) return EC; switch (Sym.getBinding()) @@ -153,13 +160,14 @@ ErrorOr<ELFYAML::Object *> ELFDumper<ELFT>::dump() { template <class ELFT> std::error_code ELFDumper<ELFT>::dumpSymbol(const Elf_Sym *Sym, + StringRef StrTable, ELFYAML::Symbol &S) { S.Type = Sym->getType(); S.Value = Sym->st_value; S.Size = Sym->st_size; S.Other = Sym->st_other; - ErrorOr<StringRef> NameOrErr = Obj.getStaticSymbolName(Sym); + ErrorOr<StringRef> NameOrErr = Sym->getName(StrTable); if (std::error_code EC = NameOrErr.getError()) return EC; S.Name = NameOrErr.get(); |

