Commit graph

85 commits

Author SHA1 Message Date
Jason White
0a4791711c Remove old and unused llvm_asm!() assembly blocks
Summary:
This was from the *before times* when `core::arch::asm` wasn't yet stable. `llvm_asm!()` has been removed from recent versions of rustc, so this stuff won't even compile anymore.

Note that this also removes a rather large block of `llvm_asm` (`check_for_xen_pmi_bug`) that hasn't yet been migrated over to the new asm syntax. This seems like a lot of work for little benefit, so I'm just deleting it for now.

Differential Revision: D40957341

fbshipit-source-id: 2b9bf97e93eaa9462295b9060907530dd797e288
2022-11-03 12:53:11 -07:00
Jason White
71551a592c Remove unnecessary allocations in vdso patching
Reviewed By: VladimirMakaev

Differential Revision: D40872276

fbshipit-source-id: cd4b25b437ad2f4bb7929f33477af866da80dc3c
2022-11-01 10:11:35 -07:00
Jason White
90e39abc59 Fix skip_seccomp_syscall
Summary: Fixes `skip_seccomp_syscall` on aarch64 to *actually* skip the syscall. I plan on cleaning this up a bit more in a later diff because we are calling `getregs` and `setregs` more than necessary on a per-interception basis.

Reviewed By: VladimirMakaev

Differential Revision: D40867423

fbshipit-source-id: d72b4998b5c1c44f426a9129eccb205ccfc320fa
2022-11-01 10:11:35 -07:00
Jason White
76adc9174f Fix initial syscall injection
Summary: This fixes the initial syscall injection on aarch64. This also does slight simplification of the instructions that get plopped down at the current instruction pointer so that we can fit the instructions into a single word. That is, instead of injecting `INT3; SYSCALL; INT3`, we inject `SYSCALL; INT3`.

Reviewed By: VladimirMakaev

Differential Revision: D40867427

fbshipit-source-id: 2afa96f2270e16284523a17b09da00529893c20e
2022-11-01 10:11:35 -07:00
Jason White
10b3d0df9f Disable some perf tests on aarch64
Summary: See comment for an explanation of why this is needed. These tests should eventually be updated to work on aarch64.

Reviewed By: VladimirMakaev

Differential Revision: D40867431

fbshipit-source-id: 089e8bd61bec21556bdebc8b1f89dd4d18aa0910
2022-11-01 10:11:35 -07:00
Jason White
aef4d4d2e6 Fix do_branches
Summary: Change the `sub` instruction to `subs` as the latter is needed to update the condition code that `be.n` relies on.

Reviewed By: VladimirMakaev

Differential Revision: D40867430

fbshipit-source-id: b45987b5ccd4af784988f14fe0d6b3ac97b5ad80
2022-11-01 10:11:35 -07:00
Jason White
f467cfa03c Add vdso patches for aarch64
Summary: This adds VDSO stubs for aarch64 so that we can intercept VDSO calls. See the comments in the code for more details.

Reviewed By: VladimirMakaev

Differential Revision: D40867428

fbshipit-source-id: 136818d9dbf52f4297dd4dae041e3e6dfe0764ae
2022-11-01 10:11:35 -07:00
David Tolnay
a3ed18f93a Update libc to 0.2.137
Summary: Update from 0.2.135 to 0.2.137, the latest version on crates.io, in preparation for backporting a PR in the diff after this one.

Reviewed By: zertosh

Differential Revision: D40874274

fbshipit-source-id: debf9dae82ecc20201470e634f10904a2b308e51
2022-11-01 02:16:19 -07:00
Jason White
21f7f9a8a6 Fix rustc warnings
Reviewed By: VladimirMakaev

Differential Revision: D40701835

fbshipit-source-id: d74560c4c6b360f89ff6b8d37bc33890bf633947
2022-10-27 10:56:09 -07:00
Jason White
a16d576831 Fix perf timer related things on aarch64
Summary: To do proper feature detection on the CPU to know if we can get perf events, there is more work to do here. See the comment on `get_rcb_perf_config` for more info.

Reviewed By: VladimirMakaev

Differential Revision: D40701837

fbshipit-source-id: 4c7a7c00be0ab14e4fe9f4be09c8094567d5d031
2022-10-27 10:56:09 -07:00
Jason White
caf0f12131 Add generalized stack pointer access
Reviewed By: VladimirMakaev

Differential Revision: D40701834

fbshipit-source-id: 6cad4cedc0d22488117d3d991ae9a80b643ee037
2022-10-27 10:56:09 -07:00
Jason White
4f9ce11c70 Add aarch64 registers to gdbstub
Reviewed By: VladimirMakaev

Differential Revision: D40701836

fbshipit-source-id: 42c47be166d892bc208b68938d4c41746857b38c
2022-10-27 10:56:09 -07:00
Jason White
f200e9a8cf Rename Amd64CoreRegs -> CoreRegs
Summary: This is a more architecture-independent name.

Reviewed By: VladimirMakaev

Differential Revision: D40701833

fbshipit-source-id: 66b77c6f62886ecd776a3efbc0b71248f875914e
2022-10-27 10:56:09 -07:00
Jason White
4b8517a067 Move gdbstub regs definitions to arch-specific file
Summary: These definitions are x86_64-specific, so they should be defined in their own file. Later, we'll add definitions for aarch64.

Reviewed By: VladimirMakaev

Differential Revision: D40701840

fbshipit-source-id: 0c52334dc7eb9bb60020c45c3f2ef58077c20322
2022-10-27 10:56:09 -07:00
Jason White
e5fa5f367c Clean up gdbstub regs definitions
Reviewed By: VladimirMakaev

Differential Revision: D40701832

fbshipit-source-id: 8d5c95c624ae28313cecad3522078ccde4b4d75d
2022-10-27 10:56:09 -07:00
Jason White
5949b4023f Fix more things for aarch64
Summary: fixallthethings

Reviewed By: VladimirMakaev

Differential Revision: D40577286

fbshipit-source-id: 0fb2d83843886be12c46ec199ab0303d2087597d
2022-10-27 10:56:09 -07:00
Vladimir Makaev
03cbd6044d update hermetic_infra/** files with correct license header - 1/x
Summary:
Followed guide here https://www.internalfb.com/intern/wiki/Linting/License_Lint/ to add fbcode/hermetic_infra/** code to license linter. As we have parts of our code shipped as Open Source it's important to get this automated

This diff is updating existing file's licenses to not get conflict after lint rule enablement

Reviewed By: jasonwhite

Differential Revision: D40674080

fbshipit-source-id: da6ecac036f8964619cf7912058f3a911558e7b1
2022-10-26 12:18:14 -07:00
Jason White
8862833da4 Replace direct register accesses with abstraction
Reviewed By: wangbj

Differential Revision: D40577287

fbshipit-source-id: 8fe94d172ffb0f1d7c2e177ec6314b1b77f4e5c1
2022-10-21 12:09:36 -07:00
Jason White
6ad5309bb1 Add abstraction over register access
Summary:
This abstracts the set of general purpose registers so that we can more easily access special registers in an architecture-independent way.

The rest of the code will be refactored to use this new interface in a later change.

Reviewed By: wangbj

Differential Revision: D40577289

fbshipit-source-id: 313a3ab3863f09a506b6e61fb67093fc49eeae3e
2022-10-21 12:09:36 -07:00
David Tolnay
eb92a00594 Update to async-trait 0.1.58
Summary: This release makes async trait methods work better with rust-analyzer's "go to definition" and other IDE functionality.

Reviewed By: zertosh

Differential Revision: D40532047

fbshipit-source-id: 1871d1819ebe1aab0846b0135f051c45e6e8821b
2022-10-19 17:35:20 -07:00
Ryan Newton
4b910a9e2b bump the SKID_MARGIN from 50 to 60
Summary:
On devvm5443.atn0.facebook.com (Intel Xeon Processor (Skylake)), I observed a slippage a bit past the skid of 50:

    ✉ Timeout: hermetic_infra/hermit/tests:hermit_run_strict__sh_par_work - main (300.011)
    Test output:
    > from_execution_error::timeout::LocalExecutor::Timeout
    :: Run1...
    thread 'main' panicked at 'Clock perf counter exceeds target value at start of attempted single-step: 23417931 > 23417927. Consider increasing SKID_MARGIN_RCBS.', hermetic_infra/reverie/reverie-ptrace/src/timer.rs:562:9

Therefore I'm bumping it to 60.

This is unfortunate, because it directly slows down our chaos mode preemptions (until we eventually get an emulator), but I'm therefore bumping the skid margin.
We could also potentially set it differently for devvm and for bare metal.

Reviewed By: jasonwhite

Differential Revision: D40383171

fbshipit-source-id: 34bb8217a61fc2c77f1d45d23b8c28f91cae5efc
2022-10-18 12:27:28 -07:00
Andrey Buchinskiy
a24e92eea4 bump tokio version to 1.21.2
Reviewed By: zertosh

Differential Revision: D40199323

fbshipit-source-id: 32355e73ea669a180ac759ddb02760db10c8b02b
2022-10-14 15:24:20 -07:00
Jeremy Fitzhardinge
f1336c3b2e third-party/rust: bump tracing-subscriber and tracing-glog
Summary:
tracing-glog -> 0.2.1 with minor formatting bugfix
tracing-subscriber -> 0.3.16 mostly to keep it fresh and share dependencies

Reviewed By: davidbarsky

Differential Revision: D40350661

fbshipit-source-id: e62ec53747a194da0a9b0ca2b63bb16df2479a6f
2022-10-14 13:32:47 -07:00
Sargun Dhillon
fa682caf9b Update Rust libc crate to 0.2.135
Summary: This updates the libc crate to 0.2.135, which includes the FICLONE constant needed to the given ioctl.

Reviewed By: justintrudell

Differential Revision: D40286796

fbshipit-source-id: acfa115479cd289f478d8d73937be34ced5c4bbb
2022-10-13 18:51:18 -07:00
Sophia Sun
aadb1865e7 Update nix crate from 0.23 to 0.25
Summary:
When I was trying to use `nix::unistd::gethostname` in D39783468, the version `0.23.0` will require users to pass in a `buf` as a parameter, however, in `0.25.0`, there is no need to pass in a `buf` as a parameter. Hence, I would love to update `nix` crate from `0.23` to `0.25` in order to not pass a redundant `buf` while calling `nix::unistd::gethostname`.

I fixed conflicts reflected from the signals manually so this diff is more than a few lines of code in `Cargo.toml`.

Here are the [changes](https://github.com/nix-rust/nix/compare/v0.23.0..v0.25.0) between `0.23` and `0.25`. See `CHANGELOG.md` for the most significant changes in this version.

Reviewed By: bgw

Differential Revision: D39919100

fbshipit-source-id: 7f62585ff72230bd2608aeb5a4780dc0128795f7
2022-10-03 15:31:17 -07:00
Andres Suarez
42214f8ec2 update to rust 1.64.0
Summary: https://blog.rust-lang.org/2022/09/22/Rust-1.64.0.html

Reviewed By: diliop, dtolnay

Differential Revision: D39825734

fbshipit-source-id: 4a789f2c24707fbc6a14b506448d405d5a60a53d
2022-09-27 15:18:58 -07:00
Andres Suarez
2364202dfc Update raw-cpuid-10.2.0 to raw-cpuid-10.6.0
Reviewed By: dtolnay

Differential Revision: D39622388

fbshipit-source-id: 10329e7037400986fd7c08a0d0dfbbd48332088a
2022-09-19 10:25:55 -07:00
Andres Suarez
0f60462d16 Update libc-0.2.125 to libc-0.2.132
Reviewed By: dtolnay

Differential Revision: D39578353

fbshipit-source-id: 800721931e82485678e8ecf997afcc6711f6d4cf
2022-09-16 20:06:28 -07:00
David Tolnay
3deaf0e0c0 third-party/rust: Revert D39418421 "unpin thiserror"
Summary: D39418421 (8fef664fab) prematurely upgraded `thiserror`. Various projects in fbcode use nightly features including std::backtrace but the current fbcode Rust toolchain is 1.63.0, in which the backtrace API is different from the API of the latest nightlies.

Reviewed By: quark-zju

Differential Revision: D39562441

fbshipit-source-id: d1f8a993ec776cf82b1736b242bd4466def21230
2022-09-15 17:20:40 -07:00
Edwin Smith
8fef664fab unpin thiserror
Reviewed By: bolinfest, zertosh

Differential Revision: D39418421

fbshipit-source-id: 2f0246f190403a6f481e8803834174f229c0849a
2022-09-13 07:15:29 -07:00
Michael Bolin
c013909676 pin libc crate to 0.2.125
Reviewed By: ImanolBarba

Differential Revision: D39433159

fbshipit-source-id: 4442651a0874ebc6724796206db02c20e455a1c0
2022-09-12 09:55:50 -07:00
Michael Bolin
3c618d400d use git-config@0.7.1 instead of patched version
Reviewed By: mzr

Differential Revision: D39331880

fbshipit-source-id: 5990d68d718297a6df72e5eea3c16fed5b84169e
2022-09-09 21:01:16 -07:00
Jan Mazur
0a18bdf95f futures 0.3.21 -> 0.3.24
Summary: We have some deprecated functions in GH builds.

Differential Revision: D38909563

fbshipit-source-id: 3e8b77b10c352bfdfcbfe344f0ea2e95d4a339ad
2022-09-05 13:49:07 -07:00
Jason White
89e2e8e431 Refactor trace module into its own crate
Reviewed By: johnhurt

Differential Revision: D36788853

fbshipit-source-id: 8a3765fb58d94188514ed1aba406a2dcd1e6551a
2022-08-26 09:27:58 -07:00
Charles Cady
120fbac957 Populate mmapped page trampoline with aarch64 instructions
Summary: This will help reverie-ptrace slowly migrate towards supporting `aarch64` as well as `x86_64`.

Reviewed By: jasonwhite

Differential Revision: D38787872

fbshipit-source-id: e747c59da8f0c59f0b85a50888c884dbbed65824
2022-08-19 01:37:10 -07:00
Stiopa Koltsov
e53c5ef362 Apply rustfmt
Reviewed By: zertosh

Differential Revision: D38485027

fbshipit-source-id: 0f5e5b743e002045c95aca427b76e969d6bce347
2022-08-06 08:21:44 -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
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
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
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
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