winch: Fix retrieving function signature for compilation (#5725)

This commit fixes an incorrect usage of `func_type_at` to retrieve a defined
function signature and instead uses `function_at` to retrieve the signature.

Additionally it enhances `winch-tools` `compile` and `test` commands to handle
modules with multiple functions correctly.
This commit is contained in:
Saúl Cabrera
2023-02-06 17:02:38 -05:00
committed by GitHub
parent 1390882b56
commit 939b6ea933
2 changed files with 5 additions and 4 deletions

View File

@@ -56,7 +56,7 @@ fn compile(
) -> Result<()> {
let index = module.func_index(f.0);
let sig = types
.func_type_at(index.as_u32())
.function_at(index.as_u32())
.expect(&format!("function type at index {:?}", index.as_u32()));
let FunctionBodyData { body, validator } = f.1;
let validator = validator.into_validator(Default::default());
@@ -64,6 +64,7 @@ fn compile(
.compile_function(&sig, &body, validator)
.expect("Couldn't compile function");
println!("Disassembly for function: {}", index.as_u32());
disasm(buffer.data(), isa)?
.iter()
.for_each(|s| println!("{}", s));