mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-28 17:11:11 -09:00
Merge remote-tracking branch 'origin/GP-0_Dan_testFixes20211201-1' into Ghidra_10.1
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -100,11 +100,14 @@ public class TraceCachedWriteBytesPcodeExecutorState
|
||||
protected static class CachedSpace {
|
||||
protected final SemisparseByteArray cache = new SemisparseByteArray();
|
||||
protected final RangeSet<UnsignedLong> 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<Register> getRegs(AddressSet set) {
|
||||
// TODO: Should pass in language instead?
|
||||
Language language = source.getTrace().getBaseLanguage();
|
||||
Set<Register> 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
|
||||
|
||||
Reference in New Issue
Block a user