Merge remote-tracking branch 'origin/GP-2834_Dan_hoverVarVals--SQUASHED'

(#4732)
This commit is contained in:
Ryan Kurtz
2023-01-12 18:53:35 -05:00
105 changed files with 12279 additions and 478 deletions

View File

@@ -15,12 +15,16 @@
*/
package ghidra.pcode.emu.taint;
import java.util.List;
import java.util.Map;
import ghidra.pcode.emu.taint.plain.TaintSpace;
import ghidra.pcode.exec.*;
import ghidra.pcode.exec.PcodeArithmetic.Purpose;
import ghidra.program.model.address.Address;
import ghidra.program.model.address.AddressSpace;
import ghidra.program.model.lang.Language;
import ghidra.program.model.lang.Register;
import ghidra.program.model.mem.MemBuffer;
import ghidra.taint.model.TaintVec;
@@ -116,6 +120,11 @@ public abstract class AbstractTaintPcodeExecutorStatePiece<S extends TaintSpace>
return space.get(offset, size);
}
@Override
protected Map<Register, TaintVec> getRegisterValuesFromSpace(S space, List<Register> registers) {
return space.getRegisterValues(registers);
}
@Override
public void clear() {
for (S space : spaceMap.values()) {

View File

@@ -71,6 +71,21 @@ public class TaintPcodeExecutorStatePiece extends AbstractTaintPcodeExecutorStat
protected TaintSpace newSpace(AddressSpace space) {
return new TaintSpace();
}
@Override
public AbstractSpaceMap<TaintSpace> fork() {
throw new UnsupportedOperationException();
}
@Override
public TaintSpace fork(TaintSpace s) {
throw new UnsupportedOperationException();
}
};
}
@Override
public TaintPcodeExecutorStatePiece fork() {
throw new UnsupportedOperationException();
}
}

View File

@@ -15,10 +15,10 @@
*/
package ghidra.pcode.emu.taint.plain;
import java.util.HashMap;
import java.util.Map;
import java.util.*;
import ghidra.pcode.emu.taint.trace.TaintTraceSpace;
import ghidra.program.model.lang.Register;
import ghidra.taint.model.TaintSet;
import ghidra.taint.model.TaintVec;
@@ -112,4 +112,20 @@ public class TaintSpace {
public void clear() {
taints.clear();
}
public Map<Register, TaintVec> getRegisterValues(List<Register> registers) {
Map<Register, TaintVec> result = new HashMap<>();
for (Register r : registers) {
long offset = r.getAddress().getOffset();
TaintVec vec = new TaintVec(r.getNumBytes());
for (int i = 0; i < vec.length; i++) {
TaintSet s = taints.get(offset + i);
if (s == null) {
continue;
}
}
result.put(r, vec);
}
return result;
}
}

View File

@@ -82,9 +82,24 @@ public class TaintTracePcodeExecutorStatePiece
PcodeTracePropertyAccess<String> backing) {
return new TaintTraceSpace(space, property);
}
@Override
public AbstractSpaceMap<TaintTraceSpace> fork() {
throw new UnsupportedOperationException();
}
@Override
public TaintTraceSpace fork(TaintTraceSpace s) {
throw new UnsupportedOperationException();
}
};
}
@Override
public TaintTracePcodeExecutorStatePiece fork() {
throw new UnsupportedOperationException();
}
/**
* {@inheritDoc}
*