Class 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: - PrototypeModel or - InjectPayload Extensions can be installed or removed from a ProgramDB via the Options mechanism (See SpecExtension) using SpecExtension.addReplaceCompilerSpecExtension() or SpecExtension.removeCompilerSpecExtension(). ProgramCompilerSpec allows the static evaluation models, described by the underlying BasicCompilerSpec and returned by getPrototypeEvaluationModel(), 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 Detail

      • DECOMPILER_PROPERTY_LIST_NAME

        public static final java.lang.String DECOMPILER_PROPERTY_LIST_NAME
        See Also:
        Constant Field Values
      • DECOMPILER_OUTPUT_LANGUAGE

        public static final java.lang.String DECOMPILER_OUTPUT_LANGUAGE
        See Also:
        Constant Field Values
      • DECOMPILER_OUTPUT_DESC

        public static final java.lang.String DECOMPILER_OUTPUT_DESC
        See Also:
        Constant Field Values
      • EVALUATION_MODEL_PROPERTY_NAME

        public static final java.lang.String EVALUATION_MODEL_PROPERTY_NAME
        See Also:
        Constant Field Values
    • Method Detail

      • enableJavaLanguageDecompilation

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

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

        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

        protected void registerProgramOptions()
        Register program-specific compiler-spec options