diff options
| author | Mark Rowe <mark@vector35.com> | 2025-08-11 10:42:07 -0700 |
|---|---|---|
| committer | Mark Rowe <mark@vector35.com> | 2025-08-27 15:59:48 -0700 |
| commit | b302d7ba796f41b1102ee61feed8b8e212299997 (patch) | |
| tree | 722583a526fa821d7592e38efabb79cb9853e8a9 /rust/src/variable.rs | |
| parent | 28ff277a2a7693d5a9ab1929bc459049c2e52b27 (diff) | |
[Rust] Fix a couple of oversights in the API
1. Some SSA-specific functions are now implemented on
`LowLevelILFunction<M, SSA>` rather than `Ref<LowLevelILFunction<M, SSA>>`.
2. A lifting helper for `LLIL_TAILCALL` is added to `LowLevelILFunction`.
3. `PossibleValueSet::ImportedAddressValue` now holds the value.
Diffstat (limited to 'rust/src/variable.rs')
| -rw-r--r-- | rust/src/variable.rs | 16 |
1 files changed, 12 insertions, 4 deletions
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, |
