Commit graph

131 commits

Author SHA1 Message Date
Eddie Shen
0eaea9b139 Codemod away ::{self}; (#71)
Summary:
X-link: https://github.com/facebookresearch/Private-ID/pull/71

Previous codemod left some crust. This commit cleans up useless uses to use less uses.

Reviewed By: stepancheg

Differential Revision: D38211793

fbshipit-source-id: c852dd1ec617fe81a1d9bd0d8a9e5d2357b9b502
2022-08-01 10:56:01 -07:00
Andres Suarez
d9836f722e Remove unnecessary prelude imports
Reviewed By: dtolnay

Differential Revision: D38192955

fbshipit-source-id: 1c4cb1399e08d6688b28b2556c5cbac891a71c0b
2022-07-27 14:19:15 -07:00
Stiopa Koltsov
4192366432 Remove ::{self}
Summary: Cleanup after reformat one import per line.

Reviewed By: zertosh

Differential Revision: D38207167

fbshipit-source-id: e463575513a72583ea8d6359636e8eaeebb488e2
2022-07-27 09:53:37 -07:00
Kaustav Haldar
00f0643ae1 Add bundlr-sdk to rust 3p crates
Summary:
Add bundlr-sdk to rust 3p crates.

Also needed some new fixups for a couple deps, and a custom fork of bundlr to use derive_builder 0.9 which is pinned in 2 deps we use, and fixed a missing out of scope trait bug in bundlr sdk.

Reviewed By: zhuomingfb0

Differential Revision: D37962056

fbshipit-source-id: 878048840d66dffcf558351614c45f9beef2f626
2022-07-22 07:22:52 -07:00
David Barsky
b475f69187 third-party: update tracing-core, tracing-subscriber, and tracing-appender
Summary:
This diff updates tracing. New features include:

## `tracing`
- New `Value` implementations for `String` and 128-bit integers. The `Value` implementation for `String` allows recording a `String` without needing to call `.as_str()` or similar. The `Value` implementation allows recording 128-bit integers, resolving this papercut: https://fb.workplace.com/groups/learningrust/permalink/3208916922712504/.
- There are additional methods on different trait objects of` Subscriber`s.

## `tracing-subscriber`

- Fixes multiple filtering bugs in the `Layer` implementations for `Option<impl Layer>` and `Vec<impl Layer>` (this is how folks are able to do arbitrary/dynamic numbers of loggers in `tracing`).
- Increases the minimum version of `tracing-core`.
- Adds a new `Layer::event_enabled` method, which allows Layers to filter events _after_ their field values are recorded. This is import for
- Some bug fixes in the `Filter` implementation for `EnvFilter`.

## `tracing-appender`

- Fixes bug in `RollingFileAppender` that could result in a failure to rotate the log file, or in panics in debug mode.

Notice to self: it seems like the filtering implementation in `tracing-subscriber` is kinda complex: it could make sense to fuzz it.

 ---

## Linked Change Logs
- `tracing-core`: https://github.com/tokio-rs/tracing/blob/v0.1.x/tracing-core/CHANGELOG.md#0128-june-23-2022
- `tracing-subscriber`: https://github.com/tokio-rs/tracing/blob/v0.1.x/tracing-subscriber/CHANGELOG.md#0314-jul-1-2022
- `tracing-appender`: https://github.com/tokio-rs/tracing/blob/v0.1.x/tracing-appender/CHANGELOG.md#022-march-17-2022

(Note: this ignores all push blocking failures!)

Reviewed By: jsgf

Differential Revision: D37932030

fbshipit-source-id: bee53e5ba219ffbcc9009781d347cd6b40f577ee
2022-07-21 11:36:12 -07:00
Jason White
88e67ee591 Use SysnoSet in Subscription
Summary: The `syscalls` crate now has the ability to create a statically-allocated bitset of syscalls. This gets rid of our usage of the dynamically-allocated `BitVec` and no longer makes assumptions about the size and offset of the syscall table. These assumptions are wrong for some architectures where syscall numbers start at 4096 instead of 0.

Reviewed By: johnhurt

Differential Revision: D37890556

fbshipit-source-id: 8d0d51e93c1a09c7390fd3898cea7955ef786e96
2022-07-20 13:54:33 -07:00
Jason White
f5c1175aa9 third-party/rust: Update syscalls 0.6.2 -> 0.6.5
Summary:
## v0.6.5

 - Renamed `with-serde` feature to just `serde`. The `with-serde` feature will
   be removed in the next major release.
 - Implemented `Serialize` and `Deserialize` for `SysnoSet`.

## v0.6.4

 - Implemented `Default`, `BitOr`, and `BitOrAssign` for `SysnoSet`.

## v0.6.3

 - Added features to expose the syscall tables of other architectures besides
   the target architecture. There is one feature per architecture and have the
   same name. For example, if the target architecture is `x86-64` and we also
   want the syscall table for `x86`, the `x86` feature can be enabled. Then,
   `syscalls::x86::Sysno` will be exposed.
 - Added the `all` feature, which enables the syscall tables for all
   architectures.
 - Added the `full` feature, which enables all current and future features for
   the crate.
 - Added man page links for all syscalls. Since these are generated, some links
   may be broken.

Reviewed By: johnhurt

Differential Revision: D37871066

fbshipit-source-id: 4aa4674d0dcf1168d989a34062befa3b07456d68
2022-07-15 12:52:06 -07:00
Jason White
9f7a420da6 Improve AMD support for PMU timers (#14)
Summary:
This fixes a few things related to timers on AMD CPUs:
 1. Fixes a breakage caused by updating to `raw-cpuid` v10. `FeatureInfo::{family_id,model_id}` no longer behave as they once did. This actually cleans up the code a bit.
 2. Fixes some invalid assembly code in a test that only runs on AMD CPUs. This would cause a SIGILL.
 3. Adds support for a few more AMD microarchitectures (Pinnacle Ridge, Castle Peak, and Cezanne).

Pull Request resolved: https://github.com/facebookexperimental/reverie/pull/14

Reviewed By: andronat

Differential Revision: D37638404

Pulled By: jasonwhite

fbshipit-source-id: f39c4aa166dab88917b56b0a0a16d319031a213a
2022-07-06 07:46:19 -07:00
Jason White
d913bf6e4f Fix unused imports warning
Reviewed By: wkhughes

Differential Revision: D37566816

fbshipit-source-id: 496361c582ef90ac469260023a83813de420f1b9
2022-07-05 11:28:41 -07:00
Stiopa Koltsov
5e71d185bb imports_granularity=Item
Summary: [Post about this change](https://fb.workplace.com/groups/rust.language/posts/8804682282913642)

Reviewed By: zertosh

Differential Revision: D37459034

fbshipit-source-id: d9b29a4ac5749aaf48322a148ba317f052fe7c6e
2022-07-01 16:24:42 -07:00
Jason White
5df280b851 Don't return a Result for RPC messages
Summary: If an RPC fails to send, there isn't much that can be done to handle it. In all call sites so far, they all just unwrap the error because it can't be handled properly. If an RPC fails, it is a programmer error (because the request/response failed to serialize/deserialize) and indicates a bug in our code.

Differential Revision: D37563857

fbshipit-source-id: 267072709f4230732a13989aaf74b50fd0908337
2022-06-30 16:59:53 -07:00
Jason White
6813d9a7b2 rustfmt with imports_granularity=Item
Summary: This makes merge conflicts much easier to handle.

Reviewed By: johnhurt

Differential Revision: D37564000

fbshipit-source-id: a7f1a2711ffbdbb23c93e2f479f47d0368a2dad9
2022-06-30 14:56:20 -07:00
Jason White
d34189fda6 third-party/rust: Update syscalls crate 0.6.1 -> 0.6.2
Summary:
From the changelog:
 - Added `SysnoSet` for constructing sets of syscalls. It uses a bitset under
   the hood and provides constant-time lookup and insertion of `Sysno`s.
 - Fixed `Sysno::len()` returning the wrong value for architectures with large
   syscall offsets.
 - Deprecated `Sysno::len()`. Use `Sysno::table_size()` instead. This will be
   removed in the next major version.

Differential Revision: D37556871

fbshipit-source-id: a287f2146a0776e6f0459a08b43a1d5a92bb6176
2022-06-30 11:59:56 -07:00
Jason White
884cba2bb0 Add log output for thread and process exits
Summary: Adds log output to the strace example tool. The real strace does this and so should we.

Reviewed By: johnhurt

Differential Revision: D37524309

fbshipit-source-id: e4f67a1e32b6ad4efedf84f570cb50cffad4fb3d
2022-06-29 10:59:11 -07:00
Robert Kelly
d8c87ad6ce ethers.rs
Summary:
This is a pretty in depth third party library being added.  The main changes are...

**version bumping**:
dunce = "1.0.0" => "1.0.2"
once_cell = "1.8" => "1.12"
tracing = "0.1.32" => "0.1.35"

adding ethers-rs fork:
https://github.com/rlkelly/ethers-rs.git

this depends on forks of:
coins-bip32  = https://github.com/rlkelly/bitcoins-rs.git
coins-bip39  = https://github.com/rlkelly/bitcoins-rs.git
eth-keystore = https://github.com/rlkelly/eth-keystore-rs.git

this was necessary to remove the wasm target, which creates a cyclic dependency for "indexmap".  This was ran into previously here:

https://fb.workplace.com/groups/rust.language/permalink/8603206789727860/

also, some fixups were created for a few packages to facilitate build.  I'm not a fan of libraries creating a build step to generate documentation...
----

This still does not have the ethers-middleware crate or the ethers-solc crate because it has the external build dependency of solc, which would make this a bit more complex to add:
https://docs.soliditylang.org/en/latest/installing-solidity.html

adding the crates without solc makes the process of integrating this library much easier, but it would be beneficial in the future.

@public
update rust deps

Reviewed By: jsgf

Differential Revision: D37320246

fbshipit-source-id: 251bd1c3c0e51733347a534fa597dea33d1df74b
2022-06-23 20:03:16 -07:00
Ryan Newton
d3f1af59a9 tweak timer lib to suppport new processor type
Summary: This is to enable development on my Alder Lake Fedora laptop.

Reviewed By: jasonwhite

Differential Revision: D37300482

fbshipit-source-id: cf881caa854ca4f8ab84b23454faa5dba0445e8a
2022-06-22 07:15:17 -07:00
Igor Sugak
53c3abb5da update goblin to 0.5.2
Summary: As titled.

Reviewed By: dtolnay

Differential Revision: D37300975

fbshipit-source-id: bdc6c97735c19ab789af902bfa2244e0f06c9440
2022-06-21 08:14:33 -07:00
Ryan Newton
a11fa11768 switch tests to only log reverie messages
Summary:
Right now we get a whole bunch of annoying messages from tokio that spam our test logs:

    2022-06-10T15:09:59.751928Z TRACE runtime.spawn{kind=block_on task.name= loc.file="hermetic_infra/reverie/reverie-ptrace/src/testing.rs" loc.line=58 loc.col=8}:runtime.spawn{kind=local task.name= loc.file="third-party/rust/vendor/tokio-1.15.0/src/task/local.rs" loc.line=302 loc.col=22}: tokio::task::waker: op="waker.drop" task.id=26

This diff makes the filter more restrictive for reverie tests.

Reviewed By: johnhurt

Differential Revision: D37071398

fbshipit-source-id: fe93ec3cc0cf61938be10d40df6fe2f46979fbf9
2022-06-10 09:06:33 -07:00
Jason White
674fbb2af5 third-party/rust: Update syscalls 0.6.0 -> 0.6.1
Reviewed By: johnhurt

Differential Revision: D37051530

fbshipit-source-id: e21fc86f98c5f55817ba6f412d7271b3da63d7bb
2022-06-09 18:12:21 -07:00
David Tolnay
3ca948fc77 third-party/rust: Update async-trait from 0.1.52 to 0.1.56
Summary:
Release notes:

- https://github.com/dtolnay/async-trait/releases/tag/0.1.53 (improved error messages)
- https://github.com/dtolnay/async-trait/releases/tag/0.1.54 (`impl Trait` support)
- https://github.com/dtolnay/async-trait/releases/tag/0.1.55 (compatibility with 2021 edition closure capture rules)
- https://github.com/dtolnay/async-trait/releases/tag/0.1.56 (more `impl Trait` work)

Reviewed By: zertosh

Differential Revision: D36881793

fbshipit-source-id: ce9b86693dd18efa6884d29419970b41ebff5447
2022-06-02 17:05:05 -07:00
Jason White
20c7020868 Appease the copyright linter
Summary: The OSS license linter doesn't like the word "its".

Reviewed By: johnhurt

Differential Revision: D36856385

fbshipit-source-id: 909037d96de8976f08004497d28b77838f8c6870
2022-06-02 11:51:06 -07:00
Jason White
d16ca7d7c0 Change Facebook -> Meta Platforms in Cargo.toml files
Reviewed By: johnhurt

Differential Revision: D36727976

fbshipit-source-id: 0449545ee3fb2faf4febcdec0be1d5940af5e937
2022-05-27 10:20:35 -07:00
Jason White
1bbfa8a5a2 Update copyright headers
Reviewed By: johnhurt

Differential Revision: D36727878

fbshipit-source-id: 2529052f6a81fb5a177ccdba51b7e0051577c148
2022-05-27 09:51:26 -07:00
Jason White
011e521c08 third-party/rust: Update syscalls crate 0.5 -> 0.6
Summary:
Changelog:
 * Removed `build.rs` and switched to Rust's inline assembly syntax. This should enable better codegen, including the ability to have syscalls get inlined.
 * **Breaking**: Architectures besides `arm`, `x86`, and `x86-64` now require nightly.
 * **Breaking**: Removed top-level `SYS_` constants. Just use the `Sysno` enum instead.

Reviewed By: johnhurt

Differential Revision: D36606892

fbshipit-source-id: 9d20addfec65fa712b25d9449ec6e414187565ca
2022-05-24 09:29:52 -07:00
Jason White
1e5ed86ae1 Prepare for syscalls crate update
Reviewed By: johnhurt

Differential Revision: D36607034

fbshipit-source-id: f50f6a21ef9c3febf6bb8fcf4a8f0b30514e6e61
2022-05-24 06:43:45 -07:00
Anastasios Andronidis
1aac7d0ad2 Get guest registers
Reviewed By: jasonwhite

Differential Revision: D36315857

fbshipit-source-id: bd00a87fea9b17a28d5afc438d640f2b68bd5975
2022-05-11 09:05:58 -07:00
CodemodService Bot
9899fe55c4 Daily common/rust/cargo_from_buck/bin/autocargo
Reviewed By: Croohand

Differential Revision: D36239957

fbshipit-source-id: 3f4cb4b55927f437e95dfd2d2563fdbafbeb2988
2022-05-09 04:05:21 -07:00
Jason White
f507b56319 third-party/rust: Update syscalls crate to v0.5.0
Summary:
See https://github.com/jasonwhite/syscalls/blob/master/CHANGELOG.md

The biggest change here is that the type of syscall registers and return values was changed from `u64` to `usize` (to support 32-bit architectures).

Reviewed By: zertosh

Differential Revision: D36157822

fbshipit-source-id: d8776b6809dd00df93b147ee34deb37df61a2675
2022-05-05 13:15:19 -07:00
Ryan Newton
05446620a2 minor compiler warning
Summary: Just another simple compiler warning fix.

Reviewed By: jasonwhite

Differential Revision: D35966952

fbshipit-source-id: 9656519ef0e0164cfda98326d0fa9b74e6a3f78d
2022-04-29 08:06:47 -07:00
Jason White
4d5c226d5a third-party/rust: Update tracing-subscriber from 0.3.10 to 0.3.11
Reviewed By: dtolnay

Differential Revision: D35956332

fbshipit-source-id: f92818417ec7ce6d655c171c180aac4696f84269
2022-04-27 19:09:17 -07:00
Ryan Newton
cdba957ddb just a minor lint
Summary: Fix compiler warning.

Reviewed By: jasonwhite

Differential Revision: D35905514

fbshipit-source-id: 5320c9cb543756ef68830b3e0a07c3284a67b693
2022-04-25 13:31:24 -07:00
Jason White
ab908fd184 third-party/rust: Update raw-cpuid to v10.
Summary: Updating raw-cpuid to get this fix: https://github.com/gz/rust-cpuid/issues/45

Reviewed By: dtolnay

Differential Revision: D35856229

fbshipit-source-id: 74e173e4db6d3e4270ce0993a5491adb2b776a1f
2022-04-22 18:48:48 -07:00
Ryan Newton
94cb7e879d minor: print args to syscall
Summary:
If we're going to print a trace message when we inject the syscall, we might as well show the raw args.

The specific use case I used this for was making sure when I am changing args between the Detcore and reverie layers, that they are changing in the expected way.  Detcore already prints log messages for the syscalls and arguments it receives from the guest.  This lets us see the actual arguments that are passed to the kernel.

Reviewed By: jasonwhite

Differential Revision: D35804814

fbshipit-source-id: 2fc5a1b526326b554d4f015bfd0cb41d0dfc4ab2
2022-04-22 13:14:18 -07:00
Jason White
7de9d81972 Fix PMU validation tests on GitHub's Ubuntu VM (#12)
Summary:
The Ubuntu VM that GitHub Actions uses doesn't seem to have permissions
to access the PMU. This exits the test successfully if it's not available.

Pull Request resolved: https://github.com/facebookexperimental/reverie/pull/12

Reviewed By: andronat

Differential Revision: D35838916

Pulled By: jasonwhite

fbshipit-source-id: 0e6cba4c170e3c7e293300e031ee41333c399040
2022-04-22 11:52:10 -07:00
Anastasios Andronidis
6cb6d53799 Don't hide error info
Summary:
In case the child dies, no error code is reported. Here is an example:
```
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: ()', hermetic_infra/reverie/reverie-process/src/container.rs:850:26
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```

With this diff, we at least have some more info shown:
```
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error { errno: EINVAL, context: Mount }', hermetic_infra/reverie/reverie-process/src/container.rs:834:26
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```

Reviewed By: jasonwhite

Differential Revision: D35615348

fbshipit-source-id: ad540645a1bb06f275ab43994b1b1f4e9a4fdb1f
2022-04-13 16:58:26 -07:00
Jason White
3a31b92d6c Fix warnings
Reviewed By: andronat

Differential Revision: D35603562

fbshipit-source-id: 20496da3ca212ed867ecdf374990f93c996f6417
2022-04-13 09:45:27 -07:00
Huapeng Zhou
e5f89a81e9 rust: update crossterm to 0.23.0 and arc-swap to 1.5.0
Summary:
Needed to import [cloud-hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor).

(Note: this ignores all push blocking failures!)

Reviewed By: dtolnay

Differential Revision: D34434866

fbshipit-source-id: 69741b4ac767e0ab5ecc8307dd40267d9dcbf4ae
2022-04-12 23:50:06 -07:00
Jason White
cc09499c1f Upgrade to platform010
Summary:
Upgrades to platform010.

 1. This will let us use the new `core::arch::asm` macro and get rid of `llvm_asm`.
 2. All of fbcode should be upgrading to platform010. See [this post](https://fb.workplace.com/groups/fbcode.fyi/permalink/4768582506510846/) for more information.

Reviewed By: johnhurt

Differential Revision: D34939437

fbshipit-source-id: 2f8a6249c09c74d4e07dbca41994b17a708bf333
2022-04-12 19:07:52 -07:00
Will Hughes
c2df9c5b8c Add NanosleepFamily
Summary:
Add NanosleepFamily of syscalls, namely `nanosleep` and `clock_nanosleep`.

`nanosleep` can be transformed into `clock_nanosleep` by using clockid `CLOCK_REALTIME` and flags 0 (i.e., *not* `TIMER_ABSTIME`).

Reviewed By: johnhurt

Differential Revision: D35577747

fbshipit-source-id: 5925b083b4a49cdbfdff11117156d6366947d706
2022-04-12 12:36:22 -07:00
Jason White
f52262ef55 Fix some asm blocks
Reviewed By: andronat

Differential Revision: D35570647

fbshipit-source-id: 78dadc127ef2167d3c14cbe67fee853c7a51107a
2022-04-12 11:09:06 -07:00
Jason White
a7287aa33a Temporarily disable backtrace test
Summary: `libunwind` seems to be failing to look up the symbols. Need to debug this further.

Reviewed By: andronat

Differential Revision: D35569071

fbshipit-source-id: 38dc3925a277bb655ca476f97791754a736fb6aa
2022-04-12 11:09:06 -07:00
Jason White
61c24a5a35 Support clock_getres as a vdso function
Summary: `clock_getres` is a vdso function in recent versions of glibc.

Reviewed By: andronat

Differential Revision: D35570102

fbshipit-source-id: d09850b4d1bec002af749452f80228e1542fafaa
2022-04-12 11:09:06 -07:00
Jason White
86f6a155f3 third-party/rust: Update tempfile to v3.3.0
Reviewed By: jsgf

Differential Revision: D35477506

fbshipit-source-id: ef10c8f7548a21c0fb3d83d5debfe2e000657d08
2022-04-11 15:18:36 -07:00
Huapeng Zhou
f38f5c1cbc rust: update serde_json to 1.0.79 and serde to 1.0.136
Summary:
Needed to import [cloud-hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor).

(Note: this ignores all push blocking failures!)

Reviewed By: dtolnay

Differential Revision: D34433589

fbshipit-source-id: f92ea3ba640d19f170513b558f3d5208790bab67
2022-04-10 23:39:55 -07:00
Andreas Backx
f9bb665df0 upgrade tracing-subscriber from 0.3.9 to 0.3.10
Summary: 0.3.10 adds a new EnvFilter builder that I would like to use. :)

Reviewed By: wqfish

Differential Revision: D35473723

fbshipit-source-id: df31dad09c8f8fc9c27a43c85b5d6ac8f97d69a3
2022-04-08 04:00:03 -07:00
Huapeng Zhou
0b18766e8d rust: update anyhow to 1.0.56
Summary:
Needed by cloud-hypervisor https://github.com/cloud-hypervisor/cloud-hypervisor/blob/main/Cargo.toml#L19.

(Note: this ignores all push blocking failures!)

Reviewed By: jsgf

Differential Revision: D34432496

fbshipit-source-id: deaa320c74a22e325a116bcc0d5b0120c4f3744b
2022-04-07 04:31:34 -07:00
Will Hughes
675073a631 Read child TID from clone family syscalls
Summary: Expose the child TID arg passed to clone family syscalls. For fork and vfork this will be 0 as child TID is not an arg, for clone and clone3 this is read from the args.

Reviewed By: jasonwhite

Differential Revision: D35370069

fbshipit-source-id: 32821152adaadd17c66f334f286f5410fabd4b97
2022-04-05 01:23:00 -07:00
Huapeng Zhou
413542a24f rust: update thiserror to 1.0.30
Summary: Needed to import [cloud-hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor/blob/main/Cargo.toml#L31).

Reviewed By: dtolnay

Differential Revision: D34437972

fbshipit-source-id: 9f22bb1fde83308a319f40e138d9ab7f180c7fa0
2022-03-31 00:26:06 -07:00
CodemodService FBSourceRustfmtLinterBot
e467c37695 Daily arc lint --take RUSTFMT
Reviewed By: ivanmurashko

Differential Revision: D35243292

fbshipit-source-id: 2f973660c82eb4e772c36af50499adca697f076d
2022-03-30 02:52:36 -07:00
David Tolnay
924aff3d5e Reformat with new rustfmt 4/7
Summary:
Generated by `tools/arcanist/lint/codemods/rustfmt-fbsource` with the rustfmt executable added by D35234535 (ce519e0af4).

drop-conflicts

Reviewed By: zertosh

Differential Revision: D35234536

fbshipit-source-id: 3e8b23b4abbb9bdd052d86dcd619f88bbcc5d454
2022-03-29 20:22:00 -07:00