diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-06-29 14:39:25 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-06-29 14:39:25 +0000 |
| commit | 6a1bfb2f9b4f0c56099475d6aaba7b218600d666 (patch) | |
| tree | 77cc7de80d3d6f9b00e1f3a0a59f1dd6f3db16f8 /llvm/tools/obj2yaml/elf2yaml.cpp | |
| parent | ffb551b2b03566620fd037736c9bfc089c5102f5 (diff) | |
| download | bcm5719-llvm-6a1bfb2f9b4f0c56099475d6aaba7b218600d666.tar.gz bcm5719-llvm-6a1bfb2f9b4f0c56099475d6aaba7b218600d666.zip | |
Factor out the checking of string tables.
This moves the error checking for string tables to getStringTable which returns
an ErrorOr<StringRef>.
This improves error checking, makes it uniform across all string tables and
makes it possible to check them once instead of once per name.
llvm-svn: 240950
Diffstat (limited to 'llvm/tools/obj2yaml/elf2yaml.cpp')
| -rw-r--r-- | llvm/tools/obj2yaml/elf2yaml.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/llvm/tools/obj2yaml/elf2yaml.cpp b/llvm/tools/obj2yaml/elf2yaml.cpp index db29d2db390..73c83d897d9 100644 --- a/llvm/tools/obj2yaml/elf2yaml.cpp +++ b/llvm/tools/obj2yaml/elf2yaml.cpp @@ -183,7 +183,11 @@ std::error_code ELFDumper<ELFT>::dumpRelocation(const Elf_Shdr *Shdr, return obj2yaml_error::success; const Elf_Shdr *SymTab = NamePair.first; - const Elf_Shdr *StrTab = Obj.getSection(SymTab->sh_link); + const Elf_Shdr *StrTabSec = Obj.getSection(SymTab->sh_link); + ErrorOr<StringRef> StrTabOrErr = Obj.getStringTable(StrTabSec); + if (std::error_code EC = StrTabOrErr.getError()) + return EC; + StringRef StrTab = *StrTabOrErr; ErrorOr<StringRef> NameOrErr = Obj.getSymbolName(StrTab, NamePair.second); if (std::error_code EC = NameOrErr.getError()) @@ -302,7 +306,11 @@ ErrorOr<ELFYAML::Group *> ELFDumper<ELFT>::dumpGroup(const Elf_Shdr *Shdr) { // Get sh_info which is the signature. const Elf_Sym *symbol = Obj.getSymbol(Shdr->sh_info); const Elf_Shdr *symtab = Obj.getSection(Shdr->sh_link); - const Elf_Shdr *StrTab = Obj.getSection(symtab->sh_link); + const Elf_Shdr *StrTabSec = Obj.getSection(symtab->sh_link); + ErrorOr<StringRef> StrTabOrErr = Obj.getStringTable(StrTabSec); + if (std::error_code EC = StrTabOrErr.getError()) + return EC; + StringRef StrTab = *StrTabOrErr; auto sectionContents = Obj.getSectionContents(Shdr); if (std::error_code ec = sectionContents.getError()) return ec; |

