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/llvm-readobj | |
| 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/llvm-readobj')
| -rw-r--r-- | llvm/tools/llvm-readobj/ELFDumper.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp index 76b71c517fd..b1ba0906f69 100644 --- a/llvm/tools/llvm-readobj/ELFDumper.cpp +++ b/llvm/tools/llvm-readobj/ELFDumper.cpp @@ -757,8 +757,11 @@ void ELFDumper<ELFT>::printRelocation(const Elf_Shdr *Sec, TargetName = SecName.get(); } else if (Sym.first) { const Elf_Shdr *SymTable = Sym.first; - const Elf_Shdr *StrTable = Obj->getSection(SymTable->sh_link); - TargetName = errorOrDefault(Obj->getSymbolName(StrTable, Sym.second)); + const Elf_Shdr *StrTableSec = Obj->getSection(SymTable->sh_link); + ErrorOr<StringRef> StrTableOrErr = Obj->getStringTable(StrTableSec); + if (!error(StrTableOrErr.getError())) + TargetName = + errorOrDefault(Obj->getSymbolName(*StrTableOrErr, Sym.second)); } if (opts::ExpandRelocs) { |

