Package ghidra.program.model.pcode
Class DynamicEntry
- java.lang.Object
-
- ghidra.program.model.pcode.SymbolEntry
-
- ghidra.program.model.pcode.DynamicEntry
-
public class DynamicEntry extends SymbolEntry
A HighSymbol mapping based on local hashing of the symbol's Varnode within a function's syntax tree. The storage address of a temporary Varnode (a Varnode in the "unique" address space) is too ephemeral to use as a permanent way to identify it. This symbol stores a hash (generated by DynamicHash) that is better suited to identifying the Varnode.
-
-
Field Summary
-
Fields inherited from class ghidra.program.model.pcode.SymbolEntry
pcaddr, symbol
-
-
Constructor Summary
Constructors Constructor Description DynamicEntry(HighSymbol sym)
Constructor for use with restoreXMLDynamicEntry(HighSymbol sym, Address addr, long h)
Construct given the underlying symbol, defining Address of the Varnode, and the hash value
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static DynamicEntry
build(Varnode vn)
Build a new DynamicEntry, given the underlying temporary Varnode attached to a symbol.long
getHash()
int
getSize()
Get the number of bytes consumed by the symbol when using this storageVariableStorage
getStorage()
Get the storage associated with this particular mapping of the Symbolboolean
isReadOnly()
boolean
isVolatile()
void
restoreXML(XmlPullParser parser)
Restore this entry from the given XML stream.void
saveXml(java.lang.StringBuilder buf)
Save this entry as (a set of) XML tags to the given stream-
Methods inherited from class ghidra.program.model.pcode.SymbolEntry
buildRangelistXML, getPCAdress, parseRangeList
-
-
-
-
Constructor Detail
-
DynamicEntry
public DynamicEntry(HighSymbol sym)
Constructor for use with restoreXML- Parameters:
sym
- is the owning HighSymbol
-
DynamicEntry
public DynamicEntry(HighSymbol sym, Address addr, long h)
Construct given the underlying symbol, defining Address of the Varnode, and the hash value- Parameters:
sym
- is the given symboladdr
- is the defining Addressh
- is the hash value
-
-
Method Detail
-
getHash
public long getHash()
- Returns:
- the hash value
-
restoreXML
public void restoreXML(XmlPullParser parser) throws PcodeXMLException
Description copied from class:SymbolEntry
Restore this entry from the given XML stream. Typically more than one tag is consumed- Specified by:
restoreXML
in classSymbolEntry
- Parameters:
parser
- is the given XML stream- Throws:
PcodeXMLException
- if the XML is invalid
-
saveXml
public void saveXml(java.lang.StringBuilder buf)
Description copied from class:SymbolEntry
Save this entry as (a set of) XML tags to the given stream- Specified by:
saveXml
in classSymbolEntry
- Parameters:
buf
- is the given stream
-
getStorage
public VariableStorage getStorage()
Description copied from class:SymbolEntry
Get the storage associated with this particular mapping of the Symbol- Specified by:
getStorage
in classSymbolEntry
- Returns:
- the storage object
-
build
public static DynamicEntry build(Varnode vn)
Build a new DynamicEntry, given the underlying temporary Varnode attached to a symbol. The hash is created from local information in the syntax tree near the Varnode.- Parameters:
vn
- is the underlying Varnode- Returns:
- the new DynamicEntry
-
getSize
public int getSize()
Description copied from class:SymbolEntry
Get the number of bytes consumed by the symbol when using this storage- Specified by:
getSize
in classSymbolEntry
- Returns:
- the size of this entry
-
isReadOnly
public boolean isReadOnly()
- Specified by:
isReadOnly
in classSymbolEntry
- Returns:
- true if the mapped storage is read-only
-
isVolatile
public boolean isVolatile()
- Specified by:
isVolatile
in classSymbolEntry
- Returns:
- true if the mapped storage is volatile
-
-