File: README.md

package info (click to toggle)
rust-pete 0.13.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 160 kB
  • sloc: makefile: 2
file content (39 lines) | stat: -rw-r--r-- 1,501 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Pete

A friendly wrapper around the Linux `ptrace(2)` syscall.

## Requirements

The current minimum supported OS and compiler versions are:

- Linux 4.8
- rustc 1.64

Due to test library requirements, the oldest _tested_ Rust version is 1.76.

Continuous testing is only run for `x86_64-unknown-linux-gnu`.

Support for earlier Linux versions is possible, but low priority. Eventually, we would
like to support any platform that provides `ptrace(2)`.

## Summary

The `ptrace(2)` interface entails interpreting a series of `wait(2)` statuses. The context used to
interpret a status includes the attach options set on each tracee, previously-seen stops, recent
ptrace requests, and in some cases, extra event data that must be queried using additional ptrace
calls.

Pete is meant to instead permit reasoning directly about ptrace-stops, as described in the manual.
We hide the lowest-level contextual bookkeeping required to disambiguate ptrace-stops. Whenever we
can, we avoid extraneous ptrace calls, deferring to downstream tracers implemented on top of the
library. For example, Pete can distinguish a syscall-enter-stop and syscall-exit-stop, but does not
_automatically_ query register state to identify the specific syscall.

## License

Pete is licensed under the [ISC License](./LICENSE).

## Contributing

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in
`pete` by you, shall be licensed as ISC, without any additional terms or conditions.