summaryrefslogtreecommitdiff
path: root/src/tools/wasm-shell.cpp
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-09-20 10:38:36 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-09-20 10:38:36 -0700
commit552d700c7e21afae03e55b6d6574a67946510972 (patch)
tree403b1a9fac7044db2aeb6bbb0ca264a9cae85006 /src/tools/wasm-shell.cpp
parente9e6b5aeee24f36e92c1e02de6eff31154ca4f07 (diff)
downloadbinaryen-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.cpp13
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";