diff options
Diffstat (limited to 'rust')
| -rw-r--r-- | rust/src/low_level_il/function.rs | 2 | ||||
| -rw-r--r-- | rust/src/low_level_il/lifting.rs | 1 | ||||
| -rw-r--r-- | rust/src/variable.rs | 16 |
3 files changed, 14 insertions, 5 deletions
diff --git a/rust/src/low_level_il/function.rs b/rust/src/low_level_il/function.rs index 177b2a1a..65c3536a 100644 --- a/rust/src/low_level_il/function.rs +++ b/rust/src/low_level_il/function.rs @@ -249,7 +249,7 @@ impl Ref<LowLevelILFunction<Mutable, NonSSA>> { } } -impl<M: FunctionMutability> Ref<LowLevelILFunction<M, SSA>> { +impl<M: FunctionMutability> LowLevelILFunction<M, SSA> { /// Return a vector of all instructions that use the given SSA register. #[must_use] pub fn get_ssa_register_uses<R: ArchReg>( diff --git a/rust/src/low_level_il/lifting.rs b/rust/src/low_level_il/lifting.rs index f2850776..a51cd3d5 100644 --- a/rust/src/low_level_il/lifting.rs +++ b/rust/src/low_level_il/lifting.rs @@ -1048,6 +1048,7 @@ impl LowLevelILMutableFunction { no_arg_lifter!(bp, LLIL_BP, VoidExpr); unsized_unary_op_lifter!(call, LLIL_CALL, VoidExpr); + unsized_unary_op_lifter!(tailcall, LLIL_TAILCALL, VoidExpr); unsized_unary_op_lifter!(ret, LLIL_RET, VoidExpr); unsized_unary_op_lifter!(jump, LLIL_JUMP, VoidExpr); // TODO: LLIL_JUMP_TO diff --git a/rust/src/variable.rs b/rust/src/variable.rs index 7e32727a..fc6febfb 100644 --- a/rust/src/variable.rs +++ b/rust/src/variable.rs @@ -654,7 +654,9 @@ pub enum PossibleValueSet { value: i64, }, ReturnAddressValue, - ImportedAddressValue, + ImportedAddressValue { + value: i64, + }, SignedRangeValue { value: i64, ranges: Vec<ValueRange<i64>>, @@ -708,7 +710,9 @@ impl PossibleValueSet { }, RegisterValueType::StackFrameOffset => Self::StackFrameOffset { value: value.value }, RegisterValueType::ReturnAddressValue => Self::ReturnAddressValue, - RegisterValueType::ImportedAddressValue => Self::ImportedAddressValue, + RegisterValueType::ImportedAddressValue => { + Self::ImportedAddressValue { value: value.value } + } RegisterValueType::SignedRangeValue => { let raw_ranges = unsafe { std::slice::from_raw_parts(value.ranges, value.count) }; Self::SignedRangeValue { @@ -791,7 +795,9 @@ impl PossibleValueSet { raw.value = value; } PossibleValueSet::ReturnAddressValue => {} - PossibleValueSet::ImportedAddressValue => {} + PossibleValueSet::ImportedAddressValue { value } => { + raw.value = value; + } PossibleValueSet::SignedRangeValue { value, ranges } => { let boxed_raw_ranges: Box<[BNValueRange]> = ranges.into_iter().map(BNValueRange::from).collect(); @@ -884,7 +890,9 @@ impl PossibleValueSet { } PossibleValueSet::StackFrameOffset { .. } => RegisterValueType::StackFrameOffset, PossibleValueSet::ReturnAddressValue => RegisterValueType::ReturnAddressValue, - PossibleValueSet::ImportedAddressValue => RegisterValueType::ImportedAddressValue, + PossibleValueSet::ImportedAddressValue { .. } => { + RegisterValueType::ImportedAddressValue + } PossibleValueSet::SignedRangeValue { .. } => RegisterValueType::SignedRangeValue, PossibleValueSet::UnsignedRangeValue { .. } => RegisterValueType::UnsignedRangeValue, PossibleValueSet::LookupTableValue { .. } => RegisterValueType::LookupTableValue, |
