mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-04 18:29:37 +02:00
GP-3088 Marshal pointer wordsize as unsigned
This commit is contained in:
parent
d9fb11af79
commit
f9bc45cdf0
3 changed files with 18 additions and 16 deletions
|
@ -820,7 +820,7 @@ void TypePointer::encode(Encoder &encoder) const
|
||||||
encoder.openElement(ELEM_TYPE);
|
encoder.openElement(ELEM_TYPE);
|
||||||
encodeBasic(metatype,encoder);
|
encodeBasic(metatype,encoder);
|
||||||
if (wordsize != 1)
|
if (wordsize != 1)
|
||||||
encoder.writeSignedInteger(ATTRIB_WORDSIZE, wordsize);
|
encoder.writeUnsignedInteger(ATTRIB_WORDSIZE, wordsize);
|
||||||
if (spaceid != (AddrSpace *)0)
|
if (spaceid != (AddrSpace *)0)
|
||||||
encoder.writeSpace(ATTRIB_SPACE, spaceid);
|
encoder.writeSpace(ATTRIB_SPACE, spaceid);
|
||||||
ptrto->encodeRef(encoder);
|
ptrto->encodeRef(encoder);
|
||||||
|
@ -2129,7 +2129,7 @@ void TypePointerRel::encode(Encoder &encoder) const
|
||||||
encoder.openElement(ELEM_TYPE);
|
encoder.openElement(ELEM_TYPE);
|
||||||
encodeBasic(TYPE_PTRREL,encoder); // Override the metatype for XML
|
encodeBasic(TYPE_PTRREL,encoder); // Override the metatype for XML
|
||||||
if (wordsize != 1)
|
if (wordsize != 1)
|
||||||
encoder.writeSignedInteger(ATTRIB_WORDSIZE, wordsize);
|
encoder.writeUnsignedInteger(ATTRIB_WORDSIZE, wordsize);
|
||||||
ptrto->encode(encoder);
|
ptrto->encode(encoder);
|
||||||
parent->encodeRef(encoder);
|
parent->encodeRef(encoder);
|
||||||
encoder.openElement(ELEM_OFF);
|
encoder.openElement(ELEM_OFF);
|
||||||
|
|
|
@ -809,8 +809,8 @@ public class SleighLanguage implements Language {
|
||||||
boolean isEntry = SpecXmlUtils.decodeBoolean(symbol.getAttribute("entry"));
|
boolean isEntry = SpecXmlUtils.decodeBoolean(symbol.getAttribute("entry"));
|
||||||
Address startAddress = addressFactory.getAddress(addressString);
|
Address startAddress = addressFactory.getAddress(addressString);
|
||||||
int rangeSize = SpecXmlUtils.decodeInt(symbol.getAttribute("size"));
|
int rangeSize = SpecXmlUtils.decodeInt(symbol.getAttribute("size"));
|
||||||
Boolean isVolatile = SpecXmlUtils.decodeNullableBoolean(
|
Boolean isVolatile =
|
||||||
symbol.getAttribute("volatile"));
|
SpecXmlUtils.decodeNullableBoolean(symbol.getAttribute("volatile"));
|
||||||
if (startAddress == null) {
|
if (startAddress == null) {
|
||||||
Msg.error(this, "invalid symbol address \"" + addressString + "\": " +
|
Msg.error(this, "invalid symbol address \"" + addressString + "\": " +
|
||||||
description.getSpecFile());
|
description.getSpecFile());
|
||||||
|
@ -819,9 +819,11 @@ public class SleighLanguage implements Language {
|
||||||
AddressLabelInfo info;
|
AddressLabelInfo info;
|
||||||
try {
|
try {
|
||||||
info = new AddressLabelInfo(startAddress, rangeSize, labelName, false,
|
info = new AddressLabelInfo(startAddress, rangeSize, labelName, false,
|
||||||
isEntry, type, isVolatile);
|
isEntry, type, isVolatile);
|
||||||
} catch (AddressOverflowException e) {
|
}
|
||||||
throw new XmlParseException("invalid symbol definition: " + labelName, e);
|
catch (AddressOverflowException e) {
|
||||||
|
throw new XmlParseException("invalid symbol definition: " + labelName,
|
||||||
|
e);
|
||||||
}
|
}
|
||||||
defaultSymbols.add(info);
|
defaultSymbols.add(info);
|
||||||
if (isVolatile != null) {
|
if (isVolatile != null) {
|
||||||
|
@ -831,7 +833,8 @@ public class SleighLanguage implements Language {
|
||||||
volatileSymbolAddresses = new AddressSet();
|
volatileSymbolAddresses = new AddressSet();
|
||||||
}
|
}
|
||||||
volatileSymbolAddresses.addRange(startAddress, endAddress);
|
volatileSymbolAddresses.addRange(startAddress, endAddress);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
if (nonVolatileSymbolAddresses == null) {
|
if (nonVolatileSymbolAddresses == null) {
|
||||||
nonVolatileSymbolAddresses = new AddressSet();
|
nonVolatileSymbolAddresses = new AddressSet();
|
||||||
}
|
}
|
||||||
|
@ -896,7 +899,8 @@ public class SleighLanguage implements Language {
|
||||||
read(parser);
|
read(parser);
|
||||||
}
|
}
|
||||||
catch (XmlParseException e) {
|
catch (XmlParseException e) {
|
||||||
Msg.error(this, "Failed to parse Sleigh Specification ("+ specFile.getName() + "): " + e.getMessage());
|
Msg.error(this, "Failed to parse Sleigh Specification (" + specFile.getName() + "): " +
|
||||||
|
e.getMessage());
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
parser.dispose();
|
parser.dispose();
|
||||||
|
@ -1454,8 +1458,7 @@ public class SleighLanguage implements Language {
|
||||||
encoder.writeBool(ATTRIB_BIGENDIAN, isBigEndian());
|
encoder.writeBool(ATTRIB_BIGENDIAN, isBigEndian());
|
||||||
encoder.writeUnsignedInteger(ATTRIB_UNIQBASE, uniqueOffset);
|
encoder.writeUnsignedInteger(ATTRIB_UNIQBASE, uniqueOffset);
|
||||||
encoder.openElement(ELEM_SPACES);
|
encoder.openElement(ELEM_SPACES);
|
||||||
encoder.writeString(ATTRIB_DEFAULTSPACE,
|
encoder.writeString(ATTRIB_DEFAULTSPACE, factory.getDefaultAddressSpace().getName());
|
||||||
factory.getDefaultAddressSpace().getName());
|
|
||||||
|
|
||||||
ElementId tag;
|
ElementId tag;
|
||||||
int delay;
|
int delay;
|
||||||
|
@ -1511,8 +1514,7 @@ public class SleighLanguage implements Language {
|
||||||
encoder.writeSignedInteger(ATTRIB_SIZE, bytesize);
|
encoder.writeSignedInteger(ATTRIB_SIZE, bytesize);
|
||||||
|
|
||||||
if (element.getAddressableUnitSize() > 1) {
|
if (element.getAddressableUnitSize() > 1) {
|
||||||
encoder.writeSignedInteger(ATTRIB_WORDSIZE,
|
encoder.writeUnsignedInteger(ATTRIB_WORDSIZE, element.getAddressableUnitSize());
|
||||||
element.getAddressableUnitSize());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
encoder.writeBool(ATTRIB_BIGENDIAN, isBigEndian());
|
encoder.writeBool(ATTRIB_BIGENDIAN, isBigEndian());
|
||||||
|
|
|
@ -333,7 +333,7 @@ public class PcodeDataTypeManager {
|
||||||
}
|
}
|
||||||
encoder.writeSignedInteger(ATTRIB_SIZE, ptrLen);
|
encoder.writeSignedInteger(ATTRIB_SIZE, ptrLen);
|
||||||
if (pointerWordSize != 1) {
|
if (pointerWordSize != 1) {
|
||||||
encoder.writeSignedInteger(ATTRIB_WORDSIZE, pointerWordSize);
|
encoder.writeUnsignedInteger(ATTRIB_WORDSIZE, pointerWordSize);
|
||||||
}
|
}
|
||||||
if (spc != null) {
|
if (spc != null) {
|
||||||
encoder.writeSpace(ATTRIB_SPACE, spc);
|
encoder.writeSpace(ATTRIB_SPACE, spc);
|
||||||
|
@ -398,7 +398,7 @@ public class PcodeDataTypeManager {
|
||||||
encodeNameIdAttributes(encoder, type);
|
encodeNameIdAttributes(encoder, type);
|
||||||
encoder.writeSignedInteger(ATTRIB_SIZE, pointer.getLength());
|
encoder.writeSignedInteger(ATTRIB_SIZE, pointer.getLength());
|
||||||
if (pointerWordSize != 1) {
|
if (pointerWordSize != 1) {
|
||||||
encoder.writeSignedInteger(ATTRIB_WORDSIZE, pointerWordSize);
|
encoder.writeUnsignedInteger(ATTRIB_WORDSIZE, pointerWordSize);
|
||||||
}
|
}
|
||||||
if (space != null) {
|
if (space != null) {
|
||||||
encoder.writeSpace(ATTRIB_SPACE, space);
|
encoder.writeSpace(ATTRIB_SPACE, space);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue