summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-readobj
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2015-06-29 14:39:25 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2015-06-29 14:39:25 +0000
commit6a1bfb2f9b4f0c56099475d6aaba7b218600d666 (patch)
tree77cc7de80d3d6f9b00e1f3a0a59f1dd6f3db16f8 /llvm/tools/llvm-readobj
parentffb551b2b03566620fd037736c9bfc089c5102f5 (diff)
downloadbcm5719-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.cpp7
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) {
OpenPOWER on IntegriCloud