summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2024-10-30 14:32:22 -0400
committerMason Reed <mason@vector35.com>2024-10-30 15:40:40 -0400
commita4cf45dcd5242c7c68edc3ecf38e857cb24d3cbc (patch)
tree10e4612bef8a51020dd5a4670f8c2c4c33f67657 /plugins
parent2618b22222f8405e68e20a41d47050b0bb86318d (diff)
WARP: Fix call site constraint offsets
Diffstat (limited to 'plugins')
-rw-r--r--plugins/warp/src/cache.rs5
1 files changed, 2 insertions, 3 deletions
diff --git a/plugins/warp/src/cache.rs b/plugins/warp/src/cache.rs
index 54ce339f..9364de0d 100644
--- a/plugins/warp/src/cache.rs
+++ b/plugins/warp/src/cache.rs
@@ -199,15 +199,14 @@ impl GUIDCache {
// Call site is a function, constrain on it.
let cs_ref_func_id = FunctionID::from(cs_ref_func.as_ref());
if cs_ref_func_id != func_id {
- let call_site_offset: i64 =
- func_start as i64 - call_site.address as i64;
+ let call_site_offset: i64 = call_site.address.wrapping_sub(func_start) as i64;
constraints
.insert(self.function_constraint(&cs_ref_func, call_site_offset));
}
}
Err(_) => {
// We could be dealing with an extern symbol, get the symbol as a constraint.
- let call_site_offset: i64 = func_start as i64 - call_site.address as i64;
+ let call_site_offset: i64 = call_site.address.wrapping_sub(func_start) as i64;
if let Ok(call_site_sym) = view.symbol_by_address(cs_ref_addr) {
constraints.insert(
self.function_constraint_from_symbol(