Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Investigate Architecture for Symbolic Executor #1

Open
wu-benjamin opened this issue May 20, 2022 · 0 comments
Open

Investigate Architecture for Symbolic Executor #1

wu-benjamin opened this issue May 20, 2022 · 0 comments
Assignees

Comments

@wu-benjamin
Copy link
Owner

wu-benjamin commented May 20, 2022

We should begin by figuring out where to put code for the symbolic executor.

Note that we prefer to work with the MIR (middle intermediate representation) of the source code for symbolic execution as it is simple enough to process and analyze (like LLVM byte-code) but maintains some helpful borrow semantics. Moreover, it is helpful that the MIR is in the form of a control flow graph which is how symbolic execution is often described over.

The following options should be considered:

  • write a separate plug-in (for MIR) that can be attached to the current official Rust compiler ❌
  • follow what the state-of-the-art symbolic execution engine does (i.e. optionally mark symbolic variables in source code, compile code to LLVM byte-code altered by KLEE processing via compiler intrinsic functions, and analyzing the byte-code with symbolic execution) ❌
    • we will revisit this after considering the next option of forking the official Rust compiler to add a symbolic execution pass as we prefer to work with the MIR (rather than LLVM byte-code) and because this multi-step process is poor user experience
  • fork the official Rust compiler and add in a symbolic execution pass there (symbolic variables are marked with Rust attributes and run symbolic execution through the nodes of the MIR) ✅
    • currently being investigated
@wu-benjamin wu-benjamin self-assigned this May 20, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant