summaryrefslogtreecommitdiff
path: root/rust/src/function.rs
diff options
context:
space:
mode:
authorGlenn Smith <glenn@vector35.com>2024-03-05 02:08:55 -0500
committerGlenn Smith <glenn@vector35.com>2024-03-05 14:01:26 -0500
commit2596349220399080054037011947884060414345 (patch)
treee28ac5e7efb9a0be5bbd0754c01c90b50acf32a2 /rust/src/function.rs
parent69d4d1fa5b397bf591a4d124bb0f1d8106d072df (diff)
Rust: Add support for querying analysis status
Diffstat (limited to 'rust/src/function.rs')
-rw-r--r--rust/src/function.rs38
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 {