diff --git a/Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/service/tracermi/ValueDecoder.java b/Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/service/tracermi/ValueDecoder.java index 68546e278c..8d74ef8bd1 100644 --- a/Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/service/tracermi/ValueDecoder.java +++ b/Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/service/tracermi/ValueDecoder.java @@ -63,6 +63,15 @@ public interface ValueDecoder { default -> ""; }; } + + @Override + public Object toValue(Value value) { + Object obj = ValueDecoder.super.toValue(value); + if (obj instanceof byte[] va) { + return NumericUtilities.convertBytesToString(va, ":"); + } + return obj; + } }; default Address toAddress(Addr addr, boolean required) { @@ -105,8 +114,7 @@ public interface ValueDecoder { case STRING_VALUE -> value.getStringValue(); case BOOL_ARR_VALUE -> ArrayUtils.toPrimitive( value.getBoolArrValue().getArrList().stream().toArray(Boolean[]::new)); - case BYTES_VALUE -> NumericUtilities - .convertBytesToString(value.getBytesValue().toByteArray(), ":"); + case BYTES_VALUE -> value.getBytesValue().toByteArray(); case CHAR_ARR_VALUE -> value.getCharArrValue().toCharArray(); case SHORT_ARR_VALUE -> ArrayUtils.toPrimitive( value.getShortArrValue() diff --git a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/AbstractGhidraHeadedDebuggerTest.java b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/AbstractGhidraHeadedDebuggerTest.java index 12020ebefd..a8e4f09148 100644 --- a/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/AbstractGhidraHeadedDebuggerTest.java +++ b/Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/AbstractGhidraHeadedDebuggerTest.java @@ -224,6 +224,10 @@ public abstract class AbstractGhidraHeadedDebuggerTest return new AddressRangeImpl(addr(program, min), addr(program, max)); } + protected static AddressRange rng(Address min, long length) throws AddressOverflowException { + return new AddressRangeImpl(min, length); + } + protected static AddressSetView set(AddressRange... ranges) { AddressSet set = new AddressSet(); for (AddressRange rng : ranges) { @@ -232,6 +236,13 @@ public abstract class AbstractGhidraHeadedDebuggerTest return set; } + protected static AddressRange quantize(AddressRange rng, long page) { + AddressSpace space = rng.getAddressSpace(); + long min = Long.divideUnsigned(rng.getMinAddress().getOffset(), page) * page; + long max = Long.divideUnsigned(rng.getMaxAddress().getOffset() + page - 1, page) * page - 1; + return new AddressRangeImpl(space.getAddress(min), space.getAddress(max)); + } + public static Language getToyBE64Language() { try { return DefaultLanguageService.getLanguageService() diff --git a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/dbgeng/rmi/DbgEngCommandsTest.java b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/dbgeng/rmi/DbgEngCommandsTest.java index 8506d42ec5..61fe5c66b3 100644 --- a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/dbgeng/rmi/DbgEngCommandsTest.java +++ b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/dbgeng/rmi/DbgEngCommandsTest.java @@ -369,7 +369,7 @@ public class DbgEngCommandsTest extends AbstractDbgEngTraceRmiTest { Entry entry = tb.trace.getMemoryManager().getMostRecentStateEntry(snap, addr); assertEquals(Map.entry(new ImmutableTraceAddressSnapRange( - new AddressRangeImpl(addr, 16), Lifespan.at(0)), TraceMemoryState.ERROR), entry); + rng(addr, 16), Lifespan.at(0)), TraceMemoryState.ERROR), entry); } } diff --git a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/gdb/rmi/GdbCommandsTest.java b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/gdb/rmi/GdbCommandsTest.java index a207f04e6c..01bf9bd6cd 100644 --- a/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/gdb/rmi/GdbCommandsTest.java +++ b/Ghidra/Test/DebuggerIntegrationTest/src/test.slow/java/agent/gdb/rmi/GdbCommandsTest.java @@ -409,7 +409,7 @@ public class GdbCommandsTest extends AbstractGdbTraceRmiTest { Entry entry = tb.trace.getMemoryManager().getMostRecentStateEntry(snap, addr); assertEquals(Map.entry(new ImmutableTraceAddressSnapRange( - new AddressRangeImpl(addr, 10), Lifespan.at(0)), TraceMemoryState.ERROR), entry); + quantize(rng(addr, 10), 4096), Lifespan.at(0)), TraceMemoryState.ERROR), entry); } }