summaryrefslogtreecommitdiff
path: root/tools/llvm-objdump/llvm-objdump.cpp
diff options
context:
space:
mode:
authorSam Clegg <sbc@chromium.org>2018-04-26 17:05:04 +0000
committerSam Clegg <sbc@chromium.org>2018-04-26 17:05:04 +0000
commitcc3b83d8d1fd7282abe60cd8d2d44154c9d248aa (patch)
tree69ef7d690e6a42512fbee605586921be307d6cda /tools/llvm-objdump/llvm-objdump.cpp
parent5fad6ea6c23244f92bdda582b5552557c6451ced (diff)
[WebAssembly] objdump: Don't assume all relocations have symbols
Subscribers: jfb, dschuff, jgravelle-google, aheejin, sunfish, llvm-commits Differential Revision: https://reviews.llvm.org/D46134 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@330959 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-objdump/llvm-objdump.cpp')
-rw-r--r--tools/llvm-objdump/llvm-objdump.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/tools/llvm-objdump/llvm-objdump.cpp b/tools/llvm-objdump/llvm-objdump.cpp
index f32ff062c23..0a1f0e2cda7 100644
--- a/tools/llvm-objdump/llvm-objdump.cpp
+++ b/tools/llvm-objdump/llvm-objdump.cpp
@@ -920,10 +920,14 @@ static std::error_code getRelocationValueString(const WasmObjectFile *Obj,
symbol_iterator SI = RelRef.getSymbol();
std::string fmtbuf;
raw_string_ostream fmt(fmtbuf);
- Expected<StringRef> SymNameOrErr = SI->getName();
- if (!SymNameOrErr) {
+ if (SI == Obj->symbol_end()) {
+ // Not all wasm relocations have symbols associated with them.
+ // In particular R_WEBASSEMBLY_TYPE_INDEX_LEB.
fmt << Rel.Index;
} else {
+ Expected<StringRef> SymNameOrErr = SI->getName();
+ if (!SymNameOrErr)
+ return errorToErrorCode(SymNameOrErr.takeError());
StringRef SymName = *SymNameOrErr;
Result.append(SymName.begin(), SymName.end());
}