aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-objdump/llvm-objdump.cpp
diff options
context:
space:
mode:
authorWouter van Oortmerssen <aardappel@gmail.com>2019-01-17 18:14:09 +0000
committerWouter van Oortmerssen <aardappel@gmail.com>2019-01-17 18:14:09 +0000
commitf3b762a0b6cef251afef8907cb4cf5b35bffb0d8 (patch)
treeaf4c08803d459a5cf507925550e5913dc1db464d /llvm/tools/llvm-objdump/llvm-objdump.cpp
parent194d00e1425c8aceefc82d4410285310868d74de (diff)
downloadllvm-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/tools/llvm-objdump/llvm-objdump.cpp')
-rw-r--r--llvm/tools/llvm-objdump/llvm-objdump.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp
index a4dbd07..7d0e7e9 100644
--- a/llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -1605,6 +1605,12 @@ static void disassembleObject(const ObjectFile *Obj, bool InlineRelocs) {
raw_ostream &DebugOut = nulls();
#endif
+ // Some targets (like WebAssembly) have a special prelude at the start
+ // of each symbol.
+ DisAsm->onSymbolStart(SymbolName, Size, Bytes.slice(Start, End - Start),
+ SectionAddr + Start, DebugOut, CommentStream);
+ Start += Size;
+
for (Index = Start; Index < End; Index += Size) {
MCInst Inst;