diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/AutoVersionTrackingTask.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/AutoVersionTrackingTask.java index 5e0c8e74416..732b42e4563 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/AutoVersionTrackingTask.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/AutoVersionTrackingTask.java @@ -1224,10 +1224,14 @@ private Map> mapFunctionScalarAndAddressOperands( if (map.keySet().isEmpty()) { continue; } - + // get offset from top of function to use in function to operandMap map - Long offset = - inst.getAddress().subtract(function.getEntryPoint().getOffset()).getOffset(); + // can be positive or negative offset (positive means instruction address is after + // the entry address, negative means instruction address is before entry address) + Long entryOffset = function.getEntryPoint().getOffset(); + Long instOffset = inst.getAddress().getOffset(); + Long offset = instOffset - entryOffset; + offsetToOperandsMap.put(offset, map); }