Class HighVariable

  • Direct Known Subclasses:
    HighConstant, HighGlobal, HighLocal, HighOther

    public abstract class HighVariable
    extends java.lang.Object
    A High-level variable (as in a high-level language like C/C++) built out of Varnodes (low-level variables). This is a base-class
    • Field Detail

      • name

        protected java.lang.String name
      • represent

        protected Varnode represent
      • instances

        protected Varnode[] instances
      • offset

        protected int offset
    • Constructor Detail

      • HighVariable

        protected HighVariable​(HighFunction func)
        Constructor for use with restoreXml
        Parameters:
        func - is the HighFunction this variable belongs to
    • Method Detail

      • setHighOnInstances

        protected void setHighOnInstances()
        Link Varnodes directly to this HighVariable
      • getHighFunction

        public HighFunction getHighFunction()
        Returns:
        the high function associated with this variable.
      • getName

        public java.lang.String getName()
        Returns:
        get the name of the variable
      • getSize

        public int getSize()
        Returns:
        get the size of the variable
      • getDataType

        public DataType getDataType()
        Returns:
        get the data type attached to the variable
      • getRepresentative

        public Varnode getRepresentative()
        Returns:
        get the varnode that represents this variable
      • getInstances

        public Varnode[] getInstances()
        A variable can reside in different locations at various times. Get all the instances of the variable.
        Returns:
        all the variables instances
      • getSymbol

        public abstract HighSymbol getSymbol()
        Retrieve any underlying HighSymbol
        Returns:
        the HighSymbol
      • getOffset

        public int getOffset()
        Get the offset of this variable into its containing HighSymbol. If the value is -1, this indicates that this HighVariable matches the size and storage of the symbol.
        Returns:
        the offset
      • attachInstances

        public void attachInstances​(Varnode[] inst,
                                    Varnode rep)
        Attach an instance or additional location the variable can be found in.
        Parameters:
        inst - varnode where variable can reside.
        rep - location that variable comes into scope.
      • restoreInstances

        protected void restoreInstances​(XmlPullParser parser,
                                        XmlElement el)
                                 throws PcodeXMLException
        Restore the data-type and the Varnode instances of this HighVariable. The "representative" Varnode is also populated.
        Parameters:
        parser - is the XML stream
        el - is the root <high> tag
        Throws:
        PcodeXMLException - if the XML is not valid
      • requiresDynamicStorage

        public boolean requiresDynamicStorage()
        Return true in when the HighVariable should be recorded (in the database) using dynamic storage rather than using the actual address space and offset of the representative varnode. Dynamic storage is typically needed if the actual storage is ephemeral (in the unique space).
        Returns:
        true if this needs dynamic storage
      • restoreXml

        public abstract void restoreXml​(XmlPullParser parser)
                                 throws PcodeXMLException
        Restore this HighVariable from a <high> XML tag
        Parameters:
        parser - is the XML stream
        Throws:
        PcodeXMLException - if the XML is not valid