-
Notifications
You must be signed in to change notification settings - Fork 9
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
Immutable variables can't be made symbolic #451
Comments
We did some investigation, and it looks like
Then, once the location is confirmed, symbolic values should be put there for those variables that are not initialised explicitly. Running a constructor with symbolic parameters leads to an error @RaoulSchaffranek reported previously in runtimeverification/evm-semantics#2219: it fails in In addition, this lemma suggested by @PetarMax helped simplify a byte accessing expression:
|
@ovatman @yale-vinson let's start with this item first (instead of #458) since it's needed for the engagement. |
I've spend some time working on this issue. Here are some remarks:
Legacy for the files below I've used the tags before/after to indicate the results before the PR is applied and after the PR is applied |
Closed as completed by #596, allowing |
As brought up by @lucasmt, immutable variables are getting inlined in runtime bytecode of the contract and are not actually placed in storage. This means that they aren't
symbolicStorage
doesn't affect them, since they are not actually in storage. This means that if we want them to be symbolic we need to pass the symbolic value to the constructor, which probably means the bytecode of the contract will have symbolic variables in the middle, and it's unclear if that's supported correctly;load
andstore
cheatcodes.The first step towards supporting immutable variables is to allow assigning them symbolic values through the constructor. However, as described in runtimeverification/evm-semantics#2219, that causes issues in
#computeValidJumpDests
.The text was updated successfully, but these errors were encountered: