Class HighFunction

  • All Implemented Interfaces:
    PcodeFactory

    public class HighFunction
    extends PcodeSyntaxTree
    High-level abstraction associated with a low level function made up of assembly instructions. Based on information the decompiler has produced after working on a function.
    • Field Detail

      • DECOMPILER_TAG_MAP

        public static final java.lang.String DECOMPILER_TAG_MAP
        See Also:
        Constant Field Values
    • Constructor Detail

      • HighFunction

        public HighFunction​(Function function,
                            Language language,
                            CompilerSpec compilerSpec,
                            PcodeDataTypeManager dtManager,
                            boolean showNamespace)
        Parameters:
        function - function associated with the higher level function abstraction.
        langParser - language parser used to disassemble/get info on the language
        dtManager - data type manager
        showNamespace - true signals to print function names with their namespace
    • Method Detail

      • getFunction

        public Function getFunction()
        Returns:
        get the associated low level function
      • getLanguage

        public Language getLanguage()
        Returns:
        get the language parser used to disassemble
      • getFunctionPrototype

        public FunctionPrototype getFunctionPrototype()
        Returns:
        the function prototype for the function (how things are passed/returned)
      • getJumpTables

        public JumpTable[] getJumpTables()
        Returns:
        an array of jump table definitions found for this function decompilation
      • getLocalSymbolMap

        public LocalSymbolMap getLocalSymbolMap()
        Returns:
        the local variable map describing the defined local variables
      • grabFromFunction

        public void grabFromFunction​(int default_extrapop,
                                     boolean includeDefaultNames,
                                     boolean override_extrapop)
        Populate the information for the HighFunction from the information stored in Ghidra attached to the function.
        Parameters:
        default_extrapop -
        includeDefaultNames -
        override_extrapop -
      • splitOutMergeGroup

        public HighVariable splitOutMergeGroup​(HighVariable high,
                                               Varnode vn)
                                        throws PcodeException
        If a HighVariable consists of more than one (forced) merge group, split out the group that contains vn as a separate HighVariable. Otherwise just return the original high.
        Parameters:
        high - is the HighVariable to split
        vn - is a representative of the merge group to split out
        Returns:
        a HighVariable containing just the forced merge group of vn
        Throws:
        PcodeException
      • buildFunctionXML

        public java.lang.String buildFunctionXML​(Address entryPoint,
                                                 int size)
        Build an XML string that represents all the information about this HighFunction.
        Parameters:
        entryPoint - pass null to use the function entryPoint, pass an address to force an entry point
        Returns:
        the XML string
      • buildFunctionShellXML

        public static java.lang.String buildFunctionShellXML​(java.lang.String name,
                                                             Address addr)
        Build the XML representation of only the shell function info not including everything known about the function.
        Parameters:
        name - name of the function
        addr - address the function is located at
        Returns:
        the XML string
      • getErrorHandler

        public static org.xml.sax.ErrorHandler getErrorHandler​(java.lang.Object errOriginator,
                                                               java.lang.String targetName)
        Convert old decompiler tags to new Register variables
      • findCreateOverrideSpace

        public static Namespace findCreateOverrideSpace​(Function func)
      • stringTree

        public static XmlPullParser stringTree​(java.io.InputStream xml,
                                               org.xml.sax.ErrorHandler handler)
                                        throws PcodeXMLException
        Create and XML SAX parse tree from an input XML string TODO: this probably doesn't belong here.
        Parameters:
        xml - string to parse
        Returns:
        an XML tree element
        Throws:
        PcodeXMLException
      • createNamespaceTag

        public static void createNamespaceTag​(java.lang.StringBuilder buf,
                                              Namespace namespc)
      • tagFindExclude

        public static java.lang.String tagFindExclude​(java.lang.String tagname,
                                                      java.lang.String doc)
        Parameters:
        tagname - -- Name of tag to search for
        doc - -- String through which to search for tags
        Returns:
        all characters between beginning and ending XML tags, excluding tags themselves