summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-readobj
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2012-12-31 15:45:31 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2012-12-31 15:45:31 +0000
commit63d52b1e1c651a186cab35b38e0ced2acb7c71dd (patch)
tree18d1a9bff4834840ef0f71deacdb15ca2e3da1af /llvm/tools/llvm-readobj
parentae740952550888c9afdccec7062d01d82aa49346 (diff)
downloadbcm5719-llvm-63d52b1e1c651a186cab35b38e0ced2acb7c71dd.tar.gz
bcm5719-llvm-63d52b1e1c651a186cab35b38e0ced2acb7c71dd.zip
Check for errors. Extracted from a patch by Sami Liedes.
llvm-svn: 171301
Diffstat (limited to 'llvm/tools/llvm-readobj')
-rw-r--r--llvm/tools/llvm-readobj/llvm-readobj.cpp18
1 files changed, 12 insertions, 6 deletions
diff --git a/llvm/tools/llvm-readobj/llvm-readobj.cpp b/llvm/tools/llvm-readobj/llvm-readobj.cpp
index 252a37798cf..8f8804a7c45 100644
--- a/llvm/tools/llvm-readobj/llvm-readobj.cpp
+++ b/llvm/tools/llvm-readobj/llvm-readobj.cpp
@@ -69,6 +69,11 @@ static std::string getSymbolFlagStr(uint32_t Flags) {
return result;
}
+static void checkError(error_code ec, const char *msg) {
+ if (ec)
+ report_fatal_error(std::string(msg) + ": " + ec.message());
+}
+
static void
dumpSymbol(const SymbolRef &Sym, const ObjectFile *obj, bool IsDynamic) {
StringRef Name;
@@ -77,12 +82,13 @@ dumpSymbol(const SymbolRef &Sym, const ObjectFile *obj, bool IsDynamic) {
uint64_t Address;
uint64_t Size;
uint64_t FileOffset;
- Sym.getName(Name);
- Sym.getAddress(Address);
- Sym.getSize(Size);
- Sym.getFileOffset(FileOffset);
- Sym.getType(Type);
- Sym.getFlags(Flags);
+ checkError(Sym.getName(Name), "SymbolRef.getName() failed");
+ checkError(Sym.getAddress(Address), "SymbolRef.getAddress() failed");
+ checkError(Sym.getSize(Size), "SymbolRef.getSize() failed");
+ checkError(Sym.getFileOffset(FileOffset),
+ "SymbolRef.getFileOffset() failed");
+ checkError(Sym.getType(Type), "SymbolRef.getType() failed");
+ checkError(Sym.getFlags(Flags), "SymbolRef.getFlags() failed");
std::string FullName = Name;
// If this is a dynamic symbol from an ELF object, append
OpenPOWER on IntegriCloud