pub struct BasicBlockAnalysisContext {
pub indirect_branches: Vec<IndirectBranchInfo>,
pub indirect_no_return_calls: HashSet<Location>,
pub analysis_skip_override: BNFunctionAnalysisSkipOverride,
pub guided_analysis_mode: bool,
pub trigger_guided_on_invalid_instruction: bool,
pub translate_tail_calls: bool,
pub disallow_branch_to_string: bool,
pub max_function_size: u64,
pub max_size_reached: bool,
/* private fields */
}Fields§
§indirect_branches: Vec<IndirectBranchInfo>§indirect_no_return_calls: HashSet<Location>§analysis_skip_override: BNFunctionAnalysisSkipOverride§guided_analysis_mode: bool§trigger_guided_on_invalid_instruction: bool§translate_tail_calls: bool§disallow_branch_to_string: bool§max_function_size: u64§max_size_reached: boolImplementations§
Source§impl BasicBlockAnalysisContext
impl BasicBlockAnalysisContext
pub unsafe fn from_raw(handle: *mut BNBasicBlockAnalysisContext) -> Self
Sourcepub fn add_contextual_return(&mut self, loc: impl Into<Location>, value: bool)
pub fn add_contextual_return(&mut self, loc: impl Into<Location>, value: bool)
Adds a contextual function return location and its value to the current function.
Sourcepub fn add_direct_code_reference(
&mut self,
target: u64,
src: impl Into<Location>,
)
pub fn add_direct_code_reference( &mut self, target: u64, src: impl Into<Location>, )
Adds a direct code reference to the current function.
Sourcepub fn add_direct_no_return_call(&mut self, loc: impl Into<Location>)
pub fn add_direct_no_return_call(&mut self, loc: impl Into<Location>)
Adds a direct no-return call location to the current function.
Sourcepub fn add_halted_disassembly_address(&mut self, loc: impl Into<Location>)
pub fn add_halted_disassembly_address(&mut self, loc: impl Into<Location>)
Adds an address to the set of halted disassembly addresses.
pub fn add_inlined_unresolved_indirect_branch( &mut self, loc: impl Into<Location>, )
pub fn set_function_arch_context<A: ArchitectureWithFunctionContext>( &mut self, _arch: &A, context: Box<A::FunctionArchContext>, ) -> bool
pub fn get_function_arch_context<A: ArchitectureWithFunctionContext>( &self, _arch: &A, ) -> Option<&A::FunctionArchContext>
Sourcepub fn create_basic_block(
&self,
arch: CoreArchitecture,
start: u64,
) -> Option<Ref<BasicBlock<NativeBlock>>>
pub fn create_basic_block( &self, arch: CoreArchitecture, start: u64, ) -> Option<Ref<BasicBlock<NativeBlock>>>
Creates a new BasicBlock at the specified address for the given CoreArchitecture.
After creating, you can add using BasicBlockAnalysisContext::add_basic_block.
Sourcepub fn add_basic_block(&self, block: Ref<BasicBlock<NativeBlock>>)
pub fn add_basic_block(&self, block: Ref<BasicBlock<NativeBlock>>)
Adds a BasicBlock to the current function.
You can create a BasicBlock via BasicBlockAnalysisContext::create_basic_block.
Sourcepub fn lifter_instruction_data(&self) -> Option<LifterInstructionData>
pub fn lifter_instruction_data(&self) -> Option<LifterInstructionData>
The per-function instruction byte store. Populate it here during basic block analysis so that lifting can read instruction bytes without touching the view from the multi-threaded stage.
Sourcepub fn add_temp_outgoing_reference(&self, target: &Function)
pub fn add_temp_outgoing_reference(&self, target: &Function)
Adds a temporary outgoing reference to the specified function.