Cargo Features

[dependencies]
lancelot = { version = "0.9.7", default-features = false, features = ["test", "flirt", "emulator", "disassembler"] }
default = disassembler, flirt

These default features are set whenever lancelot is added without default-features = false somewhere in the dependency tree.

test = emulator, fern

The reason we do this is because doctests don't get cfg(test) See: https://github.com/rust-lang/cargo/issues/4669

flirt default = disassembler, lancelot-flirt

Affects analysis::flirt

emulator test? = zydis
disassembler default flirt = zydis

Affects analysis::cfg, analysis::dis, analysis::heuristics, pe::call_targets, pe::noret_imports, pe::find_thunks, pe::find_functions, pe::find_function_starts, test::read_insn

Features from optional dependencies

In crates that don't use the dep: syntax, optional dependencies automatically become Cargo features. These features may have been created by mistake, and this functionality may be removed in the future.

zydis disassembler emulator?

Enables zydis ^3.1.3

fern test?

Enables fern

fern is only needed by tests, but because of the need for a feature named test, they also have to be optional dependencies as well.

lancelot-flirt flirt

Enables lancelot-flirt

needed for flirt