GP-2467: Change SleighProgramCompiler to use String (text block) instead of List<String>

This commit is contained in:
Dan 2022-09-12 09:03:54 -04:00
parent 6a2cd80550
commit 9d6f278f39
48 changed files with 730 additions and 613 deletions

View file

@ -18,7 +18,6 @@ package ghidra.pcode.emu.taint.full;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.List;
import java.util.Set;
import org.junit.Before;
@ -105,8 +104,7 @@ public class TaintDebuggerPcodeEmulatorTest extends AbstractGhidraHeadedDebugger
new DefaultTraceLocation(tb.trace, null, Range.atLeast(0L), tb.addr(0x55550000)),
new ProgramLocation(program, tb.addr(0x00400000)), 0x1000, false);
thread = tb.getOrAddThread("Threads[0]", 0);
tb.exec(0, 0, thread, List.of(
"RIP = 0x55550000;"));
tb.exec(0, 0, thread, "RIP = 0x55550000;");
}
waitForDomainObject(tb.trace);
waitForPass(() -> assertEquals(new ProgramLocation(program, tb.addr(0x00400000)),

View file

@ -194,7 +194,7 @@ public class TaintPcodeEmulatorTest extends AbstractGhidraHeadlessIntegrationTes
public void testTaintViaSleigh() throws Exception {
prepareEmulator();
PcodeThread<?> thread = launchThread(start);
thread.getExecutor().executeSleighLine("*:8 0x00400000:8 = taint_arr(*:8 0x004000000:8)");
thread.getExecutor().executeSleigh("*:8 0x00400000:8 = taint_arr(*:8 0x004000000:8);");
Pair<byte[], TaintVec> taintVal =
emulator.getSharedState().getVar(space, 0x00400000, 8, true);

View file

@ -63,7 +63,7 @@ public class TaintTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
@Test
public void testReadStateMemory() throws Throwable {
try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("Test", "x86:LE:64:default")) {
TraceThread thread = initTrace(tb, List.of(), List.of());
TraceThread thread = initTrace(tb, "", List.of());
try (UndoableTransaction tid = tb.startTransaction()) {
TracePropertyMap<String> taintMap = tb.trace.getAddressPropertyManager()
@ -73,7 +73,7 @@ public class TaintTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
TaintTracePcodeEmulator emu = new TaintTracePcodeEmulator(tb.trace, 0);
PcodeThread<Pair<byte[], TaintVec>> emuThread = emu.newThread(thread.getPath());
emuThread.getExecutor().executeSleighLine("RAX = *0x00400000:8");
emuThread.getExecutor().executeSleigh("RAX = *0x00400000:8;");
Pair<byte[], TaintVec> valRAX =
emuThread.getState().getVar(tb.language.getRegister("RAX"));
@ -89,7 +89,7 @@ public class TaintTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
@Test
public void testReadStateRegister() throws Throwable {
try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("Test", "x86:LE:64:default")) {
TraceThread thread = initTrace(tb, List.of(), List.of());
TraceThread thread = initTrace(tb, "", List.of());
Register regRAX = tb.language.getRegister("RAX");
Register regEBX = tb.language.getRegister("EBX");
@ -103,7 +103,7 @@ public class TaintTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
TaintTracePcodeEmulator emu = new TaintTracePcodeEmulator(tb.trace, 0);
PcodeThread<Pair<byte[], TaintVec>> emuThread = emu.newThread(thread.getPath());
emuThread.getExecutor().executeSleighLine("RAX = RBX");
emuThread.getExecutor().executeSleigh("RAX = RBX;");
Pair<byte[], TaintVec> valRAX =
emuThread.getState().getVar(regRAX);
@ -119,7 +119,7 @@ public class TaintTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
@Test
public void testWriteStateMemory() throws Throwable {
try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("Test", "x86:LE:64:default")) {
initTrace(tb, List.of(), List.of());
initTrace(tb, "", List.of());
TaintTracePcodeEmulator emu = new TaintTracePcodeEmulator(tb.trace, 0);
TaintVec taintVal = TaintVec.empties(8);
@ -146,7 +146,7 @@ public class TaintTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
public void testWriteStateRegister() throws Throwable {
try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("Test", "x86:LE:64:default")) {
AddressSpace rs = tb.language.getAddressFactory().getRegisterSpace();
TraceThread thread = initTrace(tb, List.of(), List.of());
TraceThread thread = initTrace(tb, "", List.of());
TaintTracePcodeEmulator emu = new TaintTracePcodeEmulator(tb.trace, 0);
PcodeThread<Pair<byte[], TaintVec>> emuThread = emu.newThread(thread.getPath());
@ -176,9 +176,9 @@ public class TaintTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
public void testEmptyTaintClears() throws Throwable {
try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("Test", "x86:LE:64:default")) {
AddressSpace ram = tb.language.getAddressFactory().getDefaultAddressSpace();
TraceThread thread = initTrace(tb,
List.of(
"RIP = 0x00400000;"),
TraceThread thread = initTrace(tb, """
RIP = 0x00400000;
""",
List.of(
"MOV qword ptr [0x00600000], RAX",
"MOV qword ptr [0x00600000], RBX"));
@ -214,9 +214,9 @@ public class TaintTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
@Test
public void testZeroByXor() throws Throwable {
try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("Test", "x86:LE:64:default")) {
TraceThread thread = initTrace(tb,
List.of(
"RIP = 0x00400000;"),
TraceThread thread = initTrace(tb, """
RIP = 0x00400000;
""",
List.of(
"XOR RAX, RAX"));
@ -245,9 +245,9 @@ public class TaintTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
@Test
public void testZeroByXorVia32() throws Throwable {
try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("Test", "x86:LE:64:default")) {
TraceThread thread = initTrace(tb,
List.of(
"RIP = 0x00400000;"),
TraceThread thread = initTrace(tb, """
RIP = 0x00400000;
""",
List.of(
"XOR EAX, EAX"));