ITADN

resolveTableIdx gives wrong function index when using multiple wasm modules

#45Opendoehyunbaek 创建于 2024-07-28
bug
D
doehyunbaekcommented
Repository reproducing the problem: https://github.com/doehyunbaek/wasabi_multimodule_fidx Currently, resolveTableIdx relies on name property of the function to resolve function index. https://github.com/danleh/wasabi/blob/21a322b7faac9440b931762aae124ffa57d0fa17/crates/wasabi/js/runtime.js#L45-L51 This does not work when the function is imported from other WebAssembly instance and the index of the function in its imported module and the index of the function in its declared module is different, e.g. module1.wat ```wat (module (func $private_func_0 (;0;) ) (func $private_func_1 (;1;) ) (func $shared_func (;2;) (param $0 i32) (result i32) local.get $0 i32.const 1 i32.add ) (export "shared_func" (func $shared_func)) ) ``` module2.wat ```wat (module (import "env" "shared_func" (func $shared_func (;0;) )) ) ``` For module2, resolveTableIdx would resolve `shared_func` to 2, which is different from expected behavior, which is 0.
5 条评论