summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/binary-reader-objdump.cc11
-rw-r--r--src/binary-reader-objdump.h1
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,