| 42 | /// Controls which features are enabled or not. |
| 43 | #[derive(Debug)] |
| 44 | pub struct EnabledFeatures { |
| 45 | /// Use access contexts for multi-stream inputs. |
| 46 | pub access_contexts: bool, |
| 47 | /// A lightweight static analysis feature that attempts to scan for cases where some bits for a |
| 48 | /// load are immediately discarded. Typically level 3 is always the best option. The other |
| 49 | /// options are mostly provided for compatibility with old traces. |
| 50 | pub resize_load_level: usize, |
| 51 | /// Whether havoc should be used for mutation as well as length extension. Should almost always |
| 52 | /// be enabled (toggleable for ablation study). |
| 53 | pub havoc: bool, |
| 54 | /// Whether the input-to-state stage should be enabled. |
| 55 | pub cmplog: bool, |
| 56 | /// The maximum number of bytes (taken from the end of the stream) that the I2S stage will try |
| 57 | /// to perform I2S replacements within. |
| 58 | pub max_i2s_bytes: usize, |
| 59 | /// Configures whether input-to-state replacements should use strided matches for integer |
| 60 | /// types. |
| 61 | pub strided_int_matches: bool, |
| 62 | /// Whether the colorization stage should be enabled. |
| 63 | pub colorization: bool, |
| 64 | /// Whether the input-to-state stage should automatically add values to the dictionary. |
| 65 | pub auto_dict: bool, |
| 66 | /// Whether we should automatically attempt to trim inputs after each execution. |
| 67 | pub auto_trim: bool, |
| 68 | /// Whether the smart trim stage should be enabled. |
| 69 | pub smart_trim: bool, |
| 70 | /// Controls whether the fuzzer will use a simplified energy assignment algorithm. Currently we |
| 71 | /// do not believe that this makes a significant difference to the fuzzer's performance, |
| 72 | /// however 'false' is default since the old algorithm was more thoroughly tested. |
| 73 | pub simple_energy_assignment: bool, |
| 74 | /// Whether to occasionally check if newly generated inputs are favored (i.e. smaller) compared |
| 75 | /// to previous entries. |
| 76 | pub add_favored_inputs: bool, |
| 77 | /// Whether to increase extensions if we repeatedly reach the end of a stream. |
| 78 | pub extension_factor: bool, |
| 79 | /// Skip applying certain mutations on prefix bytes shared with the parent. |
| 80 | pub skip_prefix: bool, |
| 81 | /// Dump JIT function ID mapping for perf analysis. |
| 82 | pub dump_jit_mapping: bool, |
| 83 | } |
| 84 | |
| 85 | impl EnabledFeatures { |
| 86 | pub fn from_env() -> anyhow::Result<Self> { |
nothing calls this directly
no outgoing calls
no test coverage detected