mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-06-04 09:58:35 +08:00
Inform decompiler when opaque data-types are variable length
This commit is contained in:
+5
@@ -588,8 +588,10 @@ public class PcodeDataTypeManager {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
int sz = type.getLength();
|
int sz = type.getLength();
|
||||||
|
boolean isVarLength = false;
|
||||||
if (sz <= 0) {
|
if (sz <= 0) {
|
||||||
sz = size;
|
sz = size;
|
||||||
|
isVarLength = true;
|
||||||
}
|
}
|
||||||
appendNameIdAttributes(resBuf, origType);
|
appendNameIdAttributes(resBuf, origType);
|
||||||
if (sz < 16) {
|
if (sz < 16) {
|
||||||
@@ -601,6 +603,9 @@ public class PcodeDataTypeManager {
|
|||||||
// Build an "opaque" structure with no fields
|
// Build an "opaque" structure with no fields
|
||||||
SpecXmlUtils.encodeStringAttribute(resBuf, "metatype", "struct");
|
SpecXmlUtils.encodeStringAttribute(resBuf, "metatype", "struct");
|
||||||
SpecXmlUtils.encodeSignedIntegerAttribute(resBuf, "size", sz);
|
SpecXmlUtils.encodeSignedIntegerAttribute(resBuf, "size", sz);
|
||||||
|
if (isVarLength) {
|
||||||
|
SpecXmlUtils.encodeBooleanAttribute(resBuf, "varlength", isVarLength);
|
||||||
|
}
|
||||||
resBuf.append('>');
|
resBuf.append('>');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user