Commit Graph

114 Commits

Author SHA1 Message Date
Sergey Pepyakin 3657101d9a Update script a bit. 2018-06-22 13:12:56 +03:00
Sergey Pepyakin 52ed4bb589 Stack hash. 2018-04-18 10:46:47 +03:00
Sergey Pepyakin 959503b49d Update parity-wasm 2018-04-18 10:46:47 +03:00
Sergey Pepyakin 21e4d28949 Update honggfuzz to 0.5.9. 2018-04-18 10:46:47 +03:00
Sergey Pepyakin 3ace65501c Update parity-wasm. 2018-04-18 10:46:47 +03:00
Sergey Pepyakin 7b4bc1c9e8 Impl hfuzz 2018-04-18 10:46:47 +03:00
Sergey Pepyakin fa7564692e Add honggfuzz. 2018-04-18 10:46:47 +03:00
Sergey Pepyakin 84a16a42f9 Version of libfuzzer pinned 2018-04-18 10:46:47 +03:00
Sergey Pepyakin c626208a0a Oops. Revert to temp file creation. 2018-04-18 10:46:42 +03:00
Sergey Pepyakin 213bc160bf Refactor 2018-04-18 10:46:39 +03:00
Sergey Pepyakin 7100f6c31b Also stderr 2018-04-18 10:46:38 +03:00
Sergey Pepyakin 067c08302d Redirect output of spec to /dev/null 2018-04-18 10:46:38 +03:00
Sergey Pepyakin 6c40a5b0b6 Add fuzzing against spec interpreter. 2018-04-18 10:46:37 +03:00
Sergey Pepyakin a2aa3ddb25 Update README.md 2018-04-17 09:41:26 +03:00
Sergey Pepyakin 7aecc55173 Bump version to 0.1.2 2018-04-05 13:12:39 +03:00
Pierre Krieger 4c2995ca98 Fix the name of the 32bits feature (#82)
So that it matches the Cargo.toml
2018-04-04 18:14:43 +03:00
Sergey Pepyakin d12a04f8ff
Publish with externvals (#81)
* Publish with_externvals constructor.
* Add examples to Signature::new.
* Use Iterators for ExternVal imports
2018-03-29 18:43:44 +03:00
NikVolf a6b5574704 bump version 2018-03-24 17:57:28 +03:00
Sergey Pepyakin 86bbd96a33
Require func_type (not func) for func import. (#79) 2018-03-22 17:49:30 +03:00
Sergey Pepyakin 654426b147 Rename feature opt-in-32bit 2018-03-21 11:01:13 +03:00
Sergey Pepyakin 527b9e0cbc Prepare for 0.1.0 (#77) 2018-03-21 10:51:51 +03:00
Sergey Pepyakin 522fa20983
Fix br_if and then tee_local validation. (#76) 2018-03-20 13:09:51 +03:00
Sergey Pepyakin 6253dd6fdf Args refactor (#71)
* Refactor TryInto → FromRuntimeValue.

Replace `TryInto<T, E>` with `FromRuntimeValue`.

The main difference is that `FromRuntimeValue` is implemented for the concrete type of the value we create, rather than on `RuntimeValue`. This makes more sense to me and seems more clear.

The `try_into` method is now implemented on `RuntimeValue` itself.

And finally, `FromRuntimeValue` has been made public.

* Impl AsRef<[RuntimeValue]> for RuntimeArgs

This impl can be used as an escape hatch if the user wants to use the inner slice.

* Little doc fixes for RuntimeArgs.
2018-03-14 01:23:12 +03:00
Sergey Pepyakin 9fa933ccd6
Use f32/f64::from_bits. (#72)
And also enable:

- "conversions",
- "float_exprs",
- "float_literals",
- "float_memory",

tests.
2018-03-12 12:37:43 +01:00
Sergey Pepyakin 0c277abacb
Implement Error for Trap (#73) 2018-03-12 12:37:12 +01:00
Sergey Pepyakin 7c88c6ad65
Fix br_table validation (#67)
Fixes #63

Fix is simple: all labels refered by the br_table instruction must have same value type (or NoResult in case if they don't have result). So we just take the default label and check other labels against it.
2018-02-23 18:00:16 +03:00
Sergey Pepyakin 8a96bc2649
Make it easier to work with spec testsuite (#68)
If module will failed to load, one could just check line number of the original script.
2018-02-23 17:57:35 +03:00
Nikolay Volf 5bb5b6809c Exclude test directory for package (#65)
* Exclude test directory for package

* Update Cargo.toml

* Also exclude fuzz and deexclude non-existant spec
2018-02-23 00:45:27 +03:00
Nikolay Volf f1a3f06d5e
remove stray println (#66) 2018-02-21 23:00:31 +03:00
Nikolay Volf 6b6961bcb6
Bump parity-wasm version (#64) 2018-02-21 18:00:32 +03:00
Sergey Pepyakin 73c1451a84 Bump parity-wasm version to 0.25 (#62) 2018-02-19 19:32:38 +03:00
Sergey Pepyakin 9140e869e2 Update spec testsuite; Fix instantiation bug (#61)
The bug was about instantiating a module with elements segment being out-of-bounds, however, it was with zero length. E.g.:

```
(module
  (table 0 anyfunc)
  (elem (i32.const 1))
)
```

In our impl there was no out-of-bounds, because there was no attempt to set any table entry.

This change adds early check for specifically this case.
2018-02-19 18:59:18 +03:00
Sergey Pepyakin d02b0f8527
Add plain load to fuzzer (#58) 2018-02-15 20:34:56 +03:00
Sergey Pepyakin d11dffcf51 Use memory_units from crates.io. 2018-02-14 18:44:11 +03:00
Sergey Pepyakin 6cf6a31970
Merge signature mismatch traps (#57) 2018-02-14 18:27:22 +03:00
Sergey Pepyakin 863f2247a3
Move spec testsuite into tests. (#56)
Move all spec testsuite into `/tests` directory.

So it means that several changes will happen:

- Compilation will share common dependencies in target directory. This should make CI builds faster. This also should reduce space requirements.
- Common Cargo.lock file
- `cargo test` will include spec tests.
- `cargo check --tests` will also include spec tests.
2018-02-14 18:03:39 +03:00
Sergey Pepyakin c99ee1d986
Use wabt spec module (#48)
Use wabt-rs script parser to parse official testsuite.
2018-02-14 13:40:31 +03:00
Sergey Pepyakin 07fbe31ec2
Add `instantiate` bin (#53)
This change adds a handy utility to test whether the given module deserializes, validates and instantiates successfully.
2018-02-14 13:36:27 +03:00
Sergey Pepyakin 435bae5898
Use wasmi ValueType for RuntimeValue instead pwasm (#52)
`RuntimeValue::default` takes `parity_wasm::elements::ValueType` as an input parameter. 

This change fixes it to be wasmi's `ValueType`.
2018-02-14 13:36:17 +03:00
Sergey Pepyakin 4e8d113f84
Remove old fixtures. (#54)
Remove all old test fixtures that migrated in this repo from the parity-wasm.

Also, use .wast files instead of compiled .wasm. I believe this is more convenient than testing a .wasm file and having a corresponding .wast file, which might go out of sync.
2018-02-14 13:33:24 +03:00
Sergey Pepyakin 93423d9393
Update wabt-rs version (#55) 2018-02-13 23:14:38 +03:00
Sergey Pepyakin e5056e7871 Add newline in compile_error!
This doesn't change the actual message.
2018-02-13 18:17:38 +03:00
Sergey Pepyakin e273b9e40a Just bump framestack limits. (#50)
These limits seems to be picked arbitrary, and I just made it arbitrary larger.

We need to reconsider these limits, ideally providing to user a way to customize the limits.

FWIW, When the last time I've tried to run gcc's torture testsuite with wasmi it also bumped into this limit.

Fixes #41.
2018-02-13 09:29:04 +03:00
Sergey Pepyakin 31a70aaa8d
Fuzz wasmparser (#47) 2018-02-09 22:41:02 +03:00
Sergey Pepyakin 483736b1bd
Memory units (#42)
* Initial implementation

* Not use grow as it is makes debug builds very slow

* Use Pages::BYTE_SIZE for LINEAR_MEMORY_PAGE_SIZE

* Tidy docs.

* Use memory_units from git.
2018-02-09 16:45:21 +03:00
Sergey Pepyakin a3ad4b0e49
Remove NATURAL_ALIGNMENT (#46) 2018-02-09 16:00:19 +03:00
Sergey Pepyakin 6e4bbb7490 Opt in for 32bit platforms (#44) 2018-02-09 11:20:21 +03:00
Sergey Pepyakin c0ed715b37
Update testsuite (#39)
* ok_or_else in stack + top_mut.

* Model polymorphic stack explicitly

* Upgrade wasm testsuite.

* Update fixtures.

* Validate duplicate exports.

* Fix and clean spec runner.

* with_capcity for HashSet
2018-02-08 17:52:16 +03:00
Sergey Pepyakin 528f468ef2 Minor fixes in docs (#38)
* Run nightly only if NIGHTLY_TOOLCHAIN is defined

* Minor fixes in docs.
2018-02-06 23:10:58 +03:00
Sergey Pepyakin 367f17989b Refine errors (#36)
* Get rid of Stack error

* Add UnexpectedSignature error and remove Value err

* Publish FuncInstance::invoke

* Rename Trap to TrapKind

* Replace Trap with struct. Enum is now TrapKind

* Fixes

* Update value.rs

* Avoid reversing parameter types iter.

* Add impl From<TrapKind> for Trap

* Remove redundant clone in prepare_function_args.

* Use .into() to convert TrapKind into Trap
2018-02-06 14:14:57 +03:00