diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/binary-reader-objdump.cc | 11 | ||||
-rw-r--r-- | src/binary-reader-objdump.h | 1 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/binary-reader-objdump.cc b/src/binary-reader-objdump.cc index 68771224..05e2c15e 100644 --- a/src/binary-reader-objdump.cc +++ b/src/binary-reader-objdump.cc @@ -240,6 +240,15 @@ class BinaryReaderObjdumpPrepass : public BinaryReaderObjdumpBase { return Result::Ok; } + Result OnFuncType(Index index, + Index param_count, + Type* param_types, + Index result_count, + Type* result_types) override { + objdump_state_->function_param_counts[index] = param_count; + return Result::Ok; + } + Result OnNameEntry(NameSectionSubsection type, Index index, string_view name) override { @@ -548,7 +557,6 @@ Result BinaryReaderObjdumpDisassemble::OnLocalDeclCount(Index count) { if (!in_function_body) { return Result::Ok; } - local_index_ = 0; current_opcode_offset = state->offset; return Result::Ok; } @@ -845,6 +853,7 @@ Result BinaryReaderObjdumpDisassemble::BeginFunctionBody(Index index, last_opcode_end = 0; in_function_body = true; + local_index_ = objdump_state_->function_param_counts[index]; return Result::Ok; } diff --git a/src/binary-reader-objdump.h b/src/binary-reader-objdump.h index 1c3d119e..15970b63 100644 --- a/src/binary-reader-objdump.h +++ b/src/binary-reader-objdump.h @@ -76,6 +76,7 @@ struct ObjdumpState { ObjdumpNames segment_names; ObjdumpNames table_names; std::vector<ObjdumpSymbol> symtab; + std::map<Index, Index> function_param_counts; }; Result ReadBinaryObjdump(const uint8_t* data, |