Class DWARFFunction

java.lang.Object
ghidra.app.util.bin.format.dwarf.DWARFFunction

public class DWARFFunction extends Object
Represents a function that was read from DWARF information.
  • Field Details

  • Method Details

    • read

      Create a function instance from the information found in the specified DIEA.
      Parameters:
      diea - DW_TAG_subprogram DIEAggregate
      Returns:
      new DWARFFunction, or null if invalid DWARF information
      Throws:
      IOException - if error accessing attribute values
      DWARFExpressionException - if error accessing attribute values
    • getProgram

      public DWARFProgram getProgram()
    • getDescriptiveName

      public String getDescriptiveName()
    • getRangeList

      public DWARFRangeList getRangeList()
    • getCallingConventionName

      public String getCallingConventionName()
    • getBody

      public AddressSetView getBody()
    • getEntryPc

      public long getEntryPc()
    • getLocalVarByOffset

      public DWARFVariable getLocalVarByOffset(long offset)
      Returns the DWARFVariable that starts at the specified stack offset.
      Parameters:
      offset - stack offset
      Returns:
      local variable that starts at offset, or null if not present
    • isInLocalVarStorageArea

      public boolean isInLocalVarStorageArea(long offset)
      Returns true if the specified stack offset is within the function's local variable storage area.
      Parameters:
      offset - stack offset to test
      Returns:
      true if stack offset is within this function's local variable area
    • hasConflictWithParamStorage

      public boolean hasConflictWithParamStorage(DWARFVariable dvar) throws InvalidInputException
      Throws:
      InvalidInputException
    • hasConflictWithExistingLocalVariableStorage

      public boolean hasConflictWithExistingLocalVariableStorage(DWARFVariable dvar) throws InvalidInputException
      Throws:
      InvalidInputException
    • getAllParamNames

      public List<String> getAllParamNames()
    • getAllLocalVariableNames

      public List<String> getAllLocalVariableNames()
    • getExistingLocalVariableNames

      public List<String> getExistingLocalVariableNames()
    • getNonParamSymbolNames

      public List<String> getNonParamSymbolNames()
    • getParameters

      public List<Parameter> getParameters(boolean includeStorageDetail) throws InvalidInputException
      Returns this function's parameters as a list of Parameter instances.
      Parameters:
      includeStorageDetail - boolean flag, if true storage information will be included, if false, VariableStorage.UNASSIGNED_STORAGE will be used
      Returns:
      list of Parameters
      Throws:
      InvalidInputException - if bad information in param storage
    • getParameterDefinitions

      public ParameterDefinition[] getParameterDefinitions()
      Returns the parameters of this function as ParameterDefinitions.
      Returns:
      array of ParameterDefinitions
    • commitLocalVariable

      public void commitLocalVariable(DWARFVariable dvar)
    • getFuncBody

      public static AddressRange getFuncBody(DIEAggregate diea, boolean flattenDisjoint) throws IOException
      Throws:
      IOException
    • getFuncBodyRanges

      public static DWARFRangeList getFuncBodyRanges(DIEAggregate diea) throws IOException
      Throws:
      IOException
    • syncWithExistingGhidraFunction

      public boolean syncWithExistingGhidraFunction(boolean createIfMissing)
    • runFixups

      public void runFixups()
    • updateFunctionSignature

      public void updateFunctionSignature()
    • asFunctionDefinition

      public FunctionDefinition asFunctionDefinition(boolean includeCC)
      Returns a FunctionDefinition that reflects this function's information.
      Parameters:
      includeCC - boolean flag, if true the returned funcdef will include calling convention
      Returns:
      FunctionDefinition that reflects this function's information
    • toString

      public String toString()
      Overrides:
      toString in class Object