GP-4508 applied critical portion of stored context fix for patch release

This commit is contained in:
ghidra1
2024-06-27 12:20:04 -04:00
parent 72d4a342a6
commit b78c975ee3
@@ -22,7 +22,6 @@ import ghidra.program.database.register.InMemoryRangeMapAdapter;
import ghidra.program.model.address.*; import ghidra.program.model.address.*;
import ghidra.program.model.lang.*; import ghidra.program.model.lang.*;
import ghidra.program.model.listing.ContextChangeException; import ghidra.program.model.listing.ContextChangeException;
import ghidra.util.exception.AssertException;
import ghidra.util.exception.CancelledException; import ghidra.util.exception.CancelledException;
import ghidra.util.task.TaskMonitor; import ghidra.util.task.TaskMonitor;
@@ -248,8 +247,9 @@ abstract public class AbstractStoredProgramContext extends AbstractProgramContex
@Override @Override
public void remove(Address start, Address end, Register register) public void remove(Address start, Address end, Register register)
throws ContextChangeException { throws ContextChangeException {
if (start.getAddressSpace() != end.getAddressSpace()) { if (!start.getAddressSpace().equals(end.getAddressSpace())) {
throw new AssertException("start and end address must be in the same address space"); throw new IllegalArgumentException(
"start and end address must be within the same address space");
} }
RegisterValueStore values = registerValueMap.get(register.getBaseRegister()); RegisterValueStore values = registerValueMap.get(register.getBaseRegister());
if (values != null) { if (values != null) {
@@ -259,8 +259,9 @@ abstract public class AbstractStoredProgramContext extends AbstractProgramContex
} }
// public void removeDefault(Address start, Address end, Register register) { // public void removeDefault(Address start, Address end, Register register) {
// if (start.getAddressSpace() != end.getAddressSpace()) { // if (!start.getAddressSpace().equals(end.getAddressSpace())) {
// throw new AssertException("start and end address must be in the same address space"); // throw new IllegalArgumentException(
// "start and end address must be within the same address space");
// } // }
// invalidateCache(); // invalidateCache();
// RegisterValueStore values = defaultRegisterValueMap.get(register.getBaseRegister()); // RegisterValueStore values = defaultRegisterValueMap.get(register.getBaseRegister());
@@ -272,8 +273,9 @@ abstract public class AbstractStoredProgramContext extends AbstractProgramContex
@Override @Override
public void setValue(Register register, Address start, Address end, BigInteger value) public void setValue(Register register, Address start, Address end, BigInteger value)
throws ContextChangeException { throws ContextChangeException {
if (start.getAddressSpace() != end.getAddressSpace()) { if (!start.getAddressSpace().equals(end.getAddressSpace())) {
throw new AssertException("start and end address must be in the same address space"); throw new IllegalArgumentException(
"start and end address must be within the same address space");
} }
if (value == null) { if (value == null) {
remove(start, end, register); remove(start, end, register);
@@ -284,8 +286,9 @@ abstract public class AbstractStoredProgramContext extends AbstractProgramContex
@Override @Override
public void setDefaultValue(RegisterValue registerValue, Address start, Address end) { public void setDefaultValue(RegisterValue registerValue, Address start, Address end) {
if (start.getAddressSpace() != end.getAddressSpace()) { if (!start.getAddressSpace().equals(end.getAddressSpace())) {
throw new AssertException("start and end address must be in the same address space"); throw new IllegalArgumentException(
"start and end address must be within the same address space");
} }
Register baseRegister = registerValue.getRegister().getBaseRegister(); Register baseRegister = registerValue.getRegister().getBaseRegister();
RegisterValueStore store = defaultRegisterValueMap.get(baseRegister); RegisterValueStore store = defaultRegisterValueMap.get(baseRegister);