Interface FunctionManager

All Superinterfaces:
ManagerDB
All Known Implementing Classes:
FunctionManagerDB

public interface FunctionManager extends ManagerDB
The manager for functions
  • Method Details Link icon

    • getProgram Link icon

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

      Collection<String> getCallingConventionNames()
      Get the ordered list of defined calling convention names. The reserved names "unknown" and "default" are not included. The returned collection may not include all names referenced by various functions and function-definitions. This set is limited to those defined by the associated compiler specification. See DataTypeManager.getDefinedCallingConventionNames().

      For a set of all known names (including those that are not defined by compiler spec) see DataTypeManager.getKnownCallingConventionNames().

      Returns:
      the calling convention names.
    • getDefaultCallingConvention Link icon

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

      PrototypeModel getCallingConvention(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.
    • createFunction Link icon

      Function createFunction(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 Link icon

      Function createFunction(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 Link icon

      Function createThunkFunction(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 Link icon

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

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

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

      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 Link icon

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

      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 Link icon

      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 Link icon

      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 Link icon

      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 Link icon

      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 Link icon

      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 Link icon

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

      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 Link icon

      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 Link icon

      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 Link icon

      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 Link icon

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

      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 Link icon

      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