diff options
| author | Glenn Smith <glenn@vector35.com> | 2024-03-05 02:08:55 -0500 |
|---|---|---|
| committer | Glenn Smith <glenn@vector35.com> | 2024-03-05 14:01:26 -0500 |
| commit | 2596349220399080054037011947884060414345 (patch) | |
| tree | e28ac5e7efb9a0be5bbd0754c01c90b50acf32a2 /rust/src/function.rs | |
| parent | 69d4d1fa5b397bf591a4d124bb0f1d8106d072df (diff) | |
Rust: Add support for querying analysis status
Diffstat (limited to 'rust/src/function.rs')
| -rw-r--r-- | rust/src/function.rs | 38 |
1 files changed, 38 insertions, 0 deletions
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 { |
