Merge branch 'GP-3122_ghidra1_AutoTransaction'

This commit is contained in:
ghidra1 2023-02-28 14:53:27 -05:00
commit 725c752320
209 changed files with 1892 additions and 2054 deletions

View file

@ -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();
}

View file

@ -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);

View file

@ -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();

View file

@ -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());

View file

@ -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;

View file

@ -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

View file

@ -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

View file

@ -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);

View file

@ -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);
}

View file

@ -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(),

View file

@ -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"));
}

View file

@ -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");
}
/**

View file

@ -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");

View file

@ -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")));
}
}

View file

@ -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]"));
}

View file

@ -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());

View file

@ -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()

View file

@ -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());
}

View file

@ -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());

View file

@ -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));

View file

@ -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");

View file

@ -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");

View file

@ -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");

View file

@ -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());

View file

@ -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);

View file

@ -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));
}

View file

@ -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));

View file

@ -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();

View file

@ -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")));
}
}

View file

@ -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")));
}
}

View file

@ -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")));
}
}

View file

@ -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")));
}
}

View file

@ -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",

View file

@ -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();
}

View file

@ -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();

View file

@ -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();
}

View file

@ -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)));

View file

@ -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),

View file

@ -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");

View file

@ -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")));
}
}

View file

@ -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);

View file

@ -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);

View file

@ -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());

View file

@ -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);

View file

@ -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();

View file

@ -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")));
}
}

View file

@ -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();

View file

@ -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");