Interface FunctionManager

    • Method Detail

      • getProgram

        Program getProgram()
        Returns this manager's program
        Returns:
        the program
      • getCallingConventionNames

        java.util.List<java.lang.String> getCallingConventionNames()
        Gets the names associated with each of the current calling conventions associated with this program. Within the exception of "unknown", all of these calling convention names should have a PrototypeModel.
        Returns:
        the calling convention names.
      • getDefaultCallingConvention

        PrototypeModel getDefaultCallingConvention()
        Gets the default calling convention's prototype model in this program.
        Returns:
        the default calling convention prototype model or null.
      • getCallingConvention

        PrototypeModel getCallingConvention​(java.lang.String name)
        Gets the prototype model of the calling convention with the specified name in this program
        Parameters:
        name - the calling convention name
        Returns:
        the named function calling convention prototype model or null.
      • getCallingConventions

        PrototypeModel[] getCallingConventions()
        Gets all the calling convention prototype models in this program that have names.
        Returns:
        the function calling convention prototype models.
      • createFunction

        Function createFunction​(java.lang.String name,
                                Address entryPoint,
                                AddressSetView body,
                                SourceType source)
                         throws InvalidInputException,
                                OverlappingFunctionException
        Create a function with the given body at entry point within the global namespace.
        Parameters:
        name - the name of the new function or null for default name
        entryPoint - entry point of function
        body - addresses contained in the function body
        source - the source of this function
        Returns:
        new function or null if one or more functions overlap the specified body address set.
        Throws:
        InvalidInputException - if the name has invalid characters
        OverlappingFunctionException - if the address set of the body overlaps an existing function
      • createFunction

        Function createFunction​(java.lang.String name,
                                Namespace nameSpace,
                                Address entryPoint,
                                AddressSetView body,
                                SourceType source)
                         throws InvalidInputException,
                                OverlappingFunctionException
        Create a function with the given body at entry point.
        Parameters:
        name - the name of the new function or null for default name
        nameSpace - the nameSpace in which to create the function
        entryPoint - entry point of function
        body - addresses contained in the function body
        source - the source of this function
        Returns:
        new function or null if one or more functions overlap the specified body address set.
        Throws:
        InvalidInputException - if the name has invalid characters
        OverlappingFunctionException - if the address set of the body overlaps an existing function
      • createThunkFunction

        Function createThunkFunction​(java.lang.String name,
                                     Namespace nameSpace,
                                     Address entryPoint,
                                     AddressSetView body,
                                     Function thunkedFunction,
                                     SourceType source)
                              throws OverlappingFunctionException
        Create a thunk function with the given body at entry point.
        Parameters:
        name - the name of the new function or null for default name
        nameSpace - the nameSpace in which to create the function
        entryPoint - entry point of function
        body - addresses contained in the function body
        thunkedFunction - referenced function (required is creating a thunk function)
        source - the source of this function
        Returns:
        new function or null if one or more functions overlap the specified body address set.
        Throws:
        OverlappingFunctionException - if the address set of the body overlaps an existing function
      • getFunctionCount

        int getFunctionCount()
        Returns the total number of functions in the program including external functions
        Returns:
        the count
      • removeFunction

        boolean removeFunction​(Address entryPoint)
        Remove a function defined at entryPoint
        Parameters:
        entryPoint - the entry point
        Returns:
        true if the function was removed
      • getFunctionAt

        Function getFunctionAt​(Address entryPoint)
        Get the function at entryPoint
        Parameters:
        entryPoint - the entry point
        Returns:
        null if there is no function at entryPoint
      • getReferencedFunction

        Function getReferencedFunction​(Address address)
        Get the function which resides at the specified address or is referenced from the specified address
        Parameters:
        address - function address or address of pointer to a function.
        Returns:
        referenced function or null
      • getFunctionContaining

        Function getFunctionContaining​(Address addr)
        Get a function containing an address.
        Parameters:
        addr - address within the function
        Returns:
        function containing this address, null otherwise
      • getFunctions

        FunctionIterator getFunctions​(boolean forward)
        Returns an iterator over all non-external functions in address (entry point) order
        Parameters:
        forward - true means to iterate in ascending address order
        Returns:
        the iterator
      • getFunctions

        FunctionIterator getFunctions​(Address start,
                                      boolean forward)
        Get an iterator over non-external functions starting at an address and ordered by entry address
        Parameters:
        start - starting address
        forward - true means to iterate in ascending address order
        Returns:
        an iterator over functions.
      • getFunctions

        FunctionIterator getFunctions​(AddressSetView asv,
                                      boolean forward)
        Get an iterator over functions with entry points in the specified address set. Function are ordered based upon entry address.
        Parameters:
        asv - address set to iterate over
        forward - true means to iterate in ascending address order
        Returns:
        an iterator over functions.
      • getFunctionsNoStubs

        FunctionIterator getFunctionsNoStubs​(boolean forward)
        Returns an iterator over all REAL functions in address (entry point) order (real functions have instructions, and aren't stubs)
        Parameters:
        forward - true means to iterate in ascending address order
        Returns:
        the iterator
      • getFunctionsNoStubs

        FunctionIterator getFunctionsNoStubs​(Address start,
                                             boolean forward)
        Get an iterator over REAL functions starting at an address and ordered by entry address (real functions have instructions, and aren't stubs).
        Parameters:
        start - starting address
        forward - true means to iterate in ascending address order
        Returns:
        an iterator over functions.
      • getFunctionsNoStubs

        FunctionIterator getFunctionsNoStubs​(AddressSetView asv,
                                             boolean forward)
        Get an iterator over REAL functions with entry points in the specified address set (real functions have instructions, and aren't stubs). Functions are ordered based upon entry address.
        Parameters:
        asv - address set to iterate over
        forward - true means to iterate in ascending address order
        Returns:
        an iterator over functions.
      • getExternalFunctions

        FunctionIterator getExternalFunctions()
        Get an iterator over all external functions. Functions returned have no particular order.
        Returns:
        an iterator over external functions
      • isInFunction

        boolean isInFunction​(Address addr)
        Check if this address contains a function.
        Parameters:
        addr - address to check
        Returns:
        true if this address is contained in a function.
      • getFunctionsOverlapping

        java.util.Iterator<Function> getFunctionsOverlapping​(AddressSetView set)
        Return an iterator over functions that overlap the given address set.
        Parameters:
        set - address set of interest
        Returns:
        iterator over Functions
      • getReferencedVariable

        Variable getReferencedVariable​(Address instrAddr,
                                       Address storageAddr,
                                       int size,
                                       boolean isRead)
        Attempts to determine which if any of the local functions variables are referenced by the specified reference. In utilizing the firstUseOffset scoping model, negative offsets (relative to the functions entry) are shifted beyond the maximum positive offset within the function. While this does not account for the actual instruction flow, it is hopefully accurate enough for most situations.
        Parameters:
        instrAddr - the instruction address
        storageAddr - the storage address
        size - varnode size in bytes (1 is assumed if value <= 0)
        isRead - true if the reference is a read reference
        Returns:
        referenced variable or null if one not found
      • getFunction

        Function getFunction​(long key)
        Get a Function object by its key
        Parameters:
        key - function symbol key
        Returns:
        function object or null if not found
      • getFunctionTagManager

        FunctionTagManager getFunctionTagManager()
        Returns the function tag manager
        Returns:
        the function tag manager
      • invalidateCache

        void invalidateCache​(boolean all)
        Clears all data caches
        Specified by:
        invalidateCache in interface ManagerDB
        Parameters:
        all - if false, some managers may not need to update their cache if they can tell that its not necessary. If this flag is true, then all managers should clear their cache no matter what.
      • moveAddressRange

        void moveAddressRange​(Address fromAddr,
                              Address toAddr,
                              long length,
                              TaskMonitor monitor)
                       throws CancelledException
        Move all objects within an address range to a new location
        Specified by:
        moveAddressRange in interface ManagerDB
        Parameters:
        fromAddr - the first address of the range to be moved
        toAddr - the address where to the range is to be moved
        length - the number of addresses to move
        monitor - the task monitor to use in any upgrade operations
        Throws:
        CancelledException - if the user cancelled the operation via the task monitor