diff options
author | Sam Clegg <sbc@chromium.org> | 2018-04-26 17:05:04 +0000 |
---|---|---|
committer | Sam Clegg <sbc@chromium.org> | 2018-04-26 17:05:04 +0000 |
commit | 8c4b0ce2b10d1ca9cce2a10d99d144ca8661468b (patch) | |
tree | 3b3f910a8a81c63322132119aededcb5457df620 /llvm/tools/llvm-objdump/llvm-objdump.cpp | |
parent | c5ded6807761c0137ef0f1899ac2ca79d4f755d0 (diff) | |
download | bcm5719-llvm-8c4b0ce2b10d1ca9cce2a10d99d144ca8661468b.tar.gz bcm5719-llvm-8c4b0ce2b10d1ca9cce2a10d99d144ca8661468b.zip |
[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
llvm-svn: 330959
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index f32ff062c23..0a1f0e2cda7 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/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()); } |