GP-3074: Create separate Emulator.tool

This commit is contained in:
Dan
2023-04-21 16:35:31 -04:00
parent 17ad8c3a47
commit aeb8dc5b02
12 changed files with 1283 additions and 14 deletions
@@ -89,6 +89,7 @@ src/main/help/help/topics/VariableValueHoverPlugin/images/VariableValueHoverPlug
src/main/help/help/topics/VariableValueHoverPlugin/images/VariableValueHoverPluginDecompiler.png||GHIDRA||||END|
src/main/help/help/topics/VariableValueHoverPlugin/images/VariableValueHoverPluginListing.png||GHIDRA||||END|
src/main/resources/defaultTools/Debugger.tool||GHIDRA||||END|
src/main/resources/defaultTools/Emulator.tool||GHIDRA||||END|
src/main/resources/images/add.png||FAMFAMFAM Icons - CC 2.5|||famfamfam silk icon set|END|
src/main/resources/images/attach.png||GHIDRA||||END|
src/main/resources/images/autoread.png||GHIDRA||||END|
@@ -122,6 +123,7 @@ src/main/resources/images/object-running.png||GHIDRA||||END|
src/main/resources/images/object-terminated.png||GHIDRA||||END|
src/main/resources/images/object-unpopulated.png||GHIDRA||||END|
src/main/resources/images/process.png||GHIDRA||||END|
src/main/resources/images/process32.png||GHIDRA||||END|
src/main/resources/images/record.png||GHIDRA||||END|
src/main/resources/images/register-marker.png||GHIDRA||||END|
src/main/resources/images/registers.png||GHIDRA||||END|
@@ -32,7 +32,6 @@ import ghidra.framework.plugintool.util.PluginStatus;
status = PluginStatus.RELEASED,
servicesRequired = {
DebuggerLogicalBreakpointService.class,
DebuggerModelService.class,
},
eventsConsumed = {
TraceOpenedPluginEvent.class,
@@ -76,7 +76,6 @@ import utilities.util.SuppressableCallback.Suppression;
TraceSelectionPluginEvent.class
},
servicesRequired = {
DebuggerModelService.class, // For memory capture
DebuggerStaticMappingService.class, // For static listing sync. TODO: Optional?
DebuggerEmulationService.class, // TODO: Optional?
ProgramManager.class, // For static listing sync
@@ -59,7 +59,6 @@ import ghidra.program.util.ProgramSelection;
TraceSelectionPluginEvent.class,
},
servicesRequired = {
DebuggerModelService.class, // For memory capture
ClipboardService.class,
})
public class DebuggerMemoryBytesPlugin
@@ -38,7 +38,6 @@ import ghidra.framework.plugintool.util.PluginStatus;
TraceActivatedPluginEvent.class,
},
servicesRequired = {
DebuggerModelService.class,
DebuggerStaticMappingService.class,
DebuggerTraceManagerService.class,
ProgramManager.class,
@@ -37,7 +37,6 @@ import ghidra.framework.plugintool.util.PluginStatus;
TraceActivatedPluginEvent.class,
},
servicesRequired = {
DebuggerModelService.class,
DebuggerStaticMappingService.class,
DebuggerTraceManagerService.class,
ProgramManager.class,
@@ -46,7 +46,6 @@ import ghidra.util.Msg;
TraceClosedPluginEvent.class,
},
servicesRequired = {
DebuggerModelService.class,
DebuggerTraceManagerService.class,
MarkerService.class, // TODO
DataTypeManagerService.class, // For DataType selection field
@@ -468,8 +468,6 @@ public class DebuggerRegistersProvider extends ComponentProviderAdapter
private Trace currentTrace; // Copy for transition
private TraceRecorder currentRecorder; // Copy for transition
@AutoServiceConsumed
private DebuggerModelService modelService;
@AutoServiceConsumed
private DebuggerTraceManagerService traceManager;
@AutoServiceConsumed
@@ -37,7 +37,6 @@ import ghidra.framework.plugintool.util.PluginStatus;
DebuggerWatchesService.class,
},
servicesRequired = {
DebuggerModelService.class,
DebuggerTraceManagerService.class,
DataTypeManagerService.class, // For DataType selection field
})
@@ -41,7 +41,8 @@ import ghidra.framework.model.*;
import ghidra.framework.plugintool.*;
import ghidra.framework.plugintool.annotation.AutoServiceConsumed;
import ghidra.framework.plugintool.util.PluginStatus;
import ghidra.program.model.address.*;
import ghidra.program.model.address.Address;
import ghidra.program.model.address.AddressRange;
import ghidra.program.model.listing.*;
import ghidra.program.util.*;
import ghidra.trace.model.*;
@@ -70,7 +71,6 @@ import ghidra.util.datastruct.ListenerSet;
},
servicesRequired = {
DebuggerTraceManagerService.class,
DebuggerModelService.class,
DebuggerStaticMappingService.class,
},
servicesProvided = {
@@ -1006,7 +1006,7 @@ public class DebuggerLogicalBreakpointServicePlugin extends Plugin
private void traceOpened(Trace trace) {
processChange(c -> {
TraceRecorder recorder = modelService.getRecorder(trace);
TraceRecorder recorder = modelService == null ? null : modelService.getRecorder(trace);
long snap = traceManager.getCurrentFor(trace).getSnap();
doTrackTrace(c, trace, recorder, snap);
}, "traceOpened");
@@ -1171,7 +1171,7 @@ public class DebuggerLogicalBreakpointServicePlugin extends Plugin
public CompletableFuture<Void> placeBreakpointAt(Trace trace, Address address, long length,
Collection<TraceBreakpointKind> kinds, String name) {
long snap = traceManager.getCurrentFor(trace).getSnap();
TraceRecorder recorder = modelService.getRecorder(trace);
TraceRecorder recorder = modelService == null ? null : modelService.getRecorder(trace);
ProgramLocation staticLocation = mappingService.getOpenMappedLocation(
new DefaultTraceLocation(trace, null, Lifespan.at(snap), address));
@@ -1268,7 +1268,8 @@ public class DebuggerLogicalBreakpointServicePlugin extends Plugin
private void planActOnLocTarget(BreakpointActionSet actions, TraceBreakpoint tb,
BiConsumer<BreakpointActionSet, TargetBreakpointLocation> targetLocConsumer) {
TraceRecorder recorder = modelService.getRecorder(tb.getTrace());
TraceRecorder recorder =
modelService == null ? null : modelService.getRecorder(tb.getTrace());
if (recorder == null) {
return;
}
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB