Chaos mode MVP: Skip branch optimization in MachBuffer (#6039)
* 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>
This commit is contained in:
committed by
GitHub
parent
064968b01d
commit
7eb8914090
30
cranelift/control/src/lib.rs
Normal file
30
cranelift/control/src/lib.rs
Normal file
@@ -0,0 +1,30 @@
|
||||
//! # 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::*;
|
||||
Reference in New Issue
Block a user