summaryrefslogtreecommitdiff
path: root/test
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 /test
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 'test')
-rw-r--r--test/lit/ctor-eval/exported-import.wast14
-rw-r--r--test/lit/exec/exported-import.wast14
2 files changed, 28 insertions, 0 deletions
diff --git a/test/lit/ctor-eval/exported-import.wast b/test/lit/ctor-eval/exported-import.wast
new file mode 100644
index 000000000..3ec2780bc
--- /dev/null
+++ b/test/lit/ctor-eval/exported-import.wast
@@ -0,0 +1,14 @@
+;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited.
+;; RUN: wasm-ctor-eval %s --ctors=export --kept-exports=export --quiet -all -S -o - | filecheck %s
+
+;; We cannot eval an exported import, and should exit with a message about
+;; that rather than an error.
+
+(module
+ ;; CHECK: (type $0 (func))
+
+ ;; CHECK: (import "spectest" "print" (func $import (type $0)))
+ (import "spectest" "print" (func $import))
+ ;; CHECK: (export "export" (func $import))
+ (export "export" (func $import))
+)
diff --git a/test/lit/exec/exported-import.wast b/test/lit/exec/exported-import.wast
new file mode 100644
index 000000000..5264e9e00
--- /dev/null
+++ b/test/lit/exec/exported-import.wast
@@ -0,0 +1,14 @@
+;; RUN: wasm-opt %s --fuzz-exec-before -q -o /dev/null 2>&1 | filecheck %s
+
+;; Execute an import that is immediately exported. We should not error here, but
+;; no other output is expected (as the import does nothing and is ignored).
+
+(module
+ (import "spectest" "nothing" (func $import))
+ (export "__wasm_call_ctors" (func $import))
+)
+
+;; Note this file does not use automatic updating as that only works for
+;; defined functions at the moment, and this module has none of those.
+
+;; CHECK: [fuzz-exec] calling __wasm_call_ctors