# contributing

Pull requests are welcome. If you're planning something big, open an issue first so we don't step on each other.

## building

```sh
cmake -B build
cmake --build build --config Release
```

Capstone is fetched automatically via FetchContent. You don't need to install it.

## what needs work

- **More architectures** — right now it's x86/x86-64 only. ARM, AArch64, etc would be nice.
- **Better indirect call resolution** — the register tracer is basic. It could be smarter.
- **More binary formats** — Mach-O isn't supported yet.

## style

- No tabs. 4 spaces.
- No comments unless the code is genuinely confusing.
- Match the existing style. If you're changing something, make it look like it belongs.
- Keep it simple. This is not a framework.

## committing

Write short commit messages. Use `git rebase` to keep the history clean. No merge commits.

## testing

There's a test binary in `tests/`. Run cfgrip on it and make sure the output is valid JSON:

```sh
./build/cfgrip tests/example1.exe
```

If your change affects the output format, update `tests/example1.exe.cfg` too.
