summaryrefslogtreecommitdiff
path: root/rust/src
diff options
context:
space:
mode:
authorMichael Krasnitski <michael.krasnitski@gmail.com>2024-03-20 14:57:23 -0400
committerKyle Martin <krm504@nyu.edu>2024-04-09 12:19:40 -0400
commita6b48153b64a227c3492d77a96e679b8c469034c (patch)
tree1eff372ed5dad25d5437ff9a0e7d044b8892ff28 /rust/src
parent111be980e6578e3799ded8e685ae7158027bfe55 (diff)
Add index field to IL instructions
Diffstat (limited to 'rust/src')
-rw-r--r--rust/src/hlil/instruction.rs7
-rw-r--r--rust/src/hlil/lift.rs1
-rw-r--r--rust/src/mlil/instruction.rs7
-rw-r--r--rust/src/mlil/lift.rs1
4 files changed, 12 insertions, 4 deletions
diff --git a/rust/src/hlil/instruction.rs b/rust/src/hlil/instruction.rs
index 159652f1..9bffadaf 100644
--- a/rust/src/hlil/instruction.rs
+++ b/rust/src/hlil/instruction.rs
@@ -15,6 +15,7 @@ use super::{HighLevelILFunction, HighLevelILLiftedInstruction, HighLevelILLifted
pub struct HighLevelILInstruction {
pub function: Ref<HighLevelILFunction>,
pub address: u64,
+ pub index: usize,
pub kind: HighLevelILInstructionKind,
}
@@ -144,8 +145,8 @@ pub enum HighLevelILInstructionKind {
DoWhileSsa(WhileSsa),
}
impl HighLevelILInstruction {
- pub(crate) fn new(function: Ref<HighLevelILFunction>, idx: usize) -> Self {
- let op = unsafe { BNGetHighLevelILByIndex(function.handle, idx, function.full_ast) };
+ pub(crate) fn new(function: Ref<HighLevelILFunction>, index: usize) -> Self {
+ let op = unsafe { BNGetHighLevelILByIndex(function.handle, index, function.full_ast) };
use BNHighLevelILOperation::*;
use HighLevelILInstructionKind as Op;
let kind = match op.operation {
@@ -627,6 +628,7 @@ impl HighLevelILInstruction {
Self {
function,
address: op.address,
+ index,
kind,
}
}
@@ -875,6 +877,7 @@ impl HighLevelILInstruction {
HighLevelILLiftedInstruction {
function: self.function.clone(),
address: self.address,
+ index: self.index,
kind,
}
}
diff --git a/rust/src/hlil/lift.rs b/rust/src/hlil/lift.rs
index 20f8800b..74ae0c64 100644
--- a/rust/src/hlil/lift.rs
+++ b/rust/src/hlil/lift.rs
@@ -23,6 +23,7 @@ pub enum HighLevelILLiftedOperand {
pub struct HighLevelILLiftedInstruction {
pub function: Ref<HighLevelILFunction>,
pub address: u64,
+ pub index: usize,
pub kind: HighLevelILLiftedInstructionKind,
}
diff --git a/rust/src/mlil/instruction.rs b/rust/src/mlil/instruction.rs
index e457c93e..3b5dcfb4 100644
--- a/rust/src/mlil/instruction.rs
+++ b/rust/src/mlil/instruction.rs
@@ -17,6 +17,7 @@ use super::MediumLevelILFunction;
pub struct MediumLevelILInstruction {
pub function: Ref<MediumLevelILFunction>,
pub address: u64,
+ pub index: usize,
pub kind: MediumLevelILInstructionKind,
}
@@ -166,8 +167,8 @@ impl core::fmt::Debug for MediumLevelILInstruction {
}
impl MediumLevelILInstruction {
- pub(crate) fn new(function: Ref<MediumLevelILFunction>, idx: usize) -> Self {
- let op = unsafe { BNGetMediumLevelILByIndex(function.handle, idx) };
+ pub(crate) fn new(function: Ref<MediumLevelILFunction>, index: usize) -> Self {
+ let op = unsafe { BNGetMediumLevelILByIndex(function.handle, index) };
use BNMediumLevelILOperation::*;
use MediumLevelILInstructionKind as Op;
let kind = match op.operation {
@@ -711,6 +712,7 @@ impl MediumLevelILInstruction {
Self {
function,
address: op.address,
+ index,
kind,
}
}
@@ -1019,6 +1021,7 @@ impl MediumLevelILInstruction {
MediumLevelILLiftedInstruction {
function: self.function.clone(),
address: self.address,
+ index: self.index,
kind,
}
}
diff --git a/rust/src/mlil/lift.rs b/rust/src/mlil/lift.rs
index db91a8d8..39e8e983 100644
--- a/rust/src/mlil/lift.rs
+++ b/rust/src/mlil/lift.rs
@@ -26,6 +26,7 @@ pub enum MediumLevelILLiftedOperand {
pub struct MediumLevelILLiftedInstruction {
pub function: Ref<MediumLevelILFunction>,
pub address: u64,
+ pub index: usize,
pub kind: MediumLevelILLiftedInstructionKind,
}