diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/golang/rtti/types/GoInterfaceType.java b/Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/golang/rtti/types/GoInterfaceType.java index 4ee8224853..03d7960fad 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/golang/rtti/types/GoInterfaceType.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/golang/rtti/types/GoInterfaceType.java @@ -112,7 +112,9 @@ public class GoInterfaceType extends GoType { StructureDataType itabStruct = new StructureDataType(ifaceCP, ifaceName + "_itab", 0, dtm); itabStruct.replaceWith(genericItabStruct); - int funDTCOrdinal = 4; // a bit of a hack, could also lookup by name "Fun" + FieldMappingInfo funFMI = + programContext.getStructureMappingInfo(GoItab.class).getFieldInfo("fun"); + int funDTCOrdinal = funFMI.getDtc().getOrdinal(); //DataTypeComponentImpl funDtc = itabStruct.getComponent(funDTCOrdinal); itabStruct.delete(funDTCOrdinal); diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/golang/structmapping/StructureMappingInfo.java b/Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/golang/structmapping/StructureMappingInfo.java index 48329b5ea9..9106ced93a 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/golang/structmapping/StructureMappingInfo.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/golang/structmapping/StructureMappingInfo.java @@ -130,6 +130,15 @@ public class StructureMappingInfo { return fields; } + public FieldMappingInfo getFieldInfo(String javaFieldName) throws IOException { + for (FieldMappingInfo fmi : fields) { + if (fmi.getField().getName().equals(javaFieldName)) { + return fmi; + } + } + throw new IOException("Java field name not found: " + javaFieldName); + } + public List getAfterMethods() { return afterMethods; }