Skip to content

Latest commit

 

History

History
43 lines (39 loc) · 2.65 KB

project-layout.md

File metadata and controls

43 lines (39 loc) · 2.65 KB

Project Layout

The best entrypoint to start reading the code is probably src/main/scala/util/RunUtils, which contains the main execution path and invokes each loading, analysis, and translation operation in sequence.

  • src/main:
    • scala: BASIL source
      • analysis: static analysis source, including IR expression evaluation
        • solvers: analysis solver implementation
        • BitVectorEval.scala: evaluation of bitvector operatiosn
      • bap: ADT AST definition used in the BAP frontend
      • specification: Specification file loading
      • boogie: Boogie AST definition used in the backend
      • gtirb: Code for parsing gtirb file contents
      • ir: Implementation of BASIL IR
        • dsl: IR construction convenience methods
        • Visitor.scala: vistor pattern for IR
        • Program.scala: IR Programs, Procedures, and Blocks
        • Statement.scala: IR statements and control-flow commands
        • Expr.scala: IR Expressions
        • IRCursor.scala: IR CFG Iterator
      • translating: Implementations of translations between IRs
      • util: BASIL internal utilities, logging, configuration etc.
      • cfg_visualiser: dot digraph model for displaying CFGs
    • antlr4: grammar definitions for Antlr parser generator
    • protobuf: imported ProtocolBuffer definitions for gtirb
  • src/test: unit test cases
    • correct: System test (SystemTests.scala) examples which should verify
    • incorrect: System test (SystemTests.scala) examples which should not verify
    • make: Makefiles for lifting the System test examples
    • analysis: static analysis tests
    • scala: other unit tests
  • docker: podman container definition files
  • docs: high-level documentation for BASIL development and design. These should be kept up-to-date but should be relatively abstract so that implementation changes don't require an overhaul to the documentation.
  • examples, examples-rg: examples which don't fully work, but we want to keep for reference. These are often not up to date with recent versions of BASIL.
  • scripts: utility scripts