mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-19 16:40:38 -09:00
GP-3162: refresh bool->enum
This commit is contained in:
@@ -22,6 +22,7 @@ import java.util.stream.Collectors;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import agent.dbgeng.model.iface2.*;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.target.TargetObject;
|
||||
import ghidra.util.datastruct.WeakValueHashMap;
|
||||
|
||||
@@ -36,7 +37,7 @@ public class DbgModel2TargetAvailableContainerImpl extends DbgModel2TargetObject
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestElements(boolean refresh) {
|
||||
public CompletableFuture<Void> requestElements(RefreshBehavior refresh) {
|
||||
return getManager().listAvailableProcesses().thenAccept(list -> {
|
||||
List<TargetObject> available;
|
||||
synchronized (this) {
|
||||
@@ -49,7 +50,7 @@ public class DbgModel2TargetAvailableContainerImpl extends DbgModel2TargetObject
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestAttributes(boolean refresh) {
|
||||
public CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
|
||||
Map<String, Object> nmap = new HashMap<>();
|
||||
return addModelObjectAttributes(nmap);
|
||||
}
|
||||
|
||||
@@ -52,6 +52,7 @@ import agent.dbgmodel.jna.dbgmodel.DbgModelNative.ModelObjectKind;
|
||||
import agent.dbgmodel.jna.dbgmodel.DbgModelNative.TypeKind;
|
||||
import agent.dbgmodel.manager.DbgManager2Impl;
|
||||
import ghidra.async.AsyncUtils;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.agent.DefaultTargetObject;
|
||||
import ghidra.dbg.target.TargetAccessConditioned;
|
||||
import ghidra.dbg.target.TargetAttacher;
|
||||
@@ -142,11 +143,11 @@ public class DbgModel2TargetObjectImpl extends DefaultTargetObject<TargetObject,
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestAugmentedAttributes() {
|
||||
return requestAttributes(false);
|
||||
return requestAttributes(RefreshBehavior.REFRESH_NEVER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestElements(boolean refresh) {
|
||||
public CompletableFuture<Void> requestElements(RefreshBehavior refresh) {
|
||||
List<TargetObject> nlist = new ArrayList<>();
|
||||
List<String> rlist = new ArrayList<>();
|
||||
return requestNativeElements().thenCompose(list -> {
|
||||
@@ -189,7 +190,7 @@ public class DbgModel2TargetObjectImpl extends DefaultTargetObject<TargetObject,
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestAttributes(boolean refresh) {
|
||||
public CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
|
||||
Map<String, Object> nmap = new HashMap<>();
|
||||
List<String> rlist = new ArrayList<>();
|
||||
return requestNativeAttributes().thenCompose(map -> {
|
||||
@@ -236,7 +237,7 @@ public class DbgModel2TargetObjectImpl extends DefaultTargetObject<TargetObject,
|
||||
if (proxy instanceof TargetStackFrame || //
|
||||
proxy instanceof TargetModule || //
|
||||
proxy instanceof TargetBreakpointSpec) {
|
||||
return delegate.requestAttributes(false);
|
||||
return delegate.requestAttributes(RefreshBehavior.REFRESH_NEVER);
|
||||
}
|
||||
}
|
||||
return CompletableFuture.completedFuture(null);
|
||||
@@ -328,7 +329,7 @@ public class DbgModel2TargetObjectImpl extends DefaultTargetObject<TargetObject,
|
||||
memory = new DbgModelTargetMemoryContainerImpl((DbgModelTargetProcess) proxy);
|
||||
}
|
||||
attrs.put(memory.getName(), memory);
|
||||
memory.requestElements(true);
|
||||
memory.requestElements(RefreshBehavior.REFRESH_ALWAYS);
|
||||
}
|
||||
if (proxy instanceof TargetThread) {
|
||||
DbgModelTargetThread targetThread = (DbgModelTargetThread) proxy;
|
||||
@@ -394,7 +395,7 @@ public class DbgModel2TargetObjectImpl extends DefaultTargetObject<TargetObject,
|
||||
if (elements.containsKey(trimKey)) {
|
||||
return CompletableFuture.completedFuture(elements.get(trimKey));
|
||||
}
|
||||
return requestElements(false).thenApply(__ -> getCachedElements().get(trimKey));
|
||||
return requestElements(RefreshBehavior.REFRESH_NEVER).thenApply(__ -> getCachedElements().get(trimKey));
|
||||
}
|
||||
}
|
||||
synchronized (attributes) {
|
||||
@@ -412,7 +413,7 @@ public class DbgModel2TargetObjectImpl extends DefaultTargetObject<TargetObject,
|
||||
return obj;
|
||||
});
|
||||
}
|
||||
return requestAttributes(false).thenApply(__ -> getCachedAttribute(key));
|
||||
return requestAttributes(RefreshBehavior.REFRESH_NEVER).thenApply(__ -> getCachedAttribute(key));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -55,6 +55,7 @@ import agent.dbgmodel.dbgmodel.main.ModelObject;
|
||||
import agent.dbgmodel.manager.DbgManager2Impl;
|
||||
import ghidra.async.AsyncUtils;
|
||||
import ghidra.async.TypeSpec;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.target.TargetEventScope;
|
||||
import ghidra.dbg.target.TargetExecutionStateful;
|
||||
import ghidra.dbg.target.TargetExecutionStateful.TargetExecutionState;
|
||||
@@ -227,7 +228,7 @@ public class DbgModel2TargetRootImpl extends DbgModel2DefaultTargetModelRoot
|
||||
stateful.changeAttributes(List.of(), Map.of( //
|
||||
TargetExecutionStateful.STATE_ATTRIBUTE_NAME, TargetExecutionState.ALIVE //
|
||||
), "Selected");
|
||||
stateful.fetchAttributes(true);
|
||||
stateful.fetchAttributes(RefreshBehavior.REFRESH_ALWAYS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -263,7 +264,7 @@ public class DbgModel2TargetRootImpl extends DbgModel2DefaultTargetModelRoot
|
||||
stateful.changeAttributes(List.of(), Map.of( //
|
||||
TargetExecutionStateful.STATE_ATTRIBUTE_NAME, TargetExecutionState.ALIVE //
|
||||
), "Selected");
|
||||
stateful.fetchAttributes(true);
|
||||
stateful.fetchAttributes(RefreshBehavior.REFRESH_ALWAYS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -283,7 +284,7 @@ public class DbgModel2TargetRootImpl extends DbgModel2DefaultTargetModelRoot
|
||||
DbgModelTargetProcess eventProcess = (DbgModelTargetProcess) p;
|
||||
DbgModel2TargetObjectImpl memory =
|
||||
(DbgModel2TargetObjectImpl) eventProcess.getCachedAttribute("Memory");
|
||||
memory.requestElements(false);
|
||||
memory.requestElements(RefreshBehavior.REFRESH_NEVER);
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -304,7 +305,7 @@ public class DbgModel2TargetRootImpl extends DbgModel2DefaultTargetModelRoot
|
||||
DbgModelTargetProcess eventProcess = (DbgModelTargetProcess) p;
|
||||
DbgModel2TargetObjectImpl memory =
|
||||
(DbgModel2TargetObjectImpl) eventProcess.getCachedAttribute("Memory");
|
||||
memory.requestElements(false);
|
||||
memory.requestElements(RefreshBehavior.REFRESH_NEVER);
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -642,7 +643,7 @@ public class DbgModel2TargetRootImpl extends DbgModel2DefaultTargetModelRoot
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestAttributes(boolean refresh) {
|
||||
public CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
|
||||
DbgManager2Impl manager2 = (DbgManager2Impl) getManager();
|
||||
List<String> pathX = PathUtils.extend(List.of("Debugger"), path);
|
||||
intrinsics.put(available.getName(), available);
|
||||
|
||||
@@ -21,6 +21,7 @@ import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import agent.dbgeng.model.iface1.DbgModelTargetInterruptible;
|
||||
import agent.dbgeng.model.iface2.DbgModelTargetObject;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
|
||||
public class DbgModel2TargetSystemMarkerImpl extends DbgModel2TargetObjectImpl
|
||||
implements DbgModelTargetInterruptible {
|
||||
@@ -32,7 +33,7 @@ public class DbgModel2TargetSystemMarkerImpl extends DbgModel2TargetObjectImpl
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> requestAttributes(boolean refresh) {
|
||||
public CompletableFuture<Void> requestAttributes(RefreshBehavior refresh) {
|
||||
Map<String, Object> nmap = new HashMap<>();
|
||||
return addModelObjectAttributes(nmap);
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ import agent.dbgeng.model.iface1.*;
|
||||
import agent.dbgeng.model.iface2.*;
|
||||
import agent.dbgmodel.dbgmodel.main.ModelObject;
|
||||
import agent.dbgmodel.jna.dbgmodel.DbgModelNative.ModelObjectKind;
|
||||
import ghidra.dbg.DebuggerObjectModel.RefreshBehavior;
|
||||
import ghidra.dbg.target.*;
|
||||
import ghidra.dbg.target.TargetBreakpointSpec.TargetBreakpointAction;
|
||||
import ghidra.dbg.util.PathUtils;
|
||||
@@ -320,13 +321,13 @@ public class DelegateDbgModel2TargetObject extends DbgModel2TargetObjectImpl imp
|
||||
if (proxy instanceof DbgModelTargetSession || //
|
||||
proxy instanceof DbgModelTargetProcess || //
|
||||
proxy instanceof DbgModelTargetThread) {
|
||||
requestAttributes(false);
|
||||
requestAttributes(RefreshBehavior.REFRESH_NEVER);
|
||||
return;
|
||||
}
|
||||
if (proxy instanceof DbgModelTargetRegisterContainer || //
|
||||
proxy instanceof DbgModelTargetRegisterBank || //
|
||||
proxy.getName().equals("Stack") || proxy.getName().equals("Debug")) {
|
||||
requestAttributes(false);
|
||||
requestAttributes(RefreshBehavior.REFRESH_NEVER);
|
||||
return;
|
||||
}
|
||||
if (proxy instanceof DbgModelTargetProcessContainer || //
|
||||
@@ -334,7 +335,7 @@ public class DelegateDbgModel2TargetObject extends DbgModel2TargetObjectImpl imp
|
||||
proxy instanceof DbgModelTargetModuleContainer || //
|
||||
proxy instanceof DbgModelTargetBreakpointContainer || //
|
||||
proxy instanceof DbgModelTargetStack) {
|
||||
requestElements(false);
|
||||
requestElements(RefreshBehavior.REFRESH_NEVER);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -439,20 +440,20 @@ public class DelegateDbgModel2TargetObject extends DbgModel2TargetObjectImpl imp
|
||||
}
|
||||
if (proxy instanceof TargetRegisterContainer) {
|
||||
if (!getModel().isSuppressDescent()) {
|
||||
requestElements(false);
|
||||
requestElements(RefreshBehavior.REFRESH_NEVER);
|
||||
}
|
||||
requestAttributes(false);
|
||||
requestAttributes(RefreshBehavior.REFRESH_NEVER);
|
||||
}
|
||||
if (proxy instanceof TargetRegisterBank) {
|
||||
TargetRegisterBank bank = (TargetRegisterBank) proxy;
|
||||
// requestElements(false);
|
||||
requestAttributes(false).thenAccept(__ -> {
|
||||
requestAttributes(RefreshBehavior.REFRESH_NEVER).thenAccept(__ -> {
|
||||
bank.readRegistersNamed(getCachedAttributes().keySet());
|
||||
});
|
||||
}
|
||||
if (proxy instanceof TargetStack) {
|
||||
requestAttributes(false);
|
||||
requestElements(false).thenAccept(__ -> {
|
||||
requestAttributes(RefreshBehavior.REFRESH_NEVER);
|
||||
requestElements(RefreshBehavior.REFRESH_NEVER).thenAccept(__ -> {
|
||||
for (TargetObject obj : getCachedElements().values()) {
|
||||
if (obj instanceof TargetStackFrame) {
|
||||
DbgModelTargetObject frame = (DbgModelTargetObject) obj;
|
||||
@@ -463,7 +464,7 @@ public class DelegateDbgModel2TargetObject extends DbgModel2TargetObjectImpl imp
|
||||
});
|
||||
}
|
||||
if (proxy instanceof TargetStackFrame) {
|
||||
requestAttributes(false);
|
||||
requestAttributes(RefreshBehavior.REFRESH_NEVER);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user