Skip to content

Commit 7d1ce18

Browse files
committed
ffi ptracing
1 parent db53ae5 commit 7d1ce18

File tree

17 files changed

+1488
-44
lines changed

17 files changed

+1488
-44
lines changed

Cargo.lock

Lines changed: 193 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ libc = "0.2"
4040
libffi = "4.0.0"
4141
libloading = "0.8"
4242

43+
[target.'cfg(target_os = "linux")'.dependencies]
44+
nix = { version = "0.30.1", features = ["mman", "ptrace", "signal"] }
45+
ipc-channel = "0.19.0"
46+
serde = { version = "1.0.219", features = ["derive"] }
47+
capstone = "0.13"
48+
4349
[target.'cfg(target_family = "windows")'.dependencies]
4450
windows-sys = { version = "0.59", features = [
4551
"Win32_Foundation",

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,11 @@ to Miri failing to detect cases of undefined behavior in a program.
412412
memory. Finally, the flag is **unsound** in the sense that Miri stops tracking details such as
413413
initialization and provenance on memory shared with native code, so it is easily possible to write
414414
code that has UB which is missed by Miri.
415+
* `-Zmiri-force-old-native-lib-mode` disables the WIP improved native code access tracking. If for
416+
whatever reason enabling native calls leads to odd behaviours or causes Miri to panic, disabling
417+
the tracer *might* fix this. This will likely be removed once the tracer has been adequately
418+
battle-tested. Note that this flag is only meaningful on Linux systems; other Unixes (currently)
419+
exclusively use the old native-lib code.
415420
* `-Zmiri-measureme=<name>` enables `measureme` profiling for the interpreted program.
416421
This can be used to find which parts of your program are executing slowly under Miri.
417422
The profile is written out to a file inside a directory called `<name>`, and can be processed

0 commit comments

Comments
 (0)