From a328ae29b9a3fc8d1d360caeac2f74638e9a9175 Mon Sep 17 00:00:00 2001 From: Dan <46821332+nsadeveloper789@users.noreply.github.com> Date: Wed, 1 Dec 2021 10:23:01 -0500 Subject: [PATCH] GP-0: Fixes for trace emulator --- ...ctCheckedTraceCachedWriteBytesPcodeExecutorState.java | 8 +++++--- .../trace/TraceCachedWriteBytesPcodeExecutorState.java | 9 +++++---- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/pcode/exec/trace/AbstractCheckedTraceCachedWriteBytesPcodeExecutorState.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/pcode/exec/trace/AbstractCheckedTraceCachedWriteBytesPcodeExecutorState.java index b9d37a8915..495b85a103 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/pcode/exec/trace/AbstractCheckedTraceCachedWriteBytesPcodeExecutorState.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/pcode/exec/trace/AbstractCheckedTraceCachedWriteBytesPcodeExecutorState.java @@ -19,6 +19,7 @@ import com.google.common.collect.RangeSet; import com.google.common.primitives.UnsignedLong; import ghidra.program.model.address.*; +import ghidra.program.model.lang.Language; import ghidra.trace.model.Trace; import ghidra.trace.model.memory.TraceMemorySpace; import ghidra.trace.model.thread.TraceThread; @@ -27,8 +28,9 @@ public abstract class AbstractCheckedTraceCachedWriteBytesPcodeExecutorState extends TraceCachedWriteBytesPcodeExecutorState { protected class CheckedCachedSpace extends CachedSpace { - public CheckedCachedSpace(AddressSpace space, TraceMemorySpace source, long snap) { - super(space, source, snap); + public CheckedCachedSpace(Language language, AddressSpace space, TraceMemorySpace source, + long snap) { + super(language, space, source, snap); } @Override @@ -54,7 +56,7 @@ public abstract class AbstractCheckedTraceCachedWriteBytesPcodeExecutorState @Override protected CachedSpace newSpace(AddressSpace space, TraceMemorySpace source, long snap) { - return new CheckedCachedSpace(space, source, snap); + return new CheckedCachedSpace(language, space, source, snap); } protected abstract int checkUninitialized(TraceMemorySpace source, Address start, int size, diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/pcode/exec/trace/TraceCachedWriteBytesPcodeExecutorState.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/pcode/exec/trace/TraceCachedWriteBytesPcodeExecutorState.java index 4de3b9cfc1..6a4ccac589 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/pcode/exec/trace/TraceCachedWriteBytesPcodeExecutorState.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/pcode/exec/trace/TraceCachedWriteBytesPcodeExecutorState.java @@ -100,11 +100,14 @@ public class TraceCachedWriteBytesPcodeExecutorState protected static class CachedSpace { protected final SemisparseByteArray cache = new SemisparseByteArray(); protected final RangeSet written = TreeRangeSet.create(); + protected final Language language; // For logging diagnostic protected final AddressSpace space; protected final TraceMemorySpace source; protected final long snap; - public CachedSpace(AddressSpace space, TraceMemorySpace source, long snap) { + public CachedSpace(Language language, AddressSpace space, TraceMemorySpace source, + long snap) { + this.language = language; this.space = space; this.source = source; this.snap = snap; @@ -166,8 +169,6 @@ public class TraceCachedWriteBytesPcodeExecutorState } protected Set getRegs(AddressSet set) { - // TODO: Should pass in language instead? - Language language = source.getTrace().getBaseLanguage(); Set regs = new TreeSet<>(); for (AddressRange rng : set) { Register r = language.getRegister(rng.getMinAddress(), (int) rng.getLength()); @@ -297,7 +298,7 @@ public class TraceCachedWriteBytesPcodeExecutorState } protected CachedSpace newSpace(AddressSpace space, TraceMemorySpace source, long snap) { - return new CachedSpace(space, source, snap); + return new CachedSpace(language, space, source, snap); } @Override