mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 02:39:44 +02:00
GP-0: Fix DebuggerRegistersProviderGuestTest
This commit is contained in:
parent
bece81176e
commit
c98e2b9126
3 changed files with 12 additions and 13 deletions
|
@ -1022,23 +1022,23 @@ public class DebuggerRegistersProvider extends ComponentProviderAdapter
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
TraceMemoryManager mem = current.getTrace().getMemoryManager();
|
TraceMemoryManager mem = current.getTrace().getMemoryManager();
|
||||||
|
AddressSetView guestRegs = platform.getLanguage().getRegisterAddresses();
|
||||||
|
AddressSetView hostRegs = platform.mapGuestToHost(guestRegs);
|
||||||
AddressSetView viewKnownMem = view.getViewport()
|
AddressSetView viewKnownMem = view.getViewport()
|
||||||
.unionedAddresses(snap -> mem.getAddressesWithState(snap,
|
.unionedAddresses(snap -> mem.getAddressesWithState(snap, hostRegs,
|
||||||
platform.mapGuestToHost(platform.getLanguage().getRegisterAddresses()),
|
|
||||||
state -> state == TraceMemoryState.KNOWN));
|
state -> state == TraceMemoryState.KNOWN));
|
||||||
AddressSpace regSpace = current.getPlatform().getAddressFactory().getRegisterSpace();
|
AddressSpace regSpace = platform.getAddressFactory().getRegisterSpace();
|
||||||
if (regSpace == null) {
|
if (regSpace == null) {
|
||||||
viewKnown = new AddressSet(viewKnownMem);
|
viewKnown = new AddressSet(viewKnownMem);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
TraceMemorySpace regs = getRegisterMemorySpace(regSpace, false);
|
TraceMemorySpace regs = getRegisterMemorySpace(current, regSpace, false);
|
||||||
if (regs == null) {
|
if (regs == null) {
|
||||||
viewKnown = new AddressSet(viewKnownMem);
|
viewKnown = new AddressSet(viewKnownMem);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
AddressSetView hostRegs =
|
AddressSetView overlayRegs =
|
||||||
platform.mapGuestToHost(platform.getLanguage().getRegisterAddresses());
|
TraceRegisterUtils.getOverlaySet(regs.getAddressSpace(), hostRegs);
|
||||||
AddressSetView overlayRegs = TraceRegisterUtils.getOverlaySet(regSpace, hostRegs);
|
|
||||||
AddressSetView viewKnownRegs = view.getViewport()
|
AddressSetView viewKnownRegs = view.getViewport()
|
||||||
.unionedAddresses(snap -> regs.getAddressesWithState(snap, overlayRegs,
|
.unionedAddresses(snap -> regs.getAddressesWithState(snap, overlayRegs,
|
||||||
state -> state == TraceMemoryState.KNOWN));
|
state -> state == TraceMemoryState.KNOWN));
|
||||||
|
@ -1049,7 +1049,7 @@ public class DebuggerRegistersProvider extends ComponentProviderAdapter
|
||||||
if (viewKnown == null) {
|
if (viewKnown == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
TraceMemorySpace regs = getRegisterMemorySpace(register.getAddressSpace(), false);
|
TraceMemorySpace regs = getRegisterMemorySpace(current, register.getAddressSpace(), false);
|
||||||
if (regs == null && register.getAddressSpace().isRegisterSpace()) {
|
if (regs == null && register.getAddressSpace().isRegisterSpace()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -320,8 +320,7 @@ public class DebuggerRegistersProviderTest extends AbstractGhidraHeadedDebuggerG
|
||||||
waitForSwing();
|
waitForSwing();
|
||||||
|
|
||||||
mb.testBank1.writeRegister("pc", new byte[] { 0x00, 0x40, 0x00, 0x00 });
|
mb.testBank1.writeRegister("pc", new byte[] { 0x00, 0x40, 0x00, 0x00 });
|
||||||
waitOn(mb.testModel.flushEvents());
|
waitRecorder(recorder);
|
||||||
waitForDomainObject(recorder.getTrace());
|
|
||||||
|
|
||||||
RegisterRow rowL = findRegisterRow(pc);
|
RegisterRow rowL = findRegisterRow(pc);
|
||||||
waitForPass(() -> assertTrue(rowL.isKnown()));
|
waitForPass(() -> assertTrue(rowL.isKnown()));
|
||||||
|
|
|
@ -384,14 +384,14 @@ public class DBTraceGuestPlatform extends DBAnnotatedObject
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
Pair<DBTraceGuestPlatformMappedRange, AddressRange> next = it.next();
|
Pair<DBTraceGuestPlatformMappedRange, AddressRange> next = it.next();
|
||||||
DBTraceGuestPlatformMappedRange entry = next.getLeft();
|
DBTraceGuestPlatformMappedRange entry = next.getLeft();
|
||||||
AddressRange hostRange = next.getRight();
|
AddressRange guestRange = next.getRight();
|
||||||
result.add(entry.mapGuestToHost(hostRange));
|
result.add(entry.mapGuestToHost(guestRange));
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Map the an address only if the entire range is contained in a single mapped range
|
* Map an address only if the entire range is contained in a single mapped range
|
||||||
*
|
*
|
||||||
* @param guestMin the min address of the range to map
|
* @param guestMin the min address of the range to map
|
||||||
* @param guestMax the max address of the range to check
|
* @param guestMax the max address of the range to check
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue