mate_common.models.builds module¶
- class mate_common.models.builds.BuildInformation(*, build_id: str, compilation: mate_common.models.compilations.CompilationInformation, state: mate_common.models.builds.BuildState, bitcode_artifact: mate_common.models.artifacts.ArtifactInformation, artifact_ids: List[str] = [], artifacts: List[mate_common.models.artifacts.ArtifactInformation], analysis_task_ids: List[str], mantiserve_task_ids: List[str], options: mate_common.models.builds.BuildOptions, attributes: Dict[str, Any])¶
Bases:
pydantic.main.BaseModel
Metadata about a build.
- Parameters
build_id (str) –
compilation (mate_common.models.compilations.CompilationInformation) –
state (mate_common.models.builds.BuildState) –
bitcode_artifact (mate_common.models.artifacts.ArtifactInformation) –
artifact_ids (List[str]) –
artifacts (List[mate_common.models.artifacts.ArtifactInformation]) –
analysis_task_ids (List[str]) –
mantiserve_task_ids (List[str]) –
options (mate_common.models.builds.BuildOptions) –
attributes (Dict[str, Any]) –
- Return type
None
- analysis_task_ids: List[str]¶
The IDs of any analysis tasks currently associated with the build.
- artifact_ids: List[str]¶
The IDs of any artifacts currently associated with the build.
- artifacts: List[mate_common.models.artifacts.ArtifactInformation]¶
Artifact detail for any artifacts currently associated with the build, if this
BuildInformation
was populated with artifact detail.
- attributes: Dict[str, Any]¶
Free-form information attached to this build.
- bitcode_artifact: mate_common.models.artifacts.ArtifactInformation¶
Artifact detail for the bitcode artifact that this build was created from.
This artifact is present both here and in the
artifacts
list, if the latter is populated.
- build_id: str¶
The ID of the build.
- compilation: mate_common.models.compilations.CompilationInformation¶
Compilation detail for the compilation task that this build was created from.
- mantiserve_task_ids: List[str]¶
The IDs of any mantiserve tasks currently associated with the build.
- options: mate_common.models.builds.BuildOptions¶
The
BuildOptions
used to configure this build.
- state: mate_common.models.builds.BuildState¶
The build’s current state.
- class mate_common.models.builds.BuildOptions(*, do_pointer_analysis: bool = True, machine_code_mapping: bool = True, control_dependence: bool = True, llvm_memory_dependence: bool = False, llvm_pretty_strings: bool = True, translation_unit_nodes: bool = True, argument_edges: bool = False, line_program_source_info: bool = False, pointer_analysis: mate_common.models.builds.PointerAnalysis = PointerAnalysis.SUBSET, context_sensitivity: mate_common.models.builds.ContextSensitivity = ContextSensitivity.CALLSITE2, memory_limit_mb: Mebibytes = 32768, signatures: List[dict] = None, extra_linker_flags: List[str] = [], time_llvm_passes: bool = False, schema_validation: bool = False, merge_library_bitcode: bool = True, merge_bitcode_only_needed: bool = False, merge_bitcode_internalize: bool = False, debug_pointer_analysis: bool = False, debug_mate_jsonl: bool = False, debug_quotidian_jsonl: bool = False, debug_cpg_jsonl: bool = False)¶
Bases:
pydantic.main.BaseModel
Options that control the behavior of a CPG build.
- Parameters
do_pointer_analysis (bool) –
machine_code_mapping (bool) –
control_dependence (bool) –
llvm_memory_dependence (bool) –
llvm_pretty_strings (bool) –
translation_unit_nodes (bool) –
argument_edges (bool) –
line_program_source_info (bool) –
pointer_analysis (mate_common.models.builds.PointerAnalysis) –
context_sensitivity (mate_common.models.builds.ContextSensitivity) –
memory_limit_mb (Mebibytes) –
signatures (Optional[List[dict]]) –
extra_linker_flags (List[str]) –
time_llvm_passes (bool) –
schema_validation (bool) –
merge_library_bitcode (bool) –
merge_bitcode_only_needed (bool) –
merge_bitcode_internalize (bool) –
debug_pointer_analysis (bool) –
debug_mate_jsonl (bool) –
debug_quotidian_jsonl (bool) –
debug_cpg_jsonl (bool) –
- Return type
None
- argument_edges: bool¶
Whether to include edges between Arguments and DWARFArguments in the CPG.
- context_sensitivity: mate_common.models.builds.ContextSensitivity¶
The context sensitivity level.
- control_dependence: bool¶
Whether to include control dependence analysis results in the CPG.
- debug_cpg_jsonl: bool¶
Save the intermediate CPG JSONL file for debugging.
- debug_mate_jsonl: bool¶
Save the intermediate MATE JSONL file for debugging.
- debug_pointer_analysis: bool¶
Save intermediate pointer analysis results for debugging.
- debug_quotidian_jsonl: bool¶
Save the intermediate Quotidian JSONL file for debugging.
- do_pointer_analysis: bool¶
Whether to include pointer analysis results in the CPG.
- extra_linker_flags: List[str]¶
Additional linker flags to introduce when recompiling.
- line_program_source_info: bool¶
Whether to include DWARF line program entry information in the CPG.
- llvm_memory_dependence: bool¶
Whether to include LLVM memory dependence analysis results in the CPG.
- llvm_pretty_strings: bool¶
Whether to include pretty-printed LLVM strings in the CPG.
- machine_code_mapping: bool¶
Whether to include machine code mapping results in the CPG.
- memory_limit_mb: Mebibytes¶
Memory limit for CPG generation, in MB
- merge_bitcode_internalize: bool¶
With
merge_library_bitcode
: tellllvm-link
to attempt to internalize any public symbols that aren’t explicitly referenced by another other modules. This can help avoid unintentional symbol clashes, at the risk of deviating significantly from the system linker’s normal behavior.
- merge_bitcode_only_needed: bool¶
With
merge_library_bitcode
: tellllvm-link
to only include referenced symbols when merging bitcode modules. This can help reduce bitcode size (and subsequently analysis time).
- merge_library_bitcode: bool¶
For compilations that produce libraries and then link to them: attempt to statically merge library bitcode into the “canonical” bitcode instead of linking at the binary level.
- pointer_analysis: mate_common.models.builds.PointerAnalysis¶
Which pointer analysis variant to run.
- schema_validation: bool¶
Validate each node and edge against the JSON schema before insertion.
- signatures: Optional[List[dict]]¶
Optional additional points-to and dataflow signatures.
- time_llvm_passes: bool¶
Emit timing information for each LLVM pass.
- translation_unit_nodes: bool¶
Whether to include translation unit information in the CPG.
- class mate_common.models.builds.BuildState(value)¶
Bases:
mate_common.state_machine.StateMachineMixin
,str
,enum.Enum
An enumeration of the different states that a
build
can be in.- Building = 'building'¶
- Built = 'built'¶
- Created = 'created'¶
- Failed = 'failed'¶
- Inserting = 'inserting'¶
- class mate_common.models.builds.ContextSensitivity(value)¶
Bases:
str
,enum.Enum
Valid context sensitivity settings for the pointer analysis.
This should be kept in sync with: -
llvm/PointerAnalysis/PointerAnalysis.cpp
-llvm/PointerAnalysis/test/conftest.py
-llvm/PointerAnalysis/FactGenerator/include/ContextSensitivity.hpp
-llvm/PointerAnalysis/datalog/options/user-options.dl
-llvm/PointerAnalysis/datalog/context/interface.dl
- CALLER1 = '1-caller'¶
- CALLER2 = '2-caller'¶
- CALLER3 = '3-caller'¶
- CALLER4 = '4-caller'¶
- CALLER5 = '5-caller'¶
- CALLER6 = '6-caller'¶
- CALLER7 = '7-caller'¶
- CALLER8 = '8-caller'¶
- CALLER9 = '9-caller'¶
- CALLSITE1 = '1-callsite'¶
- CALLSITE2 = '2-callsite'¶
- CALLSITE3 = '3-callsite'¶
- CALLSITE4 = '4-callsite'¶
- CALLSITE5 = '5-callsite'¶
- CALLSITE6 = '6-callsite'¶
- CALLSITE7 = '7-callsite'¶
- CALLSITE8 = '8-callsite'¶
- CALLSITE9 = '9-callsite'¶
- FILE1 = '1-file'¶
- FILE2 = '2-file'¶
- FILE3 = '3-file'¶
- FILE4 = '4-file'¶
- FILE5 = '5-file'¶
- FILE6 = '6-file'¶
- FILE7 = '7-file'¶
- FILE8 = '8-file'¶
- FILE9 = '9-file'¶
- INSENSITIVE = 'insensitive'¶
- class mate_common.models.builds.PointerAnalysis(value)¶
Bases:
str
,enum.Enum
Valid variants of the pointer analysis.
This should be kept in sync with: -
llvm/PointerAnalysis/PointerAnalysis.cpp
-llvm/PointerAnalysis/test/conftest.py
- DEBUG = 'debug'¶
- SUBSET = 'subset'¶
- UNIFICATION = 'unification'¶
- mate_common.models.builds.get_default_memory_limit_gb() Gibibytes ¶
- Return type
Gibibytes