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 /test | |
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 'test')
-rw-r--r-- | test/lit/ctor-eval/exported-import.wast | 14 | ||||
-rw-r--r-- | test/lit/exec/exported-import.wast | 14 |
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 |