mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-01-09 22:17:55 -05:00
Merge remote-tracking branch 'origin/GP-6105_Dan_regPanelRefreshOnChangedLanguage' into Ghidra_12.0
This commit is contained in:
@@ -28,6 +28,7 @@ import ghidra.framework.options.SaveState;
|
|||||||
import ghidra.framework.plugintool.PluginTool;
|
import ghidra.framework.plugintool.PluginTool;
|
||||||
import ghidra.framework.store.LockException;
|
import ghidra.framework.store.LockException;
|
||||||
import ghidra.program.model.address.AddressSpace;
|
import ghidra.program.model.address.AddressSpace;
|
||||||
|
import ghidra.program.model.lang.Language;
|
||||||
import ghidra.trace.database.DBTraceContentHandler;
|
import ghidra.trace.database.DBTraceContentHandler;
|
||||||
import ghidra.trace.model.Lifespan;
|
import ghidra.trace.model.Lifespan;
|
||||||
import ghidra.trace.model.Trace;
|
import ghidra.trace.model.Trace;
|
||||||
@@ -48,7 +49,6 @@ public class DebuggerCoordinates {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Coordinates that indicate no trace is active in the Debugger UI.
|
* Coordinates that indicate no trace is active in the Debugger UI.
|
||||||
*
|
|
||||||
* <p>
|
* <p>
|
||||||
* Typically, that only happens when no trace is open. Telling the trace manager to activate
|
* Typically, that only happens when no trace is open. Telling the trace manager to activate
|
||||||
* {@code NOWHERE} will cause it to instead activate the most recently active trace, which may
|
* {@code NOWHERE} will cause it to instead activate the most recently active trace, which may
|
||||||
@@ -609,6 +609,10 @@ public class DebuggerCoordinates {
|
|||||||
return platform;
|
return platform;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Language getLanguage() {
|
||||||
|
return platform == null ? null : platform.getLanguage();
|
||||||
|
}
|
||||||
|
|
||||||
public Target getTarget() {
|
public Target getTarget() {
|
||||||
return target;
|
return target;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -332,7 +332,7 @@ public class DebuggerRegistersProvider extends ComponentProviderAdapter
|
|||||||
* It's possible an "undo" or other transaction rollback will cause the current thread
|
* It's possible an "undo" or other transaction rollback will cause the current thread
|
||||||
* to be replaced by another object. If that's the case, we need to adjust our
|
* to be replaced by another object. If that's the case, we need to adjust our
|
||||||
* coordinates.
|
* coordinates.
|
||||||
*
|
* <p>
|
||||||
* If that adjustment does not otherwise cause the table to update, we have to fire that
|
* If that adjustment does not otherwise cause the table to update, we have to fire that
|
||||||
* event, since the register values may have changed, esp., if this "restored" event is
|
* event, since the register values may have changed, esp., if this "restored" event is
|
||||||
* the result of many events being coalesced.
|
* the result of many events being coalesced.
|
||||||
@@ -499,7 +499,7 @@ public class DebuggerRegistersProvider extends ComponentProviderAdapter
|
|||||||
final RegistersTableModel regsTableModel;
|
final RegistersTableModel regsTableModel;
|
||||||
GhidraTable regsTable;
|
GhidraTable regsTable;
|
||||||
GhidraTableFilterPanel<RegisterRow> regsFilterPanel;
|
GhidraTableFilterPanel<RegisterRow> regsFilterPanel;
|
||||||
Map<Register, RegisterRow> regMap = new HashMap<>();
|
Map<Register, RegisterRow> regMap = new IdentityHashMap<>();
|
||||||
|
|
||||||
private final DebuggerAvailableRegistersDialog availableRegsDialog;
|
private final DebuggerAvailableRegistersDialog availableRegsDialog;
|
||||||
|
|
||||||
@@ -826,7 +826,7 @@ public class DebuggerRegistersProvider extends ComponentProviderAdapter
|
|||||||
|
|
||||||
prepareRegisterSpace();
|
prepareRegisterSpace();
|
||||||
recomputeViewKnown();
|
recomputeViewKnown();
|
||||||
loadRegistersAndValues();
|
loadRegistersAndValues(previous.getLanguage() != current.getLanguage());
|
||||||
contextChanged();
|
contextChanged();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -984,7 +984,6 @@ public class DebuggerRegistersProvider extends ComponentProviderAdapter
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Ensure the register space exists and has been populated from register object values.
|
* Ensure the register space exists and has been populated from register object values.
|
||||||
*
|
|
||||||
* <p>
|
* <p>
|
||||||
* TODO: I wish this were not necessary. Maybe I should create the space when register object
|
* TODO: I wish this were not necessary. Maybe I should create the space when register object
|
||||||
* values are populated.
|
* values are populated.
|
||||||
@@ -1080,10 +1079,8 @@ public class DebuggerRegistersProvider extends ComponentProviderAdapter
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Gather general registers, the program counter, and the stack pointer
|
* Gather general registers, the program counter, and the stack pointer
|
||||||
*
|
|
||||||
* <p>
|
* <p>
|
||||||
* This excludes the context register
|
* This excludes the context register
|
||||||
*
|
|
||||||
* <p>
|
* <p>
|
||||||
* TODO: Several pspec files need adjustment to clean up "common registers"
|
* TODO: Several pspec files need adjustment to clean up "common registers"
|
||||||
*
|
*
|
||||||
@@ -1234,7 +1231,7 @@ public class DebuggerRegistersProvider extends ComponentProviderAdapter
|
|||||||
Set<Register> selection = getSelectionFor(current.getPlatform());
|
Set<Register> selection = getSelectionFor(current.getPlatform());
|
||||||
selection.clear();
|
selection.clear();
|
||||||
selection.addAll(new TreeSet<>(selectedRegisters));
|
selection.addAll(new TreeSet<>(selectedRegisters));
|
||||||
return loadRegistersAndValues();
|
return loadRegistersAndValues(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public RegisterRow getRegisterRow(Register register) {
|
public RegisterRow getRegisterRow(Register register) {
|
||||||
@@ -1275,12 +1272,16 @@ public class DebuggerRegistersProvider extends ComponentProviderAdapter
|
|||||||
regsTableModel.addAll(toAdd);
|
regsTableModel.addAll(toAdd);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected CompletableFuture<Void> loadRegistersAndValues() {
|
protected CompletableFuture<Void> loadRegistersAndValues(boolean changeLanguage) {
|
||||||
if (current.getThread() == null) {
|
if (current.getThread() == null) {
|
||||||
regsTableModel.clear();
|
regsTableModel.clear();
|
||||||
regMap.clear();
|
regMap.clear();
|
||||||
return AsyncUtils.nil();
|
return AsyncUtils.nil();
|
||||||
}
|
}
|
||||||
|
if (changeLanguage) {
|
||||||
|
regsTableModel.clear();
|
||||||
|
regMap.clear();
|
||||||
|
}
|
||||||
Set<Register> selected = getSelectionFor(current.getPlatform());
|
Set<Register> selected = getSelectionFor(current.getPlatform());
|
||||||
displaySelectedRegisters(selected);
|
displaySelectedRegisters(selected);
|
||||||
return loadValues();
|
return loadValues();
|
||||||
|
|||||||
Reference in New Issue
Block a user