diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-09-20 10:38:36 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-09-20 10:38:36 -0700 |
commit | 552d700c7e21afae03e55b6d6574a67946510972 (patch) | |
tree | 403b1a9fac7044db2aeb6bbb0ca264a9cae85006 /src/tools/wasm-shell.cpp | |
parent | e9e6b5aeee24f36e92c1e02de6eff31154ca4f07 (diff) | |
download | binaryen-552d700c7e21afae03e55b6d6574a67946510972.tar.gz binaryen-552d700c7e21afae03e55b6d6574a67946510972.tar.bz2 binaryen-552d700c7e21afae03e55b6d6574a67946510972.zip |
global importing fixes: use the right counter for globals and for functions
Diffstat (limited to 'src/tools/wasm-shell.cpp')
-rw-r--r-- | src/tools/wasm-shell.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/tools/wasm-shell.cpp b/src/tools/wasm-shell.cpp index e0bc5d7e9..320ed01e9 100644 --- a/src/tools/wasm-shell.cpp +++ b/src/tools/wasm-shell.cpp @@ -38,6 +38,7 @@ Name ASSERT_RETURN("assert_return"), ASSERT_TRAP("assert_trap"), ASSERT_INVALID("assert_invalid"), ASSERT_MALFORMED("assert_malformed"), + ASSERT_UNLINKABLE("assert_unlinkable"), INVOKE("invoke"), GET("get"); @@ -139,7 +140,7 @@ static void run_asserts(Name moduleName, size_t* i, bool* checked, Module* wasm, Colors::green(std::cerr); std::cerr << " [line: " << curr.line << "]\n"; Colors::normal(std::cerr); - if (id == ASSERT_INVALID || id == ASSERT_MALFORMED) { + if (id == ASSERT_INVALID || id == ASSERT_MALFORMED || id == ASSERT_UNLINKABLE) { // a module invalidity test Module wasm; bool invalid = false; @@ -155,6 +156,16 @@ static void run_asserts(Name moduleName, size_t* i, bool* checked, Module* wasm, // maybe parsed ok, but otherwise incorrect invalid = !WasmValidator().validate(wasm); } + if (!invalid && id == ASSERT_UNLINKABLE) { + // validate "instantiating" the mdoule + for (auto& import : wasm.imports) { + if (import->module != SPECTEST || import->base != PRINT) { + std::cerr << "unknown import: " << import->module << '.' << import->base << '\n'; + invalid = true; + break; + } + } + } if (!invalid) { Colors::red(std::cerr); std::cerr << "[should have been invalid]\n"; |