diff options
author | Wouter van Oortmerssen <aardappel@gmail.com> | 2019-01-17 18:14:09 +0000 |
---|---|---|
committer | Wouter van Oortmerssen <aardappel@gmail.com> | 2019-01-17 18:14:09 +0000 |
commit | f3b762a0b6cef251afef8907cb4cf5b35bffb0d8 (patch) | |
tree | af4c08803d459a5cf507925550e5913dc1db464d /llvm/lib/MC/MCDisassembler/MCDisassembler.cpp | |
parent | 194d00e1425c8aceefc82d4410285310868d74de (diff) | |
download | llvm-f3b762a0b6cef251afef8907cb4cf5b35bffb0d8.zip llvm-f3b762a0b6cef251afef8907cb4cf5b35bffb0d8.tar.gz llvm-f3b762a0b6cef251afef8907cb4cf5b35bffb0d8.tar.bz2 |
[WebAssembly] Fixed objdump not parsing function headers.
Summary:
objdump was interpreting the function header containing the locals
declaration as instructions. To parse these without injecting target
specific code in objdump, MCDisassembler::onSymbolStart was added to
be implemented by the WebAssembly implemention.
WasmObjectFile now returns a code offset for the "address" of a symbol,
rather than the index. This is also more in-line with what other
targets do.
Also ensured that the AsmParser correctly puts each function
in its own segment to enable this test case.
Reviewers: sbc100, dschuff
Subscribers: jgravelle-google, aheejin, sunfish, rupprecht, llvm-commits
Differential Revision: https://reviews.llvm.org/D56684
llvm-svn: 351460
Diffstat (limited to 'llvm/lib/MC/MCDisassembler/MCDisassembler.cpp')
-rw-r--r-- | llvm/lib/MC/MCDisassembler/MCDisassembler.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/MC/MCDisassembler/MCDisassembler.cpp b/llvm/lib/MC/MCDisassembler/MCDisassembler.cpp index 2f1275d..0959881 100644 --- a/llvm/lib/MC/MCDisassembler/MCDisassembler.cpp +++ b/llvm/lib/MC/MCDisassembler/MCDisassembler.cpp @@ -8,6 +8,8 @@ //===----------------------------------------------------------------------===// #include "llvm/MC/MCDisassembler/MCDisassembler.h" +#include "llvm/ADT/ArrayRef.h" +#include "llvm/ADT/StringRef.h" #include "llvm/Support/raw_ostream.h" #include <algorithm> @@ -15,6 +17,13 @@ using namespace llvm; MCDisassembler::~MCDisassembler() = default; +MCDisassembler::DecodeStatus MCDisassembler::onSymbolStart( + StringRef Name, uint64_t &Size, ArrayRef<uint8_t> Bytes, uint64_t Address, + raw_ostream &VStream, raw_ostream &CStream) const { + Size = 0; + return MCDisassembler::Success; +} + bool MCDisassembler::tryAddingSymbolicOperand(MCInst &Inst, int64_t Value, uint64_t Address, bool IsBranch, uint64_t Offset, |