Commit Graph

5637 Commits

Author SHA1 Message Date
Andrew Brown
3f53bcb740 Remove dependency on hard-coded ordering of x86 register banks
With this change, register banks can now be re-ordered and other components (e.g. unwinding, regalloc) will no longer break. The previous behavior assumed that GPR registers always started at `RegUnit` 0.
2020-03-06 10:53:22 -08:00
Andrew Brown
518c7526d2 Fix incorrect register calculation in RegBank::unit_by_name 2020-03-06 10:53:22 -08:00
Andrew Brown
2c41648471 Wire up AVX-related settings with runtime detection in cranelift-native 2020-03-06 10:53:22 -08:00
Andrew Brown
baf71f5a5f Add AVX-related settings
Many more settings are possible but this subset is required in order to distinguish instructions that can use EVEX encodings.
2020-03-06 10:53:22 -08:00
Pat Hickey
e47de6f605 Merge pull request #1214 from froydnj/trap-exposure
cranelift-module: expose trap information when defining functions
2020-03-05 14:17:19 -08:00
Alex Crichton
3179dcf6f1 Update Cranelift's documentation after the merger. (#1238)
Update the documentation for the merger, and also for various changes in
Cranelift. Remove some old obsolete documentation, and convert the remaining
Sphinx files to Markdown. Some of the remaining content is still out of
date, but this is a step forward.
2020-03-05 15:51:12 -06:00
Nick Fitzgerald
fc692f6d36 Merge pull request #1235 from fitzgen/ci-fuzz-corpora-backtraces
CI: Run fuzzer corpora with `RUST_BACKTRACE=1`
2020-03-05 11:21:09 -08:00
Alex Crichton
85fab0ab56 Expand Func documentation, rewrite Rust embed docs (#1236)
This commit expands the documentation of the `Func` type as well as
updating the Rust embedding tutorial with more recent APIs. I wanted to
also leave space in the Rust tutorial to get more ambitious over time
with what it's documenting, but I stopped around here, curious to see
what others think about it!
2020-03-05 12:54:42 -06:00
Nick Fitzgerald
ab317bc0dd CI: Run fuzzer corpora with RUST_BACKTRACE=1
This way if we get regression panics -- like in
https://github.com/bytecodealliance/wasmtime/pull/1192 -- then we actually have
some hope of debugging them properly.
2020-03-05 10:00:48 -08:00
Yury Delendik
6f88fd9af1 Disable/ignore debug_dwarf tests in "cargo test" (#1233) 2020-03-05 11:53:39 -06:00
Nathan Froyd
2bb3096342 change interfaces to use slices instead of Vec 2020-03-05 10:19:01 -05:00
Ryan Hunt
4aa8776a9b Skip non-branching blocks now that we're using basic blocks
This is a rebase of [1]. In the long term, we'll want to simplify these
analysis passes. For now, this is simple and will reduce the number of
instructions processed in certain cases.

[1] https://github.com/bytecodealliance/cranelift/pull/866
2020-03-05 16:11:13 +01:00
Jakub Konka
135a48ca7e wasi-common error cleanup: part 1, yanix (#1226)
* Reuse std::io::Error for raw *nix errno

This commit removes custom `yanix::Errno` and instead (as was
previously suggested) reuses `std::io::Error` to generate and wrap
raw *nix errno value.

* Update wasi-common to use new Yanix error type

This commit updates `wasi-common` to use new way of handling raw
OS error in `yanix`; i.e., via re-use of `std::io::Error` instead
of a custom `Errno` enum.

* Fix formatting

* Unwrap if io::Error created from raw OS error

This commit calls `unwrap` on `err` if that one was created via
`io::Error::last_os_error()`. It also refactors error matching
in several syscalls on the BSD platform (mainly).
2020-03-05 10:08:28 +01:00
Alex Crichton
19d8ff2bf5 Remove reader_parse_test/translate_module fuzz targets (#1212)
This commit removes the two fuzz targets that we imported from cranelift
when cranelift merged in. These have both uncovered a few issues in the
fuzz targets themselves, for example:

* `translate_module` - this doesn't verify the wasm is valid a head of
  time and cranelift is known to panic on translating invalid wasm
  modules. We also already do a lot of fuzzing of translation of wasm
  modules, so this isn't necessarily buying us anything over what we're
  already fuzzing.

* `reader_parse_test` - discovered in #1205 we already found some "bugs"
  in this but it may not necessarily rise to the level of "needs to be
  run on oss-fuzz for us to find more bugs" yet. It looks like this is
  still somewhat internal so we can re-enable when we've got folks to
  fix the fuzz bugs coming in.

Closes #1205
2020-03-04 13:54:11 -06:00
Yury Delendik
d5c0f6bff8 Fix infinite loop in DWARF address transform algorithm (#1228) 2020-03-04 13:31:14 -06:00
Maciej Woś
8acfdbdd8a add more wrappers and getters (#1222) 2020-03-03 22:58:11 -06:00
Peter Huene
1a15cec63b Merge pull request #1217 from eqrion/kill-ebb/typos
Rename 'an block' to 'a block'
2020-03-03 11:59:59 -08:00
Ryan Hunt
07f335dca6 Rename 'an block' to 'a block'
Missed this in the automatic rename of 'Ebb' to 'Block'.
2020-03-03 13:21:13 -06:00
Nathan Froyd
0f49a830c9 cranelift-module: expose trap information when defining functions
The current interface of `cranelift-module` requires consumers who want
to be informed about traps to discover that information through
`Module::Product`, which is backend-specific.  Since it's advantageous
to manipulate this information in a backend-agnostic way, this patch
changes `Module::define_function{,_bytes}` to return information about
the traps contained in the function being defined.
2020-03-03 11:37:15 -05:00
Alex Crichton
77e17d8f71 Add a wasmtime-specific wasmtime_wat2wasm C API (#1206)
* Add a wasmtime-specific `wasmtime_wat2wasm` C API

This commit implements a wasmtime-specific C API for converting the text
format to the binary format. An upstream spec issue exists for adding
this to the C API, but in the meantime we can experiment with our own
version of this API and use it in the C# extension, for example!

Closes #1000

* Reorder arguments

* Use wasm_byte_vec_t for input `*.wat`

* Mark wat input as const

* Return an error message and use `fixed`

* Actually include the error message

* Use `fixed` in `Module.cs` as well
2020-03-03 10:29:20 -06:00
Yury Delendik
732c646bec Add wasmtime.h and wasi.h to package (#1211) 2020-03-03 09:21:33 -06:00
Alex Crichton
f7c2a58d23 Disable caches in CLI tests (#1204)
Avoids creating extraneous directories while testing in your home
directory.

Closes #1197
2020-03-02 11:43:47 -06:00
Alex Crichton
fe9debfed3 Update WASI submodule to update transitive wast crate (#1207)
One less version to build!
2020-03-02 11:34:04 -06:00
Darin Morrison
d68437e1e6 Update SIMD tests to use hex literals 2020-03-02 08:28:59 -08:00
Darin Morrison
c459579396 Add tests for hex parsing 2020-03-02 08:28:59 -08:00
Darin Morrison
2300eec8a5 Implement hex parsing for imm16 and imm32 2020-03-02 08:28:59 -08:00
Takanori Ishibashi
3848bf54f7 Fix link (#1203) 2020-03-02 08:57:28 -06:00
Alex Crichton
8597930eed rename PassiveElemIndex to ElemIndex and same for PassiveDataIndex (#1188)
* rename PassiveElemIndex to ElemIndex and same for PassiveDataIndex (#1411)

* rename PassiveDataIndex to DataIndex

* rename PassiveElemIndex to ElemIndex

* Apply renamings to wasmtime as well

* Run rustfmt

Co-authored-by: csmoe <csmoe@msn.com>
2020-03-02 08:55:25 -06:00
Nick Fitzgerald
2c5be49af0 Merge pull request #1193 from fitzgen/limit-rayon-to-one-thread-during-fuzzing
Limit rayon to one thread during fuzzing
2020-02-28 21:42:53 -08:00
Nick Fitzgerald
4866fa0e6a Limit rayon to one thread during fuzzing
This should enable more deterministic execution.
2020-02-28 18:35:09 -08:00
Alex Crichton
91768e5f32 Merge pull request #1190 from alexcrichton/fix-clif-tools
Fix build of cranelift-tools
2020-02-28 19:10:19 -06:00
Nick Fitzgerald
99a37a7e61 Merge pull request #1189 from fitzgen/fuzzing-api-calls-timeouts
Fuzzing api calls timeouts
2020-02-28 16:30:04 -08:00
Alex Crichton
4bd9eb7402 Fix build of cranelift-tools
Accidentally left it out of the workspace members!
2020-02-28 16:08:49 -08:00
Nick Fitzgerald
6e2bb9ebdd Limit the number of exported function calls we make in the API calls fuzzer
This should fix some fuzzing timeouts like
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=20847
2020-02-28 15:48:24 -08:00
Nick Fitzgerald
f2fef600c6 Implement Arbitrary::size_hint for WasmOptTtf 2020-02-28 15:48:24 -08:00
Nick Fitzgerald
5ed9796ef3 Implement Arbitrary::size_hint for ApiCalls 2020-02-28 15:48:24 -08:00
Nick Fitzgerald
506a83d8ef Update to arbitrary@0.4.0 and libfuzzer-sys@0.3.1 2020-02-28 15:48:24 -08:00
Alex Crichton
e287a87948 Merge pull request #1021 from ggreif/patch-1
wasmtime now in Bytecode Alliance
2020-02-28 17:40:33 -06:00
Alex Crichton
86ff6d7aef Merge pull request #1019 from alexcrichton/cranelift-merge-for-realz
Merge the Cranelift repository into Wasmtime
2020-02-28 17:13:14 -06:00
Gabor Greif
d7b0644cac wasmtime now in Bytecode Alliance 2020-02-28 23:16:27 +01:00
Alex Crichton
22b95e8bc0 Remove more redundant files 2020-02-28 12:31:46 -08:00
Alex Crichton
9050027e8b Remove redundant profile config in cranelift/Cargo.toml 2020-02-28 12:30:00 -08:00
Alex Crichton
d7ec76b715 Remove some stray files 2020-02-28 12:29:12 -08:00
Alex Crichton
87757965f4 Merge pull request/issue templates 2020-02-28 12:15:14 -08:00
Alex Crichton
0dbfad3aa7 Fix broken API doc links (#1020)
Also enable the lint to guarantee they stay un-broken.
2020-02-28 12:44:27 -06:00
Alex Crichton
986f9f79e1 Merge the CONTRIBUTING.md files 2020-02-28 09:22:06 -08:00
Alex Crichton
8efca7da0d Merge cranelift doc generation CI 2020-02-28 09:17:53 -08:00
Alex Crichton
0c33696731 Remove cranelift scripts, we'll merge them into scripts eventually 2020-02-28 09:17:53 -08:00
Alex Crichton
7beea5ee88 Move determinism check to wasmtime's CI 2020-02-28 09:17:53 -08:00
Alex Crichton
435735d13c Remove fuzzit integration
wasmtime is covered by oss-fuzz which should cover large swaths of
cranelift as well, so let's remove that from CI and add it back later if
it's necessary.
2020-02-28 09:16:05 -08:00