forked from AFLplusplus/LibAFL
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Cargo.toml
152 lines (135 loc) · 4.56 KB
/
Cargo.toml
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
[package]
name = "libafl_qemu"
version = "0.13.2"
authors = ["Andrea Fioraldi <[email protected]>"]
description = "QEMU user backend library for LibAFL"
documentation = "https://docs.rs/libafl_qemu"
repository = "https://github.com/AFLplusplus/LibAFL/"
readme = "../README.md"
license = "MIT OR Apache-2.0"
keywords = ["fuzzing", "qemu", "instrumentation"]
edition = "2021"
categories = [
"development-tools::testing",
"emulators",
"embedded",
"os",
"no-std",
]
[package.metadata.docs.rs]
features = ["document-features", "default", "python", "x86_64", "usermode"]
rustdoc-args = ["--cfg", "docsrs"]
[features]
default = [
"usermode",
"fork",
"build_libgasan",
"build_libqasan",
"serdeany_autoreg",
"injections",
]
document-features = ["dep:document-features"]
paranoid_debug = [
"libafl_qemu_sys/paranoid_debug",
] # Will perform as many checks as possible. The target will be greatly slowed down.
#! # Feature Flags
#! ### General Features
## Find injections during fuzzing
injections = ["serde_yaml", "toml"]
## Python bindings support
python = ["pyo3", "pyo3-build-config", "libafl_qemu_sys/python"]
## Fork support
fork = ["libafl/fork"]
## Build libqasan for address sanitization
build_libgasan = []
build_libqasan = []
#! ## The following architecture features are mutually exclusive.
## build qemu for x86_64 (default)
x86_64 = ["libafl_qemu_sys/x86_64"]
i386 = ["libafl_qemu_sys/i386"] # build qemu for i386
arm = ["libafl_qemu_sys/arm"] # build qemu for arm
aarch64 = ["libafl_qemu_sys/aarch64"] # build qemu for aarch64
mips = [
"libafl_qemu_sys/mips",
] # build qemu for mips (el, use with the 'be' feature of mips be)
ppc = ["libafl_qemu_sys/ppc"] # build qemu for powerpc
hexagon = ["libafl_qemu_sys/hexagon"] # build qemu for hexagon
riscv32 = ["libafl_qemu_sys/riscv32"] # build qemu for riscv 32bit
riscv64 = ["libafl_qemu_sys/riscv64"] # build qemu for riscv 64bit
## Big Endian mode
be = ["libafl_qemu_sys/be"]
## Usermode (mutually exclusive to Systemmode)
usermode = ["libafl_qemu_sys/usermode"]
## Systemmode (mutually exclusive to Usermode)
systemmode = ["libafl_qemu_sys/systemmode"]
#! ## SerdeAny features
## Automatically register all `#[derive(SerdeAny)]` types at startup.
serdeany_autoreg = ["libafl_bolts/serdeany_autoreg"]
slirp = [
"systemmode",
"libafl_qemu_sys/slirp",
] # build qemu with host libslirp (for user networking)
# Requires the binary's build.rs to call `build_libafl_qemu`
shared = ["libafl_qemu_sys/shared"]
#! ## Internal features, don't use in normal projects
## clippy workaround
clippy = ["libafl_qemu_sys/clippy"]
[dependencies]
libafl = { path = "../libafl", version = "0.13.2", default-features = false, features = [
"std",
"derive",
"regex",
] }
libafl_bolts = { path = "../libafl_bolts", version = "0.13.2", default-features = false, features = [
"std",
"derive",
] }
libafl_targets = { path = "../libafl_targets", version = "0.13.2" }
libafl_qemu_sys = { path = "./libafl_qemu_sys", version = "0.13.2", default-features = false }
libafl_derive = { path = "../libafl_derive", version = "0.13.2" }
serde = { version = "1.0.210", default-features = false, features = [
"alloc",
] } # serialization lib
hashbrown = { version = "0.15.1", default-features = true, features = [
"serde",
] } # A faster hashmap, nostd compatible
num-traits = { version = "0.2.19", default-features = true }
num-derive = "0.4.2"
num_enum = { version = "0.7.3", default-features = true }
goblin = "0.9.2"
libc = { version = "0.2.59" }
strum = "0.26.3"
strum_macros = "0.26.4"
syscall-numbers = "4.0.0"
meminterval = { version = "0.4.1" }
thread_local = "1.1.8"
capstone = "0.12.0"
rangemap = { version = "1.5.1" }
log = { version = "0.4.22" }
object = "0.36.4"
addr2line = "0.24.1"
typed-arena = "2.0.2"
paste = { version = "1.0.15" }
enum-map = "2.7.3"
serde_yaml = { version = "0.9.34", optional = true } # For parsing the injections yaml file
toml = { version = "0.8.19", optional = true } # For parsing the injections toml file
pyo3 = { version = "0.22.3", optional = true, features = [
"multiple-pymethods",
] }
bytes-utils = "0.1.4"
typed-builder = { version = "0.20.0" }
memmap2 = "0.9.5"
getset = "0.1.3"
# Document all features of this crate (for `cargo doc`)
document-features = { version = "0.2.10", optional = true }
[build-dependencies]
libafl_qemu_build = { path = "./libafl_qemu_build", version = "0.13.2" }
pyo3-build-config = { version = "0.22.3", optional = true }
rustversion = { version = "1.0.17" }
bindgen = { version = "0.70.1" }
cc = { version = "1.1.21" }
[lib]
name = "libafl_qemu"
crate-type = ["cdylib", "rlib"]
[lints]
workspace = true