From 2596349220399080054037011947884060414345 Mon Sep 17 00:00:00 2001 From: Glenn Smith Date: Tue, 5 Mar 2024 02:08:55 -0500 Subject: Rust: Add support for querying analysis status --- rust/src/function.rs | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'rust/src/function.rs') diff --git a/rust/src/function.rs b/rust/src/function.rs index 67b68cdc..273a0861 100644 --- a/rust/src/function.rs +++ b/rust/src/function.rs @@ -26,6 +26,10 @@ use crate::{ symbol::Symbol, types::{Conf, NamedTypedVariable, Type}, }; +pub use binaryninjacore_sys::BNAnalysisSkipReason as AnalysisSkipReason; +pub use binaryninjacore_sys::BNFunctionAnalysisSkipOverride as FunctionAnalysisSkipOverride; +pub use binaryninjacore_sys::BNFunctionUpdateType as FunctionUpdateType; + use std::hash::Hash; use std::{fmt, mem}; @@ -324,6 +328,40 @@ impl Function { ); } } + + pub fn analysis_skipped(&self) -> bool { + unsafe { BNIsFunctionAnalysisSkipped(self.handle) } + } + + pub fn set_analysis_skipped(&self, skip: bool) { + if skip { + unsafe { + BNSetFunctionAnalysisSkipOverride( + self.handle, + BNFunctionAnalysisSkipOverride::AlwaysSkipFunctionAnalysis, + ); + } + } else { + unsafe { + BNSetFunctionAnalysisSkipOverride( + self.handle, + BNFunctionAnalysisSkipOverride::NeverSkipFunctionAnalysis, + ); + } + } + } + + pub fn analysis_skip_reason(&self) -> AnalysisSkipReason { + unsafe { BNGetAnalysisSkipReason(self.handle) } + } + + pub fn analysis_skip_override(&self) -> FunctionAnalysisSkipOverride { + unsafe { BNGetFunctionAnalysisSkipOverride(self.handle) } + } + + pub fn set_analysis_skip_override(&self, override_: FunctionAnalysisSkipOverride) { + unsafe { BNSetFunctionAnalysisSkipOverride(self.handle, override_) } + } } impl fmt::Debug for Function { -- cgit v1.3.1