mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-06-01 13:39:21 +08:00
GP-2635: GDB: Refresh stack on register edits (ensure pc up to date)
This commit is contained in:
+5
-3
@@ -22,7 +22,8 @@ import java.util.concurrent.CompletableFuture;
|
|||||||
import agent.gdb.manager.GdbStackFrame;
|
import agent.gdb.manager.GdbStackFrame;
|
||||||
import agent.gdb.manager.impl.cmd.GdbStateChangeRecord;
|
import agent.gdb.manager.impl.cmd.GdbStateChangeRecord;
|
||||||
import ghidra.dbg.agent.DefaultTargetObject;
|
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.target.schema.*;
|
||||||
import ghidra.dbg.util.PathUtils;
|
import ghidra.dbg.util.PathUtils;
|
||||||
import ghidra.lifecycle.Internal;
|
import ghidra.lifecycle.Internal;
|
||||||
@@ -34,8 +35,9 @@ import ghidra.program.model.address.Address;
|
|||||||
@TargetElementType(type = Void.class) },
|
@TargetElementType(type = Void.class) },
|
||||||
attributes = {
|
attributes = {
|
||||||
@TargetAttributeType(type = Void.class) })
|
@TargetAttributeType(type = Void.class) })
|
||||||
public class GdbModelTargetStackFrame extends DefaultTargetObject<TargetObject, GdbModelTargetStack>
|
public class GdbModelTargetStackFrame
|
||||||
implements TargetStackFrame, TargetAggregate, GdbModelSelectableObject {
|
extends DefaultTargetObject<TargetObject, GdbModelTargetStack>
|
||||||
|
implements TargetStackFrame, GdbModelSelectableObject {
|
||||||
public static final String FUNC_ATTRIBUTE_NAME = PREFIX_INVISIBLE + "function";
|
public static final String FUNC_ATTRIBUTE_NAME = PREFIX_INVISIBLE + "function";
|
||||||
public static final String FROM_ATTRIBUTE_NAME = PREFIX_INVISIBLE + "from"; // TODO
|
public static final String FROM_ATTRIBUTE_NAME = PREFIX_INVISIBLE + "from"; // TODO
|
||||||
|
|
||||||
|
|||||||
+2
@@ -179,6 +179,8 @@ public class GdbModelTargetStackFrameRegisterContainer
|
|||||||
return frame.frame.writeRegisters(toWrite);
|
return frame.frame.writeRegisters(toWrite);
|
||||||
}).thenCompose(__ -> {
|
}).thenCompose(__ -> {
|
||||||
return updateRegisterValues(toWrite.keySet());
|
return updateRegisterValues(toWrite.keySet());
|
||||||
|
}).thenCompose(__ -> {
|
||||||
|
return frame.getParent().fetchElements(true);
|
||||||
})).thenApply(__ -> null);
|
})).thenApply(__ -> null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user