diff --git a/Cargo.lock b/Cargo.lock index ad1e20aa1..4e0734b1d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2420,7 +2420,7 @@ dependencies = [ "thiserror", "wasmer-types", "wasmer-vm", - "wasmparser 0.77.0", + "wasmparser 0.78.0", ] [[package]] @@ -2745,9 +2745,9 @@ checksum = "32fddd575d477c6e9702484139cf9f23dcd554b06d185ed0f56c857dd3a47aa6" [[package]] name = "wasmparser" -version = "0.77.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35c86d22e720a07d954ebbed772d01180501afe7d03d464f413bb5f8914a8d6" +checksum = "6c7a8b20306d43c09c2c34e0ef68bf2959a11b01a5cae35e4c5dc1e7145547b6" [[package]] name = "wast" diff --git a/fuzz/Cargo.lock b/fuzz/Cargo.lock index 4887c8eec..7b6cd6d42 100644 --- a/fuzz/Cargo.lock +++ b/fuzz/Cargo.lock @@ -1140,7 +1140,7 @@ dependencies = [ "thiserror", "wasmer-types", "wasmer-vm", - "wasmparser 0.77.0", + "wasmparser 0.78.0", ] [[package]] @@ -1325,12 +1325,6 @@ version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32fddd575d477c6e9702484139cf9f23dcd554b06d185ed0f56c857dd3a47aa6" -[[package]] -name = "wasmparser" -version = "0.77.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35c86d22e720a07d954ebbed772d01180501afe7d03d464f413bb5f8914a8d6" - [[package]] name = "wasmparser" version = "0.78.0" diff --git a/lib/compiler/Cargo.toml b/lib/compiler/Cargo.toml index ffd8989cf..0e1c8c01c 100644 --- a/lib/compiler/Cargo.toml +++ b/lib/compiler/Cargo.toml @@ -13,7 +13,7 @@ edition = "2018" [dependencies] wasmer-vm = { path = "../vm", version = "1.0.2" } wasmer-types = { path = "../types", version = "1.0.2", default-features = false } -wasmparser = { version = "0.77", optional = true, default-features = false } +wasmparser = { version = "0.78", optional = true, default-features = false } target-lexicon = { version = "0.11", default-features = false } enumset = "1.0" hashbrown = { version = "0.9", optional = true } diff --git a/lib/compiler/src/translator/sections.rs b/lib/compiler/src/translator/sections.rs index 0cd234a57..faac99254 100644 --- a/lib/compiler/src/translator/sections.rs +++ b/lib/compiler/src/translator/sections.rs @@ -445,6 +445,7 @@ pub fn parse_name_section<'data>( } } wasmparser::Name::Local(_) => {} + wasmparser::Name::Unknown { .. } => {} }; } Ok(()) diff --git a/lib/deprecated/runtime-core/Cargo.lock b/lib/deprecated/runtime-core/Cargo.lock index 5cd56d0c4..c840e25d5 100644 --- a/lib/deprecated/runtime-core/Cargo.lock +++ b/lib/deprecated/runtime-core/Cargo.lock @@ -56,16 +56,6 @@ dependencies = [ "rustc-demangle", ] -[[package]] -name = "bincode" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30d3a39baa26f9651f17b375061f3233dde33424a8b72b0dbe93a68a0bc896d" -dependencies = [ - "byteorder", - "serde", -] - [[package]] name = "bitflags" version = "1.2.1" @@ -410,25 +400,11 @@ dependencies = [ "stable_deref_trait", ] -[[package]] -name = "goblin" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "669cdc3826f69a51d3f8fc3f86de81c2378110254f678b8407977736122057a4" -dependencies = [ - "log", - "plain", - "scroll", -] - [[package]] name = "hashbrown" -version = "0.8.1" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34f595585f103464d8d2f6e9864682d74c1601fed5e07d62b1c9058dba8246fb" -dependencies = [ - "autocfg", -] +checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" [[package]] name = "hermit-abi" @@ -453,9 +429,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "indexmap" -version = "1.5.0" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b88cd59ee5f71fea89a62248fc8f387d44400cefe05ef548466d61ced9029a7" +checksum = "824845a0bf897a9042383849b02c1bc219c2383772efcd5c6f9766fa4b81aef3" dependencies = [ "autocfg", "hashbrown", @@ -565,6 +541,27 @@ dependencies = [ "cfg-if 0.1.10", ] +[[package]] +name = "loupe" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d79b0cc3aa7552a59274f642a0a6e7419b7f5438aba06a0a82825918ba69f0e6" +dependencies = [ + "indexmap", + "loupe-derive", + "rustversion", +] + +[[package]] +name = "loupe-derive" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a545b22ceeec36de91c46206afd384c17946bd62b95b76e927a2adb77fbdcc0" +dependencies = [ + "quote", + "syn", +] + [[package]] name = "mach" version = "0.3.2" @@ -656,6 +653,7 @@ checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4" dependencies = [ "crc32fast", "indexmap", + "wasmparser 0.57.0", ] [[package]] @@ -699,12 +697,6 @@ dependencies = [ "ucd-trie", ] -[[package]] -name = "plain" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" - [[package]] name = "ppv-lite86" version = "0.2.8" @@ -746,6 +738,26 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "ptr_meta" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6de4703776ff261fe3cbf05c8781f129b284e57ee35a785fe6c92b1dcf93a612" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53005b9863728f508d3f23ae37e03d60986a01b65f7ae8397dcebaa1d5e54e10" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "quote" version = "1.0.7" @@ -877,6 +889,29 @@ dependencies = [ "winapi", ] +[[package]] +name = "rkyv" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17c9ecd78453f7b64de7f61d168f4ade7b85433fe9102723fc1c39d5ffb305ac" +dependencies = [ + "memoffset 0.6.1", + "ptr_meta", + "rkyv_derive", + "seahash", +] + +[[package]] +name = "rkyv_derive" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e3fccbf52ee0b76a29417794226e225798dd6bd32e40debd9e284cecc20dd76" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "rustc-demangle" version = "0.1.16" @@ -898,6 +933,12 @@ dependencies = [ "semver 0.9.0", ] +[[package]] +name = "rustversion" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb5d2a036dc6d2d8fd16fde3498b04306e29bd193bf306a57427019b823d5acd" + [[package]] name = "scopeguard" version = "1.1.0" @@ -905,24 +946,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] -name = "scroll" -version = "0.10.1" +name = "seahash" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb2332cb595d33f7edd5700f4cbf94892e680c7f0ae56adab58a35190b66cb1" -dependencies = [ - "scroll_derive", -] - -[[package]] -name = "scroll_derive" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e367622f934864ffa1c704ba2b82280aab856e3d8213c84c5720257eb34b15b9" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" [[package]] name = "semver" @@ -1148,6 +1175,7 @@ version = "1.0.2" dependencies = [ "cfg-if 0.1.10", "indexmap", + "loupe", "more-asserts", "target-lexicon", "thiserror", @@ -1180,6 +1208,8 @@ name = "wasmer-compiler" version = "1.0.2" dependencies = [ "enumset", + "loupe", + "rkyv", "serde", "serde_bytes", "smallvec", @@ -1187,7 +1217,7 @@ dependencies = [ "thiserror", "wasmer-types", "wasmer-vm", - "wasmparser", + "wasmparser 0.78.0", ] [[package]] @@ -1195,8 +1225,10 @@ name = "wasmer-compiler-cranelift" version = "1.0.2" dependencies = [ "cranelift-codegen", + "cranelift-entity", "cranelift-frontend", "gimli 0.23.0", + "loupe", "more-asserts", "rayon", "serde", @@ -1213,11 +1245,12 @@ version = "1.0.2" dependencies = [ "byteorder", "cc", - "goblin", "inkwell", "itertools", "lazy_static", "libc", + "loupe", + "object 0.23.0", "rayon", "regex", "rustc_version", @@ -1237,6 +1270,7 @@ dependencies = [ "dynasm", "dynasmrt", "lazy_static", + "loupe", "more-asserts", "rayon", "serde", @@ -1261,8 +1295,8 @@ name = "wasmer-engine" version = "1.0.2" dependencies = [ "backtrace", - "bincode", "lazy_static", + "loupe", "memmap2", "more-asserts", "rustc-demangle", @@ -1279,11 +1313,11 @@ dependencies = [ name = "wasmer-engine-jit" version = "1.0.2" dependencies = [ - "bincode", "cfg-if 0.1.10", + "leb128", + "loupe", "region", - "serde", - "serde_bytes", + "rkyv", "wasmer-compiler", "wasmer-engine", "wasmer-types", @@ -1295,10 +1329,11 @@ dependencies = [ name = "wasmer-engine-native" version = "1.0.2" dependencies = [ - "bincode", "cfg-if 0.1.10", "leb128", "libloading", + "loupe", + "rkyv", "serde", "tempfile", "tracing", @@ -1342,7 +1377,9 @@ dependencies = [ name = "wasmer-types" version = "1.0.2" dependencies = [ - "cranelift-entity", + "indexmap", + "loupe", + "rkyv", "serde", "thiserror", ] @@ -1356,9 +1393,11 @@ dependencies = [ "cfg-if 0.1.10", "indexmap", "libc", + "loupe", "memoffset 0.6.1", "more-asserts", "region", + "rkyv", "serde", "thiserror", "wasmer-types", @@ -1367,9 +1406,15 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.74.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a4d63608421d9a22d4bce220f2841f3b609a5aaabd3ed3aeeb5fed2702c3c78" +checksum = "32fddd575d477c6e9702484139cf9f23dcd554b06d185ed0f56c857dd3a47aa6" + +[[package]] +name = "wasmparser" +version = "0.78.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c7a8b20306d43c09c2c34e0ef68bf2959a11b01a5cae35e4c5dc1e7145547b6" [[package]] name = "wast" diff --git a/lib/engine/src/resolver.rs b/lib/engine/src/resolver.rs index a447899c3..61f210100 100644 --- a/lib/engine/src/resolver.rs +++ b/lib/engine/src/resolver.rs @@ -221,12 +221,27 @@ pub fn resolve_imports( host_function_env_initializers.push(import_function_env); } - Export::Table(ref t) => { - table_imports.push(VMTableImport { - definition: t.from.vmtable(), - from: t.from.clone(), - }); - } + Export::Table(ref t) => match import_index { + ImportIndex::Table(index) => { + let import_table_ty = t.from.ty(); + let expected_table_ty = &module.tables[*index]; + if import_table_ty.ty != expected_table_ty.ty { + return Err(LinkError::Import( + module_name.to_string(), + field.to_string(), + ImportError::IncompatibleType(import_extern, export_extern), + )); + } + + table_imports.push(VMTableImport { + definition: t.from.vmtable(), + from: t.from.clone(), + }); + } + _ => { + unreachable!("Table resolution did not match"); + } + }, Export::Memory(ref m) => { match import_index { ImportIndex::Memory(index) => {