* fuzz: Add chaos mode control plane Co-authored-by: Falk Zwimpfer <24669719+FalkZ@users.noreply.github.com> Co-authored-by: Moritz Waser <mzrw.dev@pm.me> * fuzz: Skip branch optimization with chaos mode Co-authored-by: Falk Zwimpfer <24669719+FalkZ@users.noreply.github.com> Co-authored-by: Moritz Waser <mzrw.dev@pm.me> * fuzz: Rename chaos engine -> control plane Co-authored-by: Falk Zwimpfer <24669719+FalkZ@users.noreply.github.com> Co-authored-by: Moritz Waser <mzrw.dev@pm.me> * chaos mode: refactoring ControlPlane to be passed through the call stack by reference Co-authored-by: Falk Zwimpfer <24669719+FalkZ@users.noreply.github.com> Co-authored-by: Remo Senekowitsch <contact@remsle.dev> * fuzz: annotate chaos todos Co-authored-by: Falk Zwimpfer <24669719+FalkZ@users.noreply.github.com> Co-authored-by: Moritz Waser <mzrw.dev@pm.me> * fuzz: cleanup control plane Co-authored-by: Falk Zwimpfer <24669719+FalkZ@users.noreply.github.com> Co-authored-by: Moritz Waser <mzrw.dev@pm.me> * fuzz: remove control plane from compiler context Co-authored-by: Falk Zwimpfer <24669719+FalkZ@users.noreply.github.com> Co-authored-by: Moritz Waser <mzrw.dev@pm.me> * fuzz: move control plane into emit state Co-authored-by: Falk Zwimpfer <24669719+FalkZ@users.noreply.github.com> Co-authored-by: Moritz Waser <mzrw.dev@pm.me> * fuzz: fix remaining compiler errors Co-authored-by: Falk Zwimpfer <24669719+FalkZ@users.noreply.github.com> Co-authored-by: Moritz Waser <mzrw.dev@pm.me> * fix tests * refactor emission state ctrl plane accessors Co-authored-by: Falk Zwimpfer <24669719+FalkZ@users.noreply.github.com> Co-authored-by: Moritz Waser <mzrw.dev@pm.me> * centralize conditional compilation of chaos mode Also cleanup a few straggling dependencies on cranelift-control that aren't needed anymore. Co-authored-by: Falk Zwimpfer <24669719+FalkZ@users.noreply.github.com> Co-authored-by: Moritz Waser <mzrw.dev@pm.me> * add cranelift-control to published crates prtest:full Co-authored-by: Falk Zwimpfer <24669719+FalkZ@users.noreply.github.com> Co-authored-by: Moritz Waser <mzrw.dev@pm.me> * add cranelift-control to public crates Co-authored-by: Falk Zwimpfer <24669719+FalkZ@users.noreply.github.com> Co-authored-by: Moritz Waser <mzrw.dev@pm.me> --------- Co-authored-by: Falk Zwimpfer <24669719+FalkZ@users.noreply.github.com> Co-authored-by: Moritz Waser <mzrw.dev@pm.me> Co-authored-by: Remo Senekowitsch <contact@remsle.dev>
31 lines
1.0 KiB
Rust
31 lines
1.0 KiB
Rust
//! # Cranelift Control
|
|
//!
|
|
//! This is the home of the control plane of chaos mode, a compilation feature
|
|
//! intended to be turned on for certain fuzz targets. When the feature is
|
|
//! turned off, as is normally the case, [ControlPlane] will be a zero-sized
|
|
//! type and optimized away.
|
|
//!
|
|
//! While the feature is turned on, the struct [ControlPlane]
|
|
//! provides functionality to tap into pseudo-randomness at specific locations
|
|
//! in the code. It may be used for targeted fuzzing of compiler internals,
|
|
//! e.g. manipulate heuristic optimizations, clobber undefined register bits
|
|
//! etc.
|
|
//!
|
|
//! There are two ways to acquire a [ControlPlane]:
|
|
//! - [arbitrary] for the real deal
|
|
//! - [default] for an "empty" control plane which always returns default
|
|
//! values
|
|
//!
|
|
//! [arbitrary]: ControlPlane#method.arbitrary
|
|
//! [default]: ControlPlane#method.default
|
|
|
|
#[cfg(not(feature = "chaos"))]
|
|
mod zero_sized;
|
|
#[cfg(not(feature = "chaos"))]
|
|
pub use zero_sized::*;
|
|
|
|
#[cfg(feature = "chaos")]
|
|
mod chaos;
|
|
#[cfg(feature = "chaos")]
|
|
pub use chaos::*;
|