From 7d3891ac0b849d43c73eba63d232a5cfb7bee0a2 Mon Sep 17 00:00:00 2001 From: Ives <115841082+IveSeenYa@users.noreply.github.com> Date: Fri, 15 Sep 2023 13:29:20 -0400 Subject: [PATCH] GP-3829: Included override of method to validate addressspace in ProgramAddressFactory to include Register spaces in Trace --- .../trace/database/address/TraceAddressFactory.java | 6 ++++++ .../ghidra/program/database/ProgramAddressFactory.java | 8 ++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/address/TraceAddressFactory.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/address/TraceAddressFactory.java index ffc44b7b91..1505fddac8 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/address/TraceAddressFactory.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/address/TraceAddressFactory.java @@ -34,6 +34,12 @@ public class TraceAddressFactory extends ProgramAddressFactory { !originalSpace.isOverlaySpace(); } + @Override + protected boolean assignUniqueID(AddressSpace originalSpace) { + return super.assignUniqueID(originalSpace) || + originalSpace.getType() == AddressSpace.TYPE_REGISTER; + } + @Override // for peer access protected OverlayAddressSpace addOverlayAddressSpace(String name, boolean preserveName, AddressSpace originalSpace, long minOffset, long maxOffset) { diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramAddressFactory.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramAddressFactory.java index 9bfbcc0fb8..57806571a2 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramAddressFactory.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramAddressFactory.java @@ -112,6 +112,11 @@ public class ProgramAddressFactory extends DefaultAddressFactory { return originalSpace.isMemorySpace() && !originalSpace.isOverlaySpace(); } + protected boolean assignUniqueID(AddressSpace originalSpace) { + return originalSpace.getType() == AddressSpace.TYPE_RAM || + originalSpace.getType() == AddressSpace.TYPE_OTHER; + } + /** * Create a new OverlayAddressSpace based upon the given overlay blockName and base AddressSpace * @@ -149,8 +154,7 @@ public class ProgramAddressFactory extends DefaultAddressFactory { } int unique = 0; - if (originalSpace.getType() == AddressSpace.TYPE_RAM || - originalSpace.getType() == AddressSpace.TYPE_OTHER) { + if (assignUniqueID(originalSpace)) { unique = getNextUniqueID(); }