From 71ca7532e7207ecca45c2e6de4f13382e17f66c7 Mon Sep 17 00:00:00 2001 From: caheckman <48068198+caheckman@users.noreply.github.com> Date: Tue, 30 Mar 2021 11:57:07 -0400 Subject: [PATCH] Inform decompiler when opaque data-types are variable length --- .../ghidra/program/model/pcode/PcodeDataTypeManager.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeDataTypeManager.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeDataTypeManager.java index fecc0f4cbc..8a5f340318 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeDataTypeManager.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeDataTypeManager.java @@ -588,8 +588,10 @@ public class PcodeDataTypeManager { } else { int sz = type.getLength(); + boolean isVarLength = false; if (sz <= 0) { sz = size; + isVarLength = true; } appendNameIdAttributes(resBuf, origType); if (sz < 16) { @@ -601,6 +603,9 @@ public class PcodeDataTypeManager { // Build an "opaque" structure with no fields SpecXmlUtils.encodeStringAttribute(resBuf, "metatype", "struct"); SpecXmlUtils.encodeSignedIntegerAttribute(resBuf, "size", sz); + if (isVarLength) { + SpecXmlUtils.encodeBooleanAttribute(resBuf, "varlength", isVarLength); + } resBuf.append('>'); } }