Commit Graph

7815 Commits

Author SHA1 Message Date
Pat Hickey
72b207de2e path_link: some improvements required by windows
* need to close the handle to the subdirectory before its legal to
  delete it
* windows doesnt give us a way to distinguish between an ERRNO_PERM and
  an ERRNO_ACCES, so lets accept either one
2021-01-25 14:35:02 -08:00
Chris Fallin
2c729e6c3b Merge pull request #2601 from kaseyc/i128
Add additional tests for icmp-i128. Fixes #1136.
2021-01-25 14:04:01 -08:00
Kasey Carrothers
c6c5fe48b6 Add i128.icmp run tests for the x64 backend. 2021-01-25 13:02:21 -08:00
Kasey Carrothers
c55c5e0506 Add additional tests for icmp-i128. Fixes #1136.
Tests added:
  * eq with nonzero values
  * gt with nonzero values
  * ge with nonzero values
2021-01-25 13:02:20 -08:00
Pat Hickey
2c6bde5ee4 elaborate! 2021-01-25 12:54:13 -08:00
Pat Hickey
7fd3d58b23 enumerate windows test failures, move the file 2021-01-25 12:20:10 -08:00
Pat Hickey
17a82c5b88 table: fix up errnos. trap on internal failures. 2021-01-25 12:16:07 -08:00
Pat Hickey
957c434b67 ErrorExt: trap convenience method 2021-01-25 12:16:01 -08:00
Pat Hickey
634e911a4b tests: directory seeking is actually prohibited! but the test was wrong
* path_open of a directory without OFLAGS_DIRECTORY worked on linux,
  but fortunately not on windows!
* the errno is BADF instead of NOTCAPABLE for fd_seek on a directory
* no way for a directory to have the FD_SEEK right.
2021-01-25 12:13:02 -08:00
Chris Fallin
443fac69e5 Merge pull request #2603 from cfallin/fix-cpuid
Fix cargo-deny issue with raw-cpuid advisory.
2021-01-25 09:12:30 -08:00
Chris Fallin
3c5416446c Fix cargo-deny issue with raw-cpuid advisory.
cargo-deny tells us that we should upgrade raw-cpuid to v9.0.0. This
new version also seems to lack the `nightly` feature (perhaps it has
been incorporated into the base functionality) so I had to remove this
feature selector to build.
2021-01-25 08:32:06 -08:00
Frank Denis
a0fad6065a Add support for the experimental wasi-crypto APIs (#2597)
* Add support for the experimental wasi-crypto APIs

The sole purpose of the implementation is to allow bindings and
application developers to test the proposed APIs.

Rust and AssemblyScript bindings are also available as examples.

Like `wasi-nn`, it is currently disabled by default, and requires
the `wasi-crypto` feature flag to be compiled in.

* Rename the wasi-crypto/spec submodule

* Add a path dependency into the submodule for wasi-crypto

* Tell the publish script to vendor wasi-crypto
2021-01-25 09:32:58 -06:00
Pat Hickey
2b70ea8b91 windows scheduler passes tests
unfortunately this does essentially nothing to convince me of its
correctness
2021-01-22 18:26:45 -08:00
Chris Fallin
95822a54f2 Merge pull request #2565 from cfallin/debug-value-labels
Detailed debug-info (DWARF) support in new backends (initially x64).
2021-01-22 17:22:13 -08:00
Chris Fallin
557a932757 Fix GitHub Actions config (actually run gdb tests on new backend).
I had missed that the CI config didn't actually run the tests, because
(I think) `matrix.target` is not set by default (?). All of our hosts
are native x86-64, so we can just gate on OS (Ubuntu) instead.

I also discovered that while I had been testing with the gdb tests
locally, when *all* `debug::*` tests are run, there are two that do not
pass on the new backend because of specific differences in compiled
code. One is a value-lifetime issue (the value is "optimized out" at the
point the breakpoint is set) and the other has to do with basic-block
order (it is trying to match against hardcoded machine-code offsets
which have changed).
2021-01-22 16:42:40 -08:00
Chris Fallin
f54d0d05c7 Address review comments. 2021-01-22 16:02:29 -08:00
Pat Hickey
19254bfd72 error mapping for windows! 2021-01-22 15:44:32 -08:00
Pat Hickey
423973a8ea push the error types conversion all the way through 2021-01-22 15:29:09 -08:00
Pat Hickey
1d8070b734 wasi-c2: completely redo how errors work 2021-01-22 15:03:16 -08:00
Pat Hickey
a06c4fbe1a make a pipe filetype, reorder filetype enum 2021-01-22 11:37:39 -08:00
Alex Crichton
55b0e8b9e5 Fix C API function name of setting max instances (#2598)
Forgot the trailing `_set` at the end...
2021-01-22 09:55:28 -06:00
Pat Hickey
86d369c72a inline poll from yanix 2021-01-21 18:17:49 -08:00
Pat Hickey
9e0d295f8c use unsafe to mark reopen_with_fdflags as having special safety features 2021-01-21 18:08:15 -08:00
Pat Hickey
69b7352332 various stdio fixes 2021-01-21 17:57:12 -08:00
Pat Hickey
f1a5dce716 change set_fdflags to reopen_with_fdflags 2021-01-21 17:56:03 -08:00
Pat Hickey
a46c2ad0aa split poll tests up, only one requires "real" stdio 2021-01-21 16:54:40 -08:00
Pat Hickey
12056885eb fix preopen dir to work on windows 2021-01-21 16:08:49 -08:00
Chris Fallin
7e12abce71 Fix a few comment typos and add a clarifying comment. 2021-01-21 16:01:46 -08:00
Chris Fallin
997fab55d5 Skip value-label analysis if no value labels are present. 2021-01-21 15:59:52 -08:00
Chris Fallin
c84d6be6f4 Detailed debug-info (DWARF) support in new backends (initially x64).
This PR propagates "value labels" all the way from CLIF to DWARF
metadata on the emitted machine code. The key idea is as follows:

- Translate value-label metadata on the input into "value_label"
  pseudo-instructions when lowering into VCode. These
  pseudo-instructions take a register as input, denote a value label,
  and semantically are like a "move into value label" -- i.e., they
  update the current value (as seen by debugging tools) of the given
  local. These pseudo-instructions emit no machine code.

- Perform a dataflow analysis *at the machine-code level*, tracking
  value-labels that propagate into registers and into [SP+constant]
  stack storage. This is a forward dataflow fixpoint analysis where each
  storage location can contain a *set* of value labels, and each value
  label can reside in a *set* of storage locations. (Meet function is
  pairwise intersection by storage location.)

  This analysis traces value labels symbolically through loads and
  stores and reg-to-reg moves, so it will naturally handle spills and
  reloads without knowing anything special about them.

- When this analysis converges, we have, at each machine-code offset, a
  mapping from value labels to some number of storage locations; for
  each offset for each label, we choose the best location (prefer
  registers). Note that we can choose any location, as the symbolic
  dataflow analysis is sound and guarantees that the value at the
  value_label instruction propagates to all of the named locations.

- Then we can convert this mapping into a format that the DWARF
  generation code (wasmtime's debug crate) can use.

This PR also adds the new-backend variant to the gdb tests on CI.
2021-01-21 15:59:49 -08:00
Pat Hickey
16b42a5707 fix 2021-01-21 14:14:05 -08:00
Pat Hickey
85c3b73b4e stdio compiles on windows! 2021-01-21 13:51:18 -08:00
Alex Crichton
4a351ab7fe Update a number of dependencies (#2594)
This commit goes through the dependencies that wasmtime has and updates
versions where possible. This notably brings in a wasmparser/wast update
which has some simd spec changes with new instructions. Otherwise most
of these are just routine updates.
2021-01-21 15:49:13 -06:00
Alex Crichton
57c686d49d Refactor instantiation to be more async-friendly (#2596)
Instantiation right now uses a recursive `instantiate` function since it
was relatively easy to write that way, but this is unfortunately not
factored in a way friendly to the async implementation in #2434. This
commit refactors the function to instead use an iterative loop and
refactors code in such a way that it should be easy to rebase #2434 on
top of this change. The main goal is to make the body of `Instance::new`
as small as possible since it needs to be duplicated with
`Instance::new_async`.
2021-01-21 15:04:17 -06:00
Pat Hickey
fcd00f5de1 move more deps to cap-std-sync, define own SystemTimeSpec 2021-01-21 12:35:55 -08:00
Chris Fallin
986b5768f9 Merge pull request #2595 from bjorn3/x64_macho_tls
Implement Mach-O TLS access for x64 newBE
2021-01-21 10:09:21 -08:00
Alex Crichton
8748cf5bd3 Add an instance limit to Config (#2593)
* Add an instance limit to `Config`

This commit adds a new parameter to `Config` which limits the number of
instances that can be created within a store connected to that `Config`.
The intention here is to provide a default safeguard against
module-linking modules that recursively create too many instances.

* Update crates/c-api/include/wasmtime.h

Co-authored-by: Peter Huene <peter@huene.dev>

Co-authored-by: Peter Huene <peter@huene.dev>
2021-01-21 11:59:30 -06:00
bjorn3
81d248c057 Implement Mach-O TLS access for x64 newBE 2021-01-21 18:25:56 +01:00
Andronik Ordian
2d5037d84c cache: update zstd to 0.6, disable legacy feature (#2592) 2021-01-21 10:16:07 -06:00
Alex Crichton
207f60a18e module-linking: Implement outer module aliases (#2590)
This commit fully implements outer aliases of the module linking
proposal. Outer aliases can now handle multiple-level-up aliases and now
properly also handle closed-over-values of modules that are either
imported or defined.

The structure of `wasmtime::Module` was altered as part of this commit.
It is now a compiled module plus two lists of "upvars", or closed over
values used when instantiating the module. One list of upvars is
compiled artifacts which are submodules that could be used. Another is
module values that are injected via outer aliases. Serialization and
such have been updated as appropriate to handle this.
2021-01-21 09:21:30 -06:00
Pat Hickey
61885b7071 stub in windows scheduler, get to some interesting errors 2021-01-20 21:03:33 -08:00
Pat Hickey
7ec03631da inline only what we need of cap-std/system-interface traits 2021-01-20 20:53:44 -08:00
Pat Hickey
f3e40e2fc4 restructure cap-std impls into their own crate 2021-01-20 19:09:15 -08:00
Pat Hickey
016ed8966a poll now handles monotonic clocks, not system clocks
I initially had it backwards. It is not sensible to poll on a system
clock timeout because the system clock is not necessarily monotonic!
only a monotonic clock makes sense for a timeout.
2021-01-19 15:11:54 -08:00
Pat Hickey
21713d3468 Revert "TEMPORARY: poll_oneoff test uses CLOCKID_REALTIME instead of MONOTONIC"
This reverts commit f667263d9c.
2021-01-19 14:57:10 -08:00
Pat Hickey
657024bd0d latest system-interface provides ReadReady::num_ready_bytes 2021-01-19 14:39:20 -08:00
Chris Fallin
0085ed3ff8 Merge pull request #2589 from akirilov-arm/popcnt
Cranelift AArch64: Improve the Popcnt implementation
2021-01-19 13:47:42 -08:00
Chris Fallin
13003a3e91 Merge pull request #2588 from hanqo/patch-1
Bugfix of issue #2575
2021-01-19 11:04:18 -08:00
Han Zhao
32343a7018 Updated Cargo.lock for libc 2021-01-19 19:27:20 +01:00
Han Zhao
d37e2d53c7 Updated libc version to 0.2.82 in dependencies 2021-01-19 19:11:32 +01:00