Skip to content

Commit 68e0078

Browse files
committed
Update readme
1 parent b2cc43a commit 68e0078

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

README.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,43 @@ related crates:
3030
expose APIs for constructing or reasoning about control-flow graphs. A more robust analysis
3131
is forthcoming, depending on my research needs.
3232

33+
## Requirements
34+
35+
### Building
36+
37+
If you're working directly with the `jingle` source distribution,
38+
you will need to manually download a copy of the `ghidra` source tree
39+
in order to build `jingle` or `jingle_sleigh`
40+
41+
If you're working with `git`, this can be done using the existing submodule.
42+
Simply run
43+
44+
```shell
45+
git submodule init && git submodule update
46+
```
47+
48+
If you are for some reason using a zipped source distribution,
49+
then you can run the following:
50+
51+
```shell
52+
cd jingle_sleigh
53+
git clone https://github.com/NationalSecurityAgency/ghidra.git
54+
```
55+
56+
If you are using `jingle` as a cargo `git` or `crates.io` dependency,
57+
this step is not necessary. `cargo` will handle all this in the `git` case
58+
and we will vendor the necessary `ghidra` sources into all `crates.io` releases.
59+
60+
### Running
61+
62+
While `jingle` can be configured to work with a single set `sleigh` architecture,
63+
the default way to use it is to point it to an existing `ghidra` installation.
64+
[Install ghidra](https://ghidra-sre.org) and, if you are using `jingle` programatically,
65+
point it at the top level folder of the installation. If you are using the [CLI](./jingle),
66+
then provide the path to ghidra as an argument in your first run.
67+
68+
The only thing ghidra is used for here is as a standardized folder layout for `sleigh` architectures.
69+
`jingle` has no ghidra dependency outside of the bundled `sleigh` C++ code.
3370
## Usage
3471

3572
In order to use `jingle`, include it in your `Cargo.toml` as usual:

0 commit comments

Comments
 (0)