pub struct BugRecords {
pub df_bugs: FxHashMap<usize, TyBug>,
pub df_bugs_unwind: FxHashMap<usize, TyBug>,
pub uaf_bugs: FxHashMap<usize, TyBug>,
pub dp_bugs: FxHashMap<usize, TyBug>,
pub dp_bugs_unwind: FxHashMap<usize, TyBug>,
}Fields§
§df_bugs: FxHashMap<usize, TyBug>§df_bugs_unwind: FxHashMap<usize, TyBug>§uaf_bugs: FxHashMap<usize, TyBug>§dp_bugs: FxHashMap<usize, TyBug>§dp_bugs_unwind: FxHashMap<usize, TyBug>Implementations§
Source§impl BugRecords
impl BugRecords
pub fn new() -> BugRecords
Sourcepub fn try_merge_pair(
&mut self,
drop_spot: LocalSpot,
trigger_bb: usize,
in_type: BugType,
) -> Option<BugType>
pub fn try_merge_pair( &mut self, drop_spot: LocalSpot, trigger_bb: usize, in_type: BugType, ) -> Option<BugType>
Returns Some(bug_type) if the caller should insert the bug with the returned type.
Returns None if the bug should be skipped (already covered by an existing entry).
When both UAF and DF exist for the same pair, DF wins as the survivor.
pub fn is_bug_free(&self) -> bool
pub fn df_bugs_output<'tcx>( &self, body: &Body<'tcx>, fn_name: Symbol, span: Span, )
pub fn uaf_bugs_output<'tcx>( &self, body: &Body<'tcx>, fn_name: Symbol, span: Span, )
pub fn dp_bug_output<'tcx>( &self, body: &Body<'tcx>, fn_name: Symbol, span: Span, )
fn emit_bug_reports<'tcx, F>( &self, body: &Body<'tcx>, bugs: &FxHashMap<usize, TyBug>, fn_name: Symbol, span: Span, log_msg: &str, title: &str, detail_formatter: F, )
Trait Implementations§
Auto Trait Implementations§
impl Freeze for BugRecords
impl RefUnwindSafe for BugRecords
impl Send for BugRecords
impl Sync for BugRecords
impl Unpin for BugRecords
impl UnwindSafe for BugRecords
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more