mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-28 17:11:11 -09:00
GP-2966: Consider aliases in debugger register mapping.
This commit is contained in:
@@ -33,6 +33,10 @@ public class PathMatcher implements PathPredicates {
|
||||
patterns.add(pattern);
|
||||
}
|
||||
|
||||
public void addAll(PathMatcher matcher) {
|
||||
patterns.addAll(matcher.patterns);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.format("<PathMatcher\n %s\n>", StringUtils.join(patterns, "\n "));
|
||||
|
||||
@@ -156,6 +156,11 @@ public class TestDebuggerObjectModel extends EmptyDebuggerObjectModel {
|
||||
return TestTargetRegister.fromLanguageRegister(container, register);
|
||||
}
|
||||
|
||||
protected TestTargetRegister newTestTargetRegister(TestTargetRegisterContainer container,
|
||||
String index, Register register) {
|
||||
return TestTargetRegister.fromLanguageRegister(container, index, register);
|
||||
}
|
||||
|
||||
protected TestTargetThreadContainer newTestTargetThreadContainer(TestTargetProcess process) {
|
||||
return new TestTargetThreadContainer(process);
|
||||
}
|
||||
|
||||
@@ -27,10 +27,15 @@ public class TestTargetRegister
|
||||
extends DefaultTestTargetObject<TestTargetObject, TestTargetRegisterContainer>
|
||||
implements TargetRegister {
|
||||
|
||||
public static TestTargetRegister fromLanguageRegister(TestTargetRegisterContainer parent,
|
||||
String index, Register register) {
|
||||
return new TestTargetRegister(parent, PathUtils.makeKey(index),
|
||||
(register.getBitLength() + 7) / 8, register.isProgramCounter());
|
||||
}
|
||||
|
||||
public static TestTargetRegister fromLanguageRegister(
|
||||
TestTargetRegisterContainer parent, Register register) {
|
||||
return new TestTargetRegister(parent, PathUtils.makeKey(register.getName()),
|
||||
(register.getBitLength() + 7) / 8, register.isProgramCounter());
|
||||
return fromLanguageRegister(parent, register.getName(), register);
|
||||
}
|
||||
|
||||
protected final int byteLength;
|
||||
|
||||
@@ -61,6 +61,11 @@ public class TestTargetRegisterContainer
|
||||
public TestTargetRegister addRegister(Register register) {
|
||||
TestTargetRegister tr =
|
||||
getModel().newTestTargetRegister(this, Objects.requireNonNull(register));
|
||||
doAddRegister(tr, register);
|
||||
return tr;
|
||||
}
|
||||
|
||||
protected void doAddRegister(TestTargetRegister tr, Register register) {
|
||||
String reason = "Added " + register + " from Ghidra language";
|
||||
changeElements(List.of(), List.of(tr), reason);
|
||||
List<AbstractTestTargetRegisterBank<?>> banks;
|
||||
@@ -70,6 +75,12 @@ public class TestTargetRegisterContainer
|
||||
for (AbstractTestTargetRegisterBank<?> bank : banks) {
|
||||
bank.addRegisterDescs(List.of(tr), reason);
|
||||
}
|
||||
}
|
||||
|
||||
public TestTargetRegister addRegister(String index, Register register) {
|
||||
TestTargetRegister tr =
|
||||
getModel().newTestTargetRegister(this, index, Objects.requireNonNull(register));
|
||||
doAddRegister(tr, register);
|
||||
return tr;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user