Class GoFunctionFixup

java.lang.Object
ghidra.app.util.bin.format.golang.GoFunctionFixup

public class GoFunctionFixup extends Object
Utility class to fix Golang function parameter storage
  • Constructor Details Link icon

    • GoFunctionFixup Link icon

      public GoFunctionFixup()
  • Method Details Link icon

    • fixupFunction Link icon

      public static void fixupFunction(Function func) throws DuplicateNameException, InvalidInputException
      Assigns custom storage for a function's parameters, using the function's current parameter list (formal info only) as starting information.
      Parameters:
      func - Ghidra Function to fix
      Throws:
      DuplicateNameException - if invalid parameter names
      InvalidInputException - if invalid data types or storage
    • fixupFunction Link icon

      public static void fixupFunction(Function func, GoVer goVersion) throws DuplicateNameException, InvalidInputException
      Assigns custom storage for a function's parameters, using the function's current parameter list (formal info only) as starting information.
      Parameters:
      func - Ghidra Function to fix
      goVersion - GoVer enum
      Throws:
      DuplicateNameException - if invalid parameter names
      InvalidInputException - if invalid data types or storage
    • makeEmptyArrayDataType Link icon

      public static DataType makeEmptyArrayDataType(DataType dt)
      Returns a Ghidra data type that represents a zero-length array, to be used as a replacement for a zero-length array parameter.
      Parameters:
      dt - data type that will donate its name to the created empty array type
      Returns:
      DataType that represents a specific zero-length array type
    • isGolangAbi0Func Link icon

      public static boolean isGolangAbi0Func(Function func)
    • isInLocalVarStorageArea Link icon

      public static boolean isInLocalVarStorageArea(Function func, long stackOffset)
    • reverseNonStackStorageLocations Link icon

      public static void reverseNonStackStorageLocations(List<Varnode> varnodes)
      Invert the order of the any register storage locations to match the decompiler's logic for assigning storage to structs that varies on endianness.

      Only valid for storage scheme that has all register storages listed first / contiguous.

      Parameters:
      varnodes - list of varnodes that will be modified in-place