Struct libafl::executors::shadow::ShadowExecutor
source · pub struct ShadowExecutor<E, SOT> { /* private fields */ }
Expand description
A ShadowExecutor
wraps an executor and a set of shadow observers
Implementations§
source§impl<E, SOT> ShadowExecutor<E, SOT>where
E: HasObservers + Debug,
SOT: ObserversTuple<E::State> + Debug,
impl<E, SOT> ShadowExecutor<E, SOT>where
E: HasObservers + Debug,
SOT: ObserversTuple<E::State> + Debug,
sourcepub fn new(executor: E, shadow_observers: SOT) -> Self
pub fn new(executor: E, shadow_observers: SOT) -> Self
Create a new ShadowExecutor
, wrapping the given executor
.
sourcepub fn shadow_observers(&self) -> &SOT
pub fn shadow_observers(&self) -> &SOT
The shadow observers are not considered by the feedbacks and the manager, mutable
sourcepub fn shadow_observers_mut(&mut self) -> &mut SOT
pub fn shadow_observers_mut(&mut self) -> &mut SOT
The shadow observers are not considered by the feedbacks and the manager, mutable
Trait Implementations§
source§impl<E, SOT> Debug for ShadowExecutor<E, SOT>where
E: UsesState + Debug,
SOT: ObserversTuple<E::State> + Debug,
impl<E, SOT> Debug for ShadowExecutor<E, SOT>where
E: UsesState + Debug,
SOT: ObserversTuple<E::State> + Debug,
source§impl<E, EM, SOT, Z> Executor<EM, Z> for ShadowExecutor<E, SOT>where
E: Executor<EM, Z> + HasObservers,
SOT: ObserversTuple<E::State>,
EM: UsesState<State = E::State>,
Z: UsesState<State = E::State>,
impl<E, EM, SOT, Z> Executor<EM, Z> for ShadowExecutor<E, SOT>where
E: Executor<EM, Z> + HasObservers,
SOT: ObserversTuple<E::State>,
EM: UsesState<State = E::State>,
Z: UsesState<State = E::State>,
source§fn run_target(
&mut self,
fuzzer: &mut Z,
state: &mut Self::State,
mgr: &mut EM,
input: &Self::Input
) -> Result<ExitKind, Error>
fn run_target(
&mut self,
fuzzer: &mut Z,
state: &mut Self::State,
mgr: &mut EM,
input: &Self::Input
) -> Result<ExitKind, Error>
Instruct the target about the input and run
source§fn with_observers<OT>(self, observers: OT) -> WithObservers<Self, OT>where
Self: Sized,
OT: ObserversTuple<Self::State>,
fn with_observers<OT>(self, observers: OT) -> WithObservers<Self, OT>where
Self: Sized,
OT: ObserversTuple<Self::State>,
source§fn post_run_reset(&mut self)
fn post_run_reset(&mut self)
Custom Reset Handler, e.g., to reset timers
source§impl<E, SOT> HasObservers for ShadowExecutor<E, SOT>where
E: HasObservers,
SOT: ObserversTuple<E::State>,
impl<E, SOT> HasObservers for ShadowExecutor<E, SOT>where
E: HasObservers,
SOT: ObserversTuple<E::State>,
source§impl<E, EM, SOT, Z> Stage<ShadowExecutor<E, SOT>, EM, Z> for ShadowTracingStage<E, EM, SOT, Z>where
E: Executor<EM, Z> + HasObservers,
EM: UsesState<State = E::State>,
SOT: ObserversTuple<E::State>,
Z: UsesState<State = E::State>,
E::State: State + HasClientPerfMonitor + HasExecutions + HasCorpus + Debug,
impl<E, EM, SOT, Z> Stage<ShadowExecutor<E, SOT>, EM, Z> for ShadowTracingStage<E, EM, SOT, Z>where
E: Executor<EM, Z> + HasObservers,
EM: UsesState<State = E::State>,
SOT: ObserversTuple<E::State>,
Z: UsesState<State = E::State>,
E::State: State + HasClientPerfMonitor + HasExecutions + HasCorpus + Debug,
source§impl<E, SOT> UsesObservers for ShadowExecutor<E, SOT>where
E: UsesObservers,
impl<E, SOT> UsesObservers for ShadowExecutor<E, SOT>where
E: UsesObservers,
§type Observers = <E as UsesObservers>::Observers
type Observers = <E as UsesObservers>::Observers
The observers type
Auto Trait Implementations§
impl<E, SOT> RefUnwindSafe for ShadowExecutor<E, SOT>where
E: RefUnwindSafe,
SOT: RefUnwindSafe,
impl<E, SOT> Send for ShadowExecutor<E, SOT>where
E: Send,
SOT: Send,
impl<E, SOT> Sync for ShadowExecutor<E, SOT>where
E: Sync,
SOT: Sync,
impl<E, SOT> Unpin for ShadowExecutor<E, SOT>where
E: Unpin,
SOT: Unpin,
impl<E, SOT> UnwindSafe for ShadowExecutor<E, SOT>where
E: UnwindSafe,
SOT: UnwindSafe,
Blanket Implementations§
source§impl<Tail, T> Prepend<T> for Tail
impl<Tail, T> Prepend<T> for Tail
§type PreprendResult = Tail
type PreprendResult = Tail
The Resulting
TupleList
, of an Prepend::prepend()
call,
including the prepended entry.source§fn prepend(self, value: T) -> (T, <Tail as Prepend<T>>::PreprendResult)
fn prepend(self, value: T) -> (T, <Tail as Prepend<T>>::PreprendResult)
Prepend a value to this tuple, returning a new tuple with prepended value.