Merge remote-tracking branch 'origin/GP-7021_ghidra_red_tenetplusplus_pin_tracer--SQUASHED'

This commit is contained in:
Ryan Kurtz
2026-08-28 10:01:06 -04:00
7 changed files with 909 additions and 10 deletions

View File

@@ -287,15 +287,17 @@ public class BreakpointTimelineProvider extends ComponentProvider {
for (final TraceReference reference : currentTrace.getReferenceManager()
.getReferencesToRange(Lifespan.ALL, range)) {
if ((reference.getReferenceType() == RefType.READ) &&
(kind == TraceBreakpointKind.READ)) {
if ((reference.getReferenceType() == RefType.READ &&
kind == TraceBreakpointKind.READ) ||
(reference.getReferenceType() == RefType.READ_WRITE)) {
breakpointHits.add(
new BreakpointHitEvent(reference.getStartSnap(), TraceBreakpointKind.READ,
breakpointLocation.getName(reference.getStartSnap())));
}
if ((reference.getReferenceType() == RefType.WRITE) &&
(kind == TraceBreakpointKind.WRITE)) {
if ((reference.getReferenceType() == RefType.WRITE &&
kind == TraceBreakpointKind.WRITE) ||
(reference.getReferenceType() == RefType.READ_WRITE)) {
breakpointHits.add(
new BreakpointHitEvent(reference.getStartSnap(), TraceBreakpointKind.WRITE,
breakpointLocation.getName(reference.getStartSnap())));

View File

@@ -31,8 +31,8 @@ import ghidra.program.model.lang.*;
import ghidra.program.model.listing.*;
import ghidra.program.model.mem.MemoryAccessException;
import ghidra.program.model.pcode.*;
import ghidra.util.exception.InvalidInputException;
import ghidra.util.exception.NotFoundException;
import ghidra.util.Msg;
import ghidra.util.exception.*;
import ghidra.util.task.TaskMonitor;
/**
@@ -99,6 +99,18 @@ public class SymPcodeExecutor extends PcodeExecutor<Sym> {
// TODO: Is there a way to know if a userop affects the stack?
}
@Override
public void stepOp(PcodeOp op, PcodeFrame frame, PcodeUseropLibrary<Sym> library) {
// TODO: This function can probably be removed after GP-6707 is complete
try {
monitor.checkCancelled();
}
catch (CancelledException e) {
throw new PcodeExecutionException("Monitor was cancelled", frame, e);
}
super.stepOp(op, frame, library);
}
/**
* Attempt to figure the stack depth change for a given function
*