diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/DebuggerCoordinates.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/DebuggerCoordinates.java index 01fd9f49d1..0ea96f1350 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/DebuggerCoordinates.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/DebuggerCoordinates.java @@ -392,6 +392,22 @@ public class DebuggerCoordinates { return time(TraceSchedule.snap(snap)); } + /** + * Get these same coordinates with time replace by the given snap-only schedule, and DO NOT + * resolve or adjust anything else + * + * @param snap the new snap + * @return exactly these same coordinates with the snap/time changed + */ + public DebuggerCoordinates snapNoResolve(long snap) { + if (time.isSnapOnly() && time.getSnap() == snap) { + return this; + } + TraceSchedule newTime = TraceSchedule.snap(snap); + return new DebuggerCoordinates(trace, platform, recorder, thread, view, newTime, frame, + object); + } + public DebuggerCoordinates time(TraceSchedule newTime) { if (trace == null) { return NOWHERE; diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/model/AbstractObjectsTableBasedPanel.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/model/AbstractObjectsTableBasedPanel.java index 1462651628..d8373a9821 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/model/AbstractObjectsTableBasedPanel.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/model/AbstractObjectsTableBasedPanel.java @@ -36,6 +36,7 @@ import ghidra.framework.plugintool.annotation.AutoServiceConsumed; import ghidra.program.model.address.Address; import ghidra.program.model.address.AddressRange; import ghidra.program.util.ProgramSelection; +import ghidra.trace.model.Trace; import ghidra.trace.model.target.TraceObject; import ghidra.trace.model.target.TraceObjectInterface; @@ -89,6 +90,12 @@ public abstract class AbstractObjectsTableBasedPanel" + // - " " + // - " " + // - " " + // - " " + // - " " + // <---- NOTE HERE - " " + // - " " + // - " " + // - " " + // - " " + // - " " + // - " " + // - " " + // - " " + // - " " + // - " " + // - " " + // - " " + // - " " + // - " " + // - " " + // - " " + // - " " + // - " " + // - " " + // - " " + // - " " + // - " " + // - " " + // - ""); + ctx = XmlSchemaContext.deserialize(""" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + """); try (UndoableTransaction tid = tb.startTransaction()) { tb.trace.getObjectManager().createRootObject(ctx.getSchema(new SchemaName("Session"))); diff --git a/Ghidra/Debug/Framework-Debugging/src/test/java/ghidra/dbg/model/TestTargetSession.java b/Ghidra/Debug/Framework-Debugging/src/test/java/ghidra/dbg/model/TestTargetSession.java index 2cc280a9da..2cd0bd279d 100644 --- a/Ghidra/Debug/Framework-Debugging/src/test/java/ghidra/dbg/model/TestTargetSession.java +++ b/Ghidra/Debug/Framework-Debugging/src/test/java/ghidra/dbg/model/TestTargetSession.java @@ -28,7 +28,8 @@ import ghidra.dbg.target.schema.TargetObjectSchema; import ghidra.program.model.address.AddressSpace; public class TestTargetSession extends DefaultTargetModelRoot - implements TestTargetObject, TargetFocusScope, TargetEventScope, TargetLauncher { + implements TestTargetObject, TargetActiveScope, TargetFocusScope, TargetEventScope, + TargetLauncher { public final TestTargetEnvironment environment; public final TestTargetProcessContainer processes; @@ -65,6 +66,14 @@ public class TestTargetSession extends DefaultTargetModelRoot return (TestDebuggerObjectModel) super.getModel(); } + @Override + public CompletableFuture requestActivation(TargetObject obj) { + return model.gateFuture(getModel().future(null).thenAccept(__ -> { + changeAttributes(List.of(), List.of(), Map.of(FOCUS_ATTRIBUTE_NAME, obj), + "Activation requested"); + })); + } + @Override public CompletableFuture requestFocus(TargetObject obj) { return model.gateFuture(getModel().future(null).thenAccept(__ -> { @@ -82,7 +91,6 @@ public class TestTargetSession extends DefaultTargetModelRoot @Override public CompletableFuture launch(Map args) { - // TODO: Record the request and allow tests to complete it? return AsyncUtils.NIL; } } diff --git a/Ghidra/Debug/Framework-Debugging/src/test/resources/ghidra/dbg/model/test_schema.xml b/Ghidra/Debug/Framework-Debugging/src/test/resources/ghidra/dbg/model/test_schema.xml index 8109d9390e..cd3f019e05 100644 --- a/Ghidra/Debug/Framework-Debugging/src/test/resources/ghidra/dbg/model/test_schema.xml +++ b/Ghidra/Debug/Framework-Debugging/src/test/resources/ghidra/dbg/model/test_schema.xml @@ -3,6 +3,7 @@ +