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

Crucible backend lacks a crucible_return_arbitrary command #200

Closed
TomMD opened this issue May 11, 2017 · 2 comments
Closed

Crucible backend lacks a crucible_return_arbitrary command #200

TomMD opened this issue May 11, 2017 · 2 comments

Comments

@TomMD
Copy link
Contributor

TomMD commented May 11, 2017

LLVM has:

    llvm_return_arbitrary : LLVMSetup ()

Indicate that an LLVM function returns an arbitrary, unspecified value.

That help text should also say "non-deterministic". Useful for modeling interactions with external entities (IO).

It appears there is no matching crucible_* operation.

@brianhuffman
Copy link
Contributor

brianhuffman commented May 12, 2017

@atomb has suggested (#182) that crucible_fresh_var statements, when used in the post-condition section (i.e. after crucible_execute_func), should denote arbitrary return values like what you want. If we implemented this, then we could use them with either crucible_return to indicate an unspecified return value, or with crucible_points_to to indicate that a function writes an unspecified value through a pointer.

@TomMD
Copy link
Contributor Author

TomMD commented May 12, 2017

@brianhuffman That sounds like the right outcome. I'm not sure I like the statefulness of sawscript, particularly the crucible backend where even the llvm module is implicit during verify and assume calls but that's another issue.

I'll close this ticket since it's duplicative.

@TomMD TomMD closed this as completed May 12, 2017
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

2 participants