diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/field/ListingFieldDescriptionProvider.java b/Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/field/ListingFieldDescriptionProvider.java index 0113c256eb..48cd8e4264 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/field/ListingFieldDescriptionProvider.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/field/ListingFieldDescriptionProvider.java @@ -18,6 +18,7 @@ package ghidra.app.util.viewer.field; import docking.widgets.fieldpanel.FieldDescriptionProvider; import docking.widgets.fieldpanel.field.Field; import docking.widgets.fieldpanel.support.FieldLocation; +import ghidra.program.model.address.Address; import ghidra.program.util.ProgramLocation; public class ListingFieldDescriptionProvider implements FieldDescriptionProvider { @@ -27,8 +28,9 @@ public class ListingFieldDescriptionProvider implements FieldDescriptionProvider if (field instanceof ListingField listingField) { FieldFactory fieldFactory = listingField.getFieldFactory(); ProgramLocation location = fieldFactory.getProgramLocation(0, 0, listingField); - return fieldFactory.getFieldName() + " Field at Address " + location.getAddress() + - " text = " + field.getText(); + Address address = location.getAddress(); + String addressString = address.toString(address.getAddressSpace().showSpaceName(), 1); + return fieldFactory.getFieldName() + " Field at Address " + addressString; } return "Unknown Field"; } diff --git a/Ghidra/Features/ByteViewer/src/main/java/ghidra/app/plugin/core/byteviewer/ByteViewerComponent.java b/Ghidra/Features/ByteViewer/src/main/java/ghidra/app/plugin/core/byteviewer/ByteViewerComponent.java index 66c48db7e3..fb15a0debc 100644 --- a/Ghidra/Features/ByteViewer/src/main/java/ghidra/app/plugin/core/byteviewer/ByteViewerComponent.java +++ b/Ghidra/Features/ByteViewer/src/main/java/ghidra/app/plugin/core/byteviewer/ByteViewerComponent.java @@ -102,13 +102,22 @@ public class ByteViewerComponent extends FieldPanel implements FieldMouseListene ByteBlockInfo info = indexMap.getBlockInfo(fieldLoc.getIndex(), fieldLoc.getFieldNum()); if (info != null) { String modelName = model.getName(); - return modelName + " format at " + - info.getBlock().getLocationRepresentation(info.getOffset()) + ", value = " + - field.getText(); + String location = getAccessibleLocationInfo(info.getBlock(), info.getOffset()); + return modelName + " format at " + location; } return null; } + private String getAccessibleLocationInfo(ByteBlock block, BigInteger offset) { + if (block instanceof MemoryByteBlock memBlock) { + // location represents an address, remove leading zeros to make screen reading concise + Address address = memBlock.getAddress(offset); + return address.toString(address.getAddressSpace().showSpaceName(), 1); + } + // otherwise use generic location representation + return block.getLocationRepresentation(offset); + } + @Override public void buttonPressed(FieldLocation fieldLocation, Field field, MouseEvent mouseEvent) { if (fieldLocation == null || field == null) { diff --git a/Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/component/DecompilerPanel.java b/Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/component/DecompilerPanel.java index 97673d057d..cb9b7ea8ac 100644 --- a/Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/component/DecompilerPanel.java +++ b/Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/component/DecompilerPanel.java @@ -16,9 +16,7 @@ package ghidra.app.decompiler.component; import java.awt.*; -import java.awt.event.ComponentAdapter; -import java.awt.event.ComponentEvent; -import java.awt.event.MouseEvent; +import java.awt.event.*; import java.math.BigInteger; import java.util.*; import java.util.List; @@ -45,7 +43,6 @@ import ghidra.app.decompiler.component.hover.DecompilerHoverService; import ghidra.app.decompiler.component.margin.*; import ghidra.app.plugin.core.decompile.DecompilerClipboardProvider; import ghidra.app.plugin.core.decompile.actions.FieldBasedSearchLocation; -import ghidra.app.util.viewer.listingpanel.MarginProvider; import ghidra.app.util.viewer.util.ScrollpaneAlignedHorizontalLayout; import ghidra.program.model.address.*; import ghidra.program.model.listing.Function; @@ -128,7 +125,7 @@ public class DecompilerPanel extends JPanel implements FieldMouseListener, Field fieldPanel.addFieldMouseListener(this); fieldPanel.addFieldLocationListener(this); fieldPanel.addLayoutListener(this); - + fieldPanel.addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent e) { @@ -1317,7 +1314,7 @@ public class DecompilerPanel extends JPanel implements FieldMouseListener, Field if (f == null) { return null; } - return "line " + (l.getIndex().intValue() + 1) + ", " + f.getText(); + return "line " + (l.getIndex().intValue() + 1); }); }