Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multi value! And even more fuzzing! #124

Merged
merged 12 commits into from Sep 5, 2019
Merged

Commits on Sep 4, 2019

  1. Make InstrSeqs hold TypeIds for multi-value

    Instead of holding a couple of `Box<[ValType]>`s for parameters and results, now
    they more accurately reflect the spec (and the multi-value extension of it). For
    simple, MVP wasm, they hold the optional return value type directly inline. For
    multi-value, they reference a `TypeId`. See the `NB` comment above
    `InstrSeqType` for details about why this split is beneficial, and we
    shouldn't *only* use `TypeId`.
    fitzgen committed Sep 4, 2019
    Configuration menu
    Copy the full SHA
    11f09d4 View commit details
    Browse the repository at this point in the history
  2. Add support for multi-value Wasm!

    This commit adds support for parsing, emitting, and manipulating multi-value
    Wasm!
    fitzgen committed Sep 4, 2019
    Configuration menu
    Copy the full SHA
    f5d4fc9 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    fb6a699 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    7764ab6 View commit details
    Browse the repository at this point in the history
  5. fuzz: Make the fuzzing infrastructure work with pluggable RNGs

    This will let us define custom RNGs that are controlled via libFuzzer and/or
    AFL, so that we can get coverage-guided fuzzing instead of purely random
    fuzzing.
    fitzgen committed Sep 4, 2019
    Configuration menu
    Copy the full SHA
    e1ab888 View commit details
    Browse the repository at this point in the history
  6. Add support for fuzzing with libFuzzer via cargo fuzz

    Re-uses basically all of our existing fuzzing infrastructure, but uses libfuzzer
    to drive the "RNG" values that we generate Wat with. This lets us combine the
    benefits of coverage-guided fuzzing with our existing "structured" fuzzing.
    fitzgen committed Sep 4, 2019
    Configuration menu
    Copy the full SHA
    d52b9f6 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    f3a23b8 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    5bd08ce View commit details
    Browse the repository at this point in the history
  9. Sort types deterministically before emitting them

    This is not /strictly/ necessary because they are otherwise emitted in the order
    that they are added, which is usually the order that they are parsed. However,
    if one were adding types in a non-deterministic order, then we would emit types
    non-deterministically. Overall, this is just a nice robustness addition.
    fitzgen committed Sep 4, 2019
    Configuration menu
    Copy the full SHA
    df2403d View commit details
    Browse the repository at this point in the history
  10. Module::emit_wasm is infallible

    And so its signature should reflect that.
    fitzgen committed Sep 4, 2019
    Configuration menu
    Copy the full SHA
    b8ce4a1 View commit details
    Browse the repository at this point in the history
  11. Configuration menu
    Copy the full SHA
    e79b0de View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    3c0b187 View commit details
    Browse the repository at this point in the history