Closed langston-barrett closed 1 month ago
I would love to have this. Having a tool that just runs macaw-symbolic
on binaries (even if it's very barebones) would effectively give us a Crux frontend for binaries. But even if we don't go that far, having a macaw-cli-*
tool that only supports S-expression programs would also be very useful.
https://github.com/GaloisInc/macaw/pull/423 adds a macaw-x86-cli
frontend, which currently only supports Crucible S-expression programs. (See also #390, which aims to ingest binaries.)
@langston-barrett intends not to pursue a binary frontend for macaw-x86-cli
(see https://github.com/GaloisInc/macaw/pull/390#issuecomment-2312792254), so I believe this issue can now be closed. If there is additional follow-up work to do to improve macaw-x86-cli
, let's file separate issues.
FWIW, I think the need for/utility of such a CLI is independent of my intent to implement it in the near-term, i.e., we might consider keeping this issue open even though #390 didn't end up being its solution. However, since we are probably several steps away from a satisfying solution, I can definitely also understand wanting to keep the issue tracker clear of vague, longer-term plans.
To expand a bit on the utility of a CLI that ingests binaries, even when we already have one that ingests S-expression programs:
macaw-symbolic
and write an equivalent one in the S-expression syntax, this might be considerably more time-consuming than just copying a small snippet of C code that produces the pattern in question and compiling it (especially given our lack of syntactic sugar, #349)
Ocassionally, I have a question about
macaw-*-symbolic
's semantics. The only way I can verify my hypotheses is to run a higher-level tool built on top of Macaw. However, such tools generally have a considerable amount of code related to features other than simply executing machine code, obfuscating the results (e.g., is the problem in Macaw, or in the higher-level tool?).It would be great if the various
macaw-*-symbolic
packages had simple command-line interfaces that would just load binaries and start atmain
with a sensible initial memory and register state. Ideally, these could also supportmacaw-syntax
S-expression programs, a lacrucible-cli
. We'd likely want to make a generic library (macaw-cli
), with instantiations for each particular architecture.