From 944310129870006f2519ea0fbdb8e53ff09e065d Mon Sep 17 00:00:00 2001 From: Teal Bauer Date: Mon, 14 Apr 2025 09:46:45 +0200 Subject: [PATCH] fix: Update XrefsEndpoints to use Ghidra API correctly - Replace getDefinedAddresses with proper Listing methods - Use getInstructions and getDefinedData instead - Check both instructions and data for a valid starting address - Improve fallback strategy for current address retrieval --- .../ghidra/endpoints/XrefsEndpoints.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main/java/eu/starsong/ghidra/endpoints/XrefsEndpoints.java b/src/main/java/eu/starsong/ghidra/endpoints/XrefsEndpoints.java index 5ff8451..f9c7f65 100644 --- a/src/main/java/eu/starsong/ghidra/endpoints/XrefsEndpoints.java +++ b/src/main/java/eu/starsong/ghidra/endpoints/XrefsEndpoints.java @@ -328,11 +328,18 @@ public class XrefsEndpoints extends AbstractEndpoint { if (program.equals(programManager.getCurrentProgram())) { ghidra.program.model.listing.Listing listing = program.getListing(); if (listing != null) { - // Return the first defined address we can find - ghidra.program.model.address.AddressIterator definedAddresses = - listing.getDefinedAddresses(); - if (definedAddresses.hasNext()) { - return definedAddresses.next(); + // Return the first instruction or defined data we can find + ghidra.program.model.listing.InstructionIterator instructions = + listing.getInstructions(true); + if (instructions.hasNext()) { + return instructions.next().getAddress(); + } + + // Or try defined data + ghidra.program.model.listing.DataIterator data = + listing.getDefinedData(true); + if (data.hasNext()) { + return data.next().getAddress(); } } }