Disable CPROVER_memory references for Java #261
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
#197 and https://github.com/diffblue/verification-engine-utils/issues/173 showed that in some circumstances, goto-symex's value-set analysis can reach the conclusion that an integer may be cast to a pointer, and so generate a reference to the
__CPROVER_memory
symbol. This is invalid in Java however, since the symbol is not defined and of course Java cannot express dereferencing a non-pointer type.The attached patch disables generation of
__CPROVER_memory
references when a Java-typed entry point is found. I couldn't provide a test case against master at this time however because the examples in both of the above bugs now succeed against master, presumably because value-set analysis has been improved and is harder to confuse into introducing a pointer-to-int cast.