mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 02:39:44 +02:00
Merge branch 'GP-3122_ghidra1_AutoTransaction'
This commit is contained in:
commit
725c752320
209 changed files with 1892 additions and 2054 deletions
|
@ -22,6 +22,7 @@ import java.util.function.Consumer;
|
|||
import org.apache.commons.collections4.collection.CompositeCollection;
|
||||
|
||||
import db.DBHandle;
|
||||
import db.Transaction;
|
||||
import generic.depends.DependentService;
|
||||
import generic.depends.err.ServiceConstructionException;
|
||||
import ghidra.framework.model.DomainObjectChangeRecord;
|
||||
|
@ -163,7 +164,7 @@ public class DBTrace extends DBCachedDomainObjectAdapter implements Trace, Trace
|
|||
this.baseAddressFactory =
|
||||
new TraceAddressFactory(this.baseLanguage, this.baseCompilerSpec);
|
||||
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(this, "Create")) {
|
||||
try (Transaction tx = this.openTransaction("Create")) {
|
||||
initOptions(DBOpenMode.CREATE);
|
||||
init();
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ import java.io.IOException;
|
|||
import java.util.LinkedList;
|
||||
import java.util.concurrent.locks.ReadWriteLock;
|
||||
|
||||
import db.Transaction;
|
||||
import db.DBHandle;
|
||||
import ghidra.framework.model.DomainFile;
|
||||
import ghidra.program.database.data.ProgramBasedDataTypeManagerDB;
|
||||
|
@ -176,6 +177,11 @@ public class DBTraceDataTypeManager extends ProgramBasedDataTypeManagerDB
|
|||
return trace.isChangeable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Transaction openTransaction(String description) throws IllegalStateException {
|
||||
return trace.openTransaction(description);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int startTransaction(String description) {
|
||||
return trace.startTransaction(description);
|
||||
|
|
|
@ -50,7 +50,7 @@ import ghidra.util.exception.NoValueException;
|
|||
* This behaves somewhat like a mixin, allowing it to be used on code units as well as data
|
||||
* components, e.g., fields of a struct data unit.
|
||||
*/
|
||||
public interface DBTraceCodeUnitAdapter extends TraceCodeUnit, MemBufferAdapter {
|
||||
public interface DBTraceCodeUnitAdapter extends TraceCodeUnit, MemBufferMixin {
|
||||
|
||||
@Override
|
||||
DBTrace getTrace();
|
||||
|
|
|
@ -110,7 +110,7 @@ public class DBTraceInstruction extends AbstractDBTraceCodeUnit<DBTraceInstructi
|
|||
}
|
||||
}
|
||||
|
||||
protected class GuestMemBuffer implements MemBufferAdapter {
|
||||
protected class GuestMemBuffer implements MemBufferMixin {
|
||||
@Override
|
||||
public Address getAddress() {
|
||||
return platform.mapHostToGuest(getX1());
|
||||
|
|
|
@ -20,10 +20,10 @@ import java.nio.ByteOrder;
|
|||
|
||||
import ghidra.program.model.address.Address;
|
||||
import ghidra.program.model.address.AddressOverflowException;
|
||||
import ghidra.program.model.mem.MemBufferAdapter;
|
||||
import ghidra.program.model.mem.MemBufferMixin;
|
||||
import ghidra.program.model.mem.Memory;
|
||||
|
||||
public class DBTraceMemBuffer implements MemBufferAdapter {
|
||||
public class DBTraceMemBuffer implements MemBufferMixin {
|
||||
private final DBTraceMemorySpace space;
|
||||
private final long snap;
|
||||
private final Address start;
|
||||
|
|
|
@ -24,6 +24,7 @@ import java.util.function.BiFunction;
|
|||
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.framework.data.DomainObjectEventQueues;
|
||||
import ghidra.framework.model.*;
|
||||
import ghidra.framework.options.Options;
|
||||
|
@ -1295,6 +1296,11 @@ public class DBTraceProgramView implements TraceProgramView {
|
|||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Transaction openTransaction(String description) throws IllegalStateException {
|
||||
return trace.openTransaction(description);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int startTransaction(String description) {
|
||||
return trace.startTransaction(description);
|
||||
|
@ -1311,8 +1317,8 @@ public class DBTraceProgramView implements TraceProgramView {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Transaction getCurrentTransaction() {
|
||||
return trace.getCurrentTransaction();
|
||||
public TransactionInfo getCurrentTransactionInfo() {
|
||||
return trace.getCurrentTransactionInfo();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -19,6 +19,7 @@ import java.io.File;
|
|||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.framework.data.DomainObjectEventQueues;
|
||||
import ghidra.framework.model.*;
|
||||
import ghidra.framework.options.Options;
|
||||
|
@ -351,6 +352,11 @@ public class DBTraceProgramViewRegisters implements TraceProgramView {
|
|||
return view.getUniqueProgramID();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Transaction openTransaction(String description) throws IllegalStateException {
|
||||
return view.openTransaction(description);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int startTransaction(String description) {
|
||||
return view.startTransaction(description);
|
||||
|
@ -367,8 +373,8 @@ public class DBTraceProgramViewRegisters implements TraceProgramView {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Transaction getCurrentTransaction() {
|
||||
return view.getCurrentTransaction();
|
||||
public TransactionInfo getCurrentTransactionInfo() {
|
||||
return view.getCurrentTransactionInfo();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -17,6 +17,7 @@ package ghidra.pcode.exec.trace;
|
|||
|
||||
import java.util.*;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.app.plugin.assembler.Assembler;
|
||||
import ghidra.app.plugin.assembler.Assemblers;
|
||||
import ghidra.app.plugin.processors.sleigh.SleighLanguage;
|
||||
|
@ -30,7 +31,6 @@ import ghidra.trace.model.memory.TraceMemoryFlag;
|
|||
import ghidra.trace.model.memory.TraceMemoryManager;
|
||||
import ghidra.trace.model.thread.TraceThread;
|
||||
import ghidra.util.Msg;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
|
||||
public class AbstractTracePcodeEmulatorTest extends AbstractGhidraHeadlessIntegrationTest {
|
||||
|
||||
|
@ -61,7 +61,7 @@ public class AbstractTracePcodeEmulatorTest extends AbstractGhidraHeadlessIntegr
|
|||
String stateInit, List<String> assembly) throws Throwable {
|
||||
TraceMemoryManager mm = tb.trace.getMemoryManager();
|
||||
TraceThread thread;
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
thread = tb.getOrAddThread("Thread1", 0);
|
||||
mm.addRegion("Regions[bin:.text]", Lifespan.nowOn(0), text,
|
||||
TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE);
|
||||
|
|
|
@ -25,6 +25,7 @@ import java.util.List;
|
|||
|
||||
import org.junit.Test;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.app.plugin.assembler.*;
|
||||
import ghidra.app.plugin.assembler.sleigh.sem.AssemblyPatternBlock;
|
||||
import ghidra.dbg.target.schema.SchemaContext;
|
||||
|
@ -48,7 +49,6 @@ import ghidra.trace.model.target.TraceObject.ConflictResolution;
|
|||
import ghidra.trace.model.target.TraceObjectKeyPath;
|
||||
import ghidra.trace.model.thread.TraceThread;
|
||||
import ghidra.util.NumericUtilities;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
|
||||
public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest {
|
||||
|
||||
|
@ -80,7 +80,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
|
|||
assertEquals(BigInteger.valueOf(0),
|
||||
TraceSleighUtils.evaluate("*:4 0x0010fffc:8", tb.trace, 0, thread, 0));
|
||||
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
emu.writeDown(tb.host, 1, 1);
|
||||
}
|
||||
|
||||
|
@ -115,7 +115,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
|
|||
emuThread.stepInstruction();
|
||||
emuThread.stepInstruction();
|
||||
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
emu.writeDown(tb.host, 1, 1);
|
||||
}
|
||||
|
||||
|
@ -160,7 +160,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
|
|||
|
||||
emuThread.stepInstruction();
|
||||
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
emu.writeDown(tb.host, 1, 1);
|
||||
}
|
||||
|
||||
|
@ -207,7 +207,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
|
|||
|
||||
byte[] mov = asm.assembleLine(tb.addr(0x00401000),
|
||||
"movs r0, #123", thumbPat); // #123 is decimal
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
asm.patchProgram(mov, tb.addr(0x00401000));
|
||||
}
|
||||
|
||||
|
@ -226,7 +226,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
|
|||
|
||||
emuThread.stepInstruction();
|
||||
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
emu.writeDown(tb.host, 1, 1);
|
||||
}
|
||||
|
||||
|
@ -258,7 +258,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
|
|||
PcodeThread<byte[]> emuThread = emu.newThread(thread.getPath());
|
||||
emuThread.stepInstruction();
|
||||
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
emu.writeDown(tb.host, 1, 1);
|
||||
}
|
||||
|
||||
|
@ -292,7 +292,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
|
|||
emuThread.stepInstruction(); // brds and 1st imm executed
|
||||
emuThread.stepInstruction(); // 3rd imm executed
|
||||
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
emu.writeDown(tb.host, 1, 1);
|
||||
}
|
||||
|
||||
|
@ -336,7 +336,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
|
|||
emuThread.stepInstruction();
|
||||
emuThread.stepInstruction();
|
||||
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
emu.writeDown(tb.host, 1, 1);
|
||||
}
|
||||
|
||||
|
@ -389,7 +389,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
|
|||
emuThread.finishInstruction();
|
||||
assertNull(emuThread.getFrame());
|
||||
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
emu.writeDown(tb.host, 1, 1);
|
||||
}
|
||||
|
||||
|
@ -513,7 +513,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
|
|||
assertEquals("0c00400000000000", dumped.toString());
|
||||
dumped.delete(0, dumped.length());
|
||||
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
emu.writeDown(tb.host, 1, 1);
|
||||
}
|
||||
|
||||
|
@ -573,7 +573,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
|
|||
PcodeThread<byte[]> emuThread = emu.newThread(thread.getPath());
|
||||
emuThread.stepInstruction();
|
||||
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
emu.writeDown(tb.host, 1, 1);
|
||||
}
|
||||
|
||||
|
@ -610,7 +610,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
|
|||
assertArrayEquals(tb.arr(0x07, 0, 0x40, 0, 0, 0, 0, 0),
|
||||
emuThread.getState().getVar(pc, Reason.INSPECT));
|
||||
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
emu.writeDown(tb.host, 1, 1);
|
||||
}
|
||||
|
||||
|
@ -647,7 +647,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
|
|||
assertArrayEquals(tb.arr(0x02, 0, 0x40, 0, 0, 0, 0, 0),
|
||||
emuThread.getState().getVar(pc, Reason.INSPECT));
|
||||
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
emu.writeDown(tb.host, 1, 1);
|
||||
}
|
||||
|
||||
|
@ -673,7 +673,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
|
|||
emuThread.stepInstruction();
|
||||
emuThread.stepInstruction();
|
||||
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
emu.writeDown(tb.host, 1, 1);
|
||||
}
|
||||
|
||||
|
@ -805,7 +805,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
|
|||
RegisterValue ctxVal = new RegisterValue(ctxReg)
|
||||
.assign(longModeReg, BigInteger.ZERO);
|
||||
DBTraceRegisterContextManager ctxManager = tb.trace.getRegisterContextManager();
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
ctxManager.setValue(lang, ctxVal, Lifespan.nowOn(0),
|
||||
tb.range(0x00400000, 0x00400002));
|
||||
}
|
||||
|
@ -829,7 +829,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
|
|||
emuThread.stepInstruction();
|
||||
emuThread.stepInstruction();
|
||||
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
emu.writeDown(tb.host, 1, 1);
|
||||
}
|
||||
|
||||
|
@ -863,7 +863,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
|
|||
PcodeThread<byte[]> emuThread = emu.newThread(thread.getPath());
|
||||
emuThread.stepInstruction();
|
||||
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
emu.writeDown(tb.host, 1, 1);
|
||||
}
|
||||
|
||||
|
@ -962,7 +962,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
|
|||
PcodeThread<byte[]> emuThread = emu.newThread(thread.getPath());
|
||||
emuThread.stepInstruction();
|
||||
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
emu.writeDown(tb.host, 1, 1);
|
||||
}
|
||||
|
||||
|
@ -989,7 +989,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
|
|||
TraceMemoryManager mm = tb.trace.getMemoryManager();
|
||||
TraceThread thread;
|
||||
TraceGuestPlatform x64;
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
SchemaContext ctx = XmlSchemaContext.deserialize(DBTraceObjectManagerTest.XML_CTX);
|
||||
DBTraceObjectManager objects = tb.trace.getObjectManager();
|
||||
objects.createRootObject(ctx.getSchema(new SchemaName("Session")));
|
||||
|
@ -1033,7 +1033,7 @@ public class BytesTracePcodeEmulatorTest extends AbstractTracePcodeEmulatorTest
|
|||
assertEquals(BigInteger.valueOf(0),
|
||||
TraceSleighUtils.evaluate(changedExpr, tb.trace, 0, thread, 0));
|
||||
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
emu.writeDown(x64, 1, 1);
|
||||
}
|
||||
|
||||
|
|
|
@ -15,8 +15,7 @@
|
|||
*/
|
||||
package ghidra.pcode.exec.trace;
|
||||
|
||||
import static org.junit.Assert.assertArrayEquals;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.Map;
|
||||
|
@ -24,6 +23,7 @@ import java.util.Map;
|
|||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.app.plugin.processors.sleigh.SleighLanguage;
|
||||
import ghidra.pcode.exec.*;
|
||||
import ghidra.pcode.exec.PcodeExecutorStatePiece.Reason;
|
||||
|
@ -34,7 +34,6 @@ import ghidra.trace.database.ToyDBTraceBuilder;
|
|||
import ghidra.trace.model.memory.TraceMemorySpace;
|
||||
import ghidra.trace.model.memory.TraceMemoryState;
|
||||
import ghidra.trace.model.thread.TraceThread;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
|
||||
public class TraceSleighUtilsTest extends AbstractGhidraHeadlessIntegrationTest {
|
||||
private static final String TOY_BE_64_HARVARD = "Toy:BE:64:harvard";
|
||||
|
@ -67,7 +66,7 @@ public class TraceSleighUtilsTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
public void testRegister() throws Exception {
|
||||
try (ToyDBTraceBuilder b = new ToyDBTraceBuilder("test", TOY_BE_64_HARVARD)) {
|
||||
TraceThread thread;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Thread1", 0);
|
||||
|
||||
Register r0 = language.getRegister("r0");
|
||||
|
@ -84,7 +83,7 @@ public class TraceSleighUtilsTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
@Test
|
||||
public void testMemory() throws Exception {
|
||||
try (ToyDBTraceBuilder b = new ToyDBTraceBuilder("test", TOY_BE_64_HARVARD)) {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getMemoryManager().putBytes(0, b.addr(0x00400000), b.buf(1, 2, 3, 4));
|
||||
}
|
||||
|
||||
|
@ -96,7 +95,7 @@ public class TraceSleighUtilsTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
@Test
|
||||
public void testBigMemory() throws Exception {
|
||||
try (ToyDBTraceBuilder b = new ToyDBTraceBuilder("test", TOY_BE_64_HARVARD)) {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getMemoryManager().putBytes(0, b.addr(0x00400000), b.buf(1, 2, 3, 4));
|
||||
}
|
||||
|
||||
|
@ -111,7 +110,7 @@ public class TraceSleighUtilsTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
public void testRegDeref() throws Exception {
|
||||
try (ToyDBTraceBuilder b = new ToyDBTraceBuilder("test", TOY_BE_64_HARVARD)) {
|
||||
TraceThread thread;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Thread1", 0);
|
||||
|
||||
Register r0 = language.getRegister("r0");
|
||||
|
@ -131,7 +130,7 @@ public class TraceSleighUtilsTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
public void testDoubleDeref() throws Exception {
|
||||
try (ToyDBTraceBuilder b = new ToyDBTraceBuilder("test", TOY_BE_64_HARVARD)) {
|
||||
TraceThread thread;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Thread1", 0);
|
||||
|
||||
Register r0 = language.getRegister("r0");
|
||||
|
@ -154,7 +153,7 @@ public class TraceSleighUtilsTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
public void testDoubleDerefWithState() throws Exception {
|
||||
try (ToyDBTraceBuilder b = new ToyDBTraceBuilder("test", TOY_BE_64_HARVARD)) {
|
||||
TraceThread thread;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Thread1", 0);
|
||||
|
||||
Register r0 = language.getRegister("r0");
|
||||
|
@ -184,7 +183,7 @@ public class TraceSleighUtilsTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
public void testDerefData() throws Exception {
|
||||
try (ToyDBTraceBuilder b = new ToyDBTraceBuilder("test", TOY_BE_64_HARVARD)) {
|
||||
TraceThread thread;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Thread1", 0);
|
||||
|
||||
Register r0 = language.getRegister("r0");
|
||||
|
@ -216,7 +215,7 @@ public class TraceSleighUtilsTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
<done>
|
||||
""", PcodeUseropLibrary.NIL);
|
||||
TraceThread thread;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Thread1", 0);
|
||||
PcodeExecutor<byte[]> executor =
|
||||
new PcodeExecutor<>(sp.getLanguage(),
|
||||
|
|
|
@ -15,16 +15,16 @@
|
|||
*/
|
||||
package ghidra.trace.database;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.test.AbstractGhidraHeadlessIntegrationTest;
|
||||
import ghidra.trace.database.time.DBTraceTimeManager;
|
||||
import ghidra.trace.model.Lifespan;
|
||||
import ghidra.trace.model.Lifespan.*;
|
||||
import ghidra.trace.model.time.schedule.TraceSchedule;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
|
||||
public class DBTraceTimeViewportTest extends AbstractGhidraHeadlessIntegrationTest {
|
||||
public static <C extends Comparable<C>> LifeSet lifeSetOf(Lifespan... spans) {
|
||||
|
@ -47,7 +47,7 @@ public class DBTraceTimeViewportTest extends AbstractGhidraHeadlessIntegrationTe
|
|||
@Test
|
||||
public void testSelfScheduleSnapshot0RemovesScratch() throws Exception {
|
||||
try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) {
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
tb.trace.getTimeManager().getSnapshot(0, true).setSchedule(TraceSchedule.snap(0));
|
||||
}
|
||||
|
||||
|
@ -60,7 +60,7 @@ public class DBTraceTimeViewportTest extends AbstractGhidraHeadlessIntegrationTe
|
|||
@Test
|
||||
public void testNotationalSchedulesDontFork() throws Exception {
|
||||
try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) {
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
DBTraceTimeManager tm = tb.trace.getTimeManager();
|
||||
tm.getSnapshot(0, true).setSchedule(TraceSchedule.snap(0));
|
||||
tm.getSnapshot(5, true).setSchedule(TraceSchedule.parse("4:1"));
|
||||
|
@ -75,7 +75,7 @@ public class DBTraceTimeViewportTest extends AbstractGhidraHeadlessIntegrationTe
|
|||
@Test
|
||||
public void testForkFromScratch() throws Exception {
|
||||
try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) {
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
DBTraceTimeManager tm = tb.trace.getTimeManager();
|
||||
tm.getSnapshot(0, true).setSchedule(TraceSchedule.snap(0));
|
||||
tm.getSnapshot(Long.MIN_VALUE, true).setSchedule(TraceSchedule.parse("10:4"));
|
||||
|
@ -91,7 +91,7 @@ public class DBTraceTimeViewportTest extends AbstractGhidraHeadlessIntegrationTe
|
|||
@Test
|
||||
public void testCyclesIgnored() throws Exception {
|
||||
try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) {
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
DBTraceTimeManager tm = tb.trace.getTimeManager();
|
||||
tm.getSnapshot(Long.MIN_VALUE, true).setSchedule(TraceSchedule.parse("10:4"));
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ import java.nio.file.Files;
|
|||
import java.nio.file.Path;
|
||||
import java.util.Collection;
|
||||
|
||||
import db.Transaction;
|
||||
import db.DBHandle;
|
||||
import generic.theme.GThemeDefaults.Colors.Messages;
|
||||
import ghidra.app.plugin.processors.sleigh.SleighLanguage;
|
||||
|
@ -54,7 +55,6 @@ import ghidra.trace.model.symbol.TraceReferenceManager;
|
|||
import ghidra.trace.model.thread.TraceThread;
|
||||
import ghidra.util.Msg;
|
||||
import ghidra.util.database.DBOpenMode;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
import ghidra.util.exception.*;
|
||||
import ghidra.util.task.ConsoleTaskMonitor;
|
||||
|
||||
|
@ -432,8 +432,8 @@ public class ToyDBTraceBuilder implements AutoCloseable {
|
|||
*
|
||||
* @return the transaction handle
|
||||
*/
|
||||
public UndoableTransaction startTransaction() {
|
||||
return UndoableTransaction.start(trace, "Testing");
|
||||
public Transaction startTransaction() {
|
||||
return trace.openTransaction("Testing");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -23,11 +23,11 @@ import java.util.Set;
|
|||
|
||||
import org.junit.*;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.test.AbstractGhidraHeadlessIntegrationTest;
|
||||
import ghidra.trace.database.ToyDBTraceBuilder;
|
||||
import ghidra.trace.model.Lifespan;
|
||||
import ghidra.trace.model.thread.TraceThread;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
|
||||
public class DBTraceBookmarkManagerTest extends AbstractGhidraHeadlessIntegrationTest {
|
||||
protected ToyDBTraceBuilder b;
|
||||
|
@ -58,7 +58,7 @@ public class DBTraceBookmarkManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
DBTraceBookmark bm = manager.getBookmark(0);
|
||||
assertNull(bm);
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
bm = b.addBookmark(0, 0, "Test Type", "Cat1", "Test comment");
|
||||
}
|
||||
long id = bm.getId();
|
||||
|
@ -70,12 +70,12 @@ public class DBTraceBookmarkManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
@Test
|
||||
public void testDeleteBookmark() {
|
||||
DBTraceBookmark bm;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
bm = b.addBookmark(0, 0, "Test Type", "Cat1", "Test comment");
|
||||
}
|
||||
long id = bm.getId();
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
bm.delete();
|
||||
}
|
||||
DBTraceBookmark found = manager.getBookmark(id);
|
||||
|
@ -86,7 +86,7 @@ public class DBTraceBookmarkManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
public void testGetRegisterBookmarkById() throws Exception {
|
||||
// TODO: Should I check that bookmarks in register spaces are enclosed by the corresponding thread's lifespan?
|
||||
DBTraceBookmark bm;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
bm = b.addRegisterBookmark(0, "Thread1", "r4", "Test Type", "Cat1", "Test comment");
|
||||
}
|
||||
long id = bm.getId();
|
||||
|
@ -97,7 +97,7 @@ public class DBTraceBookmarkManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testGetCategoriesForType() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceThread thread = b.trace.getThreadManager().createThread("Thread1", 0);
|
||||
DBTraceBookmarkSpace rSpace = manager.getBookmarkRegisterSpace(thread, true);
|
||||
|
||||
|
@ -120,7 +120,7 @@ public class DBTraceBookmarkManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testGetBookmarksForType() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceBookmarkType type = b.getOrAddBookmarkType("Test Type");
|
||||
assertFalse(type.hasBookmarks());
|
||||
assertEquals(0, type.countBookmarks());
|
||||
|
@ -146,7 +146,7 @@ public class DBTraceBookmarkManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testGetAllBookmarks() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceBookmark bm1 = b.addBookmark(0, 0, "Test Type", "Cat1", "First");
|
||||
DBTraceBookmark bm2 = b.addBookmark(1, 4, "Test Type", "Cat2", "Second");
|
||||
|
||||
|
@ -156,7 +156,7 @@ public class DBTraceBookmarkManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testGetBookmarksAt() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceBookmark bm1 = b.addBookmark(0, 0, "Test Type", "Cat1", "First");
|
||||
DBTraceBookmark bm2 = b.addBookmark(1, 4, "Test Type", "Cat2", "Second");
|
||||
|
||||
|
@ -168,7 +168,7 @@ public class DBTraceBookmarkManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testGetBookmarksEnclosed() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceBookmark bm1 = b.addBookmark(0, 0, "Test Type", "Cat1", "First");
|
||||
DBTraceBookmark bm2 = b.addBookmark(1, 4, "Test Type", "Cat2", "Second");
|
||||
|
||||
|
@ -185,7 +185,7 @@ public class DBTraceBookmarkManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testGetBookmarksIntersecting() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceBookmark bm1 = b.addBookmark(0, 0, "Test Type", "Cat1", "First");
|
||||
DBTraceBookmark bm2 = b.addBookmark(1, 4, "Test Type", "Cat2", "Second");
|
||||
|
||||
|
|
|
@ -17,10 +17,10 @@ package ghidra.trace.database.breakpoint;
|
|||
|
||||
import org.junit.Before;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.dbg.target.schema.SchemaContext;
|
||||
import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName;
|
||||
import ghidra.dbg.target.schema.XmlSchemaContext;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
|
||||
public class DBTraceBreakpointManagerObjectTest extends DBTraceBreakpointManagerTest {
|
||||
|
||||
|
@ -52,7 +52,7 @@ public class DBTraceBreakpointManagerObjectTest extends DBTraceBreakpointManager
|
|||
" </schema>" + //
|
||||
"</context>");
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getObjectManager().createRootObject(ctx.getSchema(new SchemaName("Session")));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,13 +22,13 @@ import java.util.Set;
|
|||
|
||||
import org.junit.*;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.test.AbstractGhidraHeadlessIntegrationTest;
|
||||
import ghidra.trace.database.ToyDBTraceBuilder;
|
||||
import ghidra.trace.model.Lifespan;
|
||||
import ghidra.trace.model.breakpoint.TraceBreakpoint;
|
||||
import ghidra.trace.model.breakpoint.TraceBreakpointKind;
|
||||
import ghidra.trace.model.thread.TraceThread;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
import ghidra.util.exception.DuplicateNameException;
|
||||
|
||||
public class DBTraceBreakpointManagerTest extends AbstractGhidraHeadlessIntegrationTest {
|
||||
|
@ -54,13 +54,13 @@ public class DBTraceBreakpointManagerTest extends AbstractGhidraHeadlessIntegrat
|
|||
|
||||
@Test
|
||||
public void testAddBreakpoint() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
breakpointManager.addBreakpoint("Breakpoints[0]", Lifespan.span(0, 10),
|
||||
b.addr(0x00400000),
|
||||
Set.of(), Set.of(TraceBreakpointKind.SW_EXECUTE), true, "main");
|
||||
}
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
breakpointManager.addBreakpoint("Breakpoints[0]", Lifespan.span(0, 10),
|
||||
b.range(0x00400000, 0x00400003), Set.of(), Set.of(), false, "duplicate");
|
||||
}
|
||||
|
@ -72,7 +72,7 @@ public class DBTraceBreakpointManagerTest extends AbstractGhidraHeadlessIntegrat
|
|||
}
|
||||
|
||||
protected void addBreakpoints() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Threads[1]", 0);
|
||||
// NB. threads parameter is deprecated by object mode.
|
||||
// For table mode, ensure the answer is the same as object mode
|
||||
|
@ -151,7 +151,7 @@ public class DBTraceBreakpointManagerTest extends AbstractGhidraHeadlessIntegrat
|
|||
public void testSetGetName() throws Exception {
|
||||
addBreakpoints();
|
||||
assertEquals("Breakpoints[0]", breakMain.getName());
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
breakMain.setName("bpt 0");
|
||||
assertEquals("bpt 0", breakMain.getName());
|
||||
}
|
||||
|
@ -186,7 +186,7 @@ public class DBTraceBreakpointManagerTest extends AbstractGhidraHeadlessIntegrat
|
|||
@Test
|
||||
public void testSetCleared() throws Exception {
|
||||
addBreakpoints();
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
breakMain.setClearedSnap(5);
|
||||
assertEquals(5, breakMain.getClearedSnap());
|
||||
}
|
||||
|
@ -200,7 +200,7 @@ public class DBTraceBreakpointManagerTest extends AbstractGhidraHeadlessIntegrat
|
|||
addBreakpoints();
|
||||
|
||||
TraceBreakpoint disMain;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceBreakpoint oopsMain =
|
||||
breakMain.splitAndSet(0, true, Set.of(TraceBreakpointKind.HW_EXECUTE));
|
||||
assertSame(breakMain, oopsMain);
|
||||
|
@ -223,12 +223,12 @@ public class DBTraceBreakpointManagerTest extends AbstractGhidraHeadlessIntegrat
|
|||
public void testSetIsEnabled() throws Exception {
|
||||
addBreakpoints();
|
||||
assertTrue(breakMain.isEnabled(0));
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
breakMain.setEnabled(false);
|
||||
assertFalse(breakMain.isEnabled(0));
|
||||
}
|
||||
assertFalse(breakMain.isEnabled(0));
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
breakMain.setEnabled(true);
|
||||
assertTrue(breakMain.isEnabled(0));
|
||||
}
|
||||
|
@ -239,7 +239,7 @@ public class DBTraceBreakpointManagerTest extends AbstractGhidraHeadlessIntegrat
|
|||
public void testSetGetKinds() throws Exception {
|
||||
addBreakpoints();
|
||||
assertEquals(Set.of(TraceBreakpointKind.SW_EXECUTE), Set.copyOf(breakMain.getKinds()));
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
breakMain.setKinds(Set.of(TraceBreakpointKind.HW_EXECUTE));
|
||||
assertEquals(Set.of(TraceBreakpointKind.HW_EXECUTE), Set.copyOf(breakMain.getKinds()));
|
||||
}
|
||||
|
@ -250,7 +250,7 @@ public class DBTraceBreakpointManagerTest extends AbstractGhidraHeadlessIntegrat
|
|||
public void testSetGetComment() throws Exception {
|
||||
addBreakpoints();
|
||||
assertEquals("main", breakMain.getComment());
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
breakMain.setComment("WinMain");
|
||||
assertEquals("WinMain", breakMain.getComment());
|
||||
}
|
||||
|
@ -261,7 +261,7 @@ public class DBTraceBreakpointManagerTest extends AbstractGhidraHeadlessIntegrat
|
|||
public void testDelete() throws Exception {
|
||||
addBreakpoints();
|
||||
assertEquals(breakMain, breakpointManager.getPlacedBreakpointByPath(0, "Breakpoints[0]"));
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
breakMain.delete();
|
||||
assertNull(breakpointManager.getPlacedBreakpointByPath(0, "Breakpoints[0]"));
|
||||
}
|
||||
|
|
|
@ -15,8 +15,7 @@
|
|||
*/
|
||||
package ghidra.trace.database.data;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
@ -25,6 +24,7 @@ import java.nio.file.Path;
|
|||
|
||||
import org.junit.*;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.program.model.data.*;
|
||||
import ghidra.program.model.lang.Language;
|
||||
import ghidra.program.model.lang.LanguageID;
|
||||
|
@ -32,7 +32,6 @@ import ghidra.program.util.DefaultLanguageService;
|
|||
import ghidra.test.AbstractGhidraHeadlessIntegrationTest;
|
||||
import ghidra.trace.database.DBTrace;
|
||||
import ghidra.util.InvalidNameException;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
import ghidra.util.exception.DuplicateNameException;
|
||||
import ghidra.util.task.ConsoleTaskMonitor;
|
||||
|
||||
|
@ -80,7 +79,7 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testSetName() throws InvalidNameException {
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) {
|
||||
try (Transaction tx = trace.openTransaction("Testing")) {
|
||||
dtm.setName("Another name");
|
||||
}
|
||||
assertEquals("Another name", trace.getName());
|
||||
|
@ -93,12 +92,12 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
Path tmpDir = Files.createTempDirectory("test");
|
||||
File archiveFile = tmpDir.resolve("test.gdt").toFile();
|
||||
FileDataTypeManager dtm2 = FileDataTypeManager.createFileArchive(archiveFile);
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(dtm2, "Testing")) {
|
||||
try (Transaction tx = dtm2.openTransaction("Testing")) {
|
||||
dtm2.addDataType(mine, DataTypeConflictHandler.DEFAULT_HANDLER);
|
||||
}
|
||||
DataType got = dtm2.getDataType(minePath);
|
||||
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) {
|
||||
try (Transaction tx = trace.openTransaction("Testing")) {
|
||||
dtm.addDataType(got, DataTypeConflictHandler.DEFAULT_HANDLER);
|
||||
}
|
||||
dtm2.delete();
|
||||
|
@ -112,7 +111,7 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
public void testAddAndGet() {
|
||||
StructureDataType mine = getTestDataType();
|
||||
DataTypePath minePath = mine.getDataTypePath();
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) {
|
||||
try (Transaction tx = trace.openTransaction("Testing")) {
|
||||
dtm.addDataType(mine, DataTypeConflictHandler.REPLACE_HANDLER);
|
||||
}
|
||||
|
||||
|
@ -125,14 +124,14 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
public void testAddRemoveUndoThenGet() throws IOException {
|
||||
StructureDataType mine = getTestDataType();
|
||||
DataTypePath minePath = mine.getDataTypePath();
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) {
|
||||
try (Transaction tx = trace.openTransaction("Testing")) {
|
||||
dtm.addDataType(mine, DataTypeConflictHandler.REPLACE_HANDLER);
|
||||
}
|
||||
|
||||
DataType got = dtm.getDataType(minePath);
|
||||
assertEquals(mine.toString(), got.toString()); // TODO: Eww
|
||||
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(trace, "To Undo")) {
|
||||
try (Transaction tx = trace.openTransaction("To Undo")) {
|
||||
dtm.remove(got, new ConsoleTaskMonitor());
|
||||
}
|
||||
|
||||
|
@ -148,7 +147,7 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
public void testChangeDataType() {
|
||||
StructureDataType mine = getTestDataType();
|
||||
DataTypePath minePath = mine.getDataTypePath();
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) {
|
||||
try (Transaction tx = trace.openTransaction("Testing")) {
|
||||
dtm.addDataType(mine, DataTypeConflictHandler.REPLACE_HANDLER);
|
||||
|
||||
Structure got = (Structure) dtm.getDataType(minePath);
|
||||
|
@ -165,7 +164,7 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
DataTypePath mineAPath = mineA.getDataTypePath();
|
||||
StructureDataType mineB = getTestDataTypeB();
|
||||
DataTypePath mineBPath = mineB.getDataTypePath();
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) {
|
||||
try (Transaction tx = trace.openTransaction("Testing")) {
|
||||
dtm.addDataType(mineA, DataTypeConflictHandler.REPLACE_HANDLER);
|
||||
|
||||
DataType got = dtm.getDataType(mineAPath);
|
||||
|
@ -181,7 +180,7 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
StructureDataType mine = getTestDataType();
|
||||
DataTypePath minePath = mine.getDataTypePath();
|
||||
DataType got;
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) {
|
||||
try (Transaction tx = trace.openTransaction("Testing")) {
|
||||
dtm.addDataType(mine, DataTypeConflictHandler.REPLACE_HANDLER);
|
||||
|
||||
got = dtm.getDataType(minePath);
|
||||
|
@ -197,7 +196,7 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
StructureDataType mine = getTestDataType();
|
||||
DataTypePath minePath = mine.getDataTypePath();
|
||||
DataType got;
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) {
|
||||
try (Transaction tx = trace.openTransaction("Testing")) {
|
||||
dtm.addDataType(mine, DataTypeConflictHandler.REPLACE_HANDLER);
|
||||
|
||||
got = dtm.getDataType(minePath);
|
||||
|
@ -211,7 +210,7 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
@Test
|
||||
public void testCreateCategory() {
|
||||
Category category;
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) {
|
||||
try (Transaction tx = trace.openTransaction("Testing")) {
|
||||
category = dtm.createCategory(new CategoryPath("/Another/Path"));
|
||||
}
|
||||
assertEquals(category, dtm.getCategory(new CategoryPath("/Another/Path")));
|
||||
|
@ -220,7 +219,7 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
@Test
|
||||
public void testMoveCategory() throws DuplicateNameException {
|
||||
Category toMove;
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) {
|
||||
try (Transaction tx = trace.openTransaction("Testing")) {
|
||||
Category category = dtm.createCategory(new CategoryPath("/Another/Path"));
|
||||
toMove = dtm.createCategory(new CategoryPath("/MoveMe"));
|
||||
category.moveCategory(toMove, new ConsoleTaskMonitor());
|
||||
|
@ -231,7 +230,7 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
@Test
|
||||
public void testRenameCategory() throws DuplicateNameException, InvalidNameException {
|
||||
Category category;
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) {
|
||||
try (Transaction tx = trace.openTransaction("Testing")) {
|
||||
category = dtm.createCategory(new CategoryPath("/Another/Path"));
|
||||
category.setName("Renamed");
|
||||
}
|
||||
|
@ -241,12 +240,12 @@ public class DBTraceDataTypeManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
@Test
|
||||
public void testRemoveCategory() {
|
||||
Category category;
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) {
|
||||
try (Transaction tx = trace.openTransaction("Testing")) {
|
||||
category = dtm.createCategory(new CategoryPath("/Another/Path"));
|
||||
}
|
||||
assertEquals(category, dtm.getCategory(new CategoryPath("/Another/Path")));
|
||||
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(trace, "Testing")) {
|
||||
try (Transaction tx = trace.openTransaction("Testing")) {
|
||||
dtm.getCategory(new CategoryPath("/Another"))
|
||||
.removeEmptyCategory("Path",
|
||||
new ConsoleTaskMonitor());
|
||||
|
|
|
@ -23,6 +23,7 @@ import java.nio.ByteBuffer;
|
|||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.dbg.target.TargetRegister;
|
||||
import ghidra.dbg.target.schema.SchemaContext;
|
||||
import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName;
|
||||
|
@ -41,7 +42,6 @@ import ghidra.trace.model.memory.TraceMemorySpace;
|
|||
import ghidra.trace.model.target.TraceObject;
|
||||
import ghidra.trace.model.target.TraceObject.ConflictResolution;
|
||||
import ghidra.trace.model.target.TraceObjectKeyPath;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
import ghidra.util.exception.DuplicateNameException;
|
||||
|
||||
public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessIntegrationTest {
|
||||
|
@ -61,7 +61,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte
|
|||
|
||||
@Test
|
||||
public void testRegisterMappingHost() throws DuplicateNameException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
|
||||
TraceObject thread =
|
||||
|
@ -89,7 +89,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte
|
|||
@Test
|
||||
public void testRegisterMappingGuest() throws Throwable {
|
||||
TraceGuestPlatform amd64;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
|
||||
TraceObject thread =
|
||||
|
@ -123,7 +123,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte
|
|||
public void testRegisterMappingLabel() throws Throwable {
|
||||
TraceGuestPlatform amd64;
|
||||
Register RAX;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
|
||||
TraceObject thread =
|
||||
|
@ -158,7 +158,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte
|
|||
@Test
|
||||
public void testRegisterMappingGuestMemoryMapped() throws Throwable {
|
||||
TraceGuestPlatform avr8;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
|
||||
TraceObject thread =
|
||||
|
@ -192,7 +192,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte
|
|||
public void testRegisterMappingGuestMemoryMappedHostOverlay() throws Throwable {
|
||||
TraceGuestPlatform avr8;
|
||||
AddressSpace overlay;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
|
||||
TraceObject thread =
|
||||
|
@ -230,7 +230,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte
|
|||
public void testRegisterMappingLabelMemoryMapped() throws Throwable {
|
||||
TraceGuestPlatform avr8;
|
||||
Register R0;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
|
||||
TraceObject thread =
|
||||
|
@ -265,7 +265,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte
|
|||
public void testAddLabelCopiesRegisterValues() throws Throwable {
|
||||
TraceGuestPlatform amd64;
|
||||
Register RAX;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
|
||||
TraceObject thread =
|
||||
|
@ -302,7 +302,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte
|
|||
public void testAddLabelCopiesRegisterValuesMemoryMapped() throws Throwable {
|
||||
TraceGuestPlatform avr8;
|
||||
Register R0;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
|
||||
TraceObject thread =
|
||||
|
@ -337,7 +337,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte
|
|||
@Test
|
||||
public void testAddGuestMappingCopiesRegisterValues() throws Throwable {
|
||||
TraceGuestPlatform amd64;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
|
||||
TraceObject thread =
|
||||
|
@ -370,7 +370,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte
|
|||
@Test
|
||||
public void testAddOverlaySpaceCopiesRegisterValues() throws Throwable {
|
||||
TraceGuestPlatform amd64;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
|
||||
TraceObject thread =
|
||||
|
@ -406,7 +406,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte
|
|||
DBTraceGuestPlatform x86;
|
||||
AddressSpace registers = b.trace.getBaseAddressFactory().getRegisterSpace();
|
||||
AddressSpace overlay;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
|
||||
x86 = b.trace.getPlatformManager()
|
||||
|
@ -437,7 +437,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte
|
|||
AddressSpace overlay;
|
||||
Register EAX;
|
||||
Register EBX;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
|
||||
x86 = b.trace.getPlatformManager()
|
||||
|
@ -465,7 +465,7 @@ public class DBTraceObjectRegisterSupportTest extends AbstractGhidraHeadlessInte
|
|||
AddressSpace registers = b.trace.getBaseAddressFactory().getRegisterSpace();
|
||||
AddressSpace overlay;
|
||||
Register r0;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
r0 = b.language.getRegister("r0");
|
||||
overlay = b.trace.getMemoryManager()
|
||||
|
|
|
@ -23,11 +23,11 @@ import java.util.*;
|
|||
|
||||
import org.junit.*;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.test.AbstractGhidraHeadlessIntegrationTest;
|
||||
import ghidra.trace.database.ToyDBTraceBuilder;
|
||||
import ghidra.trace.model.guest.TraceGuestPlatform;
|
||||
import ghidra.trace.model.guest.TracePlatform;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
import ghidra.util.task.ConsoleTaskMonitor;
|
||||
|
||||
public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegrationTest {
|
||||
|
@ -54,7 +54,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testAddGuestPlatform() throws Throwable {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertEquals(0, manager.languageStore.getRecordCount());
|
||||
assertEquals(0, manager.platformStore.getRecordCount());
|
||||
manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc"));
|
||||
|
@ -65,7 +65,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testAddGuestPlatformHostCompilerErr() throws Throwable {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.addGuestPlatform(b.getLanguage("Toy:BE:64:default").getDefaultCompilerSpec());
|
||||
fail();
|
||||
}
|
||||
|
@ -80,7 +80,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testAddGuestPlatformHostLanguage() throws Throwable {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertEquals(0, manager.languageStore.getRecordCount());
|
||||
assertEquals(0, manager.platformStore.getRecordCount());
|
||||
manager.addGuestPlatform(b.getCompiler("Toy:BE:64:default", "long8"));
|
||||
|
@ -92,7 +92,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
@Test
|
||||
public void testGetGuestPlatforms() throws Throwable {
|
||||
DBTraceGuestPlatform guest;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertTrue(manager.getGuestPlatforms().isEmpty());
|
||||
guest = manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc"));
|
||||
}
|
||||
|
@ -102,7 +102,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testAddPlatformThenUndo() throws Throwable {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc"));
|
||||
}
|
||||
|
||||
|
@ -113,7 +113,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testAddPlatformThenSaveAndLoad() throws Throwable {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc"));
|
||||
}
|
||||
|
||||
|
@ -133,11 +133,11 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
@Test
|
||||
public void testDeleteGuestPlatform() throws Throwable {
|
||||
DBTraceGuestPlatform guest;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
guest = manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc"));
|
||||
}
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
guest.delete(new ConsoleTaskMonitor());
|
||||
}
|
||||
|
||||
|
@ -147,7 +147,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testAddMappedRange() throws Throwable {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceGuestPlatform guest =
|
||||
manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc"));
|
||||
|
||||
|
@ -175,7 +175,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testGetHostAndGuestAddressSet() throws Throwable {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceGuestPlatform guest =
|
||||
manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc"));
|
||||
assertEquals(b.set(), guest.getHostAddressSet());
|
||||
|
@ -188,7 +188,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testMapHostToGuest() throws Throwable {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceGuestPlatform guest =
|
||||
manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc"));
|
||||
guest.addMappedRange(b.addr(0x01000000), b.addr(guest, 0x02000000), 0x1000);
|
||||
|
@ -204,7 +204,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testMapGuestToHost() throws Throwable {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceGuestPlatform guest =
|
||||
manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc"));
|
||||
guest.addMappedRange(b.addr(0x01000000), b.addr(guest, 0x02000000), 0x1000);
|
||||
|
@ -220,7 +220,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testAddMappedRangeThenSaveAndLoad() throws Throwable {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceGuestPlatform guest =
|
||||
manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc"));
|
||||
guest.addMappedRange(b.addr(0x01000000), b.addr(guest, 0x02000000), 0x1000);
|
||||
|
@ -237,7 +237,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testMappedRangeGetHostLanguage() throws Throwable {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceGuestPlatform guest =
|
||||
manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc"));
|
||||
DBTraceGuestPlatformMappedRange range =
|
||||
|
@ -249,7 +249,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testMappedRangeGetHostRange() throws Throwable {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceGuestPlatform guest =
|
||||
manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc"));
|
||||
DBTraceGuestPlatformMappedRange range =
|
||||
|
@ -260,7 +260,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testMappedRangeGetGuestPlatform() throws Throwable {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceGuestPlatform guest =
|
||||
manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc"));
|
||||
DBTraceGuestPlatformMappedRange range =
|
||||
|
@ -271,7 +271,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testMappedRangeGetGuestRange() throws Throwable {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceGuestPlatform guest =
|
||||
manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc"));
|
||||
DBTraceGuestPlatformMappedRange range =
|
||||
|
@ -282,7 +282,7 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
|
||||
@Test
|
||||
public void testDeleteMappedRange() throws Throwable {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceGuestPlatform guest =
|
||||
manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc"));
|
||||
DBTraceGuestPlatformMappedRange range =
|
||||
|
@ -305,14 +305,14 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
public void testDeleteMappedRangeThenUndo() throws Throwable {
|
||||
DBTraceGuestPlatform guest;
|
||||
DBTraceGuestPlatformMappedRange range;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
guest = manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc"));
|
||||
range = guest.addMappedRange(b.addr(0x01000000), b.addr(guest, 0x02000000), 0x1000);
|
||||
assertNotNull(guest.mapHostToGuest(b.addr(0x01000800))); // Sanity check
|
||||
assertNotNull(guest.mapGuestToHost(b.addr(guest, 0x02000800))); // Sanity check
|
||||
}
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
range.delete(new ConsoleTaskMonitor());
|
||||
assertNull(guest.mapHostToGuest(b.addr(0x01000800))); // Sanity check
|
||||
assertNull(guest.mapGuestToHost(b.addr(guest, 0x02000800))); // Sanity check
|
||||
|
@ -330,12 +330,12 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
public void testDeleteGuestPlatformDeletesMappedRanges() throws Throwable {
|
||||
// TODO: Check that it also deletes code units
|
||||
DBTraceGuestPlatform guest;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
guest = manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc"));
|
||||
guest.addMappedRange(b.addr(0x01000000), b.addr(guest, 0x02000000), 0x1000);
|
||||
}
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
guest.delete(new ConsoleTaskMonitor());
|
||||
assertEquals(0, manager.rangeMappingStore.getRecordCount());
|
||||
}
|
||||
|
@ -345,12 +345,12 @@ public class DBTracePlatformManagerTest extends AbstractGhidraHeadlessIntegratio
|
|||
public void testDeleteGuestPlatformThenUndo() throws Throwable {
|
||||
// TODO: Check that it also deletes code units
|
||||
DBTraceGuestPlatform guest;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
guest = manager.addGuestPlatform(b.getCompiler("x86:LE:32:default", "gcc"));
|
||||
guest.addMappedRange(b.addr(0x01000000), b.addr(guest, 0x02000000), 0x1000);
|
||||
}
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
guest.delete(new ConsoleTaskMonitor());
|
||||
}
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ import java.util.function.Function;
|
|||
|
||||
import org.junit.*;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.lifecycle.Unfinished;
|
||||
import ghidra.program.model.address.*;
|
||||
import ghidra.program.model.data.*;
|
||||
|
@ -46,7 +47,6 @@ import ghidra.trace.model.listing.*;
|
|||
import ghidra.trace.model.stack.TraceStack;
|
||||
import ghidra.trace.model.thread.TraceThread;
|
||||
import ghidra.util.IntersectionAddressSetView;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
import ghidra.util.exception.CancelledException;
|
||||
import ghidra.util.task.ConsoleTaskMonitor;
|
||||
import ghidra.util.task.TaskMonitor;
|
||||
|
@ -112,14 +112,14 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
|
||||
@Test
|
||||
public void testAddDefinedData() throws CodeUnitInsertionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAddDataPrecedingBytesChanged() throws CodeUnitInsertionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getMemoryManager().putBytes(10, b.addr(0x4001), b.buf(0xaa));
|
||||
TraceData d4000 =
|
||||
b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
|
@ -129,7 +129,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
|
||||
@Test
|
||||
public void testPutBytesTruncatesDynamicData() throws CodeUnitInsertionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceData d4000 =
|
||||
b.addData(0, b.addr(0x4000), NoMaxStringDataType.dataType, b.buf("Hello"));
|
||||
assertEquals(b.addr(0x4005), d4000.getMaxAddress());
|
||||
|
@ -142,7 +142,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
|
||||
@Test
|
||||
public void testPutBytesSplitsDynamicDataSameLength() throws CodeUnitInsertionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceData d0at4000 =
|
||||
b.addData(0, b.addr(0x4000), NoMaxStringDataType.dataType, b.buf("Hello"));
|
||||
assertEquals(b.addr(0x4005), d0at4000.getMaxAddress());
|
||||
|
@ -158,7 +158,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
|
||||
@Test
|
||||
public void testPutBytesSplitsStaticData() throws CodeUnitInsertionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceData d0at4000 =
|
||||
b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
assertEquals(Lifespan.nowOn(0), d0at4000.getLifespan());
|
||||
|
@ -174,7 +174,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
|
||||
@Test
|
||||
public void testPutBytesInScratchLeavesStaticDataUntouched() throws CodeUnitInsertionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceData d0at4000 =
|
||||
b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
assertEquals(Lifespan.nowOn(0), d0at4000.getLifespan());
|
||||
|
@ -191,7 +191,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
|
||||
@Test
|
||||
public void testPutBytesDeletesDynamicData() throws CodeUnitInsertionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceData d4000 =
|
||||
b.addData(0, b.addr(0x4000), NoMaxStringDataType.dataType, b.buf("Hello"));
|
||||
assertEquals(b.addr(0x4005), d4000.getMaxAddress());
|
||||
|
@ -203,14 +203,14 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
|
||||
@Test
|
||||
public void testAddInstruction() throws CodeUnitInsertionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAddInstructionPrecedingBytesChanged() throws CodeUnitInsertionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getMemoryManager().putBytes(10, b.addr(0x4001), b.buf(0xaa));
|
||||
TraceInstruction i4000 =
|
||||
b.addInstruction(0, b.addr(0x4000), b.host, b.buf(0xf4, 0));
|
||||
|
@ -220,7 +220,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
|
||||
@Test
|
||||
public void testAddInstructionInScratch() throws CodeUnitInsertionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getMemoryManager().putBytes(-5, b.addr(0x4001), b.buf(0xaa));
|
||||
TraceInstruction i4000 =
|
||||
b.addInstruction(-10, b.addr(0x4000), b.host, b.buf(0xf4, 0));
|
||||
|
@ -238,7 +238,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
|
||||
@Test
|
||||
public void testPutBytesTruncatesInstruction() throws CodeUnitInsertionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceInstruction i4000 =
|
||||
b.addInstruction(0, b.addr(0x4000), b.host, b.buf(0xf4, 0));
|
||||
assertEquals(b.addr(0x4001), i4000.getMaxAddress());
|
||||
|
@ -251,7 +251,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
|
||||
@Test
|
||||
public void testPutBytesDeletesInstruction() throws CodeUnitInsertionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceInstruction i4000 =
|
||||
b.addInstruction(0, b.addr(0x4000), b.host, b.buf(0xf4, 0));
|
||||
assertEquals(b.addr(0x4001), i4000.getMaxAddress());
|
||||
|
@ -263,7 +263,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
|
||||
@Test
|
||||
public void testAddUndefinedData() throws CodeUnitInsertionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addData(0, b.addr(0x4000), DefaultDataType.dataType, b.buf(1));
|
||||
DBTraceCodeSpace code = manager.getCodeSpace(b.language.getDefaultSpace(), true);
|
||||
assertTrue(code.definedData().mapSpace.isEmpty());
|
||||
|
@ -272,7 +272,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
|
||||
@Test
|
||||
public void testOverlapErrors() throws CodeUnitInsertionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
|
||||
try {
|
||||
|
@ -315,7 +315,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
ArrayList<CompletableFuture<Integer>> creators = new ArrayList<>();
|
||||
for (int i = 0; i < 10; i++) {
|
||||
creators.add(CompletableFuture.supplyAsync(() -> {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getCodeManager()
|
||||
.definedData()
|
||||
.create(Lifespan.ALL, b.addr(0x4000), IntegerDataType.dataType);
|
||||
|
@ -335,13 +335,13 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
|
||||
@Test
|
||||
public void testOverlapAllowedAfterAbort() throws Throwable {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getCodeManager()
|
||||
.definedData()
|
||||
.create(Lifespan.ALL, b.addr(0x4000), IntegerDataType.dataType);
|
||||
tid.abort();
|
||||
tx.abort();
|
||||
}
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getCodeManager()
|
||||
.definedData()
|
||||
.create(Lifespan.ALL, b.addr(0x4000), IntegerDataType.dataType);
|
||||
|
@ -349,14 +349,14 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
}
|
||||
|
||||
public void testOverlapErrAfterInvalidate() throws Throwable {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getCodeManager()
|
||||
.definedData()
|
||||
.create(Lifespan.ALL, b.addr(0x4000), IntegerDataType.dataType);
|
||||
}
|
||||
b.trace.undo();
|
||||
b.trace.redo();
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getCodeManager()
|
||||
.definedData()
|
||||
.create(Lifespan.ALL, b.addr(0x4000), IntegerDataType.dataType);
|
||||
|
@ -377,12 +377,12 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
public void testOverlapErrWithDataTypeSettings() throws Throwable {
|
||||
AddressSpace space = b.trace.getBaseAddressFactory().getDefaultAddressSpace();
|
||||
PointerTypedef type = new PointerTypedef(null, VoidDataType.dataType, 8, null, space);
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getCodeManager()
|
||||
.definedData()
|
||||
.create(Lifespan.ALL, b.addr(0x4000), type);
|
||||
}
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getCodeManager()
|
||||
.definedData()
|
||||
.create(Lifespan.ALL, b.addr(0x4000), type);
|
||||
|
@ -395,7 +395,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
|
||||
@Test
|
||||
public void testOverlapErrAfterSetEndSnap() throws Throwable {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceDataAdapter data = b.trace.getCodeManager()
|
||||
.definedData()
|
||||
.create(Lifespan.ALL, b.addr(0x4000), IntegerDataType.dataType);
|
||||
|
@ -403,7 +403,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
data.setEndSnap(-10);
|
||||
assertEquals(Lifespan.before(-9), data.getLifespan());
|
||||
}
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getCodeManager()
|
||||
.definedData()
|
||||
.create(Lifespan.ALL, b.addr(0x4000), IntegerDataType.dataType);
|
||||
|
@ -454,7 +454,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
|
||||
@Test
|
||||
public void testGetAt() throws CodeUnitInsertionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertUndefinedFunc(v -> v.getAt(0, b.addr(0x4000)));
|
||||
TraceData d4000 =
|
||||
b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
|
@ -485,7 +485,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
|
||||
@Test
|
||||
public void testGetContaining() throws CodeUnitInsertionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertUndefinedFunc(v -> v.getContaining(0, b.addr(0x4000)));
|
||||
TraceData d4000 =
|
||||
b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
|
@ -565,7 +565,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
TraceData d4000;
|
||||
TraceData d4004;
|
||||
TraceInstruction i4008;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
d4000.setEndSnap(9);
|
||||
d4004 = b.addData(0, b.addr(0x4004), IntegerDataType.dataType, b.buf(5, 6, 7, 8));
|
||||
|
@ -707,7 +707,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
TraceData d4000;
|
||||
TraceData d4004;
|
||||
TraceInstruction i4008;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
d4000.setEndSnap(9);
|
||||
d4004 = b.addData(0, b.addr(0x4004), IntegerDataType.dataType, b.buf(5, 6, 7, 8));
|
||||
|
@ -846,7 +846,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
TraceData d4000;
|
||||
TraceData d4004;
|
||||
TraceInstruction i4008;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
d4000.setEndSnap(9);
|
||||
d4004 = b.addData(0, b.addr(0x4004), IntegerDataType.dataType, b.buf(5, 6, 7, 8));
|
||||
|
@ -986,7 +986,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
TraceData d4000;
|
||||
TraceData d4004;
|
||||
TraceInstruction i4008;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
d4000.setEndSnap(9);
|
||||
d4004 = b.addData(0, b.addr(0x4004), IntegerDataType.dataType, b.buf(5, 6, 7, 8));
|
||||
|
@ -1200,7 +1200,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
TraceData d4000;
|
||||
TraceData d4004;
|
||||
TraceInstruction i4008;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
d4000.setEndSnap(9);
|
||||
d4004 = b.addData(0, b.addr(0x4004), IntegerDataType.dataType, b.buf(5, 6, 7, 8));
|
||||
|
@ -1257,7 +1257,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
manager.undefinedData().getAfter(0, b.addr(-0x0001)));
|
||||
|
||||
TraceInstruction iCodeMax;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
iCodeMax = b.addInstruction(0, b.addr(-0x0002), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
|
||||
|
@ -1275,7 +1275,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
b.trace.undo();
|
||||
|
||||
TraceData dDataMin;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
dDataMin = b.addData(0, b.data(0x0000), IntegerDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
|
||||
|
@ -1290,7 +1290,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
assertUndefinedWithAddr(b.addr(-0x0001),
|
||||
manager.undefinedData().getFloor(0, b.data(0x0003)));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
iCodeMax = b.addInstruction(0, b.addr(-0x0002), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
TraceData uCodePre = manager.undefinedData().getAt(0, b.addr(-0x0003));
|
||||
|
@ -1327,7 +1327,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
public void testGetsSingleSpace() throws CodeUnitInsertionException {
|
||||
TraceData d4000;
|
||||
TraceInstruction i4008;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
d4000.setEndSnap(9);
|
||||
i4008 = b.addInstruction(0, b.addr(0x4008), b.host, b.buf(0xf4, 0));
|
||||
|
@ -1394,7 +1394,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
DBTraceCodeSpace regCode;
|
||||
TraceData dR4;
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Thread 1", 0);
|
||||
regCode = manager.getCodeRegisterSpace(thread, true);
|
||||
dR4 = regCode.definedData()
|
||||
|
@ -1413,7 +1413,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
DBTraceCodeSpace frameCode;
|
||||
TraceData dR5;
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceStack stack = b.trace.getStackManager().getStack(thread, 0, true);
|
||||
stack.setDepth(2, true);
|
||||
assertEquals(regCode, manager.getCodeRegisterSpace(stack.getFrame(0, false), false));
|
||||
|
@ -1460,7 +1460,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
TraceData d4000;
|
||||
TraceData d4004;
|
||||
TraceInstruction i4008;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
d4000.setEndSnap(9);
|
||||
d4004 = b.addData(0, b.addr(0x4004), IntegerDataType.dataType, b.buf(5, 6, 7, 8));
|
||||
|
@ -1530,7 +1530,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
TraceData d4000;
|
||||
TraceData d4004;
|
||||
TraceInstruction i4008;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
d4000.setEndSnap(9);
|
||||
d4004 = b.addData(0, b.addr(0x4004), IntegerDataType.dataType, b.buf(5, 6, 7, 8));
|
||||
|
@ -1605,7 +1605,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
TraceData d4000;
|
||||
TraceData d4004;
|
||||
TraceInstruction i4008;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
d4000.setEndSnap(9);
|
||||
d4004 = b.addData(0, b.addr(0x4004), IntegerDataType.dataType, b.buf(5, 6, 7, 8));
|
||||
|
@ -1690,7 +1690,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
TraceData d4000;
|
||||
TraceData d4004;
|
||||
TraceInstruction i4008;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
d4000.setEndSnap(9);
|
||||
d4004 = b.addData(0, b.addr(0x4004), IntegerDataType.dataType, b.buf(5, 6, 7, 8));
|
||||
|
@ -1700,7 +1700,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
}
|
||||
|
||||
assertEquals(d4000, manager.definedUnits().getAt(0, b.addr(0x4000)));
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.definedUnits()
|
||||
.clear(Lifespan.ALL, b.range(0x0000, -0x0001), false,
|
||||
TaskMonitor.DUMMY);
|
||||
|
@ -1716,7 +1716,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
i4008 = manager.instructions().getAt(0, b.addr(0x4008));
|
||||
|
||||
assertEquals(d4000, manager.definedUnits().getAt(7, b.addr(0x4000)));
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.definedUnits()
|
||||
.clear(Lifespan.span(7, 8), b.range(0x0000, -0x0001), false,
|
||||
TaskMonitor.DUMMY);
|
||||
|
@ -1734,7 +1734,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
i4008 = manager.instructions().getAt(0, b.addr(0x4008));
|
||||
|
||||
assertEquals(d4000, manager.definedUnits().getAt(7, b.addr(0x4000)));
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.definedUnits()
|
||||
.clear(Lifespan.span(7, 8), b.range(0x4000, 0x4000), false,
|
||||
TaskMonitor.DUMMY);
|
||||
|
@ -1752,7 +1752,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
i4008 = manager.instructions().getAt(0, b.addr(0x4008));
|
||||
|
||||
assertEquals(d4000, manager.definedUnits().getAt(0, b.addr(0x4000)));
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.instructions()
|
||||
.clear(Lifespan.ALL, b.range(0x0000, -0x0001), false,
|
||||
TaskMonitor.DUMMY);
|
||||
|
@ -1767,7 +1767,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
i4008 = manager.instructions().getAt(0, b.addr(0x4008));
|
||||
|
||||
assertEquals(d4000, manager.definedUnits().getAt(0, b.addr(0x4000)));
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.definedData()
|
||||
.clear(Lifespan.ALL, b.range(0x0000, -0x0001), false,
|
||||
TaskMonitor.DUMMY);
|
||||
|
@ -1789,7 +1789,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
TraceData d4000;
|
||||
TraceData d4004;
|
||||
TraceInstruction i4008;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), IntegerDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
d4000.setEndSnap(9);
|
||||
d4004 = b.addData(0, b.addr(0x4004), IntegerDataType.dataType, b.buf(5, 6, 7, 8));
|
||||
|
@ -1807,7 +1807,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
assertEquals(rvOne, ctxManager.getValue(b.language, r4, 0, b.addr(0x4008)));
|
||||
assertEquals(rvOne, ctxManager.getValue(b.language, r4, 7, b.addr(0x4008)));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.instructions()
|
||||
.clear(Lifespan.ALL, b.range(0x0000, -0x0001), true,
|
||||
TaskMonitor.DUMMY);
|
||||
|
@ -1818,7 +1818,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
assertEquals(rvOne, ctxManager.getValue(b.language, r4, 0, b.addr(0x4008)));
|
||||
assertEquals(rvOne, ctxManager.getValue(b.language, r4, 7, b.addr(0x4008)));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.instructions()
|
||||
.clear(Lifespan.span(7, 7), b.range(0x0000, -0x0001), true,
|
||||
TaskMonitor.DUMMY);
|
||||
|
@ -1838,7 +1838,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
TraceInstruction g4000;
|
||||
TraceInstruction i4001;
|
||||
TraceData d4003;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
guest = langMan.addGuestPlatform(x86.getDefaultCompilerSpec());
|
||||
mappedRange = guest.addMappedRange(b.addr(0x0000), b.addr(guest, 0x0000), 1L << 32);
|
||||
g4000 = b.addInstruction(0, b.addr(0x4000), guest, b.buf(0x90));
|
||||
|
@ -1847,7 +1847,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
}
|
||||
|
||||
assertEquals(g4000, manager.codeUnits().getAt(0, b.addr(0x4000)));
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
mappedRange.delete(new ConsoleTaskMonitor());
|
||||
}
|
||||
assertUndefinedWithAddr(b.addr(0x4000), manager.codeUnits().getAt(0, b.addr(0x4000)));
|
||||
|
@ -1861,7 +1861,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
g4000 = manager.instructions().getAt(0, b.addr(0x4000));
|
||||
assertNotNull(g4000);
|
||||
assertEquals(guest, g4000.getPlatform());
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
guest.delete(new ConsoleTaskMonitor());
|
||||
}
|
||||
assertUndefinedWithAddr(b.addr(0x4000), manager.codeUnits().getAt(0, b.addr(0x4000)));
|
||||
|
@ -1874,7 +1874,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
|
||||
@Test
|
||||
public void testSaveAndLoad() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0));
|
||||
|
||||
TraceThread thread = b.getOrAddThread("Thread 1", 0);
|
||||
|
@ -1922,7 +1922,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
|
||||
@Test
|
||||
public void testUndoThenRedo() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0));
|
||||
|
||||
TraceThread thread = b.getOrAddThread("Thread 1", 0);
|
||||
|
@ -1970,7 +1970,7 @@ public class DBTraceCodeManagerTest extends AbstractGhidraHeadlessIntegrationTes
|
|||
|
||||
@Test
|
||||
public void testOverlaySpaces() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
AddressSpace os = b.trace.getMemoryManager()
|
||||
.createOverlayAddressSpace("test",
|
||||
b.trace.getBaseAddressFactory().getDefaultAddressSpace());
|
||||
|
|
|
@ -25,8 +25,7 @@ import java.util.*;
|
|||
|
||||
import org.junit.*;
|
||||
|
||||
import db.IntField;
|
||||
import db.StringField;
|
||||
import db.*;
|
||||
import ghidra.app.plugin.assembler.*;
|
||||
import ghidra.docking.settings.Settings;
|
||||
import ghidra.lifecycle.Unfinished;
|
||||
|
@ -54,7 +53,6 @@ import ghidra.trace.model.symbol.TraceReference;
|
|||
import ghidra.trace.model.symbol.TraceStackReference;
|
||||
import ghidra.trace.model.thread.TraceThread;
|
||||
import ghidra.util.*;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
import ghidra.util.exception.DuplicateNameException;
|
||||
import ghidra.util.exception.NoValueException;
|
||||
import ghidra.util.map.TypeMismatchException;
|
||||
|
@ -186,7 +184,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
public void testCodeUnitLocationGetters() throws CodeUnitInsertionException,
|
||||
TraceOverlappedRegionException, DuplicateNameException {
|
||||
TraceInstruction ins;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
ins = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
TraceData und = manager.undefinedData().getAt(0, b.addr(0x4006));
|
||||
|
@ -210,7 +208,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
assertEquals("ram:00004004", ins.getAddressString(true, false));
|
||||
assertEquals("ram:0000000000004004", ins.getAddressString(true, true));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getMemoryManager()
|
||||
.addRegion(".text", Lifespan.nowOn(0),
|
||||
b.range(0x4000, 0x4fff), TraceMemoryFlag.READ);
|
||||
|
@ -225,7 +223,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
@Test
|
||||
public void testGetProgram() throws CodeUnitInsertionException {
|
||||
TraceInstruction i4004;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
|
||||
|
@ -235,7 +233,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
@Test
|
||||
public void testGetMemory() throws CodeUnitInsertionException {
|
||||
TraceInstruction i4004;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
|
||||
|
@ -248,7 +246,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
TraceGuestPlatform guest;
|
||||
TraceInstruction i4004;
|
||||
TraceInstruction g4006;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0));
|
||||
guest = b.trace.getPlatformManager().addGuestPlatform(x86.getDefaultCompilerSpec());
|
||||
guest.addMappedRange(b.addr(0x0000), b.addr(guest, 0x0000), 1L << 32);
|
||||
|
@ -263,14 +261,14 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
public void testPropertySettersGetters() throws CodeUnitInsertionException, NoValueException {
|
||||
TraceInstruction i4004;
|
||||
TraceInstruction i4006;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0));
|
||||
i4006 = b.addInstruction(0, b.addr(0x4006), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
assertFalse(i4004.hasProperty("myVoid"));
|
||||
|
||||
assertFalse(i4004.getVoidProperty("myVoid"));
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.setProperty("myVoid");
|
||||
}
|
||||
assertTrue(i4004.hasProperty("myVoid"));
|
||||
|
@ -288,7 +286,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
// pass
|
||||
}
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.setProperty("myInt", 0x1234);
|
||||
}
|
||||
assertTrue(i4004.hasProperty("myInt"));
|
||||
|
@ -311,7 +309,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
// pass
|
||||
}
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.setProperty("myString", "Hello!");
|
||||
}
|
||||
assertTrue(i4004.hasProperty("myString"));
|
||||
|
@ -329,7 +327,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
// pass
|
||||
}
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.setProperty("mySaveable", TestSaveable.class,
|
||||
new TestSaveable(0x5678, "Good bye!"));
|
||||
i4004.setProperty("myObject", new TestSaveable(0x9abc, "Bonjour!"));
|
||||
|
@ -355,7 +353,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
set(i4004.propertyNames()));
|
||||
assertEquals(Set.of(), set(i4006.propertyNames()));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.removeProperty("myVoid");
|
||||
i4006.removeProperty("myVoid"); // NOP
|
||||
i4004.removeProperty("noProperty");
|
||||
|
@ -381,19 +379,19 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
public void testCommentSettersGetters() throws CodeUnitInsertionException {
|
||||
TraceInstruction i4004;
|
||||
TraceInstruction i4006;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0));
|
||||
i4006 = b.addInstruction(0, b.addr(0x4006), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.setComment(CodeUnit.NO_COMMENT, "Shouldn't work");
|
||||
fail();
|
||||
}
|
||||
catch (IllegalArgumentException e) {
|
||||
// pass
|
||||
}
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.setComment(5, "Shouldn't work");
|
||||
fail();
|
||||
}
|
||||
|
@ -402,14 +400,14 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
}
|
||||
|
||||
assertNull(i4004.getComment(CodeUnit.EOL_COMMENT));
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.setComment(CodeUnit.EOL_COMMENT, "My EOL Comment");
|
||||
}
|
||||
assertEquals("My EOL Comment", i4004.getComment(CodeUnit.EOL_COMMENT));
|
||||
assertNull(i4006.getComment(CodeUnit.EOL_COMMENT));
|
||||
|
||||
assertArrayEquals(EMPTY_STRING_ARRAY, i4004.getCommentAsArray(CodeUnit.PRE_COMMENT));
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.setCommentAsArray(CodeUnit.PRE_COMMENT, new String[] { "My", "Pre", "Comment" });
|
||||
}
|
||||
assertEquals("My EOL Comment", i4004.getComment(CodeUnit.EOL_COMMENT));
|
||||
|
@ -418,7 +416,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
assertArrayEquals(EMPTY_STRING_ARRAY, i4006.getCommentAsArray(CodeUnit.PRE_COMMENT));
|
||||
assertEquals("My\nPre\nComment", i4004.getComment(CodeUnit.PRE_COMMENT));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.setCommentAsArray(CodeUnit.PRE_COMMENT, null);
|
||||
i4006.setCommentAsArray(CodeUnit.PRE_COMMENT, null); // NOP
|
||||
}
|
||||
|
@ -431,7 +429,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
commentAdapter.reduce(TraceAddressSnapRangeQuery.at(b.addr(0x4004), 0)).firstValue();
|
||||
assertNotNull(c4004);
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.setEndSnap(9);
|
||||
i4006.setEndSnap(9);
|
||||
// TODO: Decide whether or not to shrink the comment lifespan with the unit lifespan
|
||||
|
@ -444,14 +442,14 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
assertEquals(Lifespan.span(0, 9), c4004.getLifespan());
|
||||
assertEquals("My EOL Comment", i4004.getComment(CodeUnit.EOL_COMMENT));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
commentAdapter.clearComments(Lifespan.nowOn(0), b.range(0x4000, 0x5000),
|
||||
CodeUnit.EOL_COMMENT);
|
||||
}
|
||||
assertNull(i4004.getComment(CodeUnit.EOL_COMMENT));
|
||||
assertEquals("Get this back in the mix", i4004_10.getComment(CodeUnit.PRE_COMMENT));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
commentAdapter.clearComments(Lifespan.nowOn(0), b.range(0x4000, 0x5000),
|
||||
CodeUnit.NO_COMMENT);
|
||||
}
|
||||
|
@ -464,7 +462,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
TraceInstruction i4004;
|
||||
TraceInstruction i4006;
|
||||
TraceData d4008;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0));
|
||||
i4006 = b.addInstruction(0, b.addr(0x4006), b.host, b.buf(0xf4, 0));
|
||||
d4008 = b.addData(0, b.addr(0x4008), LongDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
|
@ -489,7 +487,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
TraceData d4000;
|
||||
TraceInstruction i4004;
|
||||
TraceInstruction i4006;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), LongDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0));
|
||||
i4006 = b.addInstruction(0, b.addr(0x4006), b.host, b.buf(0xf4, 0));
|
||||
|
@ -497,7 +495,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
Set<TraceReference> refs;
|
||||
|
||||
assertArrayEquals(new TraceReference[] {}, d4000.getValueReferences());
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000.addValueReference(b.addr(0x5000), RefType.DATA); // ODD: No source parameter?
|
||||
}
|
||||
refs = set(d4000.getValueReferences());
|
||||
|
@ -511,7 +509,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
assertEquals(0, valueRef.getOperandIndex());
|
||||
|
||||
assertArrayEquals(new TraceReference[] {}, i4004.getMnemonicReferences());
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.addMnemonicReference(b.addr(0x5000), RefType.READ, SourceType.USER_DEFINED);
|
||||
}
|
||||
refs = set(i4004.getMnemonicReferences());
|
||||
|
@ -527,7 +525,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
|
||||
// TODO: Should I be allowed to add an operand reference for a non-existent operand?
|
||||
assertArrayEquals(new TraceReference[] {}, i4004.getOperandReferences(0));
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.addOperandReference(0, b.addr(0x5001), RefType.WRITE, SourceType.USER_DEFINED);
|
||||
}
|
||||
refs = set(i4004.getOperandReferences(0));
|
||||
|
@ -541,7 +539,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
assertEquals(SourceType.USER_DEFINED, opRef.getSource());
|
||||
assertEquals(0, opRef.getOperandIndex());
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.setStackReference(CodeUnit.MNEMONIC, -0x30, SourceType.USER_DEFINED,
|
||||
RefType.READ);
|
||||
}
|
||||
|
@ -557,7 +555,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
assertEquals(SourceType.USER_DEFINED, stackRef.getSource());
|
||||
assertEquals(CodeUnit.MNEMONIC, stackRef.getOperandIndex());
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.setRegisterReference(CodeUnit.MNEMONIC, b.language.getRegister("r4"),
|
||||
SourceType.USER_DEFINED, RefType.READ);
|
||||
}
|
||||
|
@ -574,7 +572,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
assertEquals(SourceType.USER_DEFINED, regRef.getSource());
|
||||
assertEquals(CodeUnit.MNEMONIC, regRef.getOperandIndex());
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.setPrimaryMemoryReference(stackRef);
|
||||
}
|
||||
assertEquals(stackRef, i4004.getPrimaryReference(CodeUnit.MNEMONIC));
|
||||
|
@ -582,7 +580,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
assertEquals(Set.of(mnemRef, opRef, stackRef, regRef), set(i4004.getReferencesFrom()));
|
||||
|
||||
DBTraceReference refTo;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
refTo = b.trace.getReferenceManager()
|
||||
.addMemoryReference(Lifespan.ALL, b.addr(0x3000),
|
||||
b.addr(0x4004), RefType.COMPUTED_JUMP, SourceType.USER_DEFINED,
|
||||
|
@ -592,32 +590,32 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
|
||||
assertNull(i4004.getExternalReference(CodeUnit.MNEMONIC));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000.removeValueReference(b.addr(0x6000)); // NOP
|
||||
}
|
||||
assertEquals(Set.of(valueRef), set(d4000.getValueReferences()));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000.removeValueReference(b.addr(0x5000));
|
||||
}
|
||||
assertArrayEquals(new TraceReference[] {}, d4000.getValueReferences());
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.removeMnemonicReference(b.addr(0x6000)); // NOP
|
||||
}
|
||||
assertEquals(Set.of(mnemRef, stackRef, regRef), set(i4004.getMnemonicReferences()));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.removeMnemonicReference(b.addr(0x5000));
|
||||
}
|
||||
assertEquals(Set.of(stackRef, regRef), set(i4004.getMnemonicReferences()));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.removeOperandReference(0, b.addr(0x5001)); // NOP
|
||||
}
|
||||
assertEquals(0, i4004.getOperandReferences(1).length);
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
// All modules should be loaded in trace.
|
||||
i4004.removeExternalReference(CodeUnit.MNEMONIC);
|
||||
fail();
|
||||
|
@ -634,7 +632,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
TraceData data;
|
||||
TraceData undefined;
|
||||
TraceData undReg;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
instruction = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0));
|
||||
undefined = manager.undefinedData().getAt(0, b.addr(0x4006));
|
||||
|
||||
|
@ -664,7 +662,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
public void testSetEndSnap() throws CodeUnitInsertionException {
|
||||
TraceData d4000;
|
||||
TraceInstruction i4004;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), LongDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0));
|
||||
|
||||
|
@ -699,7 +697,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
// TODO: Test listen for events
|
||||
}
|
||||
TraceData u4006 = manager.undefinedData().getAt(0, b.addr(0x4007));
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
u4006.setEndSnap(10);
|
||||
fail();
|
||||
}
|
||||
|
@ -717,7 +715,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
TraceData und;
|
||||
TraceData reg;
|
||||
TraceInstruction lil;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
data = b.addData(0, b.addr(0x4000), LongDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
// In space without memory, yet.
|
||||
und = manager.undefinedData().getAt(0, b.data(0x7fff));
|
||||
|
@ -740,7 +738,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
assertEquals(4, data.getBytes(buf, 0));
|
||||
assertArrayEquals(b.arr(1, 2, 3, 4), buf.array());
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
data = b.addData(0, b.addr(0x4004), LongDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
buf = ByteBuffer.allocate(1);
|
||||
|
@ -781,7 +779,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
|
||||
buf = ByteBuffer.allocate(1);
|
||||
assertEquals(0, und.getBytes(buf, 0)); // Because the memory space has not been created
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceMemorySpace dataMem =
|
||||
b.trace.getMemoryManager().getMemorySpace(b.language.getDefaultDataSpace(), true);
|
||||
dataMem.putBytes(0, b.data(0x7fff), b.buf(5, 6, 7, 8));
|
||||
|
@ -834,7 +832,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
TraceData ds4014;
|
||||
TraceData da4018;
|
||||
TraceData dd401c;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
// StringDataType accesses memory via program view, so "block" must exist
|
||||
b.trace.getMemoryManager()
|
||||
.addRegion("myRegion", Lifespan.nowOn(0),
|
||||
|
@ -972,7 +970,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
TraceInstruction i4006;
|
||||
TraceInstruction i4008;
|
||||
TraceInstruction i400a;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
// Disassembler's new cacheing in mem-buffer uses program view, so "block" must exist
|
||||
b.trace.getMemoryManager()
|
||||
.addRegion("myRegion", Lifespan.nowOn(0),
|
||||
|
@ -1075,7 +1073,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
assertTrue(i4008.hasFallthrough());
|
||||
|
||||
// Try some mutations
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.addOperandReference(1, b.addr(0x5000), RefType.DATA_IND, SourceType.USER_DEFINED);
|
||||
// TODO: This should probably be default for first/only reference
|
||||
b.trace.getReferenceManager()
|
||||
|
@ -1088,7 +1086,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
// See InstructionDB#getOperandRefType(int)
|
||||
assertEquals(RefType.DATA, i4004.getOperandRefType(1));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.setFallThrough(b.addr(0x5000));
|
||||
}
|
||||
assertEquals(b.addr(0x5000), i4004.getAddress(1));
|
||||
|
@ -1100,19 +1098,19 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
// TODO: Test FALL_THROUGH mutations via ReferenceManager reflected in Instruction's
|
||||
// flowOverride flags. Cannot be done until ReferenceManager is observable by CodeManager.
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.clearFallThroughOverride();
|
||||
}
|
||||
assertEquals(b.addr(0x4006), i4004.getFallThrough());
|
||||
assertEquals(b.addr(0x4004), i4006.getFallFrom());
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i400a.addMnemonicReference(b.addr(0x6000), RefType.COMPUTED_CALL,
|
||||
SourceType.USER_DEFINED);
|
||||
}
|
||||
assertEquals(Set.of(b.addr(0x6000)), set(i400a.getFlows()));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i400a.setFlowOverride(FlowOverride.RETURN);
|
||||
}
|
||||
assertEquals(Set.of(), set(i400a.getDefaultFlows()));
|
||||
|
@ -1129,7 +1127,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
Register r5 = b.language.getRegister("r5");
|
||||
|
||||
TraceInstruction i4004;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
|
||||
|
@ -1143,11 +1141,11 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
assertNull(i4004.getValue(r4, true));
|
||||
assertNull(i4004.getRegisterValue(r4));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.clearRegister(r4); // NOP, but cannot crash
|
||||
}
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.setValue(r4, new BigInteger("ffffffffffff1234", 16));
|
||||
}
|
||||
assertTrue(i4004.hasValue(r4));
|
||||
|
@ -1159,14 +1157,14 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
assertEquals(new RegisterValue(r4, new BigInteger("-edcc", 16)),
|
||||
i4004.getRegisterValue(r4));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.setRegisterValue(new RegisterValue(r5, new BigInteger("5678", 16)));
|
||||
}
|
||||
assertTrue(i4004.hasValue(r5));
|
||||
assertEquals(new BigInteger("5678", 16), i4004.getValue(r5, false));
|
||||
assertEquals(new RegisterValue(r5, new BigInteger("5678", 16)), i4004.getRegisterValue(r5));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004.clearRegister(r4); // NOP, but cannot crash
|
||||
}
|
||||
assertFalse(i4004.hasValue(r4));
|
||||
|
@ -1177,7 +1175,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
TraceData d4000;
|
||||
TraceInstruction i4004;
|
||||
TraceData d4006;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), LongDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0));
|
||||
d4006 = b.addData(0, b.addr(0x4006), PointerDataType.dataType,
|
||||
|
@ -1197,7 +1195,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
TraceData d4000;
|
||||
TraceInstruction i4004;
|
||||
TraceData d4006;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), LongDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0));
|
||||
d4006 = b.addData(0, b.addr(0x4006), PointerDataType.dataType,
|
||||
|
@ -1205,12 +1203,12 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
}
|
||||
TraceData u400e = manager.undefinedData().getAt(0, b.addr(0x400e));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000.delete();
|
||||
i4004.delete();
|
||||
}
|
||||
// TODO: Test for events
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
u400e.delete();
|
||||
fail();
|
||||
}
|
||||
|
@ -1227,7 +1225,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
TraceGuestPlatform guest;
|
||||
TraceInstruction i4004;
|
||||
TraceInstruction g4006;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4004 = b.addInstruction(0, b.addr(0x4004), b.host, b.buf(0xf4, 0));
|
||||
guest = b.trace.getPlatformManager().addGuestPlatform(x86.getDefaultCompilerSpec());
|
||||
guest.addMappedRange(b.addr(0x0000), b.addr(guest, 0x0000), 1L << 32);
|
||||
|
@ -1249,7 +1247,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
TraceInstruction i4004;
|
||||
TraceInstruction g4006;
|
||||
TraceInstruction i4007;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
// Disassembler's new cacheing in mem-buffer uses program view, so "block" must exist
|
||||
b.trace.getMemoryManager()
|
||||
.addRegion("myRegion", Lifespan.nowOn(0),
|
||||
|
@ -1276,7 +1274,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
public void testGetDataType() throws CodeUnitInsertionException {
|
||||
DataType myTypedef = new TypedefDataType("myTypedef", ShortDataType.dataType);
|
||||
TraceData d4000;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), myTypedef, b.buf(1, 2));
|
||||
}
|
||||
myTypedef = b.trace.getDataTypeManager().getDataType("/myTypedef");
|
||||
|
@ -1299,7 +1297,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
myStruct.add(PointerDataType.dataType, 8, null, null); // Default field name by null
|
||||
|
||||
TraceData s4000;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
s4000 = b.addData(0, b.addr(0x4000), myStruct,
|
||||
b.buf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16));
|
||||
}
|
||||
|
@ -1377,7 +1375,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
|
||||
TraceData d4000;
|
||||
TraceData dR4;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), myStruct, b.buf(1, 2, 3, 4));
|
||||
|
||||
thread = b.getOrAddThread("Thread 1", 0);
|
||||
|
@ -1444,7 +1442,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
assertSame(myShort, d4000sB.getBaseDataType());
|
||||
|
||||
assertNull(d4000sB.getLong("myLong"));
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000sB.setLong("myLong", 0x1234);
|
||||
}
|
||||
assertEquals(0x1234, d4000sB.getLong("myLong").longValue());
|
||||
|
@ -1454,7 +1452,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
public void testGetDefaultSettings() throws CodeUnitInsertionException {
|
||||
assertNotNull(ByteDataType.dataType.getDefaultSettings());
|
||||
TraceData d4000;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), ByteDataType.dataType, b.buf(1));
|
||||
}
|
||||
DataType byteDataType = b.trace.getDataTypeManager().getDataType("/byte");
|
||||
|
@ -1464,7 +1462,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
@Test
|
||||
public void testSettingsGettersSetters() throws CodeUnitInsertionException {
|
||||
DataType myTypedef = new TypedefDataType("myTypedef", LongDataType.dataType);
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceData d4000 = b.addData(0, b.addr(0x4000), myTypedef, b.buf(1, 2, 3, 4));
|
||||
TraceData u3fff = manager.undefinedData().getAt(0, b.addr(0x3fff));
|
||||
myTypedef = b.trace.getDataTypeManager().getDataType("/myTypedef");
|
||||
|
@ -1556,7 +1554,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
@Test
|
||||
public void testGetNumOperands() throws CodeUnitInsertionException {
|
||||
TraceData d4000;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), LongDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
|
||||
|
@ -1566,7 +1564,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
@Test
|
||||
public void testIsDefined() throws CodeUnitInsertionException {
|
||||
TraceData d4000;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), LongDataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
TraceData u3fff = manager.undefinedData().getAt(0, b.addr(0x3fff));
|
||||
|
@ -1605,7 +1603,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
TraceData d400c;
|
||||
TraceData d401c;
|
||||
TraceData d4020;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
// StringDataType accesses memory via program view, so "block" must exist
|
||||
b.trace.getMemoryManager()
|
||||
.addRegion("myRegion", Lifespan.nowOn(0),
|
||||
|
@ -1731,7 +1729,7 @@ public class DBTraceCodeUnitTest extends AbstractGhidraHeadlessIntegrationTest
|
|||
myStruct.add(LongDataType.dataType, 4, "lC", null);
|
||||
|
||||
TraceData s4000;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
s4000 = b.addData(0, b.addr(0x4000), myStruct, b.buf(1, 2, 3, 4, 5, 6, 7, 8));
|
||||
}
|
||||
TraceData u3fff = manager.undefinedData().getAt(0, b.addr(0x3fff));
|
||||
|
|
|
@ -23,8 +23,7 @@ import java.util.function.Predicate;
|
|||
|
||||
import org.junit.*;
|
||||
|
||||
import db.DBHandle;
|
||||
import db.DBRecord;
|
||||
import db.*;
|
||||
import ghidra.program.model.address.*;
|
||||
import ghidra.program.model.lang.Language;
|
||||
import ghidra.program.model.lang.LanguageID;
|
||||
|
@ -145,7 +144,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest
|
|||
.getLanguage(new LanguageID("Toy:BE:64:default"));
|
||||
obj = new MyObject(this);
|
||||
factory = new DBCachedObjectStoreFactory(obj);
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(obj, "CreateTable")) {
|
||||
try (Transaction tx = obj.openTransaction("CreateTable")) {
|
||||
space = new DBTraceAddressSnapRangePropertyMapSpace<>("Entries", factory,
|
||||
obj.getReadWriteLock(), toy.getDefaultSpace(), null, 0, MyEntry.class,
|
||||
MyEntry::new);
|
||||
|
@ -164,7 +163,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest
|
|||
view = makeIntersectingView(tasr(0x0100, 0x2fff, 0, 0), s -> true);
|
||||
assertFalse(view.contains(addr(0x1800)));
|
||||
|
||||
try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x1000, 0x1fff, 0, 9), "A");
|
||||
}
|
||||
|
||||
|
@ -196,7 +195,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest
|
|||
view = makeIntersectingView(tasr(0x0100, 0x2fff, 0, 0), s -> true);
|
||||
assertFalse(view.contains(addr(0x1000), addr(0x1fff)));
|
||||
|
||||
try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x1000, 0x2fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x3fff, 1, 1), "B");
|
||||
}
|
||||
|
@ -233,7 +232,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest
|
|||
view = makeIntersectingView(tasr(0x0100, 0x2fff, 0, 0), s -> true);
|
||||
assertFalse(view.contains(set(rng(0x1000, 0x1fff))));
|
||||
|
||||
try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x1000, 0x2fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x3fff, 1, 1), "B");
|
||||
}
|
||||
|
@ -272,7 +271,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest
|
|||
assertEquals(0, view.getNumAddressRanges());
|
||||
assertEquals(0, view.getNumAddresses());
|
||||
|
||||
try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x1000, 0x1fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x2fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x2fff, 1, 1), "B");
|
||||
|
@ -308,7 +307,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest
|
|||
assertNull(view.getMinAddress());
|
||||
assertNull(view.getMaxAddress());
|
||||
|
||||
try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x1000, 0x2fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x3fff, 1, 1), "B");
|
||||
}
|
||||
|
@ -338,7 +337,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest
|
|||
view = makeIntersectingView(tasr(0x0100, 0x2fff, 0, 0), s -> true);
|
||||
assertEquals(List.of(), list(view.iterator()));
|
||||
|
||||
try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x1000, 0x1fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x2fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x2fff, 1, 1), "B");
|
||||
|
@ -377,7 +376,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest
|
|||
view = makeIntersectingView(tasr(0x0100, 0x2fff, 0, 0), s -> true);
|
||||
assertEquals(List.of(), list(view.getAddresses(true)));
|
||||
|
||||
try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(1, 5, 0, 0), "A");
|
||||
}
|
||||
|
||||
|
@ -397,7 +396,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest
|
|||
|
||||
@Test
|
||||
public void testIntersects() {
|
||||
try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x1000, 0x1fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x2fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x2fff, 1, 1), "B");
|
||||
|
@ -419,7 +418,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest
|
|||
|
||||
@Test
|
||||
public void testUnion() {
|
||||
try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x1000, 0x1fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x2fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x2fff, 1, 1), "B");
|
||||
|
@ -432,7 +431,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest
|
|||
|
||||
@Test
|
||||
public void testSubtract() {
|
||||
try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x1000, 0x1fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x2fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x2fff, 1, 1), "B");
|
||||
|
@ -446,7 +445,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest
|
|||
|
||||
@Test
|
||||
public void testXor() {
|
||||
try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x1000, 0x1fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x2fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x2fff, 1, 1), "B");
|
||||
|
@ -460,7 +459,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest
|
|||
|
||||
@Test
|
||||
public void testHasSameAddresses() {
|
||||
try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x1000, 0x1fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x2fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x2fff, 1, 1), "B");
|
||||
|
@ -476,7 +475,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest
|
|||
|
||||
@Test
|
||||
public void testGetFirstLastRanges() {
|
||||
try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x1000, 0x1fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x27ff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x2fff, 1, 1), "B");
|
||||
|
@ -490,7 +489,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest
|
|||
|
||||
@Test
|
||||
public void testGetRangeContaining() {
|
||||
try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x1000, 0x1fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x2fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x2fff, 1, 1), "B");
|
||||
|
@ -510,7 +509,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest
|
|||
|
||||
@Test
|
||||
public void testFindFirstAddressInCommon() {
|
||||
try (UndoableTransaction trans = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x1000, 0x1fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x2fff, 0, 0), "A");
|
||||
space.put(tasr(0x2000, 0x2fff, 1, 1), "B");
|
||||
|
|
|
@ -24,8 +24,7 @@ import java.util.Map.Entry;
|
|||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||
import org.junit.*;
|
||||
|
||||
import db.DBHandle;
|
||||
import db.DBRecord;
|
||||
import db.*;
|
||||
import ghidra.program.model.address.*;
|
||||
import ghidra.program.model.lang.Language;
|
||||
import ghidra.program.model.lang.LanguageID;
|
||||
|
@ -157,7 +156,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterableTest
|
|||
new LanguageID("Toy:BE:64:default"));
|
||||
obj = new MyObject(this);
|
||||
factory = new DBCachedObjectStoreFactory(obj);
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(obj, "CreateTable")) {
|
||||
try (Transaction tx = obj.openTransaction("CreateTable")) {
|
||||
space = new DBTraceAddressSnapRangePropertyMapSpace<>("Entries", factory,
|
||||
obj.getReadWriteLock(), toy.getDefaultSpace(), null, 0, MyEntry.class,
|
||||
MyEntry::new);
|
||||
|
@ -189,7 +188,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterableTest
|
|||
@Test
|
||||
public void testOutOfWindow() {
|
||||
DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterable<String> it;
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x1000, 0x1fff, 5, 10), "A");
|
||||
}
|
||||
|
||||
|
@ -209,7 +208,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterableTest
|
|||
@Test
|
||||
public void testSingleEntry() {
|
||||
DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterable<String> it;
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x1000, 0x1fff, 90, 95), "A");
|
||||
}
|
||||
|
||||
|
@ -233,7 +232,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterableTest
|
|||
@Test
|
||||
public void testEntriesAtExtremes() {
|
||||
DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterable<String> it;
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x0000, 0x0fff, 5, 10), "W");
|
||||
space.put(tasr(-0x1000, -0x0001, 5, 10), "E");
|
||||
space.put(tasr(0x1000, 0x1fff, Long.MIN_VALUE, Long.MIN_VALUE + 10), "S");
|
||||
|
@ -252,7 +251,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterableTest
|
|||
@Test
|
||||
public void testOcclusion() {
|
||||
DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterable<String> it;
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x1000, 0x1fff, 90, 95), "A");
|
||||
space.put(tasr(0x1800, 0x27ff, 89, 95), "B");
|
||||
|
||||
|
|
|
@ -24,8 +24,7 @@ import java.util.Map.Entry;
|
|||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||
import org.junit.*;
|
||||
|
||||
import db.DBHandle;
|
||||
import db.DBRecord;
|
||||
import db.*;
|
||||
import ghidra.program.model.address.*;
|
||||
import ghidra.program.model.lang.Language;
|
||||
import ghidra.program.model.lang.LanguageID;
|
||||
|
@ -157,7 +156,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterableTest
|
|||
new LanguageID("Toy:BE:64:default"));
|
||||
obj = new MyObject(this);
|
||||
factory = new DBCachedObjectStoreFactory(obj);
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(obj, "CreateTable")) {
|
||||
try (Transaction tid = obj.openTransaction("CreateTable")) {
|
||||
space = new DBTraceAddressSnapRangePropertyMapSpace<>("Entries", factory,
|
||||
obj.getReadWriteLock(), toy.getDefaultSpace(), null, 0, MyEntry.class,
|
||||
MyEntry::new);
|
||||
|
@ -189,7 +188,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterableTest
|
|||
@Test
|
||||
public void testOutOfWindow() {
|
||||
DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterable<String> it;
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tid = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x1000, 0x1fff, 5, 10), "A");
|
||||
}
|
||||
|
||||
|
@ -209,7 +208,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterableTest
|
|||
@Test
|
||||
public void testSingleEntry() {
|
||||
DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterable<String> it;
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tid = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x1000, 0x1fff, 5, 10), "A");
|
||||
}
|
||||
|
||||
|
@ -233,7 +232,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterableTest
|
|||
@Test
|
||||
public void testEntriesAtExtremes() {
|
||||
DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterable<String> it;
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tid = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x0000, 0x0fff, 5, 10), "W");
|
||||
space.put(tasr(-0x1000, -0x0001, 5, 10), "E");
|
||||
space.put(tasr(0x1000, 0x1fff, Long.MIN_VALUE, Long.MIN_VALUE + 10), "S");
|
||||
|
@ -252,7 +251,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterableTest
|
|||
@Test
|
||||
public void testOcclusion() {
|
||||
DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterable<String> it;
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create Entries")) {
|
||||
try (Transaction tid = obj.openTransaction("Create Entries")) {
|
||||
space.put(tasr(0x1000, 0x1fff, 5, 10), "A");
|
||||
space.put(tasr(0x1800, 0x27ff, 5, 11), "B");
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
package ghidra.trace.database.map;
|
||||
|
||||
import static ghidra.lifecycle.Unfinished.TODO;
|
||||
import static ghidra.lifecycle.Unfinished.*;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.io.File;
|
||||
|
@ -28,8 +28,7 @@ import java.util.Map.Entry;
|
|||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||
import org.junit.*;
|
||||
|
||||
import db.DBHandle;
|
||||
import db.DBRecord;
|
||||
import db.*;
|
||||
import ghidra.program.model.address.Address;
|
||||
import ghidra.program.model.lang.Language;
|
||||
import ghidra.program.model.lang.LanguageID;
|
||||
|
@ -80,7 +79,7 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest
|
|||
}
|
||||
|
||||
protected void loadSpaces() throws VersionException, IOException {
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(this, "Create Tables")) {
|
||||
try (Transaction tx = this.openTransaction("Create Tables")) {
|
||||
this.space1 = new DBTraceAddressSnapRangePropertyMapSpace<>("Entries1", factory,
|
||||
getReadWriteLock(), toy.getDefaultSpace(), null, 0, MyEntry.class,
|
||||
MyEntry::new);
|
||||
|
@ -239,7 +238,7 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest
|
|||
|
||||
@Test
|
||||
public void testDeleteValue() {
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create entries")) {
|
||||
MyEntry entry1 = obj.space1.put(at(0x1000, 5), null);
|
||||
MyEntry entry2 = obj.space2.put(at(0x1001, 5), null);
|
||||
String value3 = obj.space3.put(at(0x1002, 5), "Test");
|
||||
|
@ -271,7 +270,7 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest
|
|||
@Test
|
||||
@Ignore("TODO")
|
||||
public void testRemove() {
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create entries")) {
|
||||
obj.space1.put(at(0x1000, 5), null);
|
||||
obj.space2.put(at(0x1000, 5), null);
|
||||
assertEquals(1, obj.space1.size());
|
||||
|
@ -311,7 +310,7 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest
|
|||
public void testCollections() {
|
||||
MyEntry entry1;
|
||||
MyEntry entry2;
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create entries")) {
|
||||
entry1 = obj.space1.put(new ImmutableTraceAddressSnapRange(addr(0x1000), 5), null);
|
||||
entry2 = obj.space1.put(new ImmutableTraceAddressSnapRange(addr(0x1001), 6), null);
|
||||
}
|
||||
|
@ -332,7 +331,7 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest
|
|||
@Test
|
||||
public void testReduce() {
|
||||
MyEntry ent1;
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create entries")) {
|
||||
ent1 = obj.space1.put(at(0x1000, 5), null);
|
||||
}
|
||||
|
||||
|
@ -345,7 +344,7 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest
|
|||
@Test
|
||||
public void testFirsts() {
|
||||
MyEntry entry1;
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create entries")) {
|
||||
entry1 = obj.space1.put(new ImmutableTraceAddressSnapRange(addr(0x1000), 5), null);
|
||||
}
|
||||
|
||||
|
@ -356,7 +355,7 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest
|
|||
|
||||
@Test
|
||||
public void testClear() {
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create entries")) {
|
||||
MyEntry entry1 =
|
||||
obj.space1.put(new ImmutableTraceAddressSnapRange(addr(0x1000), 5), null);
|
||||
assertEquals(1, obj.space1.size());
|
||||
|
@ -372,7 +371,7 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest
|
|||
public void testGetDataByKey() {
|
||||
assertNull(obj.space1.getDataByKey(0));
|
||||
MyEntry entry1;
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create entries")) {
|
||||
entry1 = obj.space1.put(new ImmutableTraceAddressSnapRange(addr(0x1000), 5), null);
|
||||
}
|
||||
|
||||
|
@ -384,7 +383,7 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest
|
|||
@Ignore("TODO")
|
||||
public void testSaveAndLoad() throws IOException, CancelledException, VersionException {
|
||||
MyEntry entry1;
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create entries")) {
|
||||
entry1 = obj.space1.put(new ImmutableTraceAddressSnapRange(addr(0x1000), 5), null);
|
||||
}
|
||||
assertEquals(ent(0x1000, 5, entry1), obj.space1.firstEntry());
|
||||
|
@ -403,12 +402,12 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest
|
|||
@Ignore("Related to GP-479")
|
||||
public void testUndoThenRedo() throws IOException {
|
||||
MyEntry entry1;
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(obj, "Create entries")) {
|
||||
try (Transaction tx = obj.openTransaction("Create entries")) {
|
||||
entry1 = obj.space1.put(new ImmutableTraceAddressSnapRange(addr(0x1000), 5), null);
|
||||
}
|
||||
assertEquals(ent(0x1000, 5, entry1), obj.space1.firstEntry());
|
||||
|
||||
try (UndoableTransaction tid = UndoableTransaction.start(obj, "Clear")) {
|
||||
try (Transaction tx = obj.openTransaction("Clear")) {
|
||||
obj.space1.clear();
|
||||
}
|
||||
assertNull(obj.space1.firstEntry());
|
||||
|
|
|
@ -24,13 +24,13 @@ import java.util.*;
|
|||
|
||||
import org.junit.Test;
|
||||
|
||||
import db.Transaction;
|
||||
import db.DBHandle;
|
||||
import ghidra.program.model.address.*;
|
||||
import ghidra.trace.database.DBTrace;
|
||||
import ghidra.trace.model.TraceAddressSnapRange;
|
||||
import ghidra.trace.model.memory.TraceMemoryState;
|
||||
import ghidra.util.database.DBOpenMode;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
import ghidra.util.task.ConsoleTaskMonitor;
|
||||
import ghidra.util.task.TaskMonitor;
|
||||
|
||||
|
@ -39,7 +39,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testSetState() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
memory.setState(0, b.addr(0x4000), b.addr(0x5000), TraceMemoryState.KNOWN);
|
||||
|
||||
// +1 Overflow
|
||||
|
@ -80,7 +80,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
public void testSetGetStateOneByte() {
|
||||
assertEquals(null, memory.getState(3, b.addr(0x4000)));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
memory.setState(3, b.addr(0x4000), TraceMemoryState.KNOWN);
|
||||
}
|
||||
|
||||
|
@ -90,7 +90,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
assertEquals(TraceMemoryState.UNKNOWN, memory.getState(2, b.addr(0x4000)));
|
||||
assertEquals(TraceMemoryState.UNKNOWN, memory.getState(4, b.addr(0x4000)));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
memory.setState(3, b.addr(0x4000), TraceMemoryState.ERROR);
|
||||
}
|
||||
|
||||
|
@ -103,7 +103,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testSetRangeGetState() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
memory.setState(3, b.addr(0x4000), b.addr(0x5000), TraceMemoryState.KNOWN);
|
||||
}
|
||||
|
||||
|
@ -118,7 +118,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testGetMostRecentStateSingleRange() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
memory.setState(3, b.addr(0x4000), b.addr(0x5000), TraceMemoryState.KNOWN);
|
||||
}
|
||||
|
||||
|
@ -147,7 +147,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testGetMostRecentStateSameSnap() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
memory.setState(3, b.addr(0x4000), b.addr(0x5000), TraceMemoryState.KNOWN);
|
||||
memory.setState(3, b.addr(0x4020), b.addr(0x4080), TraceMemoryState.ERROR);
|
||||
}
|
||||
|
@ -197,7 +197,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testGetMostRecentStateLaterBefore() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
memory.setState(3, b.addr(0x4000), b.addr(0x5000), TraceMemoryState.KNOWN);
|
||||
memory.setState(4, b.addr(0x3000), b.addr(0x3500), TraceMemoryState.ERROR);
|
||||
}
|
||||
|
@ -255,7 +255,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testGetMostRecentStateLaterOverStart() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
memory.setState(3, b.addr(0x4000), b.addr(0x5000), TraceMemoryState.KNOWN);
|
||||
memory.setState(4, b.addr(0x3000), b.addr(0x4500), TraceMemoryState.ERROR);
|
||||
}
|
||||
|
@ -319,7 +319,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testGetMostRecentStates() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
memory.setState(3, b.addr(0x4000), b.addr(0x7000), TraceMemoryState.KNOWN);
|
||||
memory.setState(3, b.addr(0x5000), b.addr(0x6000), TraceMemoryState.ERROR);
|
||||
memory.setState(4, b.addr(0x3000), b.addr(0x4800), TraceMemoryState.KNOWN);
|
||||
|
@ -351,7 +351,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testGetAddressesWithState() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
memory.setState(3, b.addr(0x4000), b.addr(0x7000), TraceMemoryState.KNOWN);
|
||||
memory.setState(3, b.addr(0x5000), b.addr(0x6000), TraceMemoryState.ERROR);
|
||||
memory.setState(4, b.addr(0x3000), b.addr(0x4800), TraceMemoryState.KNOWN);
|
||||
|
@ -390,7 +390,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testGetStates() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
memory.setState(3, b.addr(0x4000), b.addr(0x7000), TraceMemoryState.KNOWN);
|
||||
memory.setState(3, b.addr(0x5000), b.addr(0x6000), TraceMemoryState.ERROR);
|
||||
}
|
||||
|
@ -406,7 +406,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testBytes0Length() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertEquals(0, memory.putBytes(3, b.addr(0x4000), b.buf()));
|
||||
assertEquals(0, getBlockRecordCount());
|
||||
assertEquals(0, getBufferRecordCount());
|
||||
|
@ -423,7 +423,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testBytesSimple4Zeros() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(0, 0, 0, 0)));
|
||||
assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(0, 0, 0, 0))); // Should have no effect
|
||||
assertEquals(1, getBlockRecordCount());
|
||||
|
@ -444,7 +444,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testBytesSimple4Bytes() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(1, 2, 3, 4)));
|
||||
assertEquals(1, getBlockRecordCount());
|
||||
assertEquals(1, getBufferRecordCount());
|
||||
|
@ -465,7 +465,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testBytesSpan4Bytes() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertEquals(4, memory.putBytes(3, b.addr(0x3ffe), b.buf(1, 2, 3, 4)));
|
||||
assertEquals(2, getBlockRecordCount());
|
||||
assertEquals(2, getBufferRecordCount());
|
||||
|
@ -478,7 +478,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testBytesSpan12BytesInChunks() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertEquals(4, memory.putBytes(3, b.addr(0x3ffa), b.buf(1, 2, 3, 4)));
|
||||
assertEquals(1, getBlockRecordCount());
|
||||
assertEquals(4, memory.putBytes(3, b.addr(0x3ffe), b.buf(5, 6, 7, 8)));
|
||||
|
@ -495,7 +495,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testBytesOverflow() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
ByteBuffer write = b.buf(1, 2, 3, 4);
|
||||
assertEquals(2, memory.putBytes(3, b.addr(0xfffffffffffffffeL), write));
|
||||
assertEquals(2, write.remaining());
|
||||
|
@ -511,7 +511,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testBytesWriteSameLater() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(1, 2, 3, 4)));
|
||||
assertEquals(1, getBlockRecordCount());
|
||||
assertEquals(1, getBufferRecordCount());
|
||||
|
@ -543,7 +543,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testBytesArrayOffset() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
byte[] array = new byte[20];
|
||||
array[9] = -1;
|
||||
array[10] = 1;
|
||||
|
@ -564,7 +564,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testGetBytesMostRecent() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(1, 2, 3, 4)));
|
||||
assertEquals(4, memory.putBytes(4, b.addr(0x4002), b.buf(5, 6, 7, 8)));
|
||||
assertEquals(1, memory.putBytes(5, b.addr(0x4003), b.buf(0)));
|
||||
|
@ -595,7 +595,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testPutBytesIntoPastGetBytesMostRecent() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertEquals(4, memory.putBytes(4, b.addr(0x4800), b.buf(5, 6, 7, 8)));
|
||||
assertEquals(4, memory.putBytes(3, b.addr(0x4802), b.buf(1, 2, 3, 4)));
|
||||
assertEquals(10,
|
||||
|
@ -627,7 +627,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testGetBytesCrossScratch() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertEquals(4, memory.putBytes(Long.MIN_VALUE, b.addr(0x4000), b.buf(1, 2, 3, 4)));
|
||||
}
|
||||
|
||||
|
@ -642,7 +642,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testPutBytesPackGetBytes() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(1, 2, 3, 4)));
|
||||
memory.pack();
|
||||
assertEquals(1, getBlockRecordCount());
|
||||
|
@ -660,7 +660,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testPutBytesPackPutBytes() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(1, 2, 3, 4)));
|
||||
memory.pack();
|
||||
assertEquals(1, getBlockRecordCount());
|
||||
|
@ -678,7 +678,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testFindBytes() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertEquals(5, memory.putBytes(3, b.addr(0x4000), b.buf(1, 2, 3, 4, 5)));
|
||||
}
|
||||
|
||||
|
@ -743,7 +743,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testRemoveBytes() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertEquals(10,
|
||||
memory.putBytes(2, b.addr(0x47fe), b.buf(9, 10, 11, 12, 13, 14, 15, 16, 17, 18)));
|
||||
assertEquals(4, memory.putBytes(4, b.addr(0x4800), b.buf(5, 6, 7, 8)));
|
||||
|
@ -798,7 +798,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testSaveAndLoad() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(1, 2, 3, 4)));
|
||||
assertEquals(1, getBlockRecordCount());
|
||||
assertEquals(1, getBufferRecordCount());
|
||||
|
@ -836,7 +836,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testAddButAbortedStillEmpty() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(1, 2, 3, 4)));
|
||||
assertEquals(1, getBlockRecordCount());
|
||||
assertEquals(1, getBufferRecordCount());
|
||||
|
@ -847,7 +847,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
expected.put(b.srange(3, 0x4000, 0x4003), TraceMemoryState.KNOWN);
|
||||
assertEquals(expected, collectAsMap(memory.getStates(3, b.range(0x3000, 0x5000))));
|
||||
|
||||
tid.abort();
|
||||
tx.abort();
|
||||
}
|
||||
assertEquals(0, getBlockRecordCount());
|
||||
assertEquals(0, getBufferRecordCount());
|
||||
|
@ -864,7 +864,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testAddThenUndo() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(1, 2, 3, 4)));
|
||||
assertEquals(1, getBlockRecordCount());
|
||||
assertEquals(1, getBufferRecordCount());
|
||||
|
@ -892,7 +892,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testAddThenUndoThenRedo() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
assertEquals(4, memory.putBytes(3, b.addr(0x4000), b.buf(1, 2, 3, 4)));
|
||||
assertEquals(1, getBlockRecordCount());
|
||||
assertEquals(1, getBufferRecordCount());
|
||||
|
@ -939,7 +939,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
* situation by writing to the same b.address at more than 127 different snaps.
|
||||
*/
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
for (int i = 0; i < 300; i++) {
|
||||
memory.putBytes(i, b.addr(0x4000), b.buf(1, 2, 3, i % 256));
|
||||
}
|
||||
|
@ -954,7 +954,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest
|
|||
|
||||
@Test
|
||||
public void testOverlaySpaces() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
AddressSpace os = memory.createOverlayAddressSpace("test",
|
||||
b.trace.getBaseAddressFactory().getDefaultAddressSpace());
|
||||
DBTraceMemorySpace space = memory.getMemorySpace(os, true);
|
||||
|
|
|
@ -15,14 +15,14 @@
|
|||
*/
|
||||
package ghidra.trace.database.memory;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Set;
|
||||
|
||||
import org.junit.*;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.program.model.lang.LanguageID;
|
||||
import ghidra.test.AbstractGhidraHeadlessIntegrationTest;
|
||||
import ghidra.trace.database.ToyDBTraceBuilder;
|
||||
|
@ -30,7 +30,6 @@ import ghidra.trace.model.Lifespan;
|
|||
import ghidra.trace.model.memory.TraceMemoryFlag;
|
||||
import ghidra.trace.model.memory.TraceMemoryRegion;
|
||||
import ghidra.trace.util.LanguageTestWatcher;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
|
||||
public abstract class AbstractDBTraceMemoryManagerRegionsTest
|
||||
extends AbstractGhidraHeadlessIntegrationTest {
|
||||
|
@ -46,7 +45,7 @@ public abstract class AbstractDBTraceMemoryManagerRegionsTest
|
|||
@Before
|
||||
public void setUp() throws IOException {
|
||||
b = new ToyDBTraceBuilder("Testing", testLanguage.getLanguage());
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getTimeManager().createSnapshot("Initialize");
|
||||
}
|
||||
memory = b.trace.getMemoryManager();
|
||||
|
@ -59,7 +58,7 @@ public abstract class AbstractDBTraceMemoryManagerRegionsTest
|
|||
|
||||
@Test
|
||||
public void testAddRegion() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
memory.addRegion("Regions[0x1000]", Lifespan.nowOn(0), b.range(0x1000, 0x1fff),
|
||||
Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE));
|
||||
}
|
||||
|
@ -70,7 +69,7 @@ public abstract class AbstractDBTraceMemoryManagerRegionsTest
|
|||
assertEquals(Set.of(), Set.copyOf(memory.getAllRegions()));
|
||||
|
||||
TraceMemoryRegion region;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
region = memory.addRegion("Regions[0x1000]", Lifespan.nowOn(0), b.range(0x1000, 0x1fff),
|
||||
Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE));
|
||||
}
|
||||
|
@ -83,7 +82,7 @@ public abstract class AbstractDBTraceMemoryManagerRegionsTest
|
|||
assertNull(memory.getLiveRegionByPath(0, "Regions[0x1000]"));
|
||||
|
||||
TraceMemoryRegion region;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
region = memory.addRegion("Regions[0x1000]", Lifespan.nowOn(0), b.range(0x1000, 0x1fff),
|
||||
Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE));
|
||||
}
|
||||
|
@ -98,7 +97,7 @@ public abstract class AbstractDBTraceMemoryManagerRegionsTest
|
|||
assertNull(memory.getRegionContaining(0, b.addr(0x1000)));
|
||||
|
||||
TraceMemoryRegion region;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
region = memory.addRegion("Regions[0x1000]", Lifespan.nowOn(0), b.range(0x1000, 0x1fff),
|
||||
Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE));
|
||||
}
|
||||
|
@ -116,7 +115,7 @@ public abstract class AbstractDBTraceMemoryManagerRegionsTest
|
|||
memory.getRegionsIntersecting(Lifespan.span(0, 10), b.range(0x1800, 0x27ff))));
|
||||
|
||||
TraceMemoryRegion region;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
region = memory.addRegion("Regions[0x1000]", Lifespan.nowOn(0), b.range(0x1000, 0x1fff),
|
||||
Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE));
|
||||
}
|
||||
|
@ -134,7 +133,7 @@ public abstract class AbstractDBTraceMemoryManagerRegionsTest
|
|||
assertEquals(Set.of(), Set.copyOf(memory.getRegionsAtSnap(0)));
|
||||
|
||||
TraceMemoryRegion region;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
region = memory.addRegion("Regions[0x1000]", Lifespan.nowOn(0), b.range(0x1000, 0x1fff),
|
||||
Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE));
|
||||
}
|
||||
|
@ -147,7 +146,7 @@ public abstract class AbstractDBTraceMemoryManagerRegionsTest
|
|||
public void testGetRegionsAddressSet() throws Exception {
|
||||
assertEquals(b.set(), memory.getRegionsAddressSet(0));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
memory.addRegion("Regions[0x1000]", Lifespan.nowOn(0), b.range(0x1000, 0x1fff),
|
||||
Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE));
|
||||
}
|
||||
|
@ -160,7 +159,7 @@ public abstract class AbstractDBTraceMemoryManagerRegionsTest
|
|||
public void testGetRegionsAddressSetWith() throws Exception {
|
||||
assertEquals(b.set(), memory.getRegionsAddressSetWith(0, r -> true));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
memory.addRegion("Regions[0x1000]", Lifespan.nowOn(0), b.range(0x1000, 0x1fff),
|
||||
Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE));
|
||||
}
|
||||
|
|
|
@ -21,13 +21,13 @@ import java.math.BigInteger;
|
|||
|
||||
import org.junit.Test;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.program.model.lang.*;
|
||||
import ghidra.trace.model.guest.TraceGuestPlatform;
|
||||
import ghidra.trace.model.guest.TracePlatform;
|
||||
import ghidra.trace.model.memory.TraceMemoryState;
|
||||
import ghidra.trace.model.stack.TraceStack;
|
||||
import ghidra.trace.model.thread.TraceThread;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
|
||||
public abstract class AbstractDBTraceMemoryManagerRegistersTest
|
||||
extends AbstractDBTraceMemoryManagerTest {
|
||||
|
@ -45,7 +45,7 @@ public abstract class AbstractDBTraceMemoryManagerRegistersTest
|
|||
Register r0l = b.language.getRegister("r0l");
|
||||
|
||||
TraceThread thread;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = getOrAddThread("Threads[1]", 0);
|
||||
DBTraceMemorySpace regs = memory.getMemoryRegisterSpace(thread, true);
|
||||
|
||||
|
@ -96,7 +96,7 @@ public abstract class AbstractDBTraceMemoryManagerRegistersTest
|
|||
Register counter = language.getRegister("counter");
|
||||
|
||||
TraceThread thread;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = getOrAddThread("Threads[1]", 0);
|
||||
waitForSwing();
|
||||
DBTraceMemorySpace regs = memory.getMemoryRegisterSpace(thread, true);
|
||||
|
@ -137,7 +137,7 @@ public abstract class AbstractDBTraceMemoryManagerRegistersTest
|
|||
public void testManyStateEntries() throws Exception {
|
||||
Register pc = b.language.getRegister("pc");
|
||||
TraceThread thread;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = getOrAddThread("Threads[1]", 0);
|
||||
DBTraceMemorySpace regs = memory.getMemoryRegisterSpace(thread, true);
|
||||
|
||||
|
@ -152,7 +152,7 @@ public abstract class AbstractDBTraceMemoryManagerRegistersTest
|
|||
protected void runTestGuestMappingRegisterBits(LanguageID langID, CompilerSpecID cSpecID)
|
||||
throws Throwable {
|
||||
TraceGuestPlatform guest;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
guest = b.trace.getPlatformManager()
|
||||
.addGuestPlatform(
|
||||
getLanguageService().getLanguage(langID).getCompilerSpecByID(cSpecID));
|
||||
|
|
|
@ -24,6 +24,7 @@ import java.util.Map.Entry;
|
|||
|
||||
import org.junit.*;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.program.model.lang.LanguageID;
|
||||
import ghidra.test.AbstractGhidraHeadlessIntegrationTest;
|
||||
import ghidra.trace.database.ToyDBTraceBuilder;
|
||||
|
@ -31,7 +32,6 @@ import ghidra.trace.model.TraceAddressSnapRange;
|
|||
import ghidra.trace.model.memory.TraceMemoryState;
|
||||
import ghidra.trace.util.LanguageTestWatcher;
|
||||
import ghidra.util.database.DBCachedObjectStore;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
|
||||
public abstract class AbstractDBTraceMemoryManagerTest
|
||||
extends AbstractGhidraHeadlessIntegrationTest {
|
||||
|
@ -47,7 +47,7 @@ public abstract class AbstractDBTraceMemoryManagerTest
|
|||
@Before
|
||||
public void setUp() throws IOException {
|
||||
b = new ToyDBTraceBuilder("Testing", testLanguage.getLanguage());
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getTimeManager().createSnapshot("Initialize");
|
||||
}
|
||||
memory = b.trace.getMemoryManager();
|
||||
|
|
|
@ -17,10 +17,10 @@ package ghidra.trace.database.memory;
|
|||
|
||||
import org.junit.Before;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.dbg.target.schema.SchemaContext;
|
||||
import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName;
|
||||
import ghidra.dbg.target.schema.XmlSchemaContext;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
|
||||
public class DBTraceMemoryManagerObjectRegionsTest extends DBTraceMemoryManagerRegionsTest {
|
||||
|
||||
|
@ -43,7 +43,7 @@ public class DBTraceMemoryManagerObjectRegionsTest extends DBTraceMemoryManagerR
|
|||
</context>
|
||||
""");
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getObjectManager().createRootObject(ctx.getSchema(new SchemaName("Session")));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ package ghidra.trace.database.memory;
|
|||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.dbg.target.schema.SchemaContext;
|
||||
import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName;
|
||||
import ghidra.dbg.target.schema.XmlSchemaContext;
|
||||
|
@ -29,7 +30,6 @@ import ghidra.trace.model.target.TraceObject.ConflictResolution;
|
|||
import ghidra.trace.model.thread.TraceObjectThread;
|
||||
import ghidra.trace.model.thread.TraceThread;
|
||||
import ghidra.trace.util.LanguageTestWatcher.TestLanguage;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
|
||||
public class DBTraceMemoryManagerObjectRegistersPerFrameBETest
|
||||
extends AbstractDBTraceMemoryManagerRegistersTest {
|
||||
|
@ -77,7 +77,7 @@ public class DBTraceMemoryManagerObjectRegistersPerFrameBETest
|
|||
</context>
|
||||
""");
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getObjectManager().createRootObject(ctx.getSchema(new SchemaName("Session")));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ package ghidra.trace.database.memory;
|
|||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.dbg.target.schema.SchemaContext;
|
||||
import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName;
|
||||
import ghidra.dbg.target.schema.XmlSchemaContext;
|
||||
|
@ -28,7 +29,6 @@ import ghidra.trace.model.target.TraceObject.ConflictResolution;
|
|||
import ghidra.trace.model.thread.TraceObjectThread;
|
||||
import ghidra.trace.model.thread.TraceThread;
|
||||
import ghidra.trace.util.LanguageTestWatcher.TestLanguage;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
|
||||
public class DBTraceMemoryManagerObjectRegistersPerThreadLETest
|
||||
extends AbstractDBTraceMemoryManagerRegistersTest {
|
||||
|
@ -79,7 +79,7 @@ public class DBTraceMemoryManagerObjectRegistersPerThreadLETest
|
|||
</context>
|
||||
""");
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getObjectManager().createRootObject(ctx.getSchema(new SchemaName("Session")));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,10 +17,10 @@ package ghidra.trace.database.module;
|
|||
|
||||
import org.junit.Before;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.dbg.target.schema.SchemaContext;
|
||||
import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName;
|
||||
import ghidra.dbg.target.schema.XmlSchemaContext;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
|
||||
public class DBTraceModuleManagerObjectTest extends DBTraceModuleManagerTest {
|
||||
|
||||
|
@ -50,7 +50,7 @@ public class DBTraceModuleManagerObjectTest extends DBTraceModuleManagerTest {
|
|||
" </schema>" + //
|
||||
"</context>");
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getObjectManager().createRootObject(ctx.getSchema(new SchemaName("Session")));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,12 +22,12 @@ import java.util.*;
|
|||
|
||||
import org.junit.*;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.test.AbstractGhidraHeadlessIntegrationTest;
|
||||
import ghidra.trace.database.ToyDBTraceBuilder;
|
||||
import ghidra.trace.model.Lifespan;
|
||||
import ghidra.trace.model.modules.TraceModule;
|
||||
import ghidra.trace.model.modules.TraceSection;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
|
||||
public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationTest {
|
||||
|
||||
|
@ -47,7 +47,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testAddModule() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
moduleManager.addModule("Modules[first]", "first",
|
||||
b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10));
|
||||
moduleManager.addLoadedModule("Modules[second]", "second",
|
||||
|
@ -57,7 +57,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testAddSections() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceModule mod1 = moduleManager.addModule("Modules[first]", "first",
|
||||
b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10));
|
||||
mod1.addSection("Modules[first].Sections[.text]", b.range(0x00401000, 0x00401f9f));
|
||||
|
@ -74,7 +74,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
TraceModule mod1;
|
||||
TraceModule mod2;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
mod1 = moduleManager.addModule("Modules[first]", "first",
|
||||
b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10));
|
||||
mod1.addSection("Modules[first].Sections[.text]", b.range(0x00401000, 0x00401f9f));
|
||||
|
@ -93,7 +93,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
TraceModule mod1;
|
||||
TraceModule mod2;
|
||||
TraceModule mod3;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
mod1 = moduleManager.addModule("Modules[first]", "first",
|
||||
b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10));
|
||||
mod1.addSection("Modules[first].Sections[.text]", b.range(0x00401000, 0x00401f9f));
|
||||
|
@ -112,7 +112,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
@Test
|
||||
public void testModuleGetTrace() throws Exception {
|
||||
TraceModule mod1;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
mod1 = moduleManager.addModule("Modules[first]", "first",
|
||||
b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10));
|
||||
}
|
||||
|
@ -122,7 +122,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
@Test
|
||||
public void testModuleSetGetName() throws Exception {
|
||||
TraceModule mod1;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
mod1 = moduleManager.addModule("Modules[first]", "first",
|
||||
b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10));
|
||||
assertEquals("first", mod1.getName());
|
||||
|
@ -136,7 +136,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
public void testModuleSetGetBase() throws Exception {
|
||||
// TODO: Should adjusting the base shift the sections?
|
||||
TraceModule mod1;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
mod1 = moduleManager.addModule("Modules[first]", "first",
|
||||
b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10));
|
||||
assertEquals(b.addr(0x00400000), mod1.getBase());
|
||||
|
@ -149,7 +149,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
@Test
|
||||
public void testModuleSetGetLifespan() throws Exception {
|
||||
TraceModule mod1;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
mod1 = moduleManager.addModule("Modules[first]", "first",
|
||||
b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10));
|
||||
assertEquals(Lifespan.span(0, 10), mod1.getLifespan());
|
||||
|
@ -176,7 +176,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
TraceSection s1data;
|
||||
TraceSection s2text;
|
||||
TraceSection s2data;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
mod1 = moduleManager.addModule("Modules[first]", "first",
|
||||
b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10));
|
||||
s1text =
|
||||
|
@ -203,7 +203,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
TraceSection s1data;
|
||||
TraceSection s2text;
|
||||
TraceSection s2data;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
mod1 = moduleManager.addModule("Modules[first]", "first",
|
||||
b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10));
|
||||
s1text = mod1.addSection("Modules[first].Sections[.text]", ".text",
|
||||
|
@ -228,7 +228,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
public void testModuleDelete() throws Exception {
|
||||
TraceModule mod1;
|
||||
TraceModule mod2;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
mod1 = moduleManager.addModule("Modules[first]", "first",
|
||||
b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10));
|
||||
mod1.addSection("Modules[first].Sections[.text]", b.range(0x00401000, 0x00401f9f));
|
||||
|
@ -238,7 +238,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
b.range(0x7f400000, 0x7f60002f), Lifespan.span(0, 10));
|
||||
}
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
mod1.delete();
|
||||
}
|
||||
|
||||
|
@ -249,7 +249,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
public void testSectionGetModule() throws Exception {
|
||||
TraceModule mod1;
|
||||
TraceSection s1text;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
mod1 = moduleManager.addModule("Modules[first]", "first",
|
||||
b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10));
|
||||
s1text =
|
||||
|
@ -263,7 +263,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
public void testSectionSetGetName() throws Exception {
|
||||
TraceModule mod1;
|
||||
TraceSection s1text;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
mod1 = moduleManager.addModule("Modules[first]", "first",
|
||||
b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10));
|
||||
s1text = mod1.addSection("Modules[first].Sections[.text]", ".text",
|
||||
|
@ -279,7 +279,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
public void testSectionGetRange() throws Exception {
|
||||
TraceModule mod1;
|
||||
TraceSection s1text;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
mod1 = moduleManager.addModule("Modules[first]", "first",
|
||||
b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10));
|
||||
s1text = mod1.addSection("Modules[first].Sections[.text]", ".text",
|
||||
|
@ -301,7 +301,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
public void testSaveThenLoad() throws Exception {
|
||||
TraceModule mod1;
|
||||
TraceModule mod2;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
mod1 = moduleManager.addModule("Modules[first]", "first",
|
||||
b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10));
|
||||
mod1.addSection("Modules[first].Sections[.text]", ".text",
|
||||
|
@ -334,14 +334,14 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
@Test
|
||||
public void testUndoIdentitiesPreserved() throws Exception {
|
||||
TraceModule mod1;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
mod1 = moduleManager.addModule("Modules[first]", "first",
|
||||
b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10));
|
||||
mod1.addSection("Modules[first].Sections[.text]", b.range(0x00401000, 0x00401f9f));
|
||||
mod1.addSection("Modules[first].Sections[.data]", b.range(0x00600000, 0x0060002f));
|
||||
}
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
moduleManager.addModule("Modules[second]", "second",
|
||||
b.range(0x7f400000, 0x7f60002f), Lifespan.span(1, 11));
|
||||
}
|
||||
|
@ -356,7 +356,7 @@ public class DBTraceModuleManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
public void testUndoThenRedo() throws Exception {
|
||||
TraceModule mod1;
|
||||
TraceModule mod2;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
mod1 = moduleManager.addModule("Modules[first]", "first",
|
||||
b.range(0x00400000, 0x0060002f), Lifespan.span(0, 10));
|
||||
mod1.addSection("Modules[first].Sections[.text]", ".text",
|
||||
|
|
|
@ -24,12 +24,12 @@ import java.util.Collection;
|
|||
|
||||
import org.junit.*;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.test.AbstractGhidraHeadlessIntegrationTest;
|
||||
import ghidra.trace.database.ToyDBTraceBuilder;
|
||||
import ghidra.trace.model.Lifespan;
|
||||
import ghidra.trace.model.modules.TraceConflictedMappingException;
|
||||
import ghidra.trace.model.modules.TraceStaticMapping;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
|
||||
public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessIntegrationTest {
|
||||
|
||||
|
@ -49,7 +49,7 @@ public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessInteg
|
|||
|
||||
@Test
|
||||
public void testAddAndGet() throws Exception {
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
staticMappingManager.add(tb.range(0xdeadbeef, 0xdeadbeef + 99), Lifespan.span(2, 5),
|
||||
new URL("ghidra://static"), "DEADBEEF");
|
||||
}
|
||||
|
@ -74,7 +74,7 @@ public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessInteg
|
|||
|
||||
@Test
|
||||
public void testAddAndEnumerate() throws Exception {
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
staticMappingManager.add(tb.range(0xdeadbeef, 0xdeadbeef + 99),
|
||||
Lifespan.span(2, 4),
|
||||
new URL("ghidra://static"), "DEADBEEF");
|
||||
|
@ -86,7 +86,7 @@ public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessInteg
|
|||
|
||||
@Test
|
||||
public void testAddRemoveAndEnumerate() throws Exception {
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
staticMappingManager.add(tb.range(0xdeadbeef, 0xdeadbeef + 99),
|
||||
Lifespan.span(2, 4),
|
||||
new URL("ghidra://static"), "DEADBEEF");
|
||||
|
@ -106,7 +106,7 @@ public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessInteg
|
|||
|
||||
@Test
|
||||
public void testOverlapCausesException() throws Exception {
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
staticMappingManager.add(tb.range(0xdeadbeef, 0xdeadbeef + 99),
|
||||
Lifespan.span(2, 4),
|
||||
new URL("ghidra://static"), "DEADBEEF");
|
||||
|
@ -121,7 +121,7 @@ public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessInteg
|
|||
|
||||
@Test
|
||||
public void testOverlapAgreeingAccepted() throws Exception {
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
staticMappingManager.add(tb.range(0xdeadbeef, 0xdeadbeef + 99),
|
||||
Lifespan.span(2, 4),
|
||||
new URL("ghidra://static"), "DEADBEEF");
|
||||
|
@ -132,7 +132,7 @@ public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessInteg
|
|||
|
||||
@Test
|
||||
public void testTouchingProceedingIsNotOverlapping() throws Exception {
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
staticMappingManager.add(tb.range(0xdeadbeef, 0xdeadbeef + 99),
|
||||
Lifespan.span(2, 4),
|
||||
new URL("ghidra://static"), "DEADBEEF");
|
||||
|
@ -144,7 +144,7 @@ public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessInteg
|
|||
@SuppressWarnings("hiding")
|
||||
@Test
|
||||
public void testSaveAndLoad() throws Exception {
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
staticMappingManager.add(tb.range(0xdeadbeef, 0xdeadbeef + 99), Lifespan.span(2, 5),
|
||||
new URL("ghidra://static"), "DEADBEEF");
|
||||
}
|
||||
|
@ -165,11 +165,11 @@ public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessInteg
|
|||
|
||||
@Test
|
||||
public void testAddButAbortedStillEmpty() throws Exception {
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
staticMappingManager.add(tb.range(0xdeadbeef, 0xdeadbeef + 99),
|
||||
Lifespan.span(2, 4),
|
||||
new URL("ghidra://static"), "DEADBEEF");
|
||||
tid.abort();
|
||||
tx.abort();
|
||||
}
|
||||
|
||||
assertEquals(0, staticMappingManager.getAllEntries().size());
|
||||
|
@ -177,7 +177,7 @@ public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessInteg
|
|||
|
||||
@Test
|
||||
public void testAddThenUndo() throws Exception {
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
staticMappingManager.add(tb.range(0xdeadbeef, 0xdeadbeef + 99),
|
||||
Lifespan.span(2, 4),
|
||||
new URL("ghidra://static"), "DEADBEEF");
|
||||
|
@ -189,13 +189,13 @@ public class DBTraceStaticMappingManagerTest extends AbstractGhidraHeadlessInteg
|
|||
|
||||
@Test
|
||||
public void testAddThenRemoveThenUndo() throws Exception {
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
staticMappingManager.add(tb.range(0xdeadbeef, 0xdeadbeef + 99),
|
||||
Lifespan.span(2, 4),
|
||||
new URL("ghidra://static"), "DEADBEEF");
|
||||
}
|
||||
assertEquals(1, staticMappingManager.getAllEntries().size());
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
for (TraceStaticMapping m : staticMappingManager.getAllEntries()) {
|
||||
m.delete();
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
package ghidra.trace.database.program;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
@ -27,6 +27,7 @@ import java.util.stream.StreamSupport;
|
|||
|
||||
import org.junit.*;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.app.cmd.disassemble.*;
|
||||
import ghidra.app.plugin.assembler.*;
|
||||
import ghidra.program.database.ProgramBuilder;
|
||||
|
@ -47,7 +48,6 @@ import ghidra.trace.model.memory.TraceMemoryFlag;
|
|||
import ghidra.trace.model.memory.TraceOverlappedRegionException;
|
||||
import ghidra.trace.util.LanguageTestWatcher;
|
||||
import ghidra.trace.util.LanguageTestWatcher.TestLanguage;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
import ghidra.util.exception.*;
|
||||
import ghidra.util.task.ConsoleTaskMonitor;
|
||||
import ghidra.util.task.TaskMonitor;
|
||||
|
@ -62,7 +62,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn
|
|||
@Before
|
||||
public void setUp() throws IOException {
|
||||
b = new ToyDBTraceBuilder("Testing", testLanguage.getLanguage());
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getTimeManager().createSnapshot("Initialize");
|
||||
}
|
||||
view = b.trace.getProgramView();
|
||||
|
@ -76,7 +76,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn
|
|||
@Test
|
||||
public void testSingleInstruction() throws IOException, CancelledException, VersionException,
|
||||
DuplicateNameException, TraceOverlappedRegionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceMemoryManager memoryManager = b.trace.getMemoryManager();
|
||||
memoryManager.createRegion("Region", 0, b.range(0x4000, 0x4fff),
|
||||
TraceMemoryFlag.EXECUTE, TraceMemoryFlag.READ);
|
||||
|
@ -107,7 +107,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn
|
|||
Language x86 = getSLEIGH_X86_LANGUAGE();
|
||||
Disassembler dis = Disassembler.getDisassembler(x86, x86.getAddressFactory(),
|
||||
new ConsoleTaskMonitor(), msg -> System.out.println("Listener: " + msg));
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceMemorySpace space =
|
||||
b.trace.getMemoryManager().getMemorySpace(b.language.getDefaultSpace(), true);
|
||||
space.putBytes(0, b.addr(0x4000), b.buf(0x90));
|
||||
|
@ -145,8 +145,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn
|
|||
@Test
|
||||
public void testThumbSampleProgramDB() throws Exception {
|
||||
ProgramBuilder b = new ProgramBuilder(getName(), ProgramBuilder._ARM);
|
||||
try (UndoableTransaction tid =
|
||||
UndoableTransaction.start(b.getProgram(), "Disassemble (THUMB)")) {
|
||||
try (Transaction tx = b.getProgram().openTransaction("Disassemble (THUMB)")) {
|
||||
MemoryBlock text = b.createMemory(".text", "b6fa2cd0", 32, "Sample", (byte) 0);
|
||||
text.putBytes(b.addr(0xb6fa2cdc), new byte[] {
|
||||
// GDB: stmdb sp!, {r4,r5,r6,r7,r8,lr}
|
||||
|
@ -172,7 +171,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn
|
|||
@Test
|
||||
@TestLanguage(ProgramBuilder._ARM)
|
||||
public void testThumbSampleDBTrace() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceMemoryManager memory = b.trace.getMemoryManager();
|
||||
memory.createRegion(".text", 0, b.range(0xb6fa2cd0, 0xb6fa2cef),
|
||||
Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE));
|
||||
|
@ -198,7 +197,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn
|
|||
@Test
|
||||
@TestLanguage("MIPS:BE:64:default")
|
||||
public void testDelaySlotSampleDBTrace() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceMemoryManager memory = b.trace.getMemoryManager();
|
||||
memory.createRegion(".text", 0, b.range(0x120000000L, 0x120010000L),
|
||||
Set.of(TraceMemoryFlag.READ, TraceMemoryFlag.EXECUTE));
|
||||
|
@ -224,7 +223,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn
|
|||
@Test
|
||||
@TestLanguage(ProgramBuilder._X64)
|
||||
public void test64BitX86DBTrace() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceMemoryManager memory = b.trace.getMemoryManager();
|
||||
memory.createRegion(".text", 0, b.range(0x00400000, 0x00400fff));
|
||||
memory.putBytes(0, b.addr(0x00400000), b.buf(
|
||||
|
@ -254,7 +253,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn
|
|||
@Test
|
||||
@TestLanguage(ProgramBuilder._X64)
|
||||
public void test32BitX64CompatDBTrace() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceMemoryManager memory = b.trace.getMemoryManager();
|
||||
memory.createRegion(".text", 0, b.range(0x00400000, 0x00400fff));
|
||||
memory.putBytes(0, b.addr(0x00400000), b.buf(
|
||||
|
@ -290,7 +289,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn
|
|||
@Test
|
||||
@TestLanguage(ProgramBuilder._X86)
|
||||
public void test32BitX86DBTrace() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceMemoryManager memory = b.trace.getMemoryManager();
|
||||
memory.createRegion(".text", 0, b.range(0x00400000, 0x00400fff));
|
||||
memory.putBytes(0, b.addr(0x00400000), b.buf(
|
||||
|
@ -320,7 +319,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn
|
|||
}
|
||||
|
||||
protected void runTestCoalesceInstructions(List<Repetition> repetitions) throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceMemoryManager memory = b.trace.getMemoryManager();
|
||||
DBTraceCodeManager code = b.trace.getCodeManager();
|
||||
|
||||
|
@ -411,7 +410,7 @@ public class DBTraceDisassemblerIntegrationTest extends AbstractGhidraHeadlessIn
|
|||
|
||||
@Test
|
||||
public void testNoCoalesceAcrossByteChanges() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
DBTraceMemoryManager memory = b.trace.getMemoryManager();
|
||||
DBTraceCodeManager code = b.trace.getCodeManager();
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
package ghidra.trace.database.program;
|
||||
|
||||
import static ghidra.lifecycle.Unfinished.TODO;
|
||||
import static ghidra.lifecycle.Unfinished.*;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.io.IOException;
|
||||
|
@ -24,6 +24,7 @@ import java.util.List;
|
|||
|
||||
import org.junit.*;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.app.cmd.function.AddStackVarCmd;
|
||||
import ghidra.app.cmd.refs.AddStackRefCmd;
|
||||
import ghidra.program.database.ProgramBuilder;
|
||||
|
@ -35,26 +36,25 @@ import ghidra.program.model.listing.*;
|
|||
import ghidra.program.model.symbol.*;
|
||||
import ghidra.test.AbstractGhidraHeadlessIntegrationTest;
|
||||
import ghidra.trace.database.ToyDBTraceBuilder;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
import ghidra.util.exception.InvalidInputException;
|
||||
|
||||
public class DBTraceProgramViewFunctionManagerTest extends AbstractGhidraHeadlessIntegrationTest {
|
||||
ToyDBTraceBuilder b;
|
||||
FunctionManager functionManager;
|
||||
Program program;
|
||||
UndoableTransaction tid;
|
||||
Transaction tx;
|
||||
|
||||
@Before
|
||||
public void setUpFunctionManagerTest() throws IOException {
|
||||
b = new ToyDBTraceBuilder("Testing", ProgramBuilder._TOY);
|
||||
program = b.trace.getFixedProgramView(0);
|
||||
functionManager = program.getFunctionManager();
|
||||
tid = b.startTransaction();
|
||||
tx = b.startTransaction();
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDownFunctionManagerTest() {
|
||||
tid.close();
|
||||
tx.close();
|
||||
b.close();
|
||||
}
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
package ghidra.trace.database.program;
|
||||
|
||||
import static ghidra.lifecycle.Unfinished.TODO;
|
||||
import static ghidra.lifecycle.Unfinished.*;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.io.IOException;
|
||||
|
@ -23,6 +23,7 @@ import java.util.*;
|
|||
|
||||
import org.junit.*;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.program.database.ProgramBuilder;
|
||||
import ghidra.program.model.address.AddressSet;
|
||||
import ghidra.program.model.data.*;
|
||||
|
@ -34,7 +35,6 @@ import ghidra.test.AbstractGhidraHeadlessIntegrationTest;
|
|||
import ghidra.trace.database.ToyDBTraceBuilder;
|
||||
import ghidra.trace.database.listing.DBTraceCodeManager;
|
||||
import ghidra.trace.database.memory.DBTraceMemoryManager;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
import ghidra.util.exception.CancelledException;
|
||||
import ghidra.util.task.TaskMonitor;
|
||||
|
||||
|
@ -64,7 +64,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
@Before
|
||||
public void setUpTraceProgramViewListingTest() throws LanguageNotFoundException, IOException {
|
||||
b = new ToyDBTraceBuilder("Testing", ProgramBuilder._TOY64_BE);
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getTimeManager().createSnapshot("Created");
|
||||
}
|
||||
memory = b.trace.getMemoryManager();
|
||||
|
@ -99,7 +99,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
@Test
|
||||
public void testAddData() throws CodeUnitInsertionException {
|
||||
Data data;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
data = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
assertEquals(b.trace.getDataTypeManager()
|
||||
|
@ -113,7 +113,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
public void testAddInstruction() throws InsufficientBytesException, UnknownInstructionException,
|
||||
CodeUnitInsertionException {
|
||||
Instruction ins;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
ins = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
assertEquals("ret", ins.toString());
|
||||
|
@ -125,7 +125,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
assertUndefined(listing.getCodeUnitAt(b.addr(0x4000)));
|
||||
|
||||
Data d4000;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
assertEquals(d4000, listing.getCodeUnitAt(b.addr(0x4000)));
|
||||
|
@ -137,7 +137,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
assertUndefined(listing.getCodeUnitAt(b.addr(0x4005)));
|
||||
|
||||
Instruction i4005;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
assertEquals(i4005, listing.getCodeUnitAt(b.addr(0x4005)));
|
||||
|
@ -151,7 +151,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
assertUndefined(listing.getCodeUnitContaining(b.addr(0x4000)));
|
||||
|
||||
Data d4000;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
assertEquals(d4000, listing.getCodeUnitContaining(b.addr(0x4000)));
|
||||
|
@ -162,7 +162,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
|
||||
assertUndefined(listing.getCodeUnitContaining(b.addr(0x4005)));
|
||||
Instruction i4005;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
assertEquals(i4005, listing.getCodeUnitContaining(b.addr(0x4005)));
|
||||
|
@ -178,7 +178,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
assertUndefined(cu = listing.getCodeUnitAfter(b.addr(0x3fff)));
|
||||
assertEquals(b.addr(0x4000), cu.getAddress());
|
||||
Data d4000;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
assertEquals(d4000, listing.getCodeUnitAfter(b.addr(0x3fff)));
|
||||
|
@ -188,7 +188,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
assertUndefined(cu = listing.getCodeUnitAfter(b.addr(0x4004)));
|
||||
assertEquals(b.addr(0x4005), cu.getAddress());
|
||||
Instruction i4005;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
assertEquals(i4005, listing.getCodeUnitAfter(b.addr(0x4004)));
|
||||
|
@ -204,7 +204,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
assertUndefined(cu = listing.getCodeUnitBefore(b.addr(0x4001)));
|
||||
assertEquals(b.addr(0x4000), cu.getAddress());
|
||||
Data d4000;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
assertEquals(d4000, listing.getCodeUnitBefore(b.addr(0x4001)));
|
||||
|
@ -214,7 +214,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
assertUndefined(cu = listing.getCodeUnitBefore(b.addr(0x4006)));
|
||||
assertEquals(b.addr(0x4005), cu.getAddress());
|
||||
Instruction i4005;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
assertEquals(i4005, listing.getCodeUnitBefore(b.addr(0x4006)));
|
||||
|
@ -289,7 +289,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
|
||||
Data d4000;
|
||||
Instruction i4005;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
|
@ -354,7 +354,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
UnknownInstructionException, CodeUnitInsertionException {
|
||||
assertNull(listing.getInstructionAt(b.addr(0x4005)));
|
||||
Instruction i4005;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
assertEquals(i4005, listing.getInstructionAt(b.addr(0x4005)));
|
||||
|
@ -367,7 +367,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
UnknownInstructionException, CodeUnitInsertionException {
|
||||
assertNull(listing.getInstructionContaining(b.addr(0x4005)));
|
||||
Instruction i4005;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
assertEquals(i4005, listing.getInstructionContaining(b.addr(0x4005)));
|
||||
|
@ -380,7 +380,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
UnknownInstructionException, CodeUnitInsertionException {
|
||||
assertNull(listing.getInstructionAfter(b.addr(0x4004)));
|
||||
Instruction i4005;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
assertEquals(i4005, listing.getInstructionAfter(b.addr(0x4004)));
|
||||
|
@ -392,7 +392,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
UnknownInstructionException, CodeUnitInsertionException {
|
||||
assertNull(listing.getInstructionBefore(b.addr(0x4006)));
|
||||
Instruction i4005;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
assertEquals(i4005, listing.getInstructionBefore(b.addr(0x4006)));
|
||||
|
@ -420,7 +420,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
Instruction i4005;
|
||||
Instruction i4007;
|
||||
Instruction i400a;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
i4007 = b.addInstruction(0, b.addr(0x4007), b.host, b.buf(0xf4, 0));
|
||||
i400a = b.addInstruction(0, b.addr(0x400a), b.host, b.buf(0xf4, 0));
|
||||
|
@ -443,7 +443,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
UnknownInstructionException {
|
||||
assertUndefined(listing.getDataAt(b.addr(0x4000)));
|
||||
Data d4000;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
assertEquals(d4000, listing.getDataAt(b.addr(0x4000)));
|
||||
|
@ -453,7 +453,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
assertUndefined(listing.getDataAt(b.addr(0x4004)));
|
||||
|
||||
assertUndefined(listing.getDataAt(b.addr(0x4005)));
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
assertNull(listing.getDataAt(b.addr(0x4005)));
|
||||
|
@ -466,7 +466,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
InsufficientBytesException, UnknownInstructionException {
|
||||
assertUndefined(listing.getDataContaining(b.addr(0x4000)));
|
||||
Data d4000;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
assertEquals(d4000, listing.getDataContaining(b.addr(0x4000)));
|
||||
|
@ -476,7 +476,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
assertUndefined(listing.getDataContaining(b.addr(0x4004)));
|
||||
|
||||
assertUndefined(listing.getDataContaining(b.addr(0x4005)));
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
assertNull(listing.getDataContaining(b.addr(0x4005)));
|
||||
|
@ -492,7 +492,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
assertUndefined(cu = listing.getDataAfter(b.addr(0x3fff)));
|
||||
assertEquals(b.addr(0x4000), cu.getAddress());
|
||||
Data d4000;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
assertEquals(d4000, listing.getDataAfter(b.addr(0x3fff)));
|
||||
|
@ -501,7 +501,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
|
||||
assertUndefined(cu = listing.getDataAfter(b.addr(0x4004)));
|
||||
assertEquals(b.addr(0x4005), cu.getAddress());
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
assertUndefined(cu = listing.getDataAfter(b.addr(0x4004)));
|
||||
|
@ -516,7 +516,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
assertUndefined(cu = listing.getDataBefore(b.addr(0x4001)));
|
||||
assertEquals(b.addr(0x4000), cu.getAddress());
|
||||
Data d4000;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
assertEquals(d4000, listing.getDataBefore(b.addr(0x4001)));
|
||||
|
@ -525,7 +525,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
|
||||
assertUndefined(cu = listing.getDataBefore(b.addr(0x4006)));
|
||||
assertEquals(b.addr(0x4005), cu.getAddress());
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
assertUndefined(cu = listing.getDataBefore(b.addr(0x4007)));
|
||||
|
@ -598,7 +598,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
assertEquals(b.addr(0x3ffe), sample.get(7).getAddress());
|
||||
|
||||
Data d4000;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
|
@ -658,7 +658,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
public void testGetDefinedDataAt() throws CodeUnitInsertionException {
|
||||
assertNull(listing.getDefinedDataAt(b.addr(0x4000)));
|
||||
Data d4000;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
assertEquals(d4000, listing.getDefinedDataAt(b.addr(0x4000)));
|
||||
|
@ -673,7 +673,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
public void testGetDefinedDataContaining() throws CodeUnitInsertionException {
|
||||
assertNull(listing.getDefinedDataContaining(b.addr(0x4005)));
|
||||
Data d4000;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
assertEquals(d4000, listing.getDefinedDataContaining(b.addr(0x4000)));
|
||||
|
@ -687,7 +687,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
public void testGetDefinedDataAfter() throws CodeUnitInsertionException {
|
||||
assertNull(listing.getDefinedDataAfter(b.addr(0x4000)));
|
||||
Data d4000;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
assertEquals(d4000, listing.getDefinedDataAfter(b.addr(0x3fff)));
|
||||
|
@ -698,7 +698,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
public void testGetDefinedDataBefore() throws CodeUnitInsertionException {
|
||||
assertNull(listing.getDefinedDataBefore(b.addr(0x4004)));
|
||||
Data d4000;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
assertEquals(d4000, listing.getDefinedDataBefore(b.addr(0x4001)));
|
||||
|
@ -726,7 +726,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
Data d4000;
|
||||
Data d4004;
|
||||
Data d400a;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(0, 1, 2, 3));
|
||||
d4004 = b.addData(0, b.addr(0x4004), Undefined4DataType.dataType, b.buf(5, 6, 7, 8));
|
||||
d400a =
|
||||
|
@ -749,7 +749,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
public void testGetUndefinedDataAt() throws CodeUnitInsertionException,
|
||||
InsufficientBytesException, UnknownInstructionException {
|
||||
assertUndefined(listing.getUndefinedDataAt(b.addr(0x4000)));
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
assertNull(listing.getUndefinedDataAt(b.addr(0x4000)));
|
||||
|
@ -759,7 +759,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
assertUndefined(listing.getUndefinedDataAt(b.addr(0x4004)));
|
||||
|
||||
assertUndefined(listing.getUndefinedDataAt(b.addr(0x4005)));
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
assertNull(listing.getUndefinedDataAt(b.addr(0x4005)));
|
||||
|
@ -774,7 +774,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
|
||||
assertUndefined(cu = listing.getUndefinedDataAfter(b.addr(0x3fff), TaskMonitor.DUMMY));
|
||||
assertEquals(b.addr(0x4000), cu.getAddress());
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
assertUndefined(cu = listing.getUndefinedDataAfter(b.addr(0x3fff), TaskMonitor.DUMMY));
|
||||
|
@ -782,7 +782,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
|
||||
assertUndefined(cu = listing.getUndefinedDataAfter(b.addr(0x4004), TaskMonitor.DUMMY));
|
||||
assertEquals(b.addr(0x4005), cu.getAddress());
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
assertUndefined(cu = listing.getUndefinedDataAfter(b.addr(0x4004), TaskMonitor.DUMMY));
|
||||
|
@ -796,7 +796,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
|
||||
assertUndefined(cu = listing.getUndefinedDataBefore(b.addr(0x4001), TaskMonitor.DUMMY));
|
||||
assertEquals(b.addr(0x4000), cu.getAddress());
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
assertUndefined(cu = listing.getUndefinedDataBefore(b.addr(0x4004), TaskMonitor.DUMMY));
|
||||
|
@ -804,7 +804,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
|
||||
assertUndefined(cu = listing.getUndefinedDataBefore(b.addr(0x4006), TaskMonitor.DUMMY));
|
||||
assertEquals(b.addr(0x4005), cu.getAddress());
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
assertUndefined(cu = listing.getUndefinedDataBefore(b.addr(0x4007), TaskMonitor.DUMMY));
|
||||
|
@ -814,7 +814,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
@Test
|
||||
public void testGetFirstUndefinedData() throws InsufficientBytesException,
|
||||
UnknownInstructionException, CodeUnitInsertionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
|
@ -832,7 +832,7 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
@Ignore("TODO")
|
||||
public void testGetUndefinedRanges() throws InsufficientBytesException,
|
||||
UnknownInstructionException, CodeUnitInsertionException, CancelledException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
|
@ -848,13 +848,13 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
UnknownInstructionException, CodeUnitInsertionException {
|
||||
assertNull(listing.getDefinedCodeUnitAfter(b.addr(0x3fff)));
|
||||
Instruction i4005;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
assertEquals(i4005, listing.getDefinedCodeUnitAfter(b.addr(0x3fff)));
|
||||
assertNull(listing.getDefinedCodeUnitAfter(b.addr(0x4005)));
|
||||
Data d4000;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
assertEquals(d4000, listing.getDefinedCodeUnitAfter(b.addr(0x3fff)));
|
||||
|
@ -866,13 +866,13 @@ public class DBTraceProgramViewListingTest extends AbstractGhidraHeadlessIntegra
|
|||
UnknownInstructionException, CodeUnitInsertionException {
|
||||
assertNull(listing.getDefinedCodeUnitBefore(b.addr(0x4006)));
|
||||
Data d4000;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
d4000 = b.addData(0, b.addr(0x4000), Undefined4DataType.dataType, b.buf(1, 2, 3, 4));
|
||||
}
|
||||
assertEquals(d4000, listing.getDefinedCodeUnitBefore(b.addr(0x4006)));
|
||||
assertNull(listing.getDefinedCodeUnitBefore(b.addr(0x4000)));
|
||||
Instruction i4005;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
i4005 = b.addInstruction(0, b.addr(0x4005), b.host, b.buf(0xf4, 0));
|
||||
}
|
||||
assertEquals(i4005, listing.getDefinedCodeUnitBefore(b.addr(0x4006)));
|
||||
|
|
|
@ -15,13 +15,13 @@
|
|||
*/
|
||||
package ghidra.trace.database.program;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertSame;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.junit.*;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.program.database.ProgramBuilder;
|
||||
import ghidra.program.model.address.*;
|
||||
import ghidra.program.model.lang.LanguageNotFoundException;
|
||||
|
@ -32,7 +32,6 @@ import ghidra.trace.database.memory.DBTraceMemoryManager;
|
|||
import ghidra.trace.database.memory.DBTraceMemoryRegion;
|
||||
import ghidra.trace.model.memory.TraceMemoryFlag;
|
||||
import ghidra.trace.model.memory.TraceOverlappedRegionException;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
import ghidra.util.exception.DuplicateNameException;
|
||||
|
||||
public class DBTraceProgramViewMemoryTest extends AbstractGhidraHeadlessIntegrationTest {
|
||||
|
@ -46,7 +45,7 @@ public class DBTraceProgramViewMemoryTest extends AbstractGhidraHeadlessIntegrat
|
|||
@Before
|
||||
public void setUpTraceProgramViewMemoryTest() throws LanguageNotFoundException, IOException {
|
||||
b = new ToyDBTraceBuilder("Testing", ProgramBuilder._TOY64_BE);
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getTimeManager().createSnapshot("Created");
|
||||
}
|
||||
memory = b.trace.getMemoryManager();
|
||||
|
@ -67,7 +66,7 @@ public class DBTraceProgramViewMemoryTest extends AbstractGhidraHeadlessIntegrat
|
|||
AddressOutOfBoundsException {
|
||||
AddressSpace os;
|
||||
DBTraceMemoryRegion io;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
os = memory.createOverlayAddressSpace("test",
|
||||
b.trace.getBaseAddressFactory().getDefaultAddressSpace());
|
||||
io = (DBTraceMemoryRegion) memory.createRegion(".io", 0, b.range(os, 0x1000, 0x1fff),
|
||||
|
|
|
@ -23,6 +23,7 @@ import java.util.Objects;
|
|||
|
||||
import org.junit.*;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.program.model.address.Address;
|
||||
import ghidra.test.AbstractGhidraHeadlessIntegrationTest;
|
||||
import ghidra.trace.database.ToyDBTraceBuilder;
|
||||
|
@ -31,7 +32,6 @@ import ghidra.trace.model.TraceAddressSnapRange;
|
|||
import ghidra.trace.model.property.*;
|
||||
import ghidra.util.ObjectStorage;
|
||||
import ghidra.util.Saveable;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
import ghidra.util.exception.DuplicateNameException;
|
||||
import ghidra.util.map.TypeMismatchException;
|
||||
|
||||
|
@ -168,10 +168,10 @@ public class DBTraceAddressPropertyManagerTest extends AbstractGhidraHeadlessInt
|
|||
}
|
||||
|
||||
protected void doTestCreatePropertyMap(Class<?> valueClass) throws Exception {
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
propertyManager.createPropertyMap("MyProp", valueClass);
|
||||
}
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
propertyManager.createPropertyMap("MyProp", valueClass);
|
||||
fail();
|
||||
}
|
||||
|
@ -207,7 +207,7 @@ public class DBTraceAddressPropertyManagerTest extends AbstractGhidraHeadlessInt
|
|||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void testCreateUnsupportedPropertyMap() throws Exception {
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
propertyManager.createPropertyMap("MyProp", Unsupported.class);
|
||||
}
|
||||
}
|
||||
|
@ -216,7 +216,7 @@ public class DBTraceAddressPropertyManagerTest extends AbstractGhidraHeadlessInt
|
|||
public void testGetPropertyMap() throws Exception {
|
||||
assertNull(propertyManager.getPropertyMap("MyProp"));
|
||||
TracePropertyMapOperations<String> map;
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
map = propertyManager.createPropertyMap("MyProp", String.class);
|
||||
}
|
||||
assertNotNull(map);
|
||||
|
@ -236,7 +236,7 @@ public class DBTraceAddressPropertyManagerTest extends AbstractGhidraHeadlessInt
|
|||
public void testGetOrCreatePropertyMap() throws Exception {
|
||||
assertNull(propertyManager.getPropertyMap("MyProp"));
|
||||
TracePropertyMapOperations<String> map;
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
map = propertyManager.getOrCreatePropertyMap("MyProp", String.class);
|
||||
}
|
||||
assertNotNull(map);
|
||||
|
@ -255,7 +255,7 @@ public class DBTraceAddressPropertyManagerTest extends AbstractGhidraHeadlessInt
|
|||
public void testGetAllProperties() throws Exception {
|
||||
assertEquals(0, propertyManager.getAllProperties().size());
|
||||
TracePropertyMapOperations<String> map;
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
map = propertyManager.createPropertyMap("MyProp", String.class);
|
||||
}
|
||||
assertNotNull(map);
|
||||
|
@ -266,14 +266,14 @@ public class DBTraceAddressPropertyManagerTest extends AbstractGhidraHeadlessInt
|
|||
@Test
|
||||
public void testMapGetValueClass() throws Exception {
|
||||
TracePropertyMapOperations<String> map;
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
map = propertyManager.createPropertyMap("MyProp", String.class);
|
||||
}
|
||||
assertSame(String.class, map.getValueClass());
|
||||
}
|
||||
|
||||
protected <T> void doTestMap(Class<T> valueClass, T value) throws Exception {
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
TracePropertyMapOperations<T> map =
|
||||
propertyManager.createPropertyMap("MyProp", valueClass);
|
||||
assertSame(valueClass, map.getValueClass());
|
||||
|
@ -337,7 +337,7 @@ public class DBTraceAddressPropertyManagerTest extends AbstractGhidraHeadlessInt
|
|||
@Test
|
||||
public void testStringMapAtNoAdress() throws Exception {
|
||||
TracePropertyMap<String> map;
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
map = propertyManager.createPropertyMap("MyProp", String.class);
|
||||
|
||||
map.set(Lifespan.nowOn(0), Address.NO_ADDRESS, "Value");
|
||||
|
|
|
@ -17,10 +17,10 @@ package ghidra.trace.database.stack;
|
|||
|
||||
import org.junit.Before;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.dbg.target.schema.SchemaContext;
|
||||
import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName;
|
||||
import ghidra.dbg.target.schema.XmlSchemaContext;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
|
||||
public class DBTraceStackManagerObjectTest extends DBTraceStackManagerTest {
|
||||
|
||||
|
@ -59,7 +59,7 @@ public class DBTraceStackManagerObjectTest extends DBTraceStackManagerTest {
|
|||
" </schema>" + //
|
||||
"</context>");
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getObjectManager().createRootObject(ctx.getSchema(new SchemaName("Session")));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,13 +24,13 @@ import java.util.stream.StreamSupport;
|
|||
|
||||
import org.junit.*;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.test.AbstractGhidraHeadlessIntegrationTest;
|
||||
import ghidra.trace.database.ToyDBTraceBuilder;
|
||||
import ghidra.trace.model.Lifespan;
|
||||
import ghidra.trace.model.stack.TraceStack;
|
||||
import ghidra.trace.model.stack.TraceStackFrame;
|
||||
import ghidra.trace.model.thread.TraceThread;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
|
||||
public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTest {
|
||||
|
||||
|
@ -50,7 +50,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe
|
|||
|
||||
@Test
|
||||
public void testCreateStack() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceThread thread = b.getOrAddThread("Threads[1]", 0);
|
||||
stackManager.getStack(thread, 0, true);
|
||||
}
|
||||
|
@ -59,7 +59,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe
|
|||
@Test
|
||||
public void testSetDepth() throws Exception {
|
||||
TraceStack stack;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceThread thread = b.getOrAddThread("Threads[1]", 0);
|
||||
stack = stackManager.getStack(thread, 0, true);
|
||||
stack.setDepth(1, true);
|
||||
|
@ -72,7 +72,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe
|
|||
}
|
||||
assertEquals(5, expectedLevel);
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
stack.setDepth(3, true);
|
||||
}
|
||||
|
||||
|
@ -82,7 +82,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe
|
|||
}
|
||||
assertEquals(3, expectedLevel);
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
stack.setDepth(1, false);
|
||||
}
|
||||
|
||||
|
@ -101,7 +101,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe
|
|||
TraceStack stack1b;
|
||||
TraceStack stack2a;
|
||||
TraceStack stack2b;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread1 = b.getOrAddThread("Threads[1]", 0);
|
||||
thread2 = b.getOrAddThread("Threads[2]", 0);
|
||||
stack1a = stackManager.getStack(thread1, 2, true);
|
||||
|
@ -133,7 +133,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe
|
|||
TraceStackFrame frame1b;
|
||||
TraceStackFrame frame2a;
|
||||
TraceStackFrame frame2b;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceThread thread = b.getOrAddThread("Threads[1]", 0);
|
||||
|
||||
TraceStack stack1 = stackManager.getStack(thread, 0, true);
|
||||
|
@ -163,7 +163,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe
|
|||
public void testStackGetThread() throws Exception {
|
||||
TraceThread thread;
|
||||
TraceStack stack;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Threads[1]", 0);
|
||||
stack = stackManager.getStack(thread, 0, true);
|
||||
}
|
||||
|
@ -175,7 +175,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe
|
|||
public void testStackGetSnap() throws Exception {
|
||||
TraceThread thread;
|
||||
TraceStack stack;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Threads[1]", 0);
|
||||
stack = stackManager.getStack(thread, 2, true);
|
||||
}
|
||||
|
@ -187,7 +187,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe
|
|||
public void testStackGetDepth() throws Exception {
|
||||
TraceThread thread;
|
||||
TraceStack stack;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Threads[1]", 0);
|
||||
stack = stackManager.getStack(thread, 0, true);
|
||||
stack.setDepth(2, true);
|
||||
|
@ -200,7 +200,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe
|
|||
public void testStackGetFrames() throws Exception {
|
||||
TraceThread thread;
|
||||
TraceStack stack;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Threads[1]", 0);
|
||||
stack = stackManager.getStack(thread, 0, true);
|
||||
stack.setDepth(2, true);
|
||||
|
@ -216,7 +216,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe
|
|||
public void testStackDelete() throws Exception {
|
||||
TraceThread thread;
|
||||
TraceStack stack;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Threads[1]", 0);
|
||||
stack = stackManager.getStack(thread, 0, true);
|
||||
stack.setDepth(2, true);
|
||||
|
@ -226,7 +226,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe
|
|||
assertEquals(stack, stackManager.getStack(thread, 0, false));
|
||||
assertEquals(2, stack.getFrames(0).size());
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
stack.delete();
|
||||
}
|
||||
|
||||
|
@ -239,7 +239,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe
|
|||
TraceThread thread;
|
||||
TraceStack stack;
|
||||
TraceStackFrame frame;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Threads[1]", 0);
|
||||
stack = stackManager.getStack(thread, 0, true);
|
||||
frame = stack.getFrame(0, true);
|
||||
|
@ -254,7 +254,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe
|
|||
TraceStack stack;
|
||||
TraceStackFrame frame0;
|
||||
TraceStackFrame frame1;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Threads[1]", 0);
|
||||
stack = stackManager.getStack(thread, 0, true);
|
||||
stack.setDepth(2, true);
|
||||
|
@ -271,7 +271,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe
|
|||
TraceThread thread;
|
||||
TraceStack stack;
|
||||
TraceStackFrame frame;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Threads[1]", 0);
|
||||
stack = stackManager.getStack(thread, 0, true);
|
||||
stack.setDepth(1, true);
|
||||
|
@ -289,7 +289,7 @@ public class DBTraceStackManagerTest extends AbstractGhidraHeadlessIntegrationTe
|
|||
TraceThread thread;
|
||||
TraceStack stack;
|
||||
TraceStackFrame frame;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Threads[1]", 0);
|
||||
stack = stackManager.getStack(thread, 0, true);
|
||||
stack.setDepth(1, true);
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*/
|
||||
package ghidra.trace.database.symbol;
|
||||
|
||||
import static ghidra.lifecycle.Unfinished.TODO;
|
||||
import static ghidra.lifecycle.Unfinished.*;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.io.IOException;
|
||||
|
@ -23,6 +23,7 @@ import java.util.*;
|
|||
|
||||
import org.junit.*;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.app.cmd.function.AddRegisterParameterCommand;
|
||||
import ghidra.app.cmd.function.AddStackVarCmd;
|
||||
import ghidra.app.cmd.refs.AddStackRefCmd;
|
||||
|
@ -42,7 +43,6 @@ import ghidra.trace.model.Lifespan;
|
|||
import ghidra.trace.model.memory.TraceOverlappedRegionException;
|
||||
import ghidra.trace.model.symbol.*;
|
||||
import ghidra.util.IntersectionAddressSetView;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
import ghidra.util.exception.DuplicateNameException;
|
||||
import ghidra.util.exception.InvalidInputException;
|
||||
import ghidra.util.task.TaskMonitor;
|
||||
|
@ -56,7 +56,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
public void setUpFunctionTest()
|
||||
throws IOException, TraceOverlappedRegionException, DuplicateNameException {
|
||||
b = new ToyDBTraceBuilder("Testing", ProgramBuilder._TOY);
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getMemoryManager().createRegion("test", 0, b.range(100, 599));
|
||||
}
|
||||
functions = b.trace.getSymbolManager().functions();
|
||||
|
@ -165,7 +165,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
|
||||
@Test
|
||||
public void testGetName() throws InvalidInputException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
assertEquals("foo", f.getName());
|
||||
|
@ -175,7 +175,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetNameUser()
|
||||
throws InvalidInputException, OverlappingFunctionException, DuplicateNameException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
// TODO: Monitor for event
|
||||
|
@ -189,7 +189,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetNameAnalysis()
|
||||
throws InvalidInputException, OverlappingFunctionException, DuplicateNameException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
f.setName("bar", SourceType.ANALYSIS);
|
||||
|
@ -201,7 +201,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetNameImported()
|
||||
throws InvalidInputException, OverlappingFunctionException, DuplicateNameException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
f.setName("bar", SourceType.IMPORTED);
|
||||
|
@ -213,7 +213,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetNameDefault()
|
||||
throws InvalidInputException, OverlappingFunctionException, DuplicateNameException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
String defaultName = SymbolUtilities.getDefaultFunctionName(b.addr(100));
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
|
@ -226,7 +226,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetNameDefaultError()
|
||||
throws InvalidInputException, OverlappingFunctionException, DuplicateNameException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
try {
|
||||
|
@ -242,7 +242,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
|
||||
@Test
|
||||
public void testSetComment() throws InvalidInputException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
f.setComment("Test Comment\nLine 2");
|
||||
|
@ -254,7 +254,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
|
||||
@Test
|
||||
public void testSetRepeatable() throws InvalidInputException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
f.setRepeatableComment("Test Comment\nLine 2");
|
||||
|
@ -266,7 +266,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
|
||||
@Test
|
||||
public void testCreateFunction() throws InvalidInputException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
// TODO: Monitor events
|
||||
AddressSetView body = b.set(b.range(100, 350), b.range(400, 450), b.range(500, 550));
|
||||
TraceFunctionSymbol f =
|
||||
|
@ -285,7 +285,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
|
||||
@Test
|
||||
public void testSetBody() throws InvalidInputException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
// TODO: Monitor events
|
||||
AddressSetView body = b.set(b.range(100, 350), b.range(400, 450), b.range(500, 550));
|
||||
TraceFunctionSymbol f =
|
||||
|
@ -301,7 +301,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetBodyClearVarRefs()
|
||||
throws InvalidInputException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
AddressSetView body = b.set(b.range(100, 350), b.range(400, 450), b.range(500, 550));
|
||||
TraceFunctionSymbol f =
|
||||
functions.create(0, b.addr(100), body, "foo", null, null, SourceType.USER_DEFINED);
|
||||
|
@ -354,7 +354,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetBodyClearVarRefsExceptOneInBoth()
|
||||
throws InvalidInputException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
AddressSetView body = b.set(b.range(100, 350), b.range(400, 450), b.range(500, 550));
|
||||
TraceFunctionSymbol f =
|
||||
functions.create(0, b.addr(100), body, "foo", null, null, SourceType.USER_DEFINED);
|
||||
|
@ -412,7 +412,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetBodyInvalidEntryPoint()
|
||||
throws InvalidInputException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
AddressSetView body = b.set(b.range(100, 350), b.range(400, 450), b.range(500, 550));
|
||||
TraceFunctionSymbol f =
|
||||
functions.create(0, b.addr(100), body, "foo", null, null, SourceType.USER_DEFINED);
|
||||
|
@ -431,7 +431,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetBodyOverlapping()
|
||||
throws InvalidInputException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
AddressSetView body = b.set(b.range(100, 350), b.range(400, 450), b.range(500, 550));
|
||||
TraceFunctionSymbol f =
|
||||
functions.create(0, b.addr(100), body, "foo", null, null, SourceType.USER_DEFINED);
|
||||
|
@ -460,7 +460,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetBodyClearSymbols()
|
||||
throws InvalidInputException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
AddressSetView body = b.set(b.range(100, 350), b.range(400, 450), b.range(500, 550));
|
||||
TraceFunctionSymbol f =
|
||||
functions.create(0, b.addr(100), body, "foo", null, null, SourceType.USER_DEFINED);
|
||||
|
@ -490,7 +490,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
|
||||
@Test
|
||||
public void testGetVariables() throws InvalidInputException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
AddressSetView body = b.set(b.range(100, 350), b.range(400, 450), b.range(500, 550));
|
||||
TraceFunctionSymbol f =
|
||||
functions.create(0, b.addr(100), body, "foo", null, null, SourceType.USER_DEFINED);
|
||||
|
@ -529,7 +529,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
|
||||
@Test
|
||||
public void testGetReturnType() throws InvalidInputException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
AddressSetView body = b.set(b.range(100, 350), b.range(400, 450), b.range(500, 550));
|
||||
TraceFunctionSymbol f =
|
||||
functions.create(0, b.addr(100), body, "foo", null, null, SourceType.USER_DEFINED);
|
||||
|
@ -540,7 +540,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
|
||||
@Test
|
||||
public void testSetReturnType() throws InvalidInputException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
AddressSetView body = b.set(b.range(100, 350), b.range(400, 450), b.range(500, 550));
|
||||
TraceFunctionSymbol f =
|
||||
functions.create(0, b.addr(100), body, "foo", null, null, SourceType.USER_DEFINED);
|
||||
|
@ -558,7 +558,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetCustomStorage() throws DuplicateNameException, InvalidInputException,
|
||||
IllegalArgumentException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = createTestFunction();
|
||||
int initialParamCnt = f.getParameterCount();
|
||||
|
||||
|
@ -622,7 +622,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetCallingConvention() throws DuplicateNameException, InvalidInputException,
|
||||
IllegalArgumentException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = createTestFunction();
|
||||
|
||||
int initialParamCnt = f.getParameterCount();
|
||||
|
@ -725,7 +725,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testUpdateFunctionCustomStorage() throws DuplicateNameException,
|
||||
InvalidInputException, IllegalArgumentException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
Function f = createTestFunction();
|
||||
|
||||
Structure bigStruct = new StructureDataType("bigStruct", 20);
|
||||
|
@ -762,7 +762,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testUpdateFunctionDynamicStorage() throws DuplicateNameException,
|
||||
InvalidInputException, IllegalArgumentException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
|
||||
Function f = createTestFunction();
|
||||
|
||||
|
@ -813,7 +813,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testUpdateFunctionDynamicStorage1() throws DuplicateNameException,
|
||||
InvalidInputException, IllegalArgumentException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
|
||||
Function f = createTestFunction();
|
||||
|
||||
|
@ -865,7 +865,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testUpdateFunctionDynamicStorage2() throws DuplicateNameException,
|
||||
InvalidInputException, IllegalArgumentException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
|
||||
Function f = createTestFunction();
|
||||
|
||||
|
@ -971,7 +971,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testAutoAddingRemovingThisParameter() throws DuplicateNameException,
|
||||
InvalidInputException, IllegalArgumentException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
|
||||
TraceFunctionSymbol f = createTestFunction();
|
||||
assertEquals(5, f.getParameters().length);
|
||||
|
@ -1069,7 +1069,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testGetSignatureString()
|
||||
throws InvalidInputException, OverlappingFunctionException, DuplicateNameException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
Structure s = new StructureDataType("bar", 20);
|
||||
|
@ -1152,7 +1152,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Ignore("TODO")
|
||||
public void testDataTypeOnRegisterVariable()
|
||||
throws InvalidInputException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
|
||||
Register r7l = b.trace.getBaseLanguage().getRegister("r7l");
|
||||
assertNotNull(r7l);
|
||||
|
@ -1165,7 +1165,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
|
||||
// TODO: Monitor events
|
||||
|
||||
try (UndoableTransaction localTid = b.startTransaction()) {
|
||||
try (Transaction localTx = b.startTransaction()) {
|
||||
DataType bdt = b.trace.getDataTypeManager()
|
||||
.addDataType(ByteDataType.dataType,
|
||||
DataTypeConflictHandler.DEFAULT_HANDLER);
|
||||
|
@ -1188,7 +1188,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
assertEquals(r7l, rp.getRegister());
|
||||
|
||||
// delete the typedef data type
|
||||
try (UndoableTransaction localTid = b.startTransaction()) {
|
||||
try (Transaction localTx = b.startTransaction()) {
|
||||
b.trace.getDataTypeManager().remove(dt, TaskMonitor.DUMMY);
|
||||
}
|
||||
|
||||
|
@ -1204,7 +1204,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetStackDepthChange()
|
||||
throws InvalidInputException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
|
||||
|
@ -1220,7 +1220,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetStackParameter()
|
||||
throws InvalidInputException, OverlappingFunctionException, DuplicateNameException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
f.setCustomVariableStorage(true);
|
||||
|
@ -1287,7 +1287,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetDuplicateStackParameter()
|
||||
throws InvalidInputException, OverlappingFunctionException, DuplicateNameException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
f.setCustomVariableStorage(true);
|
||||
|
@ -1326,7 +1326,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetStackVariable()
|
||||
throws InvalidInputException, OverlappingFunctionException, DuplicateNameException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
|
||||
|
@ -1361,7 +1361,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetStackVariableOverwrite()
|
||||
throws InvalidInputException, OverlappingFunctionException, DuplicateNameException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
|
||||
|
@ -1397,7 +1397,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetDuplicateStackVariable()
|
||||
throws InvalidInputException, OverlappingFunctionException, DuplicateNameException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
|
||||
|
@ -1435,7 +1435,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetRegisterParameter()
|
||||
throws InvalidInputException, OverlappingFunctionException, DuplicateNameException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
f.setCustomVariableStorage(true);
|
||||
|
@ -1471,7 +1471,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetDuplicateRegisterParameter()
|
||||
throws InvalidInputException, OverlappingFunctionException, DuplicateNameException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
f.setCustomVariableStorage(true);
|
||||
|
@ -1507,7 +1507,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetRegisterVariable()
|
||||
throws InvalidInputException, OverlappingFunctionException, DuplicateNameException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
|
||||
|
@ -1543,7 +1543,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetDuplicateRegisterVariable()
|
||||
throws InvalidInputException, OverlappingFunctionException, DuplicateNameException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
|
||||
|
@ -1578,7 +1578,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetMemoryParameter()
|
||||
throws InvalidInputException, OverlappingFunctionException, DuplicateNameException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
f.setCustomVariableStorage(true);
|
||||
|
@ -1613,7 +1613,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetDuplicateMemoryParameter()
|
||||
throws InvalidInputException, OverlappingFunctionException, DuplicateNameException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
f.setCustomVariableStorage(true);
|
||||
|
@ -1649,7 +1649,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testRemoveRegisterParameter()
|
||||
throws InvalidInputException, OverlappingFunctionException, DuplicateNameException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
f.setCustomVariableStorage(true);
|
||||
|
@ -1686,7 +1686,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
|
||||
@Test
|
||||
public void testSetInline() throws InvalidInputException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
|
@ -1710,7 +1710,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
|
||||
@Test
|
||||
public void testSetNoReturn() throws InvalidInputException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
|
@ -1734,7 +1734,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
|
||||
@Test
|
||||
public void testSetCallFixup() throws InvalidInputException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
|
||||
TraceFunctionSymbol f = functions.create(0, b.addr(100), b.set(b.range(100, 200)),
|
||||
"foo", null, null, SourceType.USER_DEFINED);
|
||||
|
@ -1759,7 +1759,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testSetThunkFunction()
|
||||
throws InvalidInputException, OverlappingFunctionException, DuplicateNameException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
|
||||
Function f1 = functions.create(0, b.addr(0x100), b.set(b.range(0x100, 0x200)), "foo1",
|
||||
null, null, SourceType.USER_DEFINED);
|
||||
|
@ -1856,7 +1856,7 @@ public class DBTraceFunctionSymbolTest extends AbstractGhidraHeadlessIntegration
|
|||
@Test
|
||||
public void testPromoteLocalUserLabelsToGlobal()
|
||||
throws InvalidInputException, OverlappingFunctionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
|
||||
TraceFunctionSymbol foo2 = functions.create(0, b.addr(201), b.set(b.range(201, 249)),
|
||||
"foo2", null, null, SourceType.USER_DEFINED);
|
||||
|
|
|
@ -23,6 +23,7 @@ import java.util.*;
|
|||
|
||||
import org.junit.*;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.program.model.address.Address;
|
||||
import ghidra.program.model.address.AddressSpace;
|
||||
import ghidra.program.model.symbol.*;
|
||||
|
@ -31,7 +32,6 @@ import ghidra.trace.database.ToyDBTraceBuilder;
|
|||
import ghidra.trace.model.Lifespan;
|
||||
import ghidra.trace.model.Trace;
|
||||
import ghidra.trace.model.symbol.*;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
import ghidra.util.exception.CancelledException;
|
||||
import ghidra.util.exception.VersionException;
|
||||
|
||||
|
@ -189,7 +189,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
DBTraceReference memRef;
|
||||
DBTraceReference offRef;
|
||||
DBTraceReference sftRef;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
memRef =
|
||||
manager.addReference(new DummyTraceReference(0, b.addr(0x4000), b.addr(0x5000)));
|
||||
offRef = manager.addReference(
|
||||
|
@ -218,7 +218,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
|
||||
@Test
|
||||
public void testAddMemoryReference() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000));
|
||||
}
|
||||
DBTraceReferenceSpace space =
|
||||
|
@ -230,7 +230,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
|
||||
@Test
|
||||
public void testAddOffsetReference() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addOffsetReference(0, b.addr(0x4001), b.addr(0x5001), false, 20);
|
||||
}
|
||||
DBTraceReferenceSpace space =
|
||||
|
@ -242,7 +242,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
|
||||
@Test
|
||||
public void testAddShiftedReference() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addShiftedReference(0, b.addr(0x4002), b.addr(0x5002), 1);
|
||||
}
|
||||
DBTraceReferenceSpace space =
|
||||
|
@ -254,7 +254,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
|
||||
@Test
|
||||
public void testAddRegisterReference() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addRegisterReference(0, b.addr(0x4003), "r5");
|
||||
}
|
||||
DBTraceReferenceSpace space =
|
||||
|
@ -266,7 +266,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
|
||||
@Test
|
||||
public void testAddStackReference() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addStackReference(0, b.addr(0x4004), 0x20);
|
||||
}
|
||||
DBTraceReferenceSpace space =
|
||||
|
@ -283,7 +283,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
DBTraceReference sftRef;
|
||||
DBTraceReference regRef;
|
||||
DBTraceReference stkRef;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
memRef = b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000));
|
||||
offRef = b.addOffsetReference(0, b.addr(0x4001), b.addr(0x5001), false, 20);
|
||||
sftRef = b.addShiftedReference(0, b.addr(0x4002), b.addr(0x5002), 1);
|
||||
|
@ -321,7 +321,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
DBTraceReference sftRef;
|
||||
DBTraceReference regRef;
|
||||
DBTraceReference stkRef;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
memRef = b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000), 3);
|
||||
offRef = b.addOffsetReference(0, b.addr(0x4000), b.addr(0x5001), false, 20);
|
||||
sftRef = b.addShiftedReference(0, b.addr(0x4000), b.addr(0x5002), 1);
|
||||
|
@ -346,7 +346,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
DBTraceReference diffFrom;
|
||||
DBTraceReference diffTo;
|
||||
DBTraceReference diffOpIndex;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
at0 = b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000), 0);
|
||||
b.addMemoryReference(15, b.addr(0x4000), b.addr(0x5000), 0); // Lost
|
||||
at10 = b.addMemoryReference(10, b.addr(0x4000), b.addr(0x5000), 0);
|
||||
|
@ -374,7 +374,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
// TODO: See how ReferenceDBManager select new primary on deletion
|
||||
DBTraceReference memRef;
|
||||
DBTraceReference offRef;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
memRef = b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000));
|
||||
offRef = b.addOffsetReference(0, b.addr(0x4000), b.addr(0x5001), false, 20);
|
||||
|
||||
|
@ -396,7 +396,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
@Test
|
||||
public void testGetFlowReferencesFrom() {
|
||||
DBTraceReference flowRef;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
flowRef = manager.addMemoryReference(Lifespan.nowOn(0), b.addr(0x4000), b.addr(0x4001),
|
||||
RefType.FLOW, SourceType.DEFAULT, -1);
|
||||
b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000));
|
||||
|
@ -410,7 +410,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
@Test
|
||||
public void testClearReferencesFrom() {
|
||||
DBTraceReference keptRef;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000), 3);
|
||||
b.addOffsetReference(0, b.addr(0x4000), b.addr(0x5001), false, 20);
|
||||
b.addShiftedReference(0, b.addr(0x4000), b.addr(0x5002), 1);
|
||||
|
@ -422,7 +422,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
assertEquals(5, manager.getReferencesFrom(0, b.addr(0x4000)).size());
|
||||
assertEquals(1, manager.getReferencesFrom(0, b.addr(0x4001)).size());
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.clearReferencesFrom(Lifespan.nowOn(10), b.range(0x3000, 0x4000));
|
||||
}
|
||||
|
||||
|
@ -431,7 +431,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
assertEquals(Lifespan.span(0, 9),
|
||||
manager.getReferencesFrom(0, b.addr(0x4000)).iterator().next().getLifespan());
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.clearReferencesFrom(Lifespan.nowOn(0), b.range(0x3000, 0x4000));
|
||||
}
|
||||
|
||||
|
@ -447,7 +447,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
DBTraceReference memRef;
|
||||
DBTraceReference offRef;
|
||||
DBTraceReference sftRef;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
memRef = b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000));
|
||||
offRef = b.addOffsetReference(0, b.addr(0x4001), b.addr(0x5000), false, 20);
|
||||
sftRef = b.addShiftedReference(0, b.addr(0x4002), b.addr(0x5000), 1);
|
||||
|
@ -464,7 +464,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
@Test
|
||||
public void testClearReferencesTo() {
|
||||
DBTraceReference keptRef;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000), 3);
|
||||
b.addOffsetReference(0, b.addr(0x4001), b.addr(0x5000), false, 20);
|
||||
b.addShiftedReference(0, b.addr(0x4002), b.addr(0x5000), 1);
|
||||
|
@ -474,7 +474,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
assertEquals(3, manager.getReferencesTo(0, b.addr(0x5000)).size());
|
||||
assertEquals(1, manager.getReferencesTo(0, b.addr(0x5001)).size());
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.clearReferencesTo(Lifespan.nowOn(10), b.range(0x4000, 0x5000));
|
||||
}
|
||||
|
||||
|
@ -483,7 +483,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
assertEquals(Lifespan.span(0, 9),
|
||||
manager.getReferencesTo(0, b.addr(0x5000)).iterator().next().getLifespan());
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.clearReferencesTo(Lifespan.nowOn(0), b.range(0x4000, 0x5000));
|
||||
}
|
||||
|
||||
|
@ -496,7 +496,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
|
||||
@Test
|
||||
public void testGetReferenceSourcesAndDestinations() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000));
|
||||
b.addOffsetReference(0, b.addr(0x4001), b.addr(0x5001), false, 20);
|
||||
b.addShiftedReference(0, b.addr(0x4002), b.addr(0x5002), 1);
|
||||
|
@ -518,7 +518,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
assertEquals(0, manager.getReferenceCountFrom(0, b.addr(0x4000)));
|
||||
assertEquals(0, manager.getReferenceCountTo(0, b.addr(0x5000)));
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000));
|
||||
b.addOffsetReference(0, b.addr(0x4000), b.addr(0x5001), false, 20);
|
||||
b.addShiftedReference(0, b.addr(0x4000), b.addr(0x5002), 1);
|
||||
|
@ -536,7 +536,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
|
||||
@Test
|
||||
public void testSaveAndLoad() throws CancelledException, IOException, VersionException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000));
|
||||
b.addOffsetReference(0, b.addr(0x4000), b.addr(0x5001), false, 20);
|
||||
b.addShiftedReference(0, b.addr(0x4000), b.addr(0x5002), 1);
|
||||
|
@ -573,7 +573,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
|
||||
@Test
|
||||
public void testUndo() throws IOException {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.addMemoryReference(0, b.addr(0x4000), b.addr(0x5000));
|
||||
b.addOffsetReference(0, b.addr(0x4000), b.addr(0x5001), false, 20);
|
||||
b.addShiftedReference(0, b.addr(0x4000), b.addr(0x5002), 1);
|
||||
|
@ -592,7 +592,7 @@ public class DBTraceReferenceManagerTest extends AbstractGhidraHeadlessIntegrati
|
|||
|
||||
@Test
|
||||
public void testOverlaySpaces() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
AddressSpace os = b.trace.getMemoryManager()
|
||||
.createOverlayAddressSpace("test",
|
||||
b.trace.getBaseAddressFactory().getDefaultAddressSpace());
|
||||
|
|
|
@ -24,6 +24,7 @@ import java.util.Set;
|
|||
|
||||
import org.junit.*;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.lifecycle.Unfinished;
|
||||
import ghidra.program.model.address.GlobalNamespace;
|
||||
import ghidra.program.model.symbol.Namespace;
|
||||
|
@ -34,7 +35,6 @@ import ghidra.trace.model.Lifespan;
|
|||
import ghidra.trace.model.symbol.TraceLabelSymbol;
|
||||
import ghidra.trace.model.thread.TraceThread;
|
||||
import ghidra.trace.util.TraceRegisterUtils;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
import ghidra.util.exception.*;
|
||||
|
||||
public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationTest
|
||||
|
@ -108,7 +108,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
@Test
|
||||
public void testAddLabels() throws Exception {
|
||||
DBTraceNamespaceSymbol global = manager.getGlobalNamespace();
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceThread thread = b.getOrAddThread("Thread1", 0);
|
||||
|
||||
manager.labels()
|
||||
|
@ -140,7 +140,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
public void testAddNamespaces() throws Exception {
|
||||
DBTraceNamespaceSymbol top;
|
||||
DBTraceNamespaceSymbol a;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
top = manager.namespaces()
|
||||
.add("top", manager.getGlobalNamespace(),
|
||||
SourceType.USER_DEFINED);
|
||||
|
@ -169,7 +169,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
public void testAddClasses() throws Exception {
|
||||
DBTraceClassSymbol classA;
|
||||
DBTraceClassSymbol nested;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
classA =
|
||||
manager.classes().add("A", manager.getGlobalNamespace(), SourceType.USER_DEFINED);
|
||||
assertEquals(1, manager.classStore.getRecordCount());
|
||||
|
@ -209,7 +209,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
DBTraceClassSymbol clsA;
|
||||
TraceLabelSymbol lab1;
|
||||
TraceLabelSymbol lab2;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED);
|
||||
clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED);
|
||||
lab1 = manager.labels()
|
||||
|
@ -240,7 +240,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
DBTraceClassSymbol clsA;
|
||||
TraceLabelSymbol lab1;
|
||||
TraceLabelSymbol lab2;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED);
|
||||
clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED);
|
||||
lab1 = manager.labels()
|
||||
|
@ -281,7 +281,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
DBTraceClassSymbol clsA;
|
||||
TraceLabelSymbol lab1;
|
||||
TraceLabelSymbol lab2;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED);
|
||||
clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED);
|
||||
lab1 = manager.labels()
|
||||
|
@ -310,7 +310,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
DBTraceClassSymbol clsA;
|
||||
TraceLabelSymbol lab1;
|
||||
TraceLabelSymbol lab2;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED);
|
||||
clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED);
|
||||
lab1 = manager.labels()
|
||||
|
@ -332,7 +332,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
DBTraceNamespaceSymbol global = manager.getGlobalNamespace();
|
||||
DBTraceNamespaceSymbol nsA;
|
||||
DBTraceClassSymbol clsA;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED);
|
||||
clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED);
|
||||
manager.labels().create(0, null, b.addr(0x4000), "LAB1", nsA, SourceType.USER_DEFINED);
|
||||
|
@ -352,7 +352,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
DBTraceNamespaceSymbol global = manager.getGlobalNamespace();
|
||||
DBTraceNamespaceSymbol nsA;
|
||||
DBTraceClassSymbol clsA;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED);
|
||||
clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED);
|
||||
manager.labels().create(0, null, b.addr(0x4000), "LAB1", nsA, SourceType.USER_DEFINED);
|
||||
|
@ -372,7 +372,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
DBTraceClassSymbol clsA;
|
||||
TraceLabelSymbol lab1;
|
||||
TraceLabelSymbol lab2;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED);
|
||||
clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED);
|
||||
lab1 = manager.labels()
|
||||
|
@ -394,7 +394,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
DBTraceClassSymbol clsA;
|
||||
TraceLabelSymbol lab1;
|
||||
TraceLabelSymbol lab2;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED);
|
||||
clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED);
|
||||
lab1 = manager.labels()
|
||||
|
@ -421,7 +421,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
TraceLabelSymbol lab2;
|
||||
TraceLabelSymbol lab3;
|
||||
TraceLabelSymbol lab4;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Thread1", 0);
|
||||
nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED);
|
||||
clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED);
|
||||
|
@ -463,7 +463,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
public void testGetGlobalWithNameAt() throws InvalidInputException {
|
||||
DBTraceNamespaceSymbol global = manager.getGlobalNamespace();
|
||||
TraceLabelSymbol lab1;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
lab1 = manager.labels()
|
||||
.create(4, null, b.addr(0x4000), "LAB1", global,
|
||||
SourceType.USER_DEFINED);
|
||||
|
@ -484,7 +484,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
TraceLabelSymbol lab2;
|
||||
TraceLabelSymbol lab3;
|
||||
TraceLabelSymbol lab4;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Thread1", 0);
|
||||
nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED);
|
||||
clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED);
|
||||
|
@ -532,7 +532,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
TraceLabelSymbol lab1;
|
||||
TraceLabelSymbol lab2;
|
||||
TraceLabelSymbol lab3;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED);
|
||||
clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED);
|
||||
lab1 = manager.labels()
|
||||
|
@ -565,7 +565,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
DBTraceClassSymbol clsA;
|
||||
TraceLabelSymbol lab2;
|
||||
TraceLabelSymbol lab3;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Thread1", 0);
|
||||
nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED);
|
||||
clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED);
|
||||
|
@ -581,7 +581,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
nsA, SourceType.USER_DEFINED);
|
||||
}
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
lab3.delete();
|
||||
assertEquals(Set.of(lab2), new HashSet<>(manager.allSymbols().getChildren(clsA)));
|
||||
|
||||
|
@ -601,7 +601,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
TraceLabelSymbol lab2;
|
||||
TraceLabelSymbol lab3;
|
||||
TraceLabelSymbol lab4;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Thread1", 0);
|
||||
nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED);
|
||||
clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED);
|
||||
|
@ -646,7 +646,7 @@ public class DBTraceSymbolManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
TraceLabelSymbol lab2;
|
||||
TraceLabelSymbol lab3;
|
||||
TraceLabelSymbol lab4;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = b.getOrAddThread("Thread1", 0);
|
||||
nsA = manager.namespaces().add("a", global, SourceType.USER_DEFINED);
|
||||
clsA = manager.classes().add("A", nsA, SourceType.USER_DEFINED);
|
||||
|
|
|
@ -24,6 +24,7 @@ import java.util.stream.Collectors;
|
|||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import db.Transaction;
|
||||
import generic.Unique;
|
||||
import ghidra.dbg.target.schema.SchemaContext;
|
||||
import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName;
|
||||
|
@ -36,7 +37,8 @@ import ghidra.trace.model.Lifespan;
|
|||
import ghidra.trace.model.target.*;
|
||||
import ghidra.trace.model.target.TraceObject.ConflictResolution;
|
||||
import ghidra.trace.model.thread.TraceObjectThread;
|
||||
import ghidra.util.database.*;
|
||||
import ghidra.util.database.DBAnnotatedObject;
|
||||
import ghidra.util.database.DBCachedObjectStore;
|
||||
|
||||
public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationTest {
|
||||
public static final String XML_CTX = """
|
||||
|
@ -103,7 +105,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
}
|
||||
|
||||
protected void populateModel(int targetCount) {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
TraceObjectKeyPath pathTargets = TraceObjectKeyPath.of("Targets");
|
||||
targetContainer = manager.createObject(pathTargets);
|
||||
|
@ -138,7 +140,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
*/
|
||||
@Test(expected = IllegalStateException.class)
|
||||
public void testCreateObjectWithoutRootErr() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.createObject(TraceObjectKeyPath.of("Test"));
|
||||
}
|
||||
}
|
||||
|
@ -149,7 +151,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
*/
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void testCreateObjectAsRootErrNoSchema() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.createObject(TraceObjectKeyPath.of());
|
||||
}
|
||||
}
|
||||
|
@ -160,7 +162,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
*/
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void testCreateObjectAsRootErrRootExists() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.createRootObject(ctx.getSchema(new SchemaName("Session")));
|
||||
manager.createObject(TraceObjectKeyPath.of());
|
||||
}
|
||||
|
@ -168,7 +170,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testCreateRoot() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.createRootObject(ctx.getSchema(new SchemaName("Session")));
|
||||
}
|
||||
}
|
||||
|
@ -178,7 +180,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
*/
|
||||
@Test(expected = IllegalStateException.class)
|
||||
public void testCreate2ndRootErr() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.createRootObject(ctx.getSchema(new SchemaName("Session")));
|
||||
manager.createRootObject(ctx.getSchema(new SchemaName("Session")));
|
||||
}
|
||||
|
@ -189,7 +191,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
assertNull(manager.getRootObject());
|
||||
assertNull(manager.getRootSchema());
|
||||
TraceObjectValue value;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
value = manager.createRootObject(ctx.getSchema(new SchemaName("Session")));
|
||||
}
|
||||
assertEquals(value.getValue(), manager.getRootObject());
|
||||
|
@ -199,7 +201,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
@Test
|
||||
public void testCreateObject() {
|
||||
TraceObject obj;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.createRootObject(ctx.getSchema(new SchemaName("Session")));
|
||||
obj = manager.createObject(TraceObjectKeyPath.of("Targets"));
|
||||
}
|
||||
|
@ -208,7 +210,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testGetObjectsByCanonicalPath() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
targetContainer = manager.createObject(TraceObjectKeyPath.of("Targets"));
|
||||
}
|
||||
|
@ -223,7 +225,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
public void testGetValuesByPathRootOnly() {
|
||||
assertEquals(0, manager.getValuePaths(Lifespan.ALL, PathPredicates.pattern()).count());
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.createRootObject(ctx.getSchema(new SchemaName("Session")));
|
||||
}
|
||||
assertEquals(1, manager.getValuePaths(Lifespan.ALL, PathPredicates.pattern()).count());
|
||||
|
@ -257,7 +259,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testGetRangeValues() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
targetContainer = manager.createObject(TraceObjectKeyPath.parse("Targets"));
|
||||
root.setAttribute(Lifespan.ALL, "Targets", targetContainer);
|
||||
|
@ -300,7 +302,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
public void testQueryAllInterface() {
|
||||
populateModel(3);
|
||||
TraceObject thread;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread = manager.createObject(TraceObjectKeyPath.parse("Targets[0].Threads[0]"));
|
||||
thread.insert(Lifespan.nowOn(0), ConflictResolution.DENY);
|
||||
}
|
||||
|
@ -318,7 +320,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
populateModel(3);
|
||||
assertEquals(5, manager.getAllObjects().size());
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
manager.clear();
|
||||
}
|
||||
assertEquals(0, manager.getAllObjects().size());
|
||||
|
@ -341,11 +343,11 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testAbort() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
populateModel(3);
|
||||
assertEquals(5, manager.getAllObjects().size());
|
||||
|
||||
tid.abort();
|
||||
tx.abort();
|
||||
}
|
||||
|
||||
assertEquals(0, manager.getAllObjects().size());
|
||||
|
@ -356,7 +358,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testObjectGetTrace() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
}
|
||||
assertEquals(b.trace, root.getTrace());
|
||||
|
@ -364,7 +366,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testIsRoot() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
targetContainer = manager.createObject(TraceObjectKeyPath.of("Targets"));
|
||||
}
|
||||
|
@ -412,7 +414,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
@Test
|
||||
public void testGetInterfaces() {
|
||||
TraceObject thread;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
|
||||
thread = manager.createObject(TraceObjectKeyPath.parse("Targets[0].Threads[0]"));
|
||||
|
@ -425,7 +427,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
@Test
|
||||
public void testQueryInterface() {
|
||||
TraceObject thread;
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
|
||||
thread = manager.createObject(TraceObjectKeyPath.parse("Targets[0].Threads[0]"));
|
||||
|
@ -556,7 +558,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testSetValue_TruncatesOrDeletes() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
TraceObjectValue valA = root.setValue(Lifespan.ALL, "a", 1);
|
||||
TraceObjectValue valB = root.setValue(Lifespan.at(0), "b", 2);
|
||||
|
@ -601,7 +603,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testSetValue_AbutLeftCoalesces() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
TraceObjectValue valA = root.setValue(Lifespan.span(0, 9), "a", 1);
|
||||
|
||||
|
@ -613,7 +615,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testSetRangeValue_AbutLeftCoalesces() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
TraceObjectValue valA =
|
||||
root.setValue(Lifespan.span(0, 9), "a", b.range(0x1000, 0x1fff));
|
||||
|
@ -627,7 +629,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testSetValue_AbutRightCoalesces() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
TraceObjectValue valA = root.setValue(Lifespan.span(0, 9), "a", 1);
|
||||
|
||||
|
@ -639,7 +641,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testSetValue_IntersectLeftCoalesces() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
TraceObjectValue valA = root.setValue(Lifespan.span(0, 9), "a", 1);
|
||||
|
||||
|
@ -651,7 +653,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testSetValue_IntersectRightCoalesces() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
TraceObjectValue valA = root.setValue(Lifespan.span(0, 9), "a", 1);
|
||||
|
||||
|
@ -663,7 +665,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testSetValue_EqualSpansCoalesces() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
TraceObjectValue valA = root.setValue(Lifespan.span(0, 9), "a", 1);
|
||||
|
||||
|
@ -675,7 +677,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testSetValue_ContainsCoalesces() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
TraceObjectValue valA = root.setValue(Lifespan.span(0, 9), "a", 1);
|
||||
|
||||
|
@ -691,7 +693,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testSetValue_SameLeftCoalesces() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
TraceObjectValue valA = root.setValue(Lifespan.span(0, 9), "a", 1);
|
||||
|
||||
|
@ -707,7 +709,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testSetValue_SameRightCoalesces() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
TraceObjectValue valA = root.setValue(Lifespan.span(0, 9), "a", 1);
|
||||
|
||||
|
@ -723,7 +725,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testSetValue_ConnectDisjointCoalesces() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
TraceObjectValue valA = root.setValue(Lifespan.span(0, 9), "a", 1);
|
||||
TraceObjectValue valB = root.setValue(Lifespan.span(20, 29), "a", 1);
|
||||
|
@ -739,7 +741,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testSetValuePrimitives() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
|
||||
root.setValue(Lifespan.ALL, "aBool", true);
|
||||
|
@ -819,7 +821,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testSetValue_NullContainedTruncates() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
assertNull(root.setValue(Lifespan.span(0, 9), "a", null));
|
||||
assertEquals(0, root.getValues().size());
|
||||
|
@ -839,7 +841,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testSetValue_NullSameDeletes() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
assertNotNull(root.setValue(Lifespan.span(0, 9), "a", 1));
|
||||
assertEquals(1, root.getValues().size());
|
||||
|
@ -851,7 +853,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testSetAttribute() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
|
||||
root.setAttribute(Lifespan.ALL, "myAttribute", 1234);
|
||||
|
@ -882,7 +884,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
assertEquals(t1, t1.getAttribute(1, "self").getValue());
|
||||
assertEquals(t1, root.getValue(1, "curTarget").getValue());
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
t1.delete();
|
||||
}
|
||||
|
||||
|
@ -906,7 +908,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
assertEquals(2, targetContainer.getValues().size());
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
targetContainer.delete();
|
||||
}
|
||||
|
||||
|
@ -920,7 +922,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testValueSetLifespanTruncatesOrDeletes() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceObjectValue rootVal =
|
||||
manager.createRootObject(ctx.getSchema(new SchemaName("Session")));
|
||||
root = rootVal.getChild();
|
||||
|
@ -970,7 +972,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testValueSetLifespan_Coalesces() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
root = manager.createRootObject(ctx.getSchema(new SchemaName("Session"))).getChild();
|
||||
|
||||
TraceObjectValue valA = root.setValue(Lifespan.span(0, 9), "a", 1);
|
||||
|
@ -985,7 +987,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testIsCanonical() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceObjectValue rootVal =
|
||||
manager.createRootObject(ctx.getSchema(new SchemaName("Session")));
|
||||
root = rootVal.getChild();
|
||||
|
@ -1007,7 +1009,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testValueDelete() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceObjectValue rootVal =
|
||||
manager.createRootObject(ctx.getSchema(new SchemaName("Session")));
|
||||
root = rootVal.getChild();
|
||||
|
@ -1032,7 +1034,7 @@ public class DBTraceObjectManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
|
||||
@Test
|
||||
public void testValueTruncateOrDelete() {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
TraceObjectValue rootVal =
|
||||
manager.createRootObject(ctx.getSchema(new SchemaName("Session")));
|
||||
root = rootVal.getChild();
|
||||
|
|
|
@ -17,10 +17,10 @@ package ghidra.trace.database.thread;
|
|||
|
||||
import org.junit.Before;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.dbg.target.schema.SchemaContext;
|
||||
import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName;
|
||||
import ghidra.dbg.target.schema.XmlSchemaContext;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
|
||||
public class DBTraceThreadManagerObjectTest extends DBTraceThreadManagerTest {
|
||||
|
||||
|
@ -42,7 +42,7 @@ public class DBTraceThreadManagerObjectTest extends DBTraceThreadManagerTest {
|
|||
" </schema>" + //
|
||||
"</context>");
|
||||
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
b.trace.getObjectManager().createRootObject(ctx.getSchema(new SchemaName("Session")));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,11 +21,11 @@ import java.util.Set;
|
|||
|
||||
import org.junit.*;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.test.AbstractGhidraHeadlessIntegrationTest;
|
||||
import ghidra.trace.database.ToyDBTraceBuilder;
|
||||
import ghidra.trace.model.Lifespan;
|
||||
import ghidra.trace.model.thread.TraceThread;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
import ghidra.util.exception.DuplicateNameException;
|
||||
|
||||
public class DBTraceThreadManagerTest extends AbstractGhidraHeadlessIntegrationTest {
|
||||
|
@ -37,7 +37,7 @@ public class DBTraceThreadManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
TraceThread thread2;
|
||||
|
||||
protected void addThreads() throws Exception {
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
thread1 = threadManager.createThread("Threads[1]", 0);
|
||||
thread2 = threadManager.addThread("Threads[2]", Lifespan.span(0, 10));
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ public class DBTraceThreadManagerTest extends AbstractGhidraHeadlessIntegrationT
|
|||
@Test
|
||||
public void testAddThread() throws Exception {
|
||||
addThreads();
|
||||
try (UndoableTransaction tid = b.startTransaction()) {
|
||||
try (Transaction tx = b.startTransaction()) {
|
||||
// TODO: Let this work by expanding the life instead
|
||||
threadManager.createThread("Threads[1]", 1);
|
||||
fail();
|
||||
|
|
|
@ -22,6 +22,7 @@ import java.util.List;
|
|||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import db.Transaction;
|
||||
import ghidra.app.plugin.processors.sleigh.SleighLanguage;
|
||||
import ghidra.program.model.lang.LanguageID;
|
||||
import ghidra.program.model.lang.LanguageNotFoundException;
|
||||
|
@ -29,7 +30,6 @@ import ghidra.test.AbstractGhidraHeadlessIntegrationTest;
|
|||
import ghidra.test.ToyProgramBuilder;
|
||||
import ghidra.trace.database.ToyDBTraceBuilder;
|
||||
import ghidra.trace.model.thread.TraceThread;
|
||||
import ghidra.util.database.UndoableTransaction;
|
||||
import ghidra.util.task.TaskMonitor;
|
||||
|
||||
public class TraceScheduleTest extends AbstractGhidraHeadlessIntegrationTest {
|
||||
|
@ -269,7 +269,7 @@ public class TraceScheduleTest extends AbstractGhidraHeadlessIntegrationTest {
|
|||
TraceSchedule time = TraceSchedule.parse("1:4;t0-3;t1-2.1");
|
||||
try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", ToyProgramBuilder._TOY64_BE)) {
|
||||
TraceThread t2;
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
tb.trace.getThreadManager().createThread("Threads[0]", 0);
|
||||
tb.trace.getThreadManager().createThread("Threads[1]", 0);
|
||||
t2 = tb.trace.getThreadManager().createThread("Threads[2]", 0);
|
||||
|
@ -298,7 +298,7 @@ public class TraceScheduleTest extends AbstractGhidraHeadlessIntegrationTest {
|
|||
TraceSchedule time = TraceSchedule.parse("1:4;t0-s3;t1-2.s1");
|
||||
try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", ToyProgramBuilder._TOY64_BE)) {
|
||||
TraceThread t2;
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
tb.trace.getThreadManager().createThread("Threads[0]", 0);
|
||||
tb.trace.getThreadManager().createThread("Threads[1]", 0);
|
||||
t2 = tb.trace.getThreadManager().createThread("Threads[2]", 0);
|
||||
|
@ -327,7 +327,7 @@ public class TraceScheduleTest extends AbstractGhidraHeadlessIntegrationTest {
|
|||
TraceSchedule time = TraceSchedule.parse("1:{r0=0x1234};4");
|
||||
try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) {
|
||||
TraceThread t2;
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
tb.trace.getThreadManager().createThread("Threads[0]", 0);
|
||||
tb.trace.getThreadManager().createThread("Threads[1]", 0);
|
||||
t2 = tb.trace.getThreadManager().createThread("Threads[2]", 0);
|
||||
|
@ -350,7 +350,7 @@ public class TraceScheduleTest extends AbstractGhidraHeadlessIntegrationTest {
|
|||
TestMachine machine = new TestMachine();
|
||||
TraceSchedule time = TraceSchedule.parse("1:4;t0-3;t1-2.1");
|
||||
try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) {
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
tb.trace.getThreadManager().createThread("Threads[0]", 0);
|
||||
tb.trace.getThreadManager().createThread("Threads[1]", 0);
|
||||
tb.trace.getThreadManager().createThread("Threads[2]", 0);
|
||||
|
@ -366,7 +366,7 @@ public class TraceScheduleTest extends AbstractGhidraHeadlessIntegrationTest {
|
|||
TraceSchedule time = TraceSchedule.parse("1:4;t0-3;t5-2.1");
|
||||
try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) {
|
||||
TraceThread t2;
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
tb.trace.getThreadManager().createThread("Threads[0]", 0);
|
||||
tb.trace.getThreadManager().createThread("Threads[1]", 0);
|
||||
t2 = tb.trace.getThreadManager().createThread("Threads[2]", 0);
|
||||
|
@ -382,7 +382,7 @@ public class TraceScheduleTest extends AbstractGhidraHeadlessIntegrationTest {
|
|||
TraceSchedule time = TraceSchedule.parse("1:4;t0-3;t1-2.1");
|
||||
try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) {
|
||||
TraceThread t2;
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
tb.trace.getThreadManager().createThread("Threads[0]", 0);
|
||||
tb.trace.getThreadManager().createThread("Threads[1]", 0);
|
||||
t2 = tb.trace.getThreadManager().createThread("Threads[2]", 0);
|
||||
|
@ -405,7 +405,7 @@ public class TraceScheduleTest extends AbstractGhidraHeadlessIntegrationTest {
|
|||
TraceSchedule time = TraceSchedule.parse("1:4;t0-3;t1-2.1");
|
||||
try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) {
|
||||
TraceThread t2;
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
tb.trace.getThreadManager().createThread("Threads[0]", 0);
|
||||
tb.trace.getThreadManager().createThread("Threads[1]", 0);
|
||||
t2 = tb.trace.getThreadManager().createThread("Threads[2]", 0);
|
||||
|
@ -426,7 +426,7 @@ public class TraceScheduleTest extends AbstractGhidraHeadlessIntegrationTest {
|
|||
TraceSchedule time = TraceSchedule.parse("1:4;t0-3;t1-2.1");
|
||||
try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) {
|
||||
TraceThread t2;
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
tb.trace.getThreadManager().createThread("Threads[0]", 0);
|
||||
tb.trace.getThreadManager().createThread("Threads[1]", 0);
|
||||
t2 = tb.trace.getThreadManager().createThread("Threads[2]", 0);
|
||||
|
@ -441,7 +441,7 @@ public class TraceScheduleTest extends AbstractGhidraHeadlessIntegrationTest {
|
|||
// TODO: Should parse require coalescing? Can't without passing a language...
|
||||
try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("test", "Toy:BE:64:default")) {
|
||||
TraceThread thread;
|
||||
try (UndoableTransaction tid = tb.startTransaction()) {
|
||||
try (Transaction tx = tb.startTransaction()) {
|
||||
thread = tb.trace.getThreadManager().createThread("Threads[0]", 0);
|
||||
}
|
||||
TraceSchedule time = TraceSchedule.parse("0");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue