Class ProgramCompilerSpec

java.lang.Object
ghidra.program.model.lang.BasicCompilerSpec
ghidra.program.database.ProgramCompilerSpec
All Implemented Interfaces:
CompilerSpec

public class ProgramCompilerSpec extends BasicCompilerSpec
A Program-specific version of the CompilerSpec. Every Program owns a specific ProgramCompilerSpec. It is based on a CompilerSpec returned by the Language assigned to the Program, but it may include extensions. Extensions are currently either a new form of: Extensions can be installed or removed from a ProgramDB via the Options mechanism (See SpecExtension) using SpecExtension.addReplaceCompilerSpecExtension(String, TaskMonitor) or SpecExtension.removeCompilerSpecExtension(String, TaskMonitor). ProgramCompilerSpec allows the static evaluation models, described by the underlying BasicCompilerSpec and returned by getPrototypeEvaluationModel(EvaluationModelType), to be overridden by Program-specific options. getDecompilerOutputLanguage() queries the Program-specific language the decompiler should use as output. installExtensions() is the main entry point for integrating the Program Options with the Language's base CompilerSpec and producing a complete in-memory CompilerSpec for the Program.
  • Field Details Link icon

  • Method Details Link icon

    • enableJavaLanguageDecompilation Link icon

      public static void enableJavaLanguageDecompilation(Program program)
      Adds and enables an option to have the decompiler display java.
      Parameters:
      program - to be enabled
    • getDecompilerOutputLanguage Link icon

      public DecompilerLanguage getDecompilerOutputLanguage()
      Description copied from interface: CompilerSpec
      Get the language that the decompiler produces
      Specified by:
      getDecompilerOutputLanguage in interface CompilerSpec
      Overrides:
      getDecompilerOutputLanguage in class BasicCompilerSpec
      Returns:
      an enum specifying the language
    • installExtensions Link icon

      protected void installExtensions()
      Update this object with any program specific compiler specification extensions.
    • getPrototypeEvaluationModel Link icon

      public PrototypeModel getPrototypeEvaluationModel(CompilerSpec.EvaluationModelType modelType)
      Description copied from interface: CompilerSpec
      Get the evaluation model matching the given type. If analysis needs to apply a PrototypeModel to a function but a specific model is not known, then this method can be used to select a putative PrototypeModel based on the analysis use-case: - EVAL_CURRENT indicates the model to use for the "current function" being analyzed - EVAL_CALLED indicates the model to use for a function called by the current function
      Specified by:
      getPrototypeEvaluationModel in interface CompilerSpec
      Overrides:
      getPrototypeEvaluationModel in class BasicCompilerSpec
      Parameters:
      modelType - is the type of evaluation model
      Returns:
      prototype evaluation model
    • registerProgramOptions Link icon

      protected void registerProgramOptions()
      Register program-specific compiler-spec options
    • resetProgramOptions Link icon

      protected void resetProgramOptions(TaskMonitor monitor) throws CancelledException
      Reset options to default (for this CompilerSpec) This is for setLanguage to clear out strings that might belong to the old language.
      Parameters:
      monitor - is the monitor for checking cancellation
      Throws:
      CancelledException - if operation is cancelled externally
    • equals Link icon

      public boolean equals(Object obj)
      Overrides:
      equals in class Object