diff options
author | Alon Zakai <azakai@google.com> | 2023-10-24 13:45:09 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-24 13:45:09 -0700 |
commit | ba04e395508fc3414b952287d7e918d20361087e (patch) | |
tree | 2ea9258dbcf6340cc92a3cb342c63652c85beec3 /src/tools/wasm-ctor-eval.cpp | |
parent | 92c8a4682367170485295da6744b3a59fbb8d3ac (diff) | |
download | binaryen-ba04e395508fc3414b952287d7e918d20361087e.tar.gz binaryen-ba04e395508fc3414b952287d7e918d20361087e.tar.bz2 binaryen-ba04e395508fc3414b952287d7e918d20361087e.zip |
Fix handling of exported imported functions (#6044)
Two trivial places did not handle that case, and assumed an exported function
was actually defined (and not imported).
Also add some const stuff to fix compilation after this change.
This was discovered by #6026
Diffstat (limited to 'src/tools/wasm-ctor-eval.cpp')
-rw-r--r-- | src/tools/wasm-ctor-eval.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/tools/wasm-ctor-eval.cpp b/src/tools/wasm-ctor-eval.cpp index 1b60a9222..eb2a4eb5d 100644 --- a/src/tools/wasm-ctor-eval.cpp +++ b/src/tools/wasm-ctor-eval.cpp @@ -227,7 +227,7 @@ struct CtorEvalExternalInterface : EvallingModuleRunner::ExternalInterface { }); } - Literals callImport(Function* import, Literals& arguments) override { + Literals callImport(Function* import, const Literals& arguments) override { Name WASI("wasi_snapshot_preview1"); if (ignoreExternalInput) { @@ -1022,6 +1022,15 @@ EvalCtorOutcome evalCtor(EvallingModuleRunner& instance, Name exportName) { auto& wasm = instance.wasm; auto* func = wasm.getFunction(funcName); + if (func->imported()) { + // We cannot evaluate an import. + if (!quiet) { + std::cout << " ...stopping since could not eval: call import: " + << func->module.toString() << "." << func->base.toString() + << '\n'; + } + return EvalCtorOutcome(); + } // We don't know the values of parameters, so give up if there are any, unless // we are ignoring them. |