summaryrefslogtreecommitdiff
path: root/src/tools/wasm-ctor-eval.cpp
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2023-10-24 13:45:09 -0700
committerGitHub <noreply@github.com>2023-10-24 13:45:09 -0700
commitba04e395508fc3414b952287d7e918d20361087e (patch)
tree2ea9258dbcf6340cc92a3cb342c63652c85beec3 /src/tools/wasm-ctor-eval.cpp
parent92c8a4682367170485295da6744b3a59fbb8d3ac (diff)
downloadbinaryen-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.cpp11
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.