more generic reordering

This commit is contained in:
Dominik Maier 2021-02-05 01:15:03 +01:00
parent 3ddf4d4d23
commit 8e512a68b5
3 changed files with 18 additions and 18 deletions

View File

@ -63,7 +63,7 @@ where
#[cfg(unix)] #[cfg(unix)]
#[cfg(feature = "std")] #[cfg(feature = "std")]
unsafe { unsafe {
set_oncrash_ptrs::<EM, C, OT, FT, I, R>(_state, _event_mgr, _input); set_oncrash_ptrs::<C, EM, FT, I, OT, R>(_state, _event_mgr, _input);
} }
Ok(()) Ok(())
} }
@ -84,7 +84,7 @@ where
#[cfg(unix)] #[cfg(unix)]
#[cfg(feature = "std")] #[cfg(feature = "std")]
unsafe { unsafe {
reset_oncrash_ptrs::<EM, C, OT, FT, I, R>(); reset_oncrash_ptrs::<C, EM, FT, I, OT, R>();
} }
Ok(()) Ok(())
} }
@ -151,7 +151,7 @@ where
{ {
#[cfg(feature = "std")] #[cfg(feature = "std")]
unsafe { unsafe {
setup_crash_handlers::<EM, C, OT, FT, I, R>(); setup_crash_handlers::<C, EM, FT, I, OT, R>();
} }
Self { Self {
@ -214,7 +214,7 @@ pub mod unix_signals {
/// This is neede for certain non-rust side effects, as well as unix signal handling. /// This is neede for certain non-rust side effects, as well as unix signal handling.
static mut CURRENT_INPUT_PTR: *const c_void = ptr::null(); static mut CURRENT_INPUT_PTR: *const c_void = ptr::null();
pub unsafe extern "C" fn libaflrs_executor_inmem_handle_crash<EM, C, OT, FT, I, R>( pub unsafe extern "C" fn libaflrs_executor_inmem_handle_crash<C, EM, FT, I, OT, R>(
_sig: c_int, _sig: c_int,
info: siginfo_t, info: siginfo_t,
_void: c_void, _void: c_void,
@ -257,7 +257,7 @@ pub mod unix_signals {
std::process::exit(139); std::process::exit(139);
} }
pub unsafe extern "C" fn libaflrs_executor_inmem_handle_timeout<EM, C, OT, FT, I, R>( pub unsafe extern "C" fn libaflrs_executor_inmem_handle_timeout<C, EM, FT, I, OT, R>(
_sig: c_int, _sig: c_int,
_info: siginfo_t, _info: siginfo_t,
_void: c_void, _void: c_void,
@ -308,7 +308,7 @@ pub mod unix_signals {
} }
#[inline] #[inline]
pub unsafe fn set_oncrash_ptrs<EM, C, OT, FT, I, R>( pub unsafe fn set_oncrash_ptrs<C, EM, FT, I, OT, R>(
state: &State<C, I, R, FT>, state: &State<C, I, R, FT>,
event_mgr: &mut EM, event_mgr: &mut EM,
input: &I, input: &I,
@ -326,14 +326,14 @@ pub mod unix_signals {
} }
#[inline] #[inline]
pub unsafe fn reset_oncrash_ptrs<EM, C, OT, FT, I, R>() { pub unsafe fn reset_oncrash_ptrs<C, EM, FT, I, OT, R>() {
CURRENT_INPUT_PTR = ptr::null(); CURRENT_INPUT_PTR = ptr::null();
STATE_PTR = ptr::null(); STATE_PTR = ptr::null();
EVENT_MGR_PTR = ptr::null_mut(); EVENT_MGR_PTR = ptr::null_mut();
} }
// TODO clearly state that manager should be static (maybe put the 'static lifetime?) // TODO clearly state that manager should be static (maybe put the 'static lifetime?)
pub unsafe fn setup_crash_handlers<EM, C, OT, FT, I, R>() pub unsafe fn setup_crash_handlers<C, EM, FT, I, OT, R>()
where where
EM: EventManager<I>, EM: EventManager<I>,
C: Corpus<I, R>, C: Corpus<I, R>,
@ -345,7 +345,7 @@ pub mod unix_signals {
let mut sa: sigaction = mem::zeroed(); let mut sa: sigaction = mem::zeroed();
libc::sigemptyset(&mut sa.sa_mask as *mut libc::sigset_t); libc::sigemptyset(&mut sa.sa_mask as *mut libc::sigset_t);
sa.sa_flags = SA_NODEFER | SA_SIGINFO; sa.sa_flags = SA_NODEFER | SA_SIGINFO;
sa.sa_sigaction = libaflrs_executor_inmem_handle_crash::<EM, C, OT, FT, I, R> as usize; sa.sa_sigaction = libaflrs_executor_inmem_handle_crash::<C, EM, FT, I, OT, R> as usize;
for (sig, msg) in &[ for (sig, msg) in &[
(SIGSEGV, "segfault"), (SIGSEGV, "segfault"),
(SIGBUS, "sigbus"), (SIGBUS, "sigbus"),
@ -359,7 +359,7 @@ pub mod unix_signals {
} }
} }
sa.sa_sigaction = libaflrs_executor_inmem_handle_timeout::<EM, C, OT, FT, I, R> as usize; sa.sa_sigaction = libaflrs_executor_inmem_handle_timeout::<C, EM, FT, I, OT, R> as usize;
if sigaction(SIGUSR2, &mut sa as *mut sigaction, ptr::null_mut()) < 0 { if sigaction(SIGUSR2, &mut sa as *mut sigaction, ptr::null_mut()) < 0 {
panic!("Could not set up sigusr2 handler for timeouts"); panic!("Could not set up sigusr2 handler for timeouts");
} }

View File

@ -44,7 +44,7 @@ use utils::{current_milliseconds, Rand};
/// The main fuzzer trait. /// The main fuzzer trait.
pub trait Fuzzer<C, E, EM, FT, ST, I, OT, R> pub trait Fuzzer<C, E, EM, FT, ST, I, OT, R>
where where
ST: StagesTuple<EM, E, OT, FT, C, I, R>, ST: StagesTuple<C, E, EM, FT, I, OT, R>,
EM: EventManager<I>, EM: EventManager<I>,
E: Executor<I> + HasObservers<OT>, E: Executor<I> + HasObservers<OT>,
OT: ObserversTuple, OT: ObserversTuple,
@ -96,7 +96,7 @@ where
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
pub struct StdFuzzer<C, E, EM, FT, ST, I, OT, R> pub struct StdFuzzer<C, E, EM, FT, ST, I, OT, R>
where where
ST: StagesTuple<EM, E, OT, FT, C, I, R>, ST: StagesTuple<C, E, EM, FT, I, OT, R>,
EM: EventManager<I>, EM: EventManager<I>,
E: Executor<I> + HasObservers<OT>, E: Executor<I> + HasObservers<OT>,
OT: ObserversTuple, OT: ObserversTuple,
@ -112,7 +112,7 @@ where
impl<C, E, EM, FT, ST, I, OT, R> Fuzzer<C, E, EM, FT, ST, I, OT, R> impl<C, E, EM, FT, ST, I, OT, R> Fuzzer<C, E, EM, FT, ST, I, OT, R>
for StdFuzzer<C, E, EM, FT, ST, I, OT, R> for StdFuzzer<C, E, EM, FT, ST, I, OT, R>
where where
ST: StagesTuple<EM, E, OT, FT, C, I, R>, ST: StagesTuple<C, E, EM, FT, I, OT, R>,
EM: EventManager<I>, EM: EventManager<I>,
E: Executor<I> + HasObservers<OT>, E: Executor<I> + HasObservers<OT>,
OT: ObserversTuple, OT: ObserversTuple,
@ -132,7 +132,7 @@ where
impl<C, E, EM, FT, ST, I, OT, R> StdFuzzer<C, E, EM, FT, ST, I, OT, R> impl<C, E, EM, FT, ST, I, OT, R> StdFuzzer<C, E, EM, FT, ST, I, OT, R>
where where
ST: StagesTuple<EM, E, OT, FT, C, I, R>, ST: StagesTuple<C, E, EM, FT, I, OT, R>,
EM: EventManager<I>, EM: EventManager<I>,
E: Executor<I> + HasObservers<OT>, E: Executor<I> + HasObservers<OT>,
OT: ObserversTuple, OT: ObserversTuple,

View File

@ -37,7 +37,7 @@ where
) -> Result<(), AflError>; ) -> Result<(), AflError>;
} }
pub trait StagesTuple<EM, E, OT, FT, C, I, R> pub trait StagesTuple<C, E, EM, FT, I, OT, R>
where where
EM: EventManager<I>, EM: EventManager<I>,
E: Executor<I> + HasObservers<OT>, E: Executor<I> + HasObservers<OT>,
@ -59,7 +59,7 @@ where
fn for_each_mut(&mut self, f: fn(&mut dyn Stage<C, E, EM, FT, I, OT, R>)); fn for_each_mut(&mut self, f: fn(&mut dyn Stage<C, E, EM, FT, I, OT, R>));
} }
impl<EM, E, OT, FT, C, I, R> StagesTuple<EM, E, OT, FT, C, I, R> for () impl<C, E, EM, FT, I, OT, R> StagesTuple<C, E, EM, FT, I, OT, R> for ()
where where
EM: EventManager<I>, EM: EventManager<I>,
E: Executor<I> + HasObservers<OT>, E: Executor<I> + HasObservers<OT>,
@ -83,10 +83,10 @@ where
fn for_each_mut(&mut self, _f: fn(&mut dyn Stage<C, E, EM, FT, I, OT, R>)) {} fn for_each_mut(&mut self, _f: fn(&mut dyn Stage<C, E, EM, FT, I, OT, R>)) {}
} }
impl<Head, Tail, EM, E, OT, FT, C, I, R> StagesTuple<EM, E, OT, FT, C, I, R> for (Head, Tail) impl<Head, Tail, EM, E, OT, FT, C, I, R> StagesTuple<C, E, EM, FT, I, OT, R> for (Head, Tail)
where where
Head: Stage<C, E, EM, FT, I, OT, R>, Head: Stage<C, E, EM, FT, I, OT, R>,
Tail: StagesTuple<EM, E, OT, FT, C, I, R> + TupleList, Tail: StagesTuple<C, E, EM, FT, I, OT, R> + TupleList,
EM: EventManager<I>, EM: EventManager<I>,
E: Executor<I> + HasObservers<OT>, E: Executor<I> + HasObservers<OT>,
OT: ObserversTuple, OT: ObserversTuple,