diff --git a/Ghidra/Debug/Debugger-isf/src/main/java/ghidra/dbg/isf/IsfServer.java b/Ghidra/Debug/Debugger-isf/src/main/java/ghidra/dbg/isf/IsfServer.java index 898c7d2bbf..9ada15876c 100644 --- a/Ghidra/Debug/Debugger-isf/src/main/java/ghidra/dbg/isf/IsfServer.java +++ b/Ghidra/Debug/Debugger-isf/src/main/java/ghidra/dbg/isf/IsfServer.java @@ -21,7 +21,6 @@ import java.net.Socket; import java.util.HashMap; import java.util.Map; -import db.DBConstants; import db.DBHandle; import generic.test.AbstractGTest; import ghidra.GhidraApplicationLayout; @@ -29,6 +28,7 @@ import ghidra.GhidraTestApplicationLayout; import ghidra.base.project.GhidraProject; import ghidra.framework.Application; import ghidra.framework.GhidraApplicationConfiguration; +import ghidra.framework.data.OpenMode; import ghidra.framework.model.DomainFile; import ghidra.framework.model.ProjectData; import ghidra.framework.store.db.PackedDatabase; @@ -139,7 +139,7 @@ public class IsfServer extends Thread { DBHandle dbh = db.openForUpdate(dummy); ProgramDB p = null; try { - p = new ProgramDB(dbh, DBConstants.UPDATE, dummy, this); + p = new ProgramDB(dbh, OpenMode.UPDATE, dummy, this); } catch (VersionException e) { if (!e.isUpgradable()) { @@ -151,7 +151,7 @@ public class IsfServer extends Thread { } dbh = db.openForUpdate(dummy); - p = new ProgramDB(dbh, DBConstants.UPGRADE, dummy, this); + p = new ProgramDB(dbh, OpenMode.UPGRADE, dummy, this); if (!p.isChanged()) { throw new RuntimeException(p + " uses an older version and was not upgraded."); @@ -161,8 +161,8 @@ public class IsfServer extends Thread { } public static void main(String[] args) throws FileNotFoundException, IOException { - GhidraApplicationLayout layout = new GhidraTestApplicationLayout( - new File(AbstractGTest.getTestDirectoryPath())); + GhidraApplicationLayout layout = + new GhidraTestApplicationLayout(new File(AbstractGTest.getTestDirectoryPath())); GhidraApplicationConfiguration config = new GhidraApplicationConfiguration(); config.setShowSplashScreen(false); Application.initializeApplication(layout, config); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/DBTrace.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/DBTrace.java index 8e820e3e74..c407376a93 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/DBTrace.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/DBTrace.java @@ -26,6 +26,7 @@ import db.DBHandle; import db.Transaction; import generic.depends.DependentService; import generic.depends.err.ServiceConstructionException; +import ghidra.framework.data.OpenMode; import ghidra.framework.model.DomainObjectChangeRecord; import ghidra.framework.options.Options; import ghidra.lifecycle.Internal; @@ -64,7 +65,8 @@ import ghidra.trace.util.*; import ghidra.trace.util.CopyOnWrite.WeakHashCowSet; import ghidra.trace.util.CopyOnWrite.WeakValueHashCowMap; import ghidra.util.*; -import ghidra.util.database.*; +import ghidra.util.database.DBCachedDomainObjectAdapter; +import ghidra.util.database.DBCachedObjectStoreFactory; import ghidra.util.datastruct.ListenerSet; import ghidra.util.exception.*; import ghidra.util.task.TaskMonitor; @@ -154,7 +156,7 @@ public class DBTrace extends DBCachedDomainObjectAdapter implements Trace, Trace public DBTrace(String name, CompilerSpec baseCompilerSpec, Object consumer) throws IOException, LanguageNotFoundException { - super(new DBHandle(), DBOpenMode.CREATE, TaskMonitor.DUMMY, name, DB_TIME_INTERVAL, + super(new DBHandle(), OpenMode.CREATE, TaskMonitor.DUMMY, name, DB_TIME_INTERVAL, DB_BUFFER_SIZE, consumer); this.storeFactory = new DBCachedObjectStoreFactory(this); @@ -167,7 +169,7 @@ public class DBTrace extends DBCachedDomainObjectAdapter implements Trace, Trace space -> getAddressSet(space)); try (Transaction tx = this.openTransaction("Create")) { - initOptions(DBOpenMode.CREATE); + initOptions(OpenMode.CREATE); init(); } catch (VersionException | CancelledException e) { @@ -189,7 +191,7 @@ public class DBTrace extends DBCachedDomainObjectAdapter implements Trace, Trace return new AddressSet(space.getMinAddress(), space.getMaxAddress()); } - public DBTrace(DBHandle dbh, DBOpenMode openMode, TaskMonitor monitor, Object consumer) + public DBTrace(DBHandle dbh, OpenMode openMode, TaskMonitor monitor, Object consumer) throws CancelledException, VersionException, IOException, LanguageNotFoundException { super(dbh, openMode, monitor, "Untitled", DB_TIME_INTERVAL, DB_BUFFER_SIZE, consumer); this.storeFactory = new DBCachedObjectStoreFactory(this); @@ -209,9 +211,9 @@ public class DBTrace extends DBCachedDomainObjectAdapter implements Trace, Trace programView = createProgramView(0); } - protected void initOptions(DBOpenMode openMode) throws IOException, CancelledException { + protected void initOptions(OpenMode openMode) throws IOException, CancelledException { Options traceInfo = getOptions(TRACE_INFO); - if (openMode == DBOpenMode.CREATE) { + if (openMode == OpenMode.CREATE) { traceInfo.setString(NAME, name); traceInfo.setDate(DATE_CREATED, new Date()); traceInfo.setString(BASE_LANGUAGE, baseLanguage.getLanguageID().getIdAsString()); @@ -659,9 +661,8 @@ public class DBTrace extends DBCachedDomainObjectAdapter implements Trace, Trace if (recordChanges) { traceChangeSet.sourceArchiveChanged(sourceArchiveID.getValue()); } - setChanged( - new TraceChangeRecord<>(TraceEvents.SOURCE_TYPE_ARCHIVE_CHANGED, null, - sourceArchiveID)); + setChanged(new TraceChangeRecord<>(TraceEvents.SOURCE_TYPE_ARCHIVE_CHANGED, null, + sourceArchiveID)); } public void sourceArchiveAdded(UniversalID sourceArchiveID) { @@ -684,8 +685,7 @@ public class DBTrace extends DBCachedDomainObjectAdapter implements Trace, Trace if (recordChanges) { traceChangeSet.dataTypeAdded(addedID); } - setChanged( - new TraceChangeRecord<>(TraceEvents.DATA_TYPE_ADDED, null, addedID, addedType)); + setChanged(new TraceChangeRecord<>(TraceEvents.DATA_TYPE_ADDED, null, addedID, addedType)); } public void dataTypeReplaced(long replacedID, DataTypePath replacedPath, DataTypePath newPath) { @@ -700,16 +700,16 @@ public class DBTrace extends DBCachedDomainObjectAdapter implements Trace, Trace if (recordChanges) { traceChangeSet.dataTypeChanged(movedID); } - setChanged(new TraceChangeRecord<>(TraceEvents.DATA_TYPE_MOVED, null, movedID, oldPath, - newPath)); + setChanged( + new TraceChangeRecord<>(TraceEvents.DATA_TYPE_MOVED, null, movedID, oldPath, newPath)); } public void dataTypeNameChanged(long renamedID, String oldName, String newName) { if (recordChanges) { traceChangeSet.dataTypeChanged(renamedID); } - setChanged(new TraceChangeRecord<>(TraceEvents.DATA_TYPE_RENAMED, null, renamedID, - oldName, newName)); + setChanged(new TraceChangeRecord<>(TraceEvents.DATA_TYPE_RENAMED, null, renamedID, oldName, + newName)); } public void dataTypeDeleted(long deletedID, DataTypePath deletedPath) { diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/DBTraceContentHandler.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/DBTraceContentHandler.java index 13cb0f7b31..4a24d5fcad 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/DBTraceContentHandler.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/DBTraceContentHandler.java @@ -22,15 +22,13 @@ import javax.swing.Icon; import db.DBHandle; import db.buffers.BufferFile; import db.buffers.ManagedBufferFile; -import ghidra.framework.data.DBWithUserDataContentHandler; -import ghidra.framework.data.DomainObjectMergeManager; +import ghidra.framework.data.*; import ghidra.framework.model.ChangeSet; import ghidra.framework.model.DomainObject; import ghidra.framework.store.*; import ghidra.trace.model.Trace; import ghidra.util.InvalidNameException; import ghidra.util.Msg; -import ghidra.util.database.DBOpenMode; import ghidra.util.exception.CancelledException; import ghidra.util.exception.VersionException; import ghidra.util.task.TaskMonitor; @@ -71,7 +69,7 @@ public class DBTraceContentHandler extends DBWithUserDataContentHandler try { bf = dbItem.open(version, minChangeVersion); dbh = new DBHandle(bf); - DBOpenMode openMode = DBOpenMode.READ_ONLY; + OpenMode openMode = OpenMode.IMMUTABLE; trace = new DBTrace(dbh, openMode, monitor, consumer); getTraceChangeSet(trace, bf); success = true; @@ -119,7 +117,7 @@ public class DBTraceContentHandler extends DBWithUserDataContentHandler try { bf = dbItem.open(version); dbh = new DBHandle(bf); - DBOpenMode openMode = okToUpgrade ? DBOpenMode.UPGRADE : DBOpenMode.UPDATE; + OpenMode openMode = okToUpgrade ? OpenMode.UPGRADE : OpenMode.UPDATE; trace = new DBTrace(dbh, openMode, monitor, consumer); getTraceChangeSet(trace, bf); trace.setTraceUserData(new DBTraceUserData(trace)); @@ -169,7 +167,7 @@ public class DBTraceContentHandler extends DBWithUserDataContentHandler try { bf = dbItem.openForUpdate(checkoutId); dbh = new DBHandle(bf, recover, monitor); - DBOpenMode openMode = okToUpgrade ? DBOpenMode.UPGRADE : DBOpenMode.UPDATE; + OpenMode openMode = okToUpgrade ? OpenMode.UPGRADE : OpenMode.UPDATE; trace = new DBTrace(dbh, openMode, monitor, consumer); if (checkoutId == FolderItem.DEFAULT_CHECKOUT_ID) { getTraceChangeSet(trace, bf); @@ -275,7 +273,7 @@ public class DBTraceContentHandler extends DBWithUserDataContentHandler try { bf = dbItem.open(toVer, fromVer); dbh = new DBHandle(bf); - DBOpenMode openMode = DBOpenMode.READ_ONLY; + OpenMode openMode = OpenMode.IMMUTABLE; trace = new DBTrace(dbh, openMode, null, this); return getTraceChangeSet(trace, bf); } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/address/DBTraceOverlaySpaceAdapter.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/address/DBTraceOverlaySpaceAdapter.java index e0b518a0d0..deb6676e0d 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/address/DBTraceOverlaySpaceAdapter.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/address/DBTraceOverlaySpaceAdapter.java @@ -23,6 +23,7 @@ import java.util.*; import java.util.concurrent.locks.ReadWriteLock; import db.*; +import ghidra.framework.data.OpenMode; import ghidra.program.database.ProgramAddressFactory; import ghidra.program.database.ProgramOverlayAddressSpace; import ghidra.program.model.address.Address; @@ -149,7 +150,7 @@ public class DBTraceOverlaySpaceAdapter implements DBTraceManager { protected final DBCachedObjectStore overlayStore; protected final DBCachedObjectIndex overlaysByName; - public DBTraceOverlaySpaceAdapter(DBHandle dbh, DBOpenMode openMode, ReadWriteLock lock, + public DBTraceOverlaySpaceAdapter(DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, DBTrace trace) throws VersionException, IOException { this.dbh = dbh; this.lock = lock; diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/bookmark/DBTraceBookmarkManager.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/bookmark/DBTraceBookmarkManager.java index e151bacd62..d8ee1722a7 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/bookmark/DBTraceBookmarkManager.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/bookmark/DBTraceBookmarkManager.java @@ -24,6 +24,7 @@ import java.util.concurrent.locks.ReadWriteLock; import javax.swing.Icon; import db.DBHandle; +import ghidra.framework.data.OpenMode; import ghidra.program.model.address.*; import ghidra.program.model.lang.Language; import ghidra.trace.database.DBTrace; @@ -39,7 +40,6 @@ import ghidra.trace.util.TraceChangeRecord; import ghidra.trace.util.TraceEvents; import ghidra.util.LockHold; import ghidra.util.Msg; -import ghidra.util.database.DBOpenMode; import ghidra.util.exception.VersionException; import ghidra.util.task.TaskMonitor; @@ -167,7 +167,7 @@ public class DBTraceBookmarkManager extends AbstractDBTraceSpaceBasedManager typesView = Collections.unmodifiableCollection(typesByName.values()); - public DBTraceBookmarkManager(DBHandle dbh, DBOpenMode openMode, ReadWriteLock lock, + public DBTraceBookmarkManager(DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, Language baseLanguage, DBTrace trace, DBTraceThreadManager threadManager) throws VersionException, IOException { super(NAME, dbh, openMode, lock, monitor, baseLanguage, trace, threadManager); @@ -182,8 +182,8 @@ public class DBTraceBookmarkManager extends AbstractDBTraceSpaceBasedManager m.addBookmark(lifespan, address, type, category, comment)); } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/breakpoint/DBTraceBreakpointManager.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/breakpoint/DBTraceBreakpointManager.java index a3478b23d3..26b16a9a03 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/breakpoint/DBTraceBreakpointManager.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/breakpoint/DBTraceBreakpointManager.java @@ -23,6 +23,7 @@ import java.util.concurrent.locks.ReadWriteLock; import db.DBHandle; import ghidra.dbg.target.TargetBreakpointLocation; +import ghidra.framework.data.OpenMode; import ghidra.program.model.address.*; import ghidra.program.model.lang.Language; import ghidra.trace.database.DBTrace; @@ -33,7 +34,6 @@ import ghidra.trace.model.Lifespan; import ghidra.trace.model.breakpoint.*; import ghidra.trace.model.thread.TraceThread; import ghidra.util.LockHold; -import ghidra.util.database.DBOpenMode; import ghidra.util.exception.DuplicateNameException; import ghidra.util.exception.VersionException; import ghidra.util.task.TaskMonitor; @@ -43,7 +43,7 @@ public class DBTraceBreakpointManager implements TraceBreakpointManager, DBTraceDelegatingManager { protected static final String NAME = "Breakpoint"; - public DBTraceBreakpointManager(DBHandle dbh, DBOpenMode openMode, ReadWriteLock lock, + public DBTraceBreakpointManager(DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, Language baseLanguage, DBTrace trace, DBTraceThreadManager threadManager) throws VersionException, IOException { super(NAME, dbh, openMode, lock, monitor, baseLanguage, trace, threadManager); @@ -129,8 +129,7 @@ public class DBTraceBreakpointManager .getObjectByPath(snap, path, TraceObjectBreakpointLocation.class); } try (LockHold hold = LockHold.lock(lock.readLock())) { - return getBreakpointsByPath(path) - .stream() + return getBreakpointsByPath(path).stream() .filter(b -> b.getLifespan().contains(snap)) .findAny() .orElse(null); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/context/DBTraceRegisterContextManager.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/context/DBTraceRegisterContextManager.java index bf11085214..83fc334ac4 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/context/DBTraceRegisterContextManager.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/context/DBTraceRegisterContextManager.java @@ -24,6 +24,7 @@ import java.util.concurrent.locks.ReadWriteLock; import db.DBHandle; import db.DBRecord; +import ghidra.framework.data.OpenMode; import ghidra.program.model.address.*; import ghidra.program.model.lang.*; import ghidra.program.model.listing.ProgramContext; @@ -40,15 +41,15 @@ import ghidra.trace.model.TraceAddressSnapRange; import ghidra.trace.model.context.TraceRegisterContextManager; import ghidra.trace.model.guest.TracePlatform; import ghidra.trace.model.thread.TraceThread; -import ghidra.util.database.*; +import ghidra.util.database.DBCachedObjectStore; +import ghidra.util.database.DBObjectColumn; import ghidra.util.database.annot.*; import ghidra.util.exception.VersionException; import ghidra.util.task.TaskMonitor; public class DBTraceRegisterContextManager - extends AbstractDBTraceSpaceBasedManager - implements TraceRegisterContextManager, - DBTraceDelegatingManager { + extends AbstractDBTraceSpaceBasedManager implements + TraceRegisterContextManager, DBTraceDelegatingManager { public static final String NAME = "RegisterContext"; @DBAnnotatedObjectInfo(version = 0) @@ -87,7 +88,7 @@ public class DBTraceRegisterContextManager protected final Map defaultContexts = new HashMap<>(); - public DBTraceRegisterContextManager(DBHandle dbh, DBOpenMode openMode, ReadWriteLock lock, + public DBTraceRegisterContextManager(DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, Language baseLanguage, DBTrace trace, DBTraceThreadManager threadManager, DBTracePlatformManager languageManager) throws VersionException, IOException { diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/data/DBTraceDataSettingsAdapter.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/data/DBTraceDataSettingsAdapter.java index 2c8fc4b18b..566a974547 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/data/DBTraceDataSettingsAdapter.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/data/DBTraceDataSettingsAdapter.java @@ -20,6 +20,7 @@ import java.util.concurrent.locks.ReadWriteLock; import db.DBHandle; import db.DBRecord; +import ghidra.framework.data.OpenMode; import ghidra.program.model.address.AddressSpace; import ghidra.program.model.lang.Language; import ghidra.trace.database.DBTrace; @@ -176,7 +177,7 @@ public class DBTraceDataSettingsAdapter } } - public DBTraceDataSettingsAdapter(DBHandle dbh, DBOpenMode openMode, ReadWriteLock lock, + public DBTraceDataSettingsAdapter(DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, Language baseLanguage, DBTrace trace, DBTraceThreadManager threadManager) throws IOException, VersionException { super(NAME, dbh, openMode, lock, monitor, baseLanguage, trace, threadManager, @@ -184,17 +185,16 @@ public class DBTraceDataSettingsAdapter } @Override - protected DBTraceDataSettingsSpace createSpace( - AddressSpace space, DBTraceSpaceEntry ent) throws VersionException, IOException { + protected DBTraceDataSettingsSpace createSpace(AddressSpace space, DBTraceSpaceEntry ent) + throws VersionException, IOException { return new DBTraceDataSettingsSpace( tableName(space, ent.getThreadKey(), ent.getFrameLevel()), trace.getStoreFactory(), lock, space, null, 0, dataType, dataFactory); } @Override - protected DBTraceDataSettingsSpace createRegisterSpace( - AddressSpace space, TraceThread thread, DBTraceSpaceEntry ent) - throws VersionException, IOException { + protected DBTraceDataSettingsSpace createRegisterSpace(AddressSpace space, TraceThread thread, + DBTraceSpaceEntry ent) throws VersionException, IOException { return new DBTraceDataSettingsSpace( tableName(space, ent.getThreadKey(), ent.getFrameLevel()), trace.getStoreFactory(), lock, space, thread, ent.getFrameLevel(), dataType, dataFactory); @@ -206,8 +206,7 @@ public class DBTraceDataSettingsAdapter } @Override - public DBTraceDataSettingsSpace getRegisterSpace(TraceThread thread, - boolean createIfAbsent) { + public DBTraceDataSettingsSpace getRegisterSpace(TraceThread thread, boolean createIfAbsent) { return (DBTraceDataSettingsSpace) super.getRegisterSpace(thread, createIfAbsent); } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/data/DBTraceDataTypeManager.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/data/DBTraceDataTypeManager.java index 53fd8690a9..832d6e0e50 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/data/DBTraceDataTypeManager.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/data/DBTraceDataTypeManager.java @@ -22,6 +22,7 @@ import java.util.concurrent.locks.ReadWriteLock; import db.DBHandle; import db.Transaction; +import ghidra.framework.data.OpenMode; import ghidra.framework.model.DomainFile; import ghidra.program.database.data.ProgramBasedDataTypeManagerDB; import ghidra.program.model.address.Address; @@ -33,7 +34,6 @@ import ghidra.trace.database.DBTraceManager; import ghidra.trace.model.data.TraceBasedDataTypeManager; import ghidra.util.InvalidNameException; import ghidra.util.UniversalID; -import ghidra.util.database.DBOpenMode; import ghidra.util.exception.CancelledException; import ghidra.util.exception.VersionException; import ghidra.util.task.TaskMonitor; @@ -46,11 +46,10 @@ public class DBTraceDataTypeManager extends ProgramBasedDataTypeManagerDB private static final String INSTANCE_TABLE_PREFIX = null; // placeholder only - public DBTraceDataTypeManager(DBHandle dbh, DBOpenMode openMode, ReadWriteLock lock, + public DBTraceDataTypeManager(DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, DBTrace trace) throws CancelledException, VersionException, IOException { - super(dbh, null, openMode.toInteger(), INSTANCE_TABLE_PREFIX, trace, trace.getLock(), - monitor); + super(dbh, null, openMode, INSTANCE_TABLE_PREFIX, trace, trace.getLock(), monitor); this.lock = lock; // TODO: nothing uses this local lock - not sure what its purpose is this.trace = trace; @@ -72,7 +71,7 @@ public class DBTraceDataTypeManager extends ProgramBasedDataTypeManagerDB } }, null, false, monitor); - if (openMode == DBOpenMode.CREATE) { + if (openMode == OpenMode.CREATE) { saveDataOrganization(); } } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/guest/DBTracePlatformManager.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/guest/DBTracePlatformManager.java index 078d97ad7e..6f93390b37 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/guest/DBTracePlatformManager.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/guest/DBTracePlatformManager.java @@ -20,6 +20,7 @@ import java.util.*; import java.util.concurrent.locks.ReadWriteLock; import db.DBHandle; +import ghidra.framework.data.OpenMode; import ghidra.lifecycle.Internal; import ghidra.program.model.address.*; import ghidra.program.model.lang.*; @@ -32,7 +33,8 @@ import ghidra.trace.model.guest.*; import ghidra.trace.util.TraceChangeRecord; import ghidra.trace.util.TraceEvents; import ghidra.util.LockHold; -import ghidra.util.database.*; +import ghidra.util.database.DBCachedObjectStore; +import ghidra.util.database.DBCachedObjectStoreFactory; import ghidra.util.exception.CancelledException; import ghidra.util.exception.VersionException; import ghidra.util.task.TaskMonitor; @@ -141,7 +143,7 @@ public class DBTracePlatformManager implements DBTraceManager, TracePlatformMana } }; - public DBTracePlatformManager(DBHandle dbh, DBOpenMode openMode, ReadWriteLock lock, + public DBTracePlatformManager(DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, CompilerSpec baseCompilerSpec, DBTrace trace) throws VersionException, IOException { this.dbh = dbh; diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/listing/DBTraceCodeManager.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/listing/DBTraceCodeManager.java index f8c46e1b79..67b0ae20c7 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/listing/DBTraceCodeManager.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/listing/DBTraceCodeManager.java @@ -15,7 +15,7 @@ */ package ghidra.trace.database.listing; -import static ghidra.lifecycle.Unfinished.TODO; +import static ghidra.lifecycle.Unfinished.*; import java.io.IOException; import java.math.BigInteger; @@ -25,6 +25,7 @@ import java.util.concurrent.locks.ReadWriteLock; import db.DBHandle; import db.DBRecord; +import ghidra.framework.data.OpenMode; import ghidra.lifecycle.Internal; import ghidra.program.model.address.*; import ghidra.program.model.lang.*; @@ -323,7 +324,7 @@ public class DBTraceCodeManager extends AbstractDBTraceSpaceBasedManager undefinedCache = new WeakValueHashMap<>(); - public DBTraceCodeManager(DBHandle dbh, DBOpenMode openMode, ReadWriteLock lock, + public DBTraceCodeManager(DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, Language baseLanguage, DBTrace trace, DBTraceThreadManager threadManager, DBTracePlatformManager platformManager, DBTraceDataTypeManager dataTypeManager, DBTraceOverlaySpaceAdapter overlayAdapter, diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/listing/DBTraceCommentAdapter.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/listing/DBTraceCommentAdapter.java index 624b0c5b50..188319f070 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/listing/DBTraceCommentAdapter.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/listing/DBTraceCommentAdapter.java @@ -22,6 +22,7 @@ import org.apache.commons.lang3.StringUtils; import db.DBHandle; import db.DBRecord; +import ghidra.framework.data.OpenMode; import ghidra.program.model.address.*; import ghidra.program.model.lang.Language; import ghidra.program.model.listing.CodeUnit; @@ -39,7 +40,8 @@ import ghidra.trace.model.*; import ghidra.trace.util.TraceChangeRecord; import ghidra.trace.util.TraceEvents; import ghidra.util.LockHold; -import ghidra.util.database.*; +import ghidra.util.database.DBCachedObjectStore; +import ghidra.util.database.DBObjectColumn; import ghidra.util.database.annot.*; import ghidra.util.exception.VersionException; import ghidra.util.task.TaskMonitor; @@ -106,7 +108,7 @@ public class DBTraceCommentAdapter /** * Construct the adapter */ - public DBTraceCommentAdapter(DBHandle dbh, DBOpenMode openMode, ReadWriteLock lock, + public DBTraceCommentAdapter(DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, Language baseLanguage, DBTrace trace, DBTraceThreadManager threadManager) throws IOException, VersionException { super("Comments", dbh, openMode, lock, monitor, baseLanguage, trace, threadManager, @@ -140,8 +142,8 @@ public class DBTraceCommentAdapter } String oldValue = null; try (LockHold hold = LockHold.lock(lock.writeLock())) { - for (DBTraceCommentEntry entry : reduce(TraceAddressSnapRangeQuery.intersecting( - new AddressRangeImpl(address, address), lifespan)).values()) { + for (DBTraceCommentEntry entry : reduce(TraceAddressSnapRangeQuery + .intersecting(new AddressRangeImpl(address, address), lifespan)).values()) { if (entry.type == commentType) { if (entry.getLifespan().contains(lifespan.lmin())) { oldValue = entry.comment; @@ -157,8 +159,7 @@ public class DBTraceCommentAdapter trace.setChanged(new TraceChangeRecord( TraceEvents.byCommentType(commentType), DBTraceSpaceKey.create(address.getAddressSpace(), null, 0), - new ImmutableTraceAddressSnapRange(address, lifespan), - oldValue, comment)); + new ImmutableTraceAddressSnapRange(address, lifespan), oldValue, comment)); } /** @@ -191,8 +192,8 @@ public class DBTraceCommentAdapter */ public String getComment(long snap, Address address, int commentType) { try (LockHold hold = LockHold.lock(lock.readLock())) { - for (DBTraceCommentEntry entry : reduce( - TraceAddressSnapRangeQuery.at(address, snap)).values()) { + for (DBTraceCommentEntry entry : reduce(TraceAddressSnapRangeQuery.at(address, snap)) + .values()) { if (entry.type != commentType) { continue; } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/map/AbstractDBTracePropertyMap.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/map/AbstractDBTracePropertyMap.java index 02058bacb3..b6cf7ba17b 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/map/AbstractDBTracePropertyMap.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/map/AbstractDBTracePropertyMap.java @@ -23,10 +23,12 @@ import java.util.Map.Entry; import java.util.concurrent.locks.ReadWriteLock; import db.*; +import ghidra.framework.data.OpenMode; import ghidra.program.model.address.*; import ghidra.program.model.lang.Language; import ghidra.trace.database.DBTrace; import ghidra.trace.database.DBTraceUtils; +import ghidra.trace.database.map.AbstractDBTracePropertyMap.DBTraceSaveablePropertyMapEntry; import ghidra.trace.database.map.DBTraceAddressSnapRangePropertyMapTree.AbstractDBTraceAddressSnapRangePropertyMapData; import ghidra.trace.database.map.DBTraceAddressSnapRangePropertyMapTree.TraceAddressSnapRangeQuery; import ghidra.trace.database.thread.DBTraceThreadManager; @@ -45,7 +47,7 @@ import ghidra.util.task.TaskMonitor; public abstract class AbstractDBTracePropertyMap> extends DBTraceAddressSnapRangePropertyMap implements TracePropertyMap { - public AbstractDBTracePropertyMap(String name, DBHandle dbh, DBOpenMode openMode, + public AbstractDBTracePropertyMap(String name, DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, Language baseLanguage, DBTrace trace, DBTraceThreadManager threadManager, Class dataType, DBTraceAddressSnapRangePropertyMapDataFactory dataFactory) @@ -120,17 +122,16 @@ public abstract class AbstractDBTracePropertyMap getPropertyMapRegisterSpace(TraceThread thread, - int frameLevel, boolean createIfAbsent) { - return (DBTracePropertyMapSpace) getForRegisterSpace(thread, frameLevel, - createIfAbsent); + public TracePropertyMapSpace getPropertyMapRegisterSpace(TraceThread thread, int frameLevel, + boolean createIfAbsent) { + return (DBTracePropertyMapSpace) getForRegisterSpace(thread, frameLevel, createIfAbsent); } @Override @@ -154,8 +154,7 @@ public abstract class AbstractDBTracePropertyMap + public class DBTracePropertyMapSpace extends DBTraceAddressSnapRangePropertyMapSpace implements TracePropertyMapSpace { public DBTracePropertyMapSpace(String tableName, DBCachedObjectStoreFactory storeFactory, @@ -242,7 +241,7 @@ public abstract class AbstractDBTracePropertyMap { - public DBTraceIntPropertyMap(String name, DBHandle dbh, DBOpenMode openMode, + public DBTraceIntPropertyMap(String name, DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, Language baseLanguage, DBTrace trace, DBTraceThreadManager threadManager) throws IOException, VersionException { super(name, dbh, openMode, lock, monitor, baseLanguage, trace, threadManager, @@ -287,7 +286,7 @@ public abstract class AbstractDBTracePropertyMap { - public DBTraceLongPropertyMap(String name, DBHandle dbh, DBOpenMode openMode, + public DBTraceLongPropertyMap(String name, DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, Language baseLanguage, DBTrace trace, DBTraceThreadManager threadManager) throws IOException, VersionException { super(name, dbh, openMode, lock, monitor, baseLanguage, trace, threadManager, @@ -340,7 +339,7 @@ public abstract class AbstractDBTracePropertyMap valueClass) throws IOException, VersionException { @@ -456,7 +455,7 @@ public abstract class AbstractDBTracePropertyMap { - public DBTraceStringPropertyMap(String name, DBHandle dbh, DBOpenMode openMode, + public DBTraceStringPropertyMap(String name, DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, Language baseLanguage, DBTrace trace, DBTraceThreadManager threadManager) throws IOException, VersionException { super(name, dbh, openMode, lock, monitor, baseLanguage, trace, threadManager, @@ -501,7 +500,7 @@ public abstract class AbstractDBTracePropertyMap { - public DBTraceVoidPropertyMap(String name, DBHandle dbh, DBOpenMode openMode, + public DBTraceVoidPropertyMap(String name, DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, Language baseLanguage, DBTrace trace, DBTraceThreadManager threadManager) throws IOException, VersionException { super(name, dbh, openMode, lock, monitor, baseLanguage, trace, threadManager, diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMap.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMap.java index f7b9b04b61..952848a4a3 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMap.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMap.java @@ -24,6 +24,7 @@ import java.util.function.Predicate; import db.DBHandle; import db.DBRecord; +import ghidra.framework.data.OpenMode; import ghidra.program.model.address.AddressSetView; import ghidra.program.model.address.AddressSpace; import ghidra.program.model.lang.Language; @@ -40,7 +41,6 @@ import ghidra.trace.model.stack.TraceStackFrame; import ghidra.trace.model.thread.TraceThread; import ghidra.util.UnionAddressSetView; import ghidra.util.database.DBCachedObjectStore; -import ghidra.util.database.DBOpenMode; import ghidra.util.database.spatial.SpatialMap; import ghidra.util.exception.VersionException; import ghidra.util.task.TaskMonitor; @@ -58,7 +58,7 @@ public class DBTraceAddressSnapRangePropertyMap dataType; protected final DBTraceAddressSnapRangePropertyMapDataFactory dataFactory; - public DBTraceAddressSnapRangePropertyMap(String name, DBHandle dbh, DBOpenMode openMode, + public DBTraceAddressSnapRangePropertyMap(String name, DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, Language baseLanguage, DBTrace trace, DBTraceThreadManager threadManager, Class dataType, DBTraceAddressSnapRangePropertyMapDataFactory dataFactory) @@ -84,23 +84,22 @@ public class DBTraceAddressSnapRangePropertyMap createRegisterSpace( - AddressSpace space, TraceThread thread, DBTraceSpaceEntry ent) - throws VersionException, IOException { + protected DBTraceAddressSnapRangePropertyMapSpace createRegisterSpace(AddressSpace space, + TraceThread thread, DBTraceSpaceEntry ent) throws VersionException, IOException { return new DBTraceAddressSnapRangePropertyMapSpace<>( tableName(space, ent.getThreadKey(), ent.getFrameLevel()), trace.getStoreFactory(), lock, space, thread, ent.getFrameLevel(), dataType, dataFactory); } @Override - public DBTraceAddressSnapRangePropertyMapSpace getRegisterSpace( - TraceThread thread, boolean createIfAbsent) { + public DBTraceAddressSnapRangePropertyMapSpace getRegisterSpace(TraceThread thread, + boolean createIfAbsent) { return getForRegisterSpace(thread, 0, createIfAbsent); } @Override - public DBTraceAddressSnapRangePropertyMapSpace getRegisterSpace( - TraceStackFrame frame, boolean createIfAbsent) { + public DBTraceAddressSnapRangePropertyMapSpace getRegisterSpace(TraceStackFrame frame, + boolean createIfAbsent) { return getForRegisterSpace(frame, createIfAbsent); } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/memory/DBTraceMemoryManager.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/memory/DBTraceMemoryManager.java index 06c0b35c25..85abd85268 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/memory/DBTraceMemoryManager.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/memory/DBTraceMemoryManager.java @@ -26,6 +26,7 @@ import java.util.function.Predicate; import db.DBHandle; import ghidra.dbg.target.TargetMemoryRegion; +import ghidra.framework.data.OpenMode; import ghidra.program.model.address.*; import ghidra.program.model.lang.Language; import ghidra.program.model.mem.MemBuffer; @@ -41,7 +42,6 @@ import ghidra.trace.model.stack.TraceStackFrame; import ghidra.trace.model.thread.TraceThread; import ghidra.util.MathUtilities; import ghidra.util.UnionAddressSetView; -import ghidra.util.database.DBOpenMode; import ghidra.util.exception.*; import ghidra.util.task.TaskMonitor; @@ -53,7 +53,7 @@ public class DBTraceMemoryManager extends AbstractDBTraceSpaceBasedManager flags) + public TraceMemoryRegion addRegion(String path, Lifespan lifespan, AddressRange range, + Collection flags) throws TraceOverlappedRegionException, DuplicateNameException { if (trace.getObjectManager().hasSchema()) { return trace.getObjectManager().addMemoryRegion(path, lifespan, range, flags); @@ -223,9 +222,8 @@ public class DBTraceMemoryManager extends AbstractDBTraceSpaceBasedManager true); } - return new UnionAddressSetView(getActiveMemorySpaces().stream() - .map(m -> m.getRegionsAddressSet(snap)) - .toList()); + return new UnionAddressSetView( + getActiveMemorySpaces().stream().map(m -> m.getRegionsAddressSet(snap)).toList()); } @Override @@ -397,9 +395,9 @@ public class DBTraceMemoryManager extends AbstractDBTraceSpaceBasedManager result = new ArrayList<>(); for (DBTraceMemorySpace space : memSpaces.values()) { - result.addAll(space.regionMapSpace - .reduce(TraceAddressSnapRangeQuery.added(from, to, space.space)) - .values()); + result.addAll( + space.regionMapSpace.reduce(TraceAddressSnapRangeQuery.added(from, to, space.space)) + .values()); } return result; } @@ -429,9 +427,9 @@ public class DBTraceMemoryManager extends AbstractDBTraceSpaceBasedManager { public static final String NAME = "Module"; - public DBTraceModuleManager(DBHandle dbh, DBOpenMode openMode, ReadWriteLock lock, + public DBTraceModuleManager(DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, Language baseLanguage, DBTrace trace) throws VersionException, IOException { super(NAME, dbh, openMode, lock, monitor, baseLanguage, trace, null); @@ -70,8 +70,8 @@ public class DBTraceModuleManager extends AbstractDBTraceSpaceBasedManager m.getLifespan().contains(snap)) .findAny() .orElse(null); @@ -163,8 +162,8 @@ public class DBTraceModuleManager extends AbstractDBTraceSpaceBasedManager m.getModulesAt(snap, address), Set.of()); + return delegateRead(address.getAddressSpace(), m -> m.getModulesAt(snap, address), + Set.of()); } @Override @@ -175,8 +174,8 @@ public class DBTraceModuleManager extends AbstractDBTraceSpaceBasedManager m.getModulesIntersecting(lifespan, range), Set.of()); + return delegateRead(range.getAddressSpace(), m -> m.getModulesIntersecting(lifespan, range), + Set.of()); } @Override @@ -191,8 +190,8 @@ public class DBTraceModuleManager extends AbstractDBTraceSpaceBasedManager m.getSectionsAt(snap, address), Set.of()); + return delegateRead(address.getAddressSpace(), m -> m.getSectionsAt(snap, address), + Set.of()); } @Override @@ -274,8 +273,7 @@ public class DBTraceModuleManager extends AbstractDBTraceSpaceBasedManager s.getModule().getLifespan().contains(snap)) .findAny() .orElse(null); diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/module/DBTraceStaticMappingManager.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/module/DBTraceStaticMappingManager.java index 90191a58f7..b6ccaaee3f 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/module/DBTraceStaticMappingManager.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/module/DBTraceStaticMappingManager.java @@ -21,6 +21,7 @@ import java.util.*; import java.util.concurrent.locks.ReadWriteLock; import db.DBHandle; +import ghidra.framework.data.OpenMode; import ghidra.program.model.address.Address; import ghidra.program.model.address.AddressRange; import ghidra.trace.database.DBTrace; @@ -49,7 +50,7 @@ public class DBTraceStaticMappingManager implements TraceStaticMappingManager, D protected final DBCachedObjectIndex mappingsByAddress; protected final Collection view; - public DBTraceStaticMappingManager(DBHandle dbh, DBOpenMode openMode, ReadWriteLock lock, + public DBTraceStaticMappingManager(DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, DBTrace trace, DBTraceOverlaySpaceAdapter overlayAdapter) throws VersionException, IOException { this.dbh = dbh; @@ -118,8 +119,9 @@ public class DBTraceStaticMappingManager implements TraceStaticMappingManager, D @Override public DBTraceStaticMapping findContaining(Address address, long snap) { - for (DBTraceStaticMapping mapping : mappingsByAddress.head(address, - true).descending().values()) { + for (DBTraceStaticMapping mapping : mappingsByAddress.head(address, true) + .descending() + .values()) { if (!mapping.getLifespan().contains(snap)) { continue; } @@ -134,8 +136,9 @@ public class DBTraceStaticMappingManager implements TraceStaticMappingManager, D @Override public DBTraceStaticMapping findAnyConflicting(AddressRange range, Lifespan lifespan, URL toProgramURL, String toAddress) { - for (DBTraceStaticMapping mapping : mappingsByAddress.head(range.getMaxAddress(), - true).descending().values()) { + for (DBTraceStaticMapping mapping : mappingsByAddress.head(range.getMaxAddress(), true) + .descending() + .values()) { if (!mapping.conflictsWith(range, lifespan, toProgramURL, toAddress)) { continue; } @@ -154,8 +157,9 @@ public class DBTraceStaticMappingManager implements TraceStaticMappingManager, D public Collection findAllOverlapping(AddressRange range, Lifespan lifespan) { Set result = new HashSet<>(); - for (DBTraceStaticMapping mapping : mappingsByAddress.head(range.getMaxAddress(), - true).descending().values()) { + for (DBTraceStaticMapping mapping : mappingsByAddress.head(range.getMaxAddress(), true) + .descending() + .values()) { if (!mapping.getLifespan().intersects(lifespan)) { continue; } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/program/DBTraceProgramViewFunctionManager.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/program/DBTraceProgramViewFunctionManager.java index a205b4f14d..96a007dc64 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/program/DBTraceProgramViewFunctionManager.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/program/DBTraceProgramViewFunctionManager.java @@ -19,6 +19,7 @@ import java.io.IOException; import java.util.*; import java.util.stream.Stream; +import ghidra.framework.data.OpenMode; import ghidra.program.database.ProgramDB; import ghidra.program.database.function.OverlappingFunctionException; import ghidra.program.model.address.Address; @@ -173,7 +174,7 @@ public class DBTraceProgramViewFunctionManager implements FunctionManager { } @Override - public void programReady(int openMode, int currentRevision, TaskMonitor monitor) + public void programReady(OpenMode openMode, int currentRevision, TaskMonitor monitor) throws IOException, CancelledException { throw new UnsupportedOperationException(); } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/property/DBTraceAddressPropertyManager.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/property/DBTraceAddressPropertyManager.java index 7915b70c93..adca7ad35b 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/property/DBTraceAddressPropertyManager.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/property/DBTraceAddressPropertyManager.java @@ -22,6 +22,7 @@ import java.util.concurrent.locks.ReadWriteLock; import db.DBHandle; import db.DBRecord; +import ghidra.framework.data.OpenMode; import ghidra.program.model.lang.Language; import ghidra.program.model.listing.ProgramUserData; import ghidra.trace.database.DBTrace; @@ -95,7 +96,7 @@ public class DBTraceAddressPropertyManager implements TraceAddressPropertyManage protected final TraceAddressPropertyManager apiView = new DBTraceAddressPropertyManagerApiView(this); - public DBTraceAddressPropertyManager(DBHandle dbh, DBOpenMode openMode, ReadWriteLock lock, + public DBTraceAddressPropertyManager(DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, Language baseLanguage, DBTrace trace, DBTraceThreadManager threadManager) throws VersionException, IOException { this.dbh = dbh; @@ -117,7 +118,7 @@ public class DBTraceAddressPropertyManager implements TraceAddressPropertyManage if (ent.map == null) { try { propertyMapsByName.put(ent.name, - ent.map = doCreateMap(ent.name, DBOpenMode.UPDATE, ent.getValueClass())); + ent.map = doCreateMap(ent.name, OpenMode.UPDATE, ent.getValueClass())); } catch (Exception e) { Msg.error(this, "Cannot load address property " + ent.name, e); @@ -130,7 +131,7 @@ public class DBTraceAddressPropertyManager implements TraceAddressPropertyManage } @SuppressWarnings("unchecked") - protected AbstractDBTracePropertyMap doCreateMap(String name, DBOpenMode openMode, + protected AbstractDBTracePropertyMap doCreateMap(String name, OpenMode openMode, Class valueClass) { String tableName = "AddressProperty: " + name; try { @@ -175,7 +176,7 @@ public class DBTraceAddressPropertyManager implements TraceAddressPropertyManage } DBTraceAddressPropertyEntry ent = propertyStore.create(); ent.set(name, valueClass); - AbstractDBTracePropertyMap map = doCreateMap(name, DBOpenMode.CREATE, valueClass); + AbstractDBTracePropertyMap map = doCreateMap(name, OpenMode.CREATE, valueClass); ent.map = map; propertyMapsByName.put(name, map); return map; diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/space/AbstractDBTraceSpaceBasedManager.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/space/AbstractDBTraceSpaceBasedManager.java index e5e0704167..5642d58f52 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/space/AbstractDBTraceSpaceBasedManager.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/space/AbstractDBTraceSpaceBasedManager.java @@ -24,6 +24,7 @@ import db.DBHandle; import db.DBRecord; import generic.CatenatedCollection; import ghidra.dbg.target.TargetRegisterContainer; +import ghidra.framework.data.OpenMode; import ghidra.program.model.address.*; import ghidra.program.model.lang.Language; import ghidra.trace.database.*; @@ -125,7 +126,7 @@ public abstract class AbstractDBTraceSpaceBasedManager allSpacesView = new CatenatedCollection<>(memSpacesView, regSpacesView); - public AbstractDBTraceSpaceBasedManager(String name, DBHandle dbh, DBOpenMode openMode, + public AbstractDBTraceSpaceBasedManager(String name, DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, Language baseLanguage, DBTrace trace, DBTraceThreadManager threadManager) throws IOException, VersionException { this.name = name; diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/stack/DBTraceStackManager.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/stack/DBTraceStackManager.java index ede8d1a816..8f03fdb0b2 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/stack/DBTraceStackManager.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/stack/DBTraceStackManager.java @@ -23,6 +23,7 @@ import db.DBHandle; import generic.NestedIterator; import ghidra.dbg.target.*; import ghidra.dbg.util.*; +import ghidra.framework.data.OpenMode; import ghidra.program.model.address.Address; import ghidra.program.model.address.AddressSetView; import ghidra.trace.database.DBTrace; @@ -57,10 +58,9 @@ public class DBTraceStackManager implements TraceStackManager, DBTraceManager { protected final DBCachedObjectStore frameStore; protected final DBCachedObjectIndex framesByPC; - public DBTraceStackManager(DBHandle dbh, DBOpenMode openMode, ReadWriteLock lock, + public DBTraceStackManager(DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, DBTrace trace, DBTraceThreadManager threadManager, - DBTraceOverlaySpaceAdapter overlayAdapter) - throws VersionException, IOException { + DBTraceOverlaySpaceAdapter overlayAdapter) throws VersionException, IOException { this.dbh = dbh; this.lock = lock; this.trace = trace; @@ -69,8 +69,8 @@ public class DBTraceStackManager implements TraceStackManager, DBTraceManager { DBCachedObjectStoreFactory factory = trace.getStoreFactory(); - stackStore = factory.getOrCreateCachedStore(DBTraceStack.TABLE_NAME, - DBTraceStack.class, (s, r) -> new DBTraceStack(this, s, r), true); + stackStore = factory.getOrCreateCachedStore(DBTraceStack.TABLE_NAME, DBTraceStack.class, + (s, r) -> new DBTraceStack(this, s, r), true); stacksByThreadSnap = stackStore.getIndex(ThreadSnap.class, DBTraceStack.THREAD_SNAP_COLUMN); frameStore = factory.getOrCreateCachedStore(DBTraceStackFrame.TABLE_NAME, @@ -113,9 +113,8 @@ public class DBTraceStackManager implements TraceStackManager, DBTraceManager { PathPredicates predicates = single(obj, TargetStack.class); if (createIfAbsent) { try (LockHold hold = trace.lockWrite()) { - TraceObjectStack stack = - trace.getObjectManager() - .getSuccessor(obj, predicates, snap, TraceObjectStack.class); + TraceObjectStack stack = trace.getObjectManager() + .getSuccessor(obj, predicates, snap, TraceObjectStack.class); if (stack != null) { return stack; } @@ -187,15 +186,16 @@ public class DBTraceStackManager implements TraceStackManager, DBTraceManager { // TODO: Should probably include a lifespan parameter? public Iterable getFramesIn(AddressSetView set) { if (trace.getObjectManager().hasSchema()) { - return () -> NestedIterator.start(set.iterator(), rng -> trace.getObjectManager() - .getObjectsIntersecting(Lifespan.ALL, rng, TargetStackFrame.PC_ATTRIBUTE_NAME, - TraceObjectStackFrame.class) - .iterator()); + return () -> NestedIterator.start(set.iterator(), + rng -> trace.getObjectManager() + .getObjectsIntersecting(Lifespan.ALL, rng, + TargetStackFrame.PC_ATTRIBUTE_NAME, TraceObjectStackFrame.class) + .iterator()); } - return () -> NestedIterator.start(set.iterator(), rng -> framesByPC - .sub(rng.getMinAddress(), true, rng.getMaxAddress(), true) - .values() - .iterator()); + return () -> NestedIterator.start(set.iterator(), + rng -> framesByPC.sub(rng.getMinAddress(), true, rng.getMaxAddress(), true) + .values() + .iterator()); } protected void deleteStack(DBTraceStack stack) { diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/symbol/DBTraceEquateManager.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/symbol/DBTraceEquateManager.java index 58a59b2a9d..6ba0aaaa1a 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/symbol/DBTraceEquateManager.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/symbol/DBTraceEquateManager.java @@ -22,6 +22,7 @@ import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReadWriteLock; import db.DBHandle; +import ghidra.framework.data.OpenMode; import ghidra.program.model.address.*; import ghidra.program.model.lang.Language; import ghidra.trace.database.DBTrace; @@ -47,10 +48,9 @@ public class DBTraceEquateManager extends AbstractDBTraceSpaceBasedManager equatesByName; protected final DBCachedObjectIndex equatesByValue; - public DBTraceEquateManager(DBHandle dbh, DBOpenMode openMode, ReadWriteLock lock, - TaskMonitor monitor, - Language baseLanguage, DBTrace trace, DBTraceThreadManager threadManager) - throws VersionException, IOException { + public DBTraceEquateManager(DBHandle dbh, OpenMode openMode, ReadWriteLock lock, + TaskMonitor monitor, Language baseLanguage, DBTrace trace, + DBTraceThreadManager threadManager) throws VersionException, IOException { super(NAME, dbh, openMode, lock, monitor, baseLanguage, trace, threadManager); DBCachedObjectStoreFactory factory = trace.getStoreFactory(); @@ -93,8 +93,7 @@ public class DBTraceEquateManager extends AbstractDBTraceSpaceBasedManager getReferenced(long snap, Address address, int operandIndex) { return delegateRead(address.getAddressSpace(), - m -> m.getReferenced(snap, address, operandIndex), - Collections.emptyList()); + m -> m.getReferenced(snap, address, operandIndex), Collections.emptyList()); } @Override diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/symbol/DBTraceReferenceManager.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/symbol/DBTraceReferenceManager.java index 650ab8b900..94bbbed54c 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/symbol/DBTraceReferenceManager.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/symbol/DBTraceReferenceManager.java @@ -22,6 +22,7 @@ import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReadWriteLock; import db.DBHandle; +import ghidra.framework.data.OpenMode; import ghidra.program.model.address.*; import ghidra.program.model.lang.Language; import ghidra.program.model.lang.Register; @@ -38,7 +39,6 @@ import ghidra.trace.model.symbol.TraceReference; import ghidra.trace.model.symbol.TraceReferenceManager; import ghidra.trace.model.thread.TraceThread; import ghidra.util.UnionAddressSetView; -import ghidra.util.database.DBOpenMode; import ghidra.util.exception.VersionException; import ghidra.util.task.TaskMonitor; @@ -48,7 +48,7 @@ public class DBTraceReferenceManager extends AbstractDBTraceSpaceBasedManager> symbolViews = new HashMap<>(); - public DBTraceSymbolManager(DBHandle dbh, DBOpenMode openMode, ReadWriteLock lock, + public DBTraceSymbolManager(DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, Language baseLanguage, DBTrace trace, DBTraceThreadManager threadManager, DBTraceDataTypeManager dataTypeManager, DBTraceOverlaySpaceAdapter overlayAdapter) throws VersionException, IOException { diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/target/DBTraceObjectManager.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/target/DBTraceObjectManager.java index b1067cd7ba..608b3620fa 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/target/DBTraceObjectManager.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/target/DBTraceObjectManager.java @@ -31,6 +31,7 @@ import ghidra.dbg.target.TargetObject; import ghidra.dbg.target.schema.*; import ghidra.dbg.target.schema.TargetObjectSchema.SchemaName; import ghidra.dbg.util.*; +import ghidra.framework.data.OpenMode; import ghidra.program.model.address.*; import ghidra.program.model.lang.Language; import ghidra.trace.database.DBTrace; @@ -68,8 +69,8 @@ import ghidra.util.task.TaskMonitor; public class DBTraceObjectManager implements TraceObjectManager, DBTraceManager { private static final int OBJECTS_CONTAINING_CACHE_SIZE = 100; - public static class DBTraceObjectSchemaDBFieldCodec extends - AbstractDBFieldCodec { + public static class DBTraceObjectSchemaDBFieldCodec + extends AbstractDBFieldCodec { public DBTraceObjectSchemaDBFieldCodec(Class objectType, Field field, int column) { super(SchemaContext.class, objectType, StringField.class, field, column); @@ -118,9 +119,7 @@ public class DBTraceObjectManager implements TraceObjectManager, DBTraceManager @DBAnnotatedColumn(SCHEMA_COLUMN_NAME) static DBObjectColumn SCHEMA_COLUMN; - @DBAnnotatedField( - column = CONTEXT_COLUMN_NAME, - codec = DBTraceObjectSchemaDBFieldCodec.class) + @DBAnnotatedField(column = CONTEXT_COLUMN_NAME, codec = DBTraceObjectSchemaDBFieldCodec.class) private SchemaContext context; @DBAnnotatedField(column = SCHEMA_COLUMN_NAME) private String schemaName; @@ -175,7 +174,7 @@ public class DBTraceObjectManager implements TraceObjectManager, DBTraceManager protected final Map, Set> // schemasByInterface = new HashMap<>(); - public DBTraceObjectManager(DBHandle dbh, DBOpenMode openMode, ReadWriteLock lock, + public DBTraceObjectManager(DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, Language baseLanguage, DBTrace trace) throws IOException, VersionException { this.lock = lock; @@ -185,16 +184,15 @@ public class DBTraceObjectManager implements TraceObjectManager, DBTraceManager schemaStore = factory.getOrCreateCachedStore(DBTraceObjectSchemaEntry.TABLE_NAME, DBTraceObjectSchemaEntry.class, DBTraceObjectSchemaEntry::new, true); loadRootSchema(); - objectStore = factory.getOrCreateCachedStore(DBTraceObject.TABLE_NAME, - DBTraceObject.class, (s, r) -> new DBTraceObject(this, s, r), true); + objectStore = factory.getOrCreateCachedStore(DBTraceObject.TABLE_NAME, DBTraceObject.class, + (s, r) -> new DBTraceObject(this, s, r), true); valueTree = new DBTraceObjectValueRStarTree(this, factory, DBTraceObjectValueData.TABLE_NAME, ValueSpace.INSTANCE, DBTraceObjectValueData.class, DBTraceObjectValueNode.class, false, 50); valueMap = valueTree.asSpatialMap(); - objectsByPath = - objectStore.getIndex(TraceObjectKeyPath.class, DBTraceObject.PATH_COLUMN); + objectsByPath = objectStore.getIndex(TraceObjectKeyPath.class, DBTraceObject.PATH_COLUMN); valueWbCache = new DBTraceObjectValueWriteBehindCache(this); @@ -297,12 +295,12 @@ public class DBTraceObjectManager implements TraceObjectManager, DBTraceManager return entry; } - protected DBTraceObjectValue doCreateValue(Lifespan lifespan, - DBTraceObject parent, String key, Object value) { + protected DBTraceObjectValue doCreateValue(Lifespan lifespan, DBTraceObject parent, String key, + Object value) { // Root is never in write-behind cache - DBTraceObjectValue entry = parent == null - ? doCreateValueData(lifespan, parent, key, value).getWrapper() - : valueWbCache.doCreateValue(lifespan, parent, key, value).getWrapper(); + DBTraceObjectValue entry = + parent == null ? doCreateValueData(lifespan, parent, key, value).getWrapper() + : valueWbCache.doCreateValue(lifespan, parent, key, value).getWrapper(); if (parent != null) { parent.notifyValueCreated(entry); } @@ -420,18 +418,17 @@ public class DBTraceObjectManager implements TraceObjectManager, DBTraceManager @Override public Stream getAllValues() { - return Stream.concat( - valueMap.values().stream().map(v -> v.getWrapper()), - StreamUtils.lock(lock.readLock(), - valueWbCache.streamAllValues().map(v -> v.getWrapper()))); + return Stream.concat(valueMap.values().stream().map(v -> v.getWrapper()), StreamUtils + .lock(lock.readLock(), valueWbCache.streamAllValues().map(v -> v.getWrapper()))); } protected Stream streamValuesIntersectingData(Lifespan span, AddressRange range, String entryKey) { return valueMap.reduce(TraceObjectValueQuery.intersecting( entryKey != null ? entryKey : EntryKeyDimension.INSTANCE.absoluteMin(), - entryKey != null ? entryKey : EntryKeyDimension.INSTANCE.absoluteMax(), - span, range)).values().stream(); + entryKey != null ? entryKey : EntryKeyDimension.INSTANCE.absoluteMax(), span, range)) + .values() + .stream(); } protected Stream streamValuesIntersectingBehind(Lifespan span, @@ -442,9 +439,10 @@ public class DBTraceObjectManager implements TraceObjectManager, DBTraceManager @Override public Collection getValuesIntersecting(Lifespan span, AddressRange range, String entryKey) { - return Stream.concat( - streamValuesIntersectingData(span, range, entryKey).map(v -> v.getWrapper()), - streamValuesIntersectingBehind(span, range, entryKey).map(v -> v.getWrapper())) + return Stream + .concat( + streamValuesIntersectingData(span, range, entryKey).map(v -> v.getWrapper()), + streamValuesIntersectingBehind(span, range, entryKey).map(v -> v.getWrapper())) .toList(); } @@ -460,9 +458,9 @@ public class DBTraceObjectManager implements TraceObjectManager, DBTraceManager public Collection getValuesAt(long snap, Address address, String entryKey) { - return Stream.concat( - streamValuesAtData(snap, address, entryKey).map(v -> v.getWrapper()), - streamValuesAtBehind(snap, address, entryKey).map(v -> v.getWrapper())) + return Stream + .concat(streamValuesAtData(snap, address, entryKey).map(v -> v.getWrapper()), + streamValuesAtBehind(snap, address, entryKey).map(v -> v.getWrapper())) .toList(); } @@ -474,16 +472,14 @@ public class DBTraceObjectManager implements TraceObjectManager, DBTraceManager } Class targetIf = TraceObjectInterfaceUtils.toTargetIf(ifClass); PathMatcher matcher = rootSchema.searchFor(targetIf, true); - return getValuePaths(span, matcher) - .filter(p -> { - TraceObject object = p.getDestination(getRootObject()); - if (object == null) { - Msg.error(this, "NULL VALUE! " + p.getLastEntry()); - return false; - } - return true; - }) - .map(p -> p.getDestination(getRootObject()).queryInterface(ifClass)); + return getValuePaths(span, matcher).filter(p -> { + TraceObject object = p.getDestination(getRootObject()); + if (object == null) { + Msg.error(this, "NULL VALUE! " + p.getLastEntry()); + return false; + } + return true; + }).map(p -> p.getDestination(getRootObject()).queryInterface(ifClass)); } @Override @@ -632,8 +628,8 @@ public class DBTraceObjectManager implements TraceObjectManager, DBTraceManager return Set.copyOf(result); } - public Collection getObjectsIntersecting( - Lifespan lifespan, AddressRange range, String key, Class iface) { + public Collection getObjectsIntersecting(Lifespan lifespan, + AddressRange range, String key, Class iface) { try (LockHold hold = trace.lockRead()) { Set schemas; synchronized (schemasByInterface) { @@ -802,8 +798,8 @@ public class DBTraceObjectManager implements TraceObjectManager, DBTraceManager if (!exists.getLife().intersects(lifespan)) { return; } - throw new DuplicateNameException("A thread having path '" + path + - "' already exists within an overlapping snap"); + throw new DuplicateNameException( + "A thread having path '" + path + "' already exists within an overlapping snap"); } public TraceObjectThread addThread(String path, String display, Lifespan lifespan) diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/thread/DBTraceThreadManager.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/thread/DBTraceThreadManager.java index 56277ed82f..588a755f71 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/thread/DBTraceThreadManager.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/thread/DBTraceThreadManager.java @@ -21,6 +21,7 @@ import java.util.concurrent.locks.ReadWriteLock; import java.util.stream.Collectors; import db.DBHandle; +import ghidra.framework.data.OpenMode; import ghidra.trace.database.DBTrace; import ghidra.trace.database.DBTraceManager; import ghidra.trace.database.target.DBTraceObject; @@ -44,7 +45,7 @@ public class DBTraceThreadManager implements TraceThreadManager, DBTraceManager protected final DBCachedObjectStore threadStore; protected final DBCachedObjectIndex threadsByPath; - public DBTraceThreadManager(DBHandle dbh, DBOpenMode openMode, ReadWriteLock lock, + public DBTraceThreadManager(DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, DBTrace trace, DBTraceObjectManager objectManager) throws IOException, VersionException { this.lock = lock; @@ -104,8 +105,7 @@ public class DBTraceThreadManager implements TraceThreadManager, DBTraceManager } @Override - public TraceThread addThread(String path, Lifespan lifespan) - throws DuplicateNameException { + public TraceThread addThread(String path, Lifespan lifespan) throws DuplicateNameException { return addThread(path, path, lifespan); } @@ -168,8 +168,7 @@ public class DBTraceThreadManager implements TraceThreadManager, DBTraceManager public Collection getLiveThreads(long snap) { if (objectManager.hasSchema()) { try (LockHold hold = LockHold.lock(lock.readLock())) { - return objectManager - .queryAllInterface(Lifespan.at(snap), TraceObjectThread.class) + return objectManager.queryAllInterface(Lifespan.at(snap), TraceObjectThread.class) // Exclude the destruction .filter(thread -> thread.getCreationSnap() <= snap && snap < thread.getDestructionSnap()) diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/time/DBTraceTimeManager.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/time/DBTraceTimeManager.java index f60ae61c76..5e15dc7417 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/time/DBTraceTimeManager.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/time/DBTraceTimeManager.java @@ -22,6 +22,7 @@ import java.util.Map.Entry; import java.util.concurrent.locks.ReadWriteLock; import db.DBHandle; +import ghidra.framework.data.OpenMode; import ghidra.trace.database.DBTrace; import ghidra.trace.database.DBTraceManager; import ghidra.trace.database.thread.DBTraceThreadManager; @@ -44,7 +45,7 @@ public class DBTraceTimeManager implements TraceTimeManager, DBTraceManager { protected final DBCachedObjectStore snapshotStore; protected final DBCachedObjectIndex snapshotsBySchedule; - public DBTraceTimeManager(DBHandle dbh, DBOpenMode openMode, ReadWriteLock lock, + public DBTraceTimeManager(DBHandle dbh, OpenMode openMode, ReadWriteLock lock, TaskMonitor monitor, DBTrace trace, DBTraceThreadManager threadManager) throws VersionException, IOException { this.trace = trace; diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/ToyDBTraceBuilder.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/ToyDBTraceBuilder.java index 7ac6e113cd..b805b355a2 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/ToyDBTraceBuilder.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/ToyDBTraceBuilder.java @@ -34,6 +34,7 @@ import generic.theme.GThemeDefaults.Colors.Messages; import ghidra.app.plugin.processors.sleigh.SleighLanguage; import ghidra.dbg.target.TargetExecutionStateful.TargetExecutionState; import ghidra.dbg.util.PathPredicates; +import ghidra.framework.data.OpenMode; import ghidra.pcode.exec.*; import ghidra.pcode.exec.trace.TraceSleighUtils; import ghidra.program.disassemble.Disassembler; @@ -61,7 +62,6 @@ import ghidra.trace.model.target.TraceObject.ConflictResolution; import ghidra.trace.model.thread.TraceObjectThread; import ghidra.trace.model.thread.TraceThread; import ghidra.util.Msg; -import ghidra.util.database.DBOpenMode; import ghidra.util.exception.*; import ghidra.util.task.ConsoleTaskMonitor; @@ -95,7 +95,7 @@ public class ToyDBTraceBuilder implements AutoCloseable { public ToyDBTraceBuilder(File file) throws CancelledException, VersionException, LanguageNotFoundException, IOException { DBHandle handle = new DBHandle(file); - this.trace = new DBTrace(handle, DBOpenMode.UPDATE, new ConsoleTaskMonitor(), this); + this.trace = new DBTrace(handle, OpenMode.UPDATE, new ConsoleTaskMonitor(), this); this.language = trace.getBaseLanguage(); this.host = trace.getPlatformManager().getHostPlatform(); } @@ -553,8 +553,8 @@ public class ToyDBTraceBuilder implements AutoCloseable { * @return the instruction unit * @throws CodeUnitInsertionException if the instruction cannot be created */ - public DBTraceInstruction addInstruction(long snap, Address start, - TracePlatform platform) throws CodeUnitInsertionException { + public DBTraceInstruction addInstruction(long snap, Address start, TracePlatform platform) + throws CodeUnitInsertionException { DBTraceCodeManager code = trace.getCodeManager(); Language platformLanguage = platform.getLanguage(); Disassembler dis = @@ -637,8 +637,8 @@ public class ToyDBTraceBuilder implements AutoCloseable { public DBTraceReference addMemoryReference(long creationSnap, Address from, Address to, int operandIndex) { return trace.getReferenceManager() - .addMemoryReference(Lifespan.nowOn(creationSnap), from, to, - RefType.DATA, SourceType.DEFAULT, operandIndex); + .addMemoryReference(Lifespan.nowOn(creationSnap), from, to, RefType.DATA, + SourceType.DEFAULT, operandIndex); } /** @@ -655,8 +655,8 @@ public class ToyDBTraceBuilder implements AutoCloseable { public DBTraceReference addOffsetReference(long creationSnap, Address from, Address to, boolean toAddrIsBase, long offset) { return trace.getReferenceManager() - .addOffsetReference(Lifespan.nowOn(creationSnap), from, to, toAddrIsBase, - offset, RefType.DATA, SourceType.DEFAULT, -1); + .addOffsetReference(Lifespan.nowOn(creationSnap), from, to, toAddrIsBase, offset, + RefType.DATA, SourceType.DEFAULT, -1); } /** @@ -677,8 +677,8 @@ public class ToyDBTraceBuilder implements AutoCloseable { public DBTraceReference addShiftedReference(long creationSnap, Address from, Address to, int shift) { return trace.getReferenceManager() - .addShiftedReference(Lifespan.nowOn(creationSnap), from, - to, shift, RefType.DATA, SourceType.DEFAULT, -1); + .addShiftedReference(Lifespan.nowOn(creationSnap), from, to, shift, RefType.DATA, + SourceType.DEFAULT, -1); } /** @@ -696,8 +696,8 @@ public class ToyDBTraceBuilder implements AutoCloseable { */ public DBTraceReference addRegisterReference(long creationSnap, Address from, String to) { return trace.getReferenceManager() - .addRegisterReference(Lifespan.nowOn(creationSnap), from, - language.getRegister(to), RefType.DATA, SourceType.DEFAULT, -1); + .addRegisterReference(Lifespan.nowOn(creationSnap), from, language.getRegister(to), + RefType.DATA, SourceType.DEFAULT, -1); } /** @@ -715,8 +715,8 @@ public class ToyDBTraceBuilder implements AutoCloseable { */ public DBTraceReference addStackReference(long creationSnap, Address from, int to) { return trace.getReferenceManager() - .addStackReference(Lifespan.nowOn(creationSnap), from, to, - RefType.DATA, SourceType.DEFAULT, -1); + .addStackReference(Lifespan.nowOn(creationSnap), from, to, RefType.DATA, + SourceType.DEFAULT, -1); } /** diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapAddressSetViewTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapAddressSetViewTest.java index 36a497319d..16b64c6803 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapAddressSetViewTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapAddressSetViewTest.java @@ -24,6 +24,7 @@ import java.util.function.Predicate; import org.junit.*; import db.*; +import ghidra.framework.data.OpenMode; import ghidra.program.model.address.*; import ghidra.program.model.lang.Language; import ghidra.program.model.lang.LanguageID; @@ -43,7 +44,7 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetViewTest extends AbstractGhidraHeadlessIntegrationTest { protected static class MyObject extends DBCachedDomainObjectAdapter { protected MyObject(Object consumer) throws IOException { - super(new DBHandle(), DBOpenMode.CREATE, new ConsoleTaskMonitor(), "Testing", 500, 1000, + super(new DBHandle(), OpenMode.CREATE, new ConsoleTaskMonitor(), "Testing", 500, 1000, consumer); } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterableTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterableTest.java index f3ece2af32..57548e945e 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterableTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterableTest.java @@ -25,6 +25,7 @@ import org.apache.commons.lang3.tuple.ImmutablePair; import org.junit.*; import db.*; +import ghidra.framework.data.OpenMode; import ghidra.program.model.address.*; import ghidra.program.model.lang.Language; import ghidra.program.model.lang.LanguageID; @@ -42,7 +43,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterableTest extends AbstractGhidraHeadlessIntegrationTest { protected static class MyObject extends DBCachedDomainObjectAdapter { protected MyObject(Object consumer) throws IOException { - super(new DBHandle(), DBOpenMode.CREATE, new ConsoleTaskMonitor(), "Testing", 500, 1000, + super(new DBHandle(), OpenMode.CREATE, new ConsoleTaskMonitor(), "Testing", 500, 1000, consumer); } @@ -152,8 +153,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterableTest @Before public void setUp() throws IOException, VersionException { toy = DefaultLanguageService.getLanguageService() - .getLanguage( - new LanguageID("Toy:BE:64:default")); + .getLanguage(new LanguageID("Toy:BE:64:default")); obj = new MyObject(this); factory = new DBCachedObjectStoreFactory(obj); try (Transaction tx = obj.openTransaction("CreateTable")) { @@ -240,12 +240,10 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoFutureIterableTest } it = makeOcclusionIterable(tasr(0x0000, -0x0001, Long.MIN_VALUE, Long.MAX_VALUE)); - assertEquals(list( - ent(0x0000, 0x0fff, 5, 10, "W"), + assertEquals(list(ent(0x0000, 0x0fff, 5, 10, "W"), ent(0x1000, 0x1fff, Long.MIN_VALUE, Long.MIN_VALUE + 10, "S"), ent(0x2000, 0x2fff, Long.MAX_VALUE - 10, Long.MAX_VALUE, "N"), - ent(-0x1000, -0x0001, 5, 10, "E")), - list(it)); + ent(-0x1000, -0x0001, 5, 10, "E")), list(it)); } @Test diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterableTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterableTest.java index 3c80f4fa5b..2598452e53 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterableTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterableTest.java @@ -25,6 +25,7 @@ import org.apache.commons.lang3.tuple.ImmutablePair; import org.junit.*; import db.*; +import ghidra.framework.data.OpenMode; import ghidra.program.model.address.*; import ghidra.program.model.lang.Language; import ghidra.program.model.lang.LanguageID; @@ -42,7 +43,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterableTest extends AbstractGhidraHeadlessIntegrationTest { protected static class MyObject extends DBCachedDomainObjectAdapter { protected MyObject(Object consumer) throws IOException { - super(new DBHandle(), DBOpenMode.CREATE, new ConsoleTaskMonitor(), "Testing", 500, 1000, + super(new DBHandle(), OpenMode.CREATE, new ConsoleTaskMonitor(), "Testing", 500, 1000, consumer); } @@ -152,8 +153,7 @@ public class DBTraceAddressSnapRangePropertyMapOcclusionIntoPastIterableTest @Before public void setUp() throws IOException, VersionException { toy = DefaultLanguageService.getLanguageService() - .getLanguage( - new LanguageID("Toy:BE:64:default")); + .getLanguage(new LanguageID("Toy:BE:64:default")); obj = new MyObject(this); factory = new DBCachedObjectStoreFactory(obj); try (Transaction tid = obj.openTransaction("CreateTable")) { diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapSpaceTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapSpaceTest.java index dd8bf97d21..86241af88b 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapSpaceTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/map/DBTraceAddressSnapRangePropertyMapSpaceTest.java @@ -29,6 +29,7 @@ import org.apache.commons.lang3.tuple.ImmutablePair; import org.junit.*; import db.*; +import ghidra.framework.data.OpenMode; import ghidra.program.model.address.Address; import ghidra.program.model.lang.Language; import ghidra.program.model.lang.LanguageID; @@ -61,7 +62,7 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest private DBTraceAddressSnapRangePropertyMapSpace space2; private DBTraceAddressSnapRangePropertyMapSpace space3; - protected MyObject(DBHandle dbh, DBOpenMode openMode, Language toy, Object consumer) + protected MyObject(DBHandle dbh, OpenMode openMode, Language toy, Object consumer) throws VersionException, IOException { super(dbh, openMode, new ConsoleTaskMonitor(), "Testing", 500, 1000, consumer); this.toy = toy; @@ -70,12 +71,12 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest } protected MyObject(Language toy, Object consumer) throws IOException, VersionException { - this(new DBHandle(), DBOpenMode.CREATE, toy, consumer); + this(new DBHandle(), OpenMode.CREATE, toy, consumer); } protected MyObject(File file, Language toy, Object consumer) throws IOException, VersionException { - this(new DBHandle(file), DBOpenMode.UPDATE, toy, consumer); + this(new DBHandle(file), OpenMode.UPDATE, toy, consumer); } protected void loadSpaces() throws VersionException, IOException { @@ -211,8 +212,7 @@ public class DBTraceAddressSnapRangePropertyMapSpaceTest @Before public void setUp() throws IOException, VersionException { toy = DefaultLanguageService.getLanguageService() - .getLanguage( - new LanguageID("Toy:BE:64:default")); + .getLanguage(new LanguageID("Toy:BE:64:default")); obj = new MyObject(toy, this); } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/AbstractDBTraceMemoryManagerMemoryTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/AbstractDBTraceMemoryManagerMemoryTest.java index f4145442cb..4af570456a 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/AbstractDBTraceMemoryManagerMemoryTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/database/memory/AbstractDBTraceMemoryManagerMemoryTest.java @@ -24,13 +24,13 @@ import java.util.*; import org.junit.Test; -import db.Transaction; import db.DBHandle; +import db.Transaction; +import ghidra.framework.data.OpenMode; 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.task.ConsoleTaskMonitor; import ghidra.util.task.TaskMonitor; @@ -683,62 +683,52 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest } try { - memory.findBytes(3, b.range(0x4000, 0x4003), b.buf(1, 2, 3, 4), b.buf(-1, -1, -1), - true, TaskMonitor.DUMMY); + memory.findBytes(3, b.range(0x4000, 0x4003), b.buf(1, 2, 3, 4), b.buf(-1, -1, -1), true, + TaskMonitor.DUMMY); } catch (IllegalArgumentException e) { // pass } // Degenerate - assertNull( - memory.findBytes(2, b.range(0x4000, 0x4003), b.buf(), b.buf(), - true, TaskMonitor.DUMMY)); + assertNull(memory.findBytes(2, b.range(0x4000, 0x4003), b.buf(), b.buf(), true, + TaskMonitor.DUMMY)); // Too soon - assertNull( - memory.findBytes(2, b.range(0x4000, 0x4003), b.buf(1, 2, 3, 4), b.buf(-1, -1, -1, -1), - true, TaskMonitor.DUMMY)); + assertNull(memory.findBytes(2, b.range(0x4000, 0x4003), b.buf(1, 2, 3, 4), + b.buf(-1, -1, -1, -1), true, TaskMonitor.DUMMY)); // Too small - assertNull( - memory.findBytes(3, b.range(0x4000, 0x4002), b.buf(1, 2, 3, 4), b.buf(-1, -1, -1, -1), - true, TaskMonitor.DUMMY)); + assertNull(memory.findBytes(3, b.range(0x4000, 0x4002), b.buf(1, 2, 3, 4), + b.buf(-1, -1, -1, -1), true, TaskMonitor.DUMMY)); // Too high - assertNull( - memory.findBytes(3, b.range(0x4001, 0x4004), b.buf(1, 2, 3, 4), b.buf(-1, -1, -1, -1), - true, TaskMonitor.DUMMY)); + assertNull(memory.findBytes(3, b.range(0x4001, 0x4004), b.buf(1, 2, 3, 4), + b.buf(-1, -1, -1, -1), true, TaskMonitor.DUMMY)); // Too high, into unknown - assertNull( - memory.findBytes(3, b.range(0x4001, 0x4005), b.buf(1, 2, 3, 4, 5), - b.buf(-1, -1, -1, -1, -1), true, TaskMonitor.DUMMY)); + assertNull(memory.findBytes(3, b.range(0x4001, 0x4005), b.buf(1, 2, 3, 4, 5), + b.buf(-1, -1, -1, -1, -1), true, TaskMonitor.DUMMY)); // Too low - assertNull( - memory.findBytes(3, b.range(0x3fff, 0x4002), b.buf(1, 2, 3, 4), b.buf(-1, -1, -1, -1), - true, TaskMonitor.DUMMY)); + assertNull(memory.findBytes(3, b.range(0x3fff, 0x4002), b.buf(1, 2, 3, 4), + b.buf(-1, -1, -1, -1), true, TaskMonitor.DUMMY)); // Perfect match - assertEquals(b.addr(0x4000), - memory.findBytes(3, b.range(0x4000, 0x4003), b.buf(1, 2, 3, 4), b.buf(-1, -1, -1, -1), - true, TaskMonitor.DUMMY)); + assertEquals(b.addr(0x4000), memory.findBytes(3, b.range(0x4000, 0x4003), b.buf(1, 2, 3, 4), + b.buf(-1, -1, -1, -1), true, TaskMonitor.DUMMY)); + + // Make it work for the match + assertEquals(b.addr(0x4000), memory.findBytes(3, b.range(0x0, -1), b.buf(1, 2, 3, 4), + b.buf(-1, -1, -1, -1), true, TaskMonitor.DUMMY)); // Make it work for the match assertEquals(b.addr(0x4000), - memory.findBytes(3, b.range(0x0, -1), b.buf(1, 2, 3, 4), b.buf(-1, -1, -1, -1), - true, TaskMonitor.DUMMY)); - - // Make it work for the match - assertEquals(b.addr(0x4000), - memory.findBytes(3, b.range(0x0, -1), b.buf(1), b.buf(-1), - true, TaskMonitor.DUMMY)); + memory.findBytes(3, b.range(0x0, -1), b.buf(1), b.buf(-1), true, TaskMonitor.DUMMY)); // Sub match - assertEquals(b.addr(0x4001), - memory.findBytes(3, b.range(0x4000, 0x4003), b.buf(2, 3, 4), b.buf(-1, -1, -1), - true, TaskMonitor.DUMMY)); + assertEquals(b.addr(0x4001), memory.findBytes(3, b.range(0x4000, 0x4003), b.buf(2, 3, 4), + b.buf(-1, -1, -1), true, TaskMonitor.DUMMY)); } @Test @@ -811,7 +801,7 @@ public abstract class AbstractDBTraceMemoryManagerMemoryTest DBHandle opened = new DBHandle(tmp.toFile()); DBTrace restored = null; try { - restored = new DBTrace(opened, DBOpenMode.UPDATE, new ConsoleTaskMonitor(), this); + restored = new DBTrace(opened, OpenMode.UPDATE, new ConsoleTaskMonitor(), this); DBTraceMemorySpace rSpace = restored.getMemoryManager().getMemorySpace(b.language.getDefaultDataSpace(), true); diff --git a/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/framework/data/DBDomainObjectSupport.java b/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/framework/data/DBDomainObjectSupport.java index 2502e1ae39..3e1bb264a0 100644 --- a/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/framework/data/DBDomainObjectSupport.java +++ b/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/framework/data/DBDomainObjectSupport.java @@ -20,23 +20,22 @@ import java.io.IOException; import db.DBHandle; import generic.depends.DependentServiceResolver; import generic.depends.err.*; -import ghidra.util.database.DBOpenMode; import ghidra.util.exception.CancelledException; import ghidra.util.exception.VersionException; import ghidra.util.task.TaskMonitor; public abstract class DBDomainObjectSupport extends DomainObjectAdapterDB { - private DBOpenMode openMode; + private OpenMode openMode; private TaskMonitor monitor; private VersionException versionExc; protected static interface ManagerSupplier { - T create(DBOpenMode openMode, TaskMonitor monitor) + T create(OpenMode openMode, TaskMonitor monitor) throws IOException, VersionException, CancelledException; } - protected DBDomainObjectSupport(DBHandle dbh, DBOpenMode openMode, TaskMonitor monitor, + protected DBDomainObjectSupport(DBHandle dbh, OpenMode openMode, TaskMonitor monitor, String name, int timeInterval, int bufSize, Object consumer) { super(dbh, name, timeInterval, consumer); this.openMode = openMode; diff --git a/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/DBCachedDomainObjectAdapter.java b/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/DBCachedDomainObjectAdapter.java index 8878fbe6d4..dc2fb39581 100644 --- a/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/DBCachedDomainObjectAdapter.java +++ b/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/DBCachedDomainObjectAdapter.java @@ -20,6 +20,7 @@ import java.util.concurrent.locks.*; import db.DBHandle; import ghidra.framework.data.DBDomainObjectSupport; +import ghidra.framework.data.OpenMode; import ghidra.util.Msg; import ghidra.util.Swing; import ghidra.util.task.TaskMonitor; @@ -163,7 +164,7 @@ public abstract class DBCachedDomainObjectAdapter extends DBDomainObjectSupport /** * @see {@link DBDomainObjectSupport} */ - protected DBCachedDomainObjectAdapter(DBHandle dbh, DBOpenMode openMode, TaskMonitor monitor, + protected DBCachedDomainObjectAdapter(DBHandle dbh, OpenMode openMode, TaskMonitor monitor, String name, int timeInterval, int bufSize, Object consumer) { super(dbh, openMode, monitor, name, timeInterval, bufSize, consumer); this.rwLock = new GhidraLockWrappingRWLock(lock); diff --git a/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/DBOpenMode.java b/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/DBOpenMode.java deleted file mode 100644 index 7716f69701..0000000000 --- a/Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/DBOpenMode.java +++ /dev/null @@ -1,38 +0,0 @@ -/* ### - * IP: GHIDRA - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package ghidra.util.database; - -import db.DBConstants; - -/** - * An enum, providing a type-safe version of {@link DBConstants}. - */ -public enum DBOpenMode { - CREATE(DBConstants.CREATE), - UPDATE(DBConstants.UPDATE), - READ_ONLY(DBConstants.READ_ONLY), - UPGRADE(DBConstants.UPGRADE); - - private final int openMode; - - private DBOpenMode(int openMode) { - this.openMode = openMode; - } - - public int toInteger() { - return openMode; - } -} diff --git a/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/DBCachedObjectStoreFactoryTest.java b/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/DBCachedObjectStoreFactoryTest.java index e4c9c19808..10c17edaa4 100644 --- a/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/DBCachedObjectStoreFactoryTest.java +++ b/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/DBCachedObjectStoreFactoryTest.java @@ -23,6 +23,7 @@ import org.junit.Ignore; import org.junit.Test; import db.*; +import ghidra.framework.data.OpenMode; import ghidra.util.UniversalIdGenerator; import ghidra.util.database.annot.*; import ghidra.util.exception.VersionException; @@ -35,7 +36,7 @@ public class DBCachedObjectStoreFactoryTest { public static class MyDomainObject extends DBCachedDomainObjectAdapter { protected MyDomainObject(DBHandle dbh, String name, Object consumer) { - super(dbh, DBOpenMode.CREATE, TaskMonitor.DUMMY, name, 500, 1000, consumer); + super(dbh, OpenMode.CREATE, TaskMonitor.DUMMY, name, 500, 1000, consumer); } @Override diff --git a/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/DBCachedObjectStoreTest.java b/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/DBCachedObjectStoreTest.java index 0a38130d59..b5c62a4649 100644 --- a/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/DBCachedObjectStoreTest.java +++ b/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/DBCachedObjectStoreTest.java @@ -33,6 +33,7 @@ import org.apache.commons.lang3.tuple.ImmutablePair; import org.junit.*; import db.*; +import ghidra.framework.data.OpenMode; import ghidra.util.UniversalIdGenerator; import ghidra.util.database.DirectedIterator.Direction; import ghidra.util.database.annot.*; @@ -67,7 +68,7 @@ public class DBCachedObjectStoreTest { protected MyDomainObject(String name, int timeInterval, int bufSize, Object consumer) throws VersionException, IOException { - super(new DBHandle(), DBOpenMode.CREATE, new ConsoleTaskMonitor(), name, timeInterval, + super(new DBHandle(), OpenMode.CREATE, new ConsoleTaskMonitor(), name, timeInterval, bufSize, consumer); this.storeFactory = new DBCachedObjectStoreFactory(this); try (Transaction tx = dbh.openTransaction(this)) { @@ -76,7 +77,7 @@ public class DBCachedObjectStoreTest { } } - protected MyDomainObject(DBHandle handle, DBOpenMode openMode, TaskMonitor monitor, + protected MyDomainObject(DBHandle handle, OpenMode openMode, TaskMonitor monitor, int timeInterval, int bufSize, Object consumer) throws VersionException, IOException { super(handle, openMode, monitor, null, timeInterval, bufSize, consumer); @@ -311,8 +312,8 @@ public class DBCachedObjectStoreTest { DBHandle opened = new DBHandle(tmp.toFile()); MyDomainObject restored = null; try { - restored = new MyDomainObject(opened, DBOpenMode.READ_ONLY, new ConsoleTaskMonitor(), - 500, 1000, this); + restored = new MyDomainObject(opened, OpenMode.IMMUTABLE, new ConsoleTaskMonitor(), 500, + 1000, this); MyObject rObj = restored.store.getObjectAt(0x1234); assertEquals(0x811, rObj.f1); assertEquals(0x812, rObj.f2); @@ -1941,15 +1942,15 @@ public class DBCachedObjectStoreTest { .map(Entry::getKey) .collect(Collectors.toList()); assertEquals(List.of(-3L, -1L, 1L, 3L), list); - list = ((List>) (List) Arrays.asList(entrySet.toArray(new Entry[4]))) - .stream() - .map(Entry::getKey) - .collect(Collectors.toList()); + list = + ((List>) (List) Arrays.asList(entrySet.toArray(new Entry[4]))).stream() + .map(Entry::getKey) + .collect(Collectors.toList()); assertEquals(List.of(-3L, -1L, 1L, 3L), list); - list = ((List>) (List) Arrays.asList(entrySet.toArray(new Entry[5]))) - .stream() - .map(nullable(Entry::getKey)) - .collect(Collectors.toList()); + list = + ((List>) (List) Arrays.asList(entrySet.toArray(new Entry[5]))).stream() + .map(nullable(Entry::getKey)) + .collect(Collectors.toList()); assertEquals(Arrays.asList(new Long[] { -3L, -1L, 1L, 3L, null }), list); List rList = @@ -1957,15 +1958,15 @@ public class DBCachedObjectStoreTest { .map(Entry::getKey) .collect(Collectors.toList()); assertEquals(List.of(3L, 1L, -1L, -3L), rList); - rList = ((List>) (List) Arrays.asList(rEntrySet.toArray(new Entry[4]))) - .stream() - .map(Entry::getKey) - .collect(Collectors.toList()); + rList = + ((List>) (List) Arrays.asList(rEntrySet.toArray(new Entry[4]))).stream() + .map(Entry::getKey) + .collect(Collectors.toList()); assertEquals(List.of(3L, 1L, -1L, -3L), rList); - rList = ((List>) (List) Arrays.asList(rEntrySet.toArray(new Entry[5]))) - .stream() - .map(nullable(Entry::getKey)) - .collect(Collectors.toList()); + rList = + ((List>) (List) Arrays.asList(rEntrySet.toArray(new Entry[5]))).stream() + .map(nullable(Entry::getKey)) + .collect(Collectors.toList()); assertEquals(Arrays.asList(new Long[] { 3L, 1L, -1L, -3L, null }), rList); } @@ -2083,20 +2084,21 @@ public class DBCachedObjectStoreTest { public void testAsEntrySetDescendingIterator() { populateStore(-3, -1, 1, 3); - assertEquals(List.of(3L, 1L, -1L, -3L), IteratorUtils.toList(entrySet.descendingIterator()) - .stream() - .map(Entry::getKey) - .collect(Collectors.toList())); - assertEquals(List.of(-3L, -1L, 1L, 3L), IteratorUtils.toList(rEntrySet.descendingIterator()) - .stream() - .map(Entry::getKey) - .collect(Collectors.toList())); + assertEquals(List.of(3L, 1L, -1L, -3L), + IteratorUtils.toList(entrySet.descendingIterator()) + .stream() + .map(Entry::getKey) + .collect(Collectors.toList())); + assertEquals(List.of(-3L, -1L, 1L, 3L), + IteratorUtils.toList(rEntrySet.descendingIterator()) + .stream() + .map(Entry::getKey) + .collect(Collectors.toList())); } @Test public void testAsEntrySetSubSet() { - assertEquals(map.subMap(1L, 2L).keySet().keySpan, - entrySet.subSet(ent(1), ent(2)).keySpan); + assertEquals(map.subMap(1L, 2L).keySet().keySpan, entrySet.subSet(ent(1), ent(2)).keySpan); assertEquals(rMap.subMap(2L, 1L).keySet().keySpan, rEntrySet.subSet(ent(2), ent(1)).keySpan); assertEquals(map.subMap(1L, 2L).keySet().direction, @@ -2123,10 +2125,10 @@ public class DBCachedObjectStoreTest { new ArrayList<>(rEntrySet.subSet(ent(3), false, ent(-3), true)).stream() .map(Entry::getKey) .collect(Collectors.toList())); - assertEquals(List.of(-3L, -1L, 1L), new ArrayList<>(entrySet.subSet(ent(-3), ent(3))) - .stream() - .map(Entry::getKey) - .collect(Collectors.toList())); + assertEquals(List.of(-3L, -1L, 1L), + new ArrayList<>(entrySet.subSet(ent(-3), ent(3))).stream() + .map(Entry::getKey) + .collect(Collectors.toList())); assertEquals(List.of(-1L, 1L, 3L), new ArrayList<>(entrySet.subSet(ent(-3), false, ent(3), true)).stream() @@ -2136,10 +2138,10 @@ public class DBCachedObjectStoreTest { new ArrayList<>(rEntrySet.subSet(ent(3), true, ent(-3), false)).stream() .map(Entry::getKey) .collect(Collectors.toList())); - assertEquals(List.of(3L, 1L, -1L), new ArrayList<>(rEntrySet.subSet(ent(3), ent(-3))) - .stream() - .map(Entry::getKey) - .collect(Collectors.toList())); + assertEquals(List.of(3L, 1L, -1L), + new ArrayList<>(rEntrySet.subSet(ent(3), ent(-3))).stream() + .map(Entry::getKey) + .collect(Collectors.toList())); assertEquals(List.of(-3L, -1L, 1L, 3L), new ArrayList<>(entrySet.subSet(ent(-3), true, ent(3), true)).stream() @@ -2160,27 +2162,32 @@ public class DBCachedObjectStoreTest { populateStore(-5, -3, -1, 1, 3, 5); - assertEquals(List.of(-5L, -3L), new ArrayList<>(entrySet.headSet(ent(-1), false)).stream() - .map(Entry::getKey) - .collect(Collectors.toList())); - assertEquals(List.of(5L, 3L), new ArrayList<>(rEntrySet.headSet(ent(1), false)).stream() - .map(Entry::getKey) - .collect(Collectors.toList())); + assertEquals(List.of(-5L, -3L), + new ArrayList<>(entrySet.headSet(ent(-1), false)).stream() + .map(Entry::getKey) + .collect(Collectors.toList())); + assertEquals(List.of(5L, 3L), + new ArrayList<>(rEntrySet.headSet(ent(1), false)).stream() + .map(Entry::getKey) + .collect(Collectors.toList())); - assertEquals(List.of(-5L, -3L, -1L), new ArrayList<>(entrySet.headSet(ent(-1), true)) - .stream() - .map(Entry::getKey) - .collect(Collectors.toList())); - assertEquals(List.of(5L, 3L, 1L), new ArrayList<>(rEntrySet.headSet(ent(1), true)).stream() - .map(Entry::getKey) - .collect(Collectors.toList())); + assertEquals(List.of(-5L, -3L, -1L), + new ArrayList<>(entrySet.headSet(ent(-1), true)).stream() + .map(Entry::getKey) + .collect(Collectors.toList())); + assertEquals(List.of(5L, 3L, 1L), + new ArrayList<>(rEntrySet.headSet(ent(1), true)).stream() + .map(Entry::getKey) + .collect(Collectors.toList())); - assertEquals(List.of(-5L, -3L), new ArrayList<>(entrySet.headSet(ent(-1))).stream() - .map(Entry::getKey) - .collect(Collectors.toList())); - assertEquals(List.of(5L, 3L), new ArrayList<>(rEntrySet.headSet(ent(1))).stream() - .map(Entry::getKey) - .collect(Collectors.toList())); + assertEquals(List.of(-5L, -3L), + new ArrayList<>(entrySet.headSet(ent(-1))).stream() + .map(Entry::getKey) + .collect(Collectors.toList())); + assertEquals(List.of(5L, 3L), + new ArrayList<>(rEntrySet.headSet(ent(1))).stream() + .map(Entry::getKey) + .collect(Collectors.toList())); } @Test @@ -2192,27 +2199,32 @@ public class DBCachedObjectStoreTest { populateStore(-5, -3, -1, 1, 3, 5); - assertEquals(List.of(3L, 5L), new ArrayList<>(entrySet.tailSet(ent(1), false)).stream() - .map(Entry::getKey) - .collect(Collectors.toList())); - assertEquals(List.of(-3L, -5L), new ArrayList<>(rEntrySet.tailSet(ent(-1), false)).stream() - .map(Entry::getKey) - .collect(Collectors.toList())); + assertEquals(List.of(3L, 5L), + new ArrayList<>(entrySet.tailSet(ent(1), false)).stream() + .map(Entry::getKey) + .collect(Collectors.toList())); + assertEquals(List.of(-3L, -5L), + new ArrayList<>(rEntrySet.tailSet(ent(-1), false)).stream() + .map(Entry::getKey) + .collect(Collectors.toList())); - assertEquals(List.of(1L, 3L, 5L), new ArrayList<>(entrySet.tailSet(ent(1), true)).stream() - .map(Entry::getKey) - .collect(Collectors.toList())); - assertEquals(List.of(-1L, -3L, -5L), new ArrayList<>(rEntrySet.tailSet(ent(-1), true)) - .stream() - .map(Entry::getKey) - .collect(Collectors.toList())); + assertEquals(List.of(1L, 3L, 5L), + new ArrayList<>(entrySet.tailSet(ent(1), true)).stream() + .map(Entry::getKey) + .collect(Collectors.toList())); + assertEquals(List.of(-1L, -3L, -5L), + new ArrayList<>(rEntrySet.tailSet(ent(-1), true)).stream() + .map(Entry::getKey) + .collect(Collectors.toList())); - assertEquals(List.of(1L, 3L, 5L), new ArrayList<>(entrySet.tailSet(ent(1))).stream() - .map(Entry::getKey) - .collect(Collectors.toList())); - assertEquals(List.of(-1L, -3L, -5L), new ArrayList<>(rEntrySet.tailSet(ent(-1))).stream() - .map(Entry::getKey) - .collect(Collectors.toList())); + assertEquals(List.of(1L, 3L, 5L), + new ArrayList<>(entrySet.tailSet(ent(1))).stream() + .map(Entry::getKey) + .collect(Collectors.toList())); + assertEquals(List.of(-1L, -3L, -5L), + new ArrayList<>(rEntrySet.tailSet(ent(-1))).stream() + .map(Entry::getKey) + .collect(Collectors.toList())); } @Test diff --git a/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/spatial/RStarTreeMapTest.java b/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/spatial/RStarTreeMapTest.java index eb48a817d4..94b92afbb9 100644 --- a/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/spatial/RStarTreeMapTest.java +++ b/Ghidra/Debug/ProposedUtils/src/test/java/ghidra/util/database/spatial/RStarTreeMapTest.java @@ -39,6 +39,7 @@ import org.junit.*; import db.*; import generic.theme.GThemeDefaults.Colors.Palette; +import ghidra.framework.data.OpenMode; import ghidra.util.ColorUtils; import ghidra.util.LockHold; import ghidra.util.database.*; @@ -540,8 +541,9 @@ public class RStarTreeMapTest { int x = e.getX() * rootWidth / getWidth(); int y = e.getY() * rootHeight / getHeight(); selected.clear(); - selected.addAll(asSpatialMap().reduce( - IntRectQuery.intersecting(rect(x, x, y, y))).keys()); + selected.addAll( + asSpatialMap().reduce(IntRectQuery.intersecting(rect(x, x, y, y))) + .keys()); repaint(); } }); @@ -632,23 +634,23 @@ public class RStarTreeMapTest { public final SpatialMap map; public MyDomainObject(Object consumer) throws IOException, VersionException { - super(new DBHandle(), DBOpenMode.CREATE, new ConsoleTaskMonitor(), "Testing", 500, 1000, + super(new DBHandle(), OpenMode.CREATE, new ConsoleTaskMonitor(), "Testing", 500, 1000, consumer); storeFactory = new DBCachedObjectStoreFactory(this); try (Transaction tx = openTransaction("CreateMaps")) { - tree = new IntRStarTree(storeFactory, DBIntRectStringDataRecord.TABLE_NAME, - true, MAX_CHILDREN); + tree = new IntRStarTree(storeFactory, DBIntRectStringDataRecord.TABLE_NAME, true, + MAX_CHILDREN); map = tree.asSpatialMap(); } } protected MyDomainObject(File file, Object consumer) throws IOException, VersionException { - super(new DBHandle(file), DBOpenMode.UPDATE, new ConsoleTaskMonitor(), "Testing", 500, + super(new DBHandle(file), OpenMode.UPDATE, new ConsoleTaskMonitor(), "Testing", 500, 1000, consumer); storeFactory = new DBCachedObjectStoreFactory(this); // No transaction, as tree should already exist - tree = new IntRStarTree(storeFactory, DBIntRectStringDataRecord.TABLE_NAME, - true, MAX_CHILDREN); + tree = new IntRStarTree(storeFactory, DBIntRectStringDataRecord.TABLE_NAME, true, + MAX_CHILDREN); map = tree.asSpatialMap(); } @@ -767,10 +769,10 @@ public class RStarTreeMapTest { IntRect queryRect1 = rect(1, 1, 12, 13); IntRect queryRect2 = rect(4, 4, 12, 13); List expected = new ArrayList<>(); - IteratorUtils.filteredIterator(allRects(range), - r -> queryRect1.intersects(r) && queryRect2.intersects(r)) - .forEachRemaining( - expected::add); + IteratorUtils + .filteredIterator(allRects(range), + r -> queryRect1.intersects(r) && queryRect2.intersects(r)) + .forEachRemaining(expected::add); System.out.println(expected); @@ -934,8 +936,7 @@ public class RStarTreeMapTest { loaded = new MyDomainObject(tmp.toFile(), this); assert loaded.map.entries() - .contains( - new ImmutablePair<>(rect(1, 5, 6, 10), "Some value")); + .contains(new ImmutablePair<>(rect(1, 5, 6, 10), "Some value")); } finally { if (loaded != null) { @@ -1002,18 +1003,16 @@ public class RStarTreeMapTest { obj.map.reduce(IntRectQuery.enclosed(rect(12, 12, 6, 6))).firstValue()); assertEquals("Point(12,6)", - obj.map.reduce(IntRectQuery.enclosed(rect(1, 12, 6, 6)) - .starting( - Rectangle2DDirection.RIGHTMOST)) + obj.map.reduce( + IntRectQuery.enclosed(rect(1, 12, 6, 6)).starting(Rectangle2DDirection.RIGHTMOST)) + .firstValue()); + assertEquals("Point(6,1)", + obj.map.reduce( + IntRectQuery.enclosed(rect(6, 6, 1, 12)).starting(Rectangle2DDirection.BOTTOMMOST)) .firstValue()); - assertEquals("Point(6,1)", obj.map.reduce(IntRectQuery.enclosed(rect(6, 6, 1, 12)) - .starting( - Rectangle2DDirection.BOTTOMMOST)) - .firstValue()); assertEquals("Point(6,12)", - obj.map.reduce(IntRectQuery.enclosed(rect(6, 6, 1, 12)) - .starting( - Rectangle2DDirection.TOPMOST)) + obj.map.reduce( + IntRectQuery.enclosed(rect(6, 6, 1, 12)).starting(Rectangle2DDirection.TOPMOST)) .firstValue()); } @@ -1036,14 +1035,12 @@ public class RStarTreeMapTest { actual.clear(); points.stream() .filter(e -> e.getKey().enclosedBy(rect(1, 6, 1, 12))) - .forEach( - e -> expected.put(e.getKey(), e.getValue())); + .forEach(e -> expected.put(e.getKey(), e.getValue())); assertEquals(72, expected.size()); // Sanity check on expected obj.map.reduce(IntRectQuery.enclosed(rect(1, 6, 1, 12))) .entries() .stream() - .forEach( - e -> actual.put(e.getKey(), e.getValue())); + .forEach(e -> actual.put(e.getKey(), e.getValue())); assertEquals(expected, actual); } @@ -1068,9 +1065,8 @@ public class RStarTreeMapTest { expected = List.of("Point(6,6)", "Point(5,6)", "Point(4,6)", "Point(3,6)", "Point(2,6)", "Point(1,6)"); - actual = new ArrayList<>(obj.map.reduce(IntRectQuery.enclosed(rect(1, 6, 6, 6)) - .starting( - Rectangle2DDirection.RIGHTMOST)) + actual = new ArrayList<>(obj.map.reduce( + IntRectQuery.enclosed(rect(1, 6, 6, 6)).starting(Rectangle2DDirection.RIGHTMOST)) .orderedValues()); } @@ -1123,8 +1119,7 @@ public class RStarTreeMapTest { Map actual = new HashMap<>(); points.stream() .filter(e -> e.getKey().enclosedBy(rect(7, 12, 1, 12))) - .forEach( - e -> expected.put(e.getKey(), e.getValue())); + .forEach(e -> expected.put(e.getKey(), e.getValue())); obj.map.entries().stream().forEach(e -> actual.put(e.getKey(), e.getValue())); assertEquals(expected, actual); diff --git a/Ghidra/Features/Base/developer_scripts/UpgradeTestProgramScript.java b/Ghidra/Features/Base/developer_scripts/UpgradeTestProgramScript.java index 5649aa6c42..bfb0447859 100644 --- a/Ghidra/Features/Base/developer_scripts/UpgradeTestProgramScript.java +++ b/Ghidra/Features/Base/developer_scripts/UpgradeTestProgramScript.java @@ -16,9 +16,9 @@ import java.io.File; import java.io.IOException; -import db.DBConstants; import db.DBHandle; import ghidra.app.script.GhidraScript; +import ghidra.framework.data.OpenMode; import ghidra.framework.store.db.PackedDatabase; import ghidra.program.database.ProgramDB; import ghidra.program.model.lang.LanguageNotFoundException; @@ -75,8 +75,8 @@ public class UpgradeTestProgramScript extends GhidraScript { } } - private boolean upgradeProgramArchive(File gzf) throws IOException, CancelledException, - VersionException { + private boolean upgradeProgramArchive(File gzf) + throws IOException, CancelledException, VersionException { PackedDatabase db = PackedDatabase.getPackedDatabase(gzf, TaskMonitor.DUMMY); DBHandle dbh = null; @@ -89,7 +89,7 @@ public class UpgradeTestProgramScript extends GhidraScript { } try { - p = new ProgramDB(dbh, DBConstants.UPDATE, monitor, this); + p = new ProgramDB(dbh, OpenMode.UPDATE, monitor, this); return false; } catch (LanguageNotFoundException e) { @@ -107,7 +107,7 @@ public class UpgradeTestProgramScript extends GhidraScript { } dbh = db.openForUpdate(monitor); - p = new ProgramDB(dbh, DBConstants.UPGRADE, monitor, this); + p = new ProgramDB(dbh, OpenMode.UPGRADE, monitor, this); if (!p.isChanged()) { return false; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/GdtLoader.java b/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/GdtLoader.java index 10ff4542bd..51b588a870 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/GdtLoader.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/GdtLoader.java @@ -20,12 +20,12 @@ import java.util.*; import org.apache.commons.io.FilenameUtils; -import db.DBConstants; import db.DBHandle; import ghidra.app.util.Option; import ghidra.app.util.bin.ByteProvider; import ghidra.app.util.importer.MessageLog; import ghidra.framework.Application; +import ghidra.framework.data.OpenMode; import ghidra.framework.model.DomainObject; import ghidra.framework.model.Project; import ghidra.framework.store.db.PackedDatabase; @@ -55,8 +55,8 @@ public class GdtLoader implements Loader { @Override public LoadResults load(ByteProvider provider, String filename, Project project, String projectFolderPath, LoadSpec loadSpec, List