feat(dso): implement unused DSO cleaner

This is the first implementation of a recursive
DSO cleaner which is reasonably fast.

The implementation is still (unit-) untested.

Of course, modules to be dlopen'ed will always
escape such a tool, which will need to
support another cleaner plugin with a
whitelist.
This commit is contained in:
Matteo Settenvini 2025-01-26 02:33:25 +01:00
parent 5507a1dd21
commit 54075012aa
Signed by: matteo
GPG key ID: 1C1B12600D81DE05
5 changed files with 295 additions and 25 deletions

10
Cargo.lock generated
View file

@ -298,6 +298,15 @@ version = "2.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "memmap2"
version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f"
dependencies = [
"libc",
]
[[package]]
name = "miniz_oxide"
version = "0.8.3"
@ -539,6 +548,7 @@ dependencies = [
"env_logger",
"goblin",
"log",
"memmap2",
"nix",
"petgraph",
"tokio",