Skip to content

Commit 09ba181

Browse files
committed
Merge remote-tracking branch 'origin/GP-2636_d-millar_update_on_writeRegisters'
2 parents 82ac8f7 + 58fdffa commit 09ba181

File tree

3 files changed

+9
-2
lines changed

3 files changed

+9
-2
lines changed

Ghidra/Debug/Debugger-agent-dbgeng/src/main/java/agent/dbgeng/manager/cmd/DbgLaunchProcessCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public void invoke() {
9595
}
9696

9797
private String fixPath(String input) {
98-
if (input.equals("")) {
98+
if (input == null || input.equals("")) {
9999
return null;
100100
}
101101
String output = input;

Ghidra/Debug/Debugger-agent-dbgeng/src/main/java/agent/dbgeng/model/iface2/DbgModelTargetRegisterBank.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import java.util.concurrent.CompletableFuture;
2222
import java.util.concurrent.atomic.AtomicReference;
2323

24-
import agent.dbgeng.manager.DbgThread;
24+
import agent.dbgeng.manager.*;
2525
import agent.dbgeng.manager.impl.*;
2626
import ghidra.async.AsyncUtils;
2727
import ghidra.async.TypeSpec;
@@ -101,6 +101,7 @@ public default CompletableFuture<Void> writeRegistersNamed(Map<String, byte[]> v
101101
}
102102

103103
public default CompletableFuture<Void> doWriteRegistersNamed(Map<String, byte[]> values) {
104+
DbgManagerImpl manager = getManager();
104105
DbgThread thread = getParentThread().getThread();
105106
return AsyncUtils.sequence(TypeSpec.VOID).then(seq -> {
106107
requestNativeElements().handle(seq::nextIgnore);
@@ -122,6 +123,8 @@ public default CompletableFuture<Void> doWriteRegistersNamed(Map<String, byte[]>
122123
getParentThread().getThread().writeRegisters(toWrite).handle(seq::next);
123124
// TODO: Should probably filter only effective and normalized writes in the callback
124125
}).then(seq -> {
126+
manager.getEventListeners().fire.threadStateChanged(thread, thread.getState(),
127+
DbgCause.Causes.UNCLAIMED, DbgReason.Reasons.NONE);
125128
broadcast().registersUpdated(getProxy(), values);
126129
seq.exit();
127130
}).finish();

Ghidra/Debug/Debugger-agent-dbgeng/src/main/java/agent/dbgeng/model/impl/DbgModelTargetRegisterContainerImpl.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.stream.Collectors;
2222

2323
import agent.dbgeng.manager.*;
24+
import agent.dbgeng.manager.impl.DbgManagerImpl;
2425
import agent.dbgeng.manager.impl.DbgRegister;
2526
import agent.dbgeng.model.iface2.*;
2627
import ghidra.async.AsyncUtils;
@@ -141,6 +142,7 @@ public CompletableFuture<? extends Map<String, byte[]>> readRegistersNamed(
141142

142143
@Override
143144
public CompletableFuture<Void> writeRegistersNamed(Map<String, byte[]> values) {
145+
DbgManagerImpl manager = getManager();
144146
return model.gateFuture(thread.listRegisters().thenCompose(regs -> {
145147
return requestElements(false);
146148
}).thenCompose(__ -> {
@@ -159,6 +161,8 @@ public CompletableFuture<Void> writeRegistersNamed(Map<String, byte[]> values) {
159161
return thread.writeRegisters(toWrite);
160162
// TODO: Should probably filter only effective and normalized writes in the callback
161163
}).thenAccept(__ -> {
164+
manager.getEventListeners().fire.threadStateChanged(thread, thread.getState(),
165+
DbgCause.Causes.UNCLAIMED, DbgReason.Reasons.NONE);
162166
broadcast().registersUpdated(getProxy(), values);
163167
}));
164168
}

0 commit comments

Comments
 (0)