Skip to content

Commit

Permalink
Explicitly pin the mir-json version that SAW requires
Browse files Browse the repository at this point in the history
SAW's MIR backend requires a particular MIR JSON schema, but it is not entirely
obvious which version of the JSON schema to use (#2111). This patch is one step
towards addressing this concern. It:

* Adds `mir-json` as a submodule. At present, nothing in the repo (CI or
  otherwise) actually _builds_ this submodule. Its presence is purely to
  communicate which version of `mir-json` must be used to compile Rust code to
  JSON that SAW can ingest.

* Documents this in the `README`.

In the future, we will want to actually build and use `mir-json` in the CI
(see #1868 for an in-progress attempt at this), but in the meantime, this is a
decent first step. Until we actually start building `mir-json` in the CI and
using it, we will need to remember to bump the `mir-json` submodule each time
that SAW's JSON schema requirement changes.

Addresses one part of #2111.
  • Loading branch information
RyanGlScott committed Sep 4, 2024
1 parent 6afd8e7 commit 04ee593
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,6 @@
[submodule "deps/lmdb"]
path = deps/lmdb
url = https://github.com/GaloisInc/lmdb.git
[submodule "deps/mir-json"]
path = deps/mir-json
url = https://github.com/GaloisInc/mir-json.git
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,18 @@ will be possible for all language constructs. There are various
instructions that are not supported during verification. However,
any failure during `llvm_load_module` should be considered a bug.

## Notes on Rust

SAW has experimental support for analyzing Rust programs. To do so, one must
compile Rust code using [`mir-json`](https://github.com/GaloisInc/mir-json), a
tool which compiles Rust code to a machine-readable, JSON-based format. Each
version of SAW understands the JSON output of a particular version of
`mir-json`, so make sure that you build the version `mir-json` that is included
in the `mir-json` submodule (located in `deps/mir-json`).

For more information on how to install `mir-json`, follow the instructions
[here](https://github.com/GaloisInc/mir-json#installation-instructions).

## Notes on Windows

If you have trouble loading the SAW REPL on Windows, try invoking it
Expand Down
1 change: 1 addition & 0 deletions deps/mir-json
Submodule mir-json added at 131980

0 comments on commit 04ee593

Please sign in to comment.