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

    • GoFunctionFixup

      public GoFunctionFixup()
  • Method Details

    • fixupFunction

      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 -
      Throws:
      DuplicateNameException
      InvalidInputException
    • fixupFunction

      public static void fixupFunction(Function func, GoVer goVersion) throws DuplicateNameException, InvalidInputException
      Throws:
      DuplicateNameException
      InvalidInputException
    • makeEmptyArrayDataType

      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 -
      Returns:
    • isGolangAbi0Func

      public static boolean isGolangAbi0Func(Function func)
    • isInLocalVarStorageArea

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

      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 -