GP-2635: GDB: Refresh stack on register edits (ensure pc up to date)

This commit is contained in:
Dan
2022-10-11 15:34:45 -04:00
parent 926286ee6f
commit 63ebf07dd2
2 changed files with 7 additions and 3 deletions
@@ -22,7 +22,8 @@ import java.util.concurrent.CompletableFuture;
import agent.gdb.manager.GdbStackFrame;
import agent.gdb.manager.impl.cmd.GdbStateChangeRecord;
import ghidra.dbg.agent.DefaultTargetObject;
import ghidra.dbg.target.*;
import ghidra.dbg.target.TargetObject;
import ghidra.dbg.target.TargetStackFrame;
import ghidra.dbg.target.schema.*;
import ghidra.dbg.util.PathUtils;
import ghidra.lifecycle.Internal;
@@ -34,8 +35,9 @@ import ghidra.program.model.address.Address;
@TargetElementType(type = Void.class) },
attributes = {
@TargetAttributeType(type = Void.class) })
public class GdbModelTargetStackFrame extends DefaultTargetObject<TargetObject, GdbModelTargetStack>
implements TargetStackFrame, TargetAggregate, GdbModelSelectableObject {
public class GdbModelTargetStackFrame
extends DefaultTargetObject<TargetObject, GdbModelTargetStack>
implements TargetStackFrame, GdbModelSelectableObject {
public static final String FUNC_ATTRIBUTE_NAME = PREFIX_INVISIBLE + "function";
public static final String FROM_ATTRIBUTE_NAME = PREFIX_INVISIBLE + "from"; // TODO
@@ -179,6 +179,8 @@ public class GdbModelTargetStackFrameRegisterContainer
return frame.frame.writeRegisters(toWrite);
}).thenCompose(__ -> {
return updateRegisterValues(toWrite.keySet());
}).thenCompose(__ -> {
return frame.getParent().fetchElements(true);
})).thenApply(__ -> null);
}