-
Notifications
You must be signed in to change notification settings - Fork 63
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
Detect when jvm_return
is missing when it was expected
#938
Comments
Previously it represented the left-hand side with an arbitrary `SetupValue`; however, the only valid `SetupValue`s for this purpose are `SetupVar` applied to an `AllocIndex`. This change lets us simplify code for the simulation phase, in exchange for doing more error checking during the setup phase (which is also a good thing). The early checking eliminates a couple of the known false positives from #938.
This fixes one of the known false positives from #938.
This fixes several more of the known false positives from #938.
This fixes several more of the known false positives from #938.
This fixes more remaining known false positives of #938.
This fixes several more of the known false positives from #938.
This fixes more remaining known false positives of #938.
Previously it represented the left-hand side with an arbitrary `SetupValue`; however, the only valid `SetupValue`s for this purpose are `SetupVar` applied to an `AllocIndex`. This change lets us simplify code for the simulation phase, in exchange for doing more error checking during the setup phase (which is also a good thing). The early checking eliminates a couple of the known false positives from #938.
This fixes one of the known false positives from #938.
This fixes several more of the known false positives from #938.
This fixes several more of the known false positives from #938.
This fixes more remaining known false positives of #938.
Previously it represented the left-hand side with an arbitrary `SetupValue`; however, the only valid `SetupValue`s for this purpose are `SetupVar` applied to an `AllocIndex`. This change lets us simplify code for the simulation phase, in exchange for doing more error checking during the setup phase (which is also a good thing). The early checking eliminates a couple of the known false positives from #938.
This fixes one of the known false positives from #938.
This fixes several more of the known false positives from #938.
This fixes several more of the known false positives from #938.
This fixes more remaining known false positives of #938.
PR #948 fixes almost all of the remaining known false positive test cases. One that remains is " The other remaining test is " saw-script/src/SAWScript/Crucible/Common/MethodSpec.hs Lines 268 to 286 in 404e227
That function is designed to only return True if the indicated location has been completely specified already; i.e. either the same location or else one that totally covers the current one is already in the map. But what we really want is a different check: We want to return False only if the indicated location is completely disjoint from all previously used locations; in the case of a partial overlap (like jvm_array_is after jvm_elem_is ) we also want to get True . However, this change will need to be done with care, because this code is also used for LLVM specs and such a change could possibly break proof scripts. Probably the best approach is to make a PR that makes only this one small change.
|
Previously it represented the left-hand side with an arbitrary `SetupValue`; however, the only valid `SetupValue`s for this purpose are `SetupVar` applied to an `AllocIndex`. This change lets us simplify code for the simulation phase, in exchange for doing more error checking during the setup phase (which is also a good thing). The early checking eliminates a couple of the known false positives from #938.
This fixes one of the known false positives from #938.
This fixes several more of the known false positives from #938.
This fixes several more of the known false positives from #938.
This fixes more remaining known false positives of #938.
Previously `testResolved` would detect a later points-to that pointed entirely inside the region of an earlier points-to, but would not detect an overlap if the points-tos were done in the opposite order. This change makes the points-to comparison symmetric, so overlapping points-to declarations are detected no matter what order they appear in a spec. This fixes one of the remaining known false positives from #938.
Previously `testResolved` would detect a later points-to that pointed entirely inside the region of an earlier points-to, but would not detect an overlap if the points-tos were done in the opposite order. This change makes the points-to comparison symmetric, so overlapping points-to declarations are detected no matter what order they appear in a spec. This fixes one of the remaining known false positives from #938.
We now completely avoid using the `ResolvedState` code from SAWScript.Crucible.Common, which is too specific to LLVM. This fixes one of the remaining known false positives from intTests/test_jvm_setup_errors (#938).
Previously `testResolved` would detect a later points-to that pointed entirely inside the region of an earlier points-to, but would not detect an overlap if the points-tos were done in the opposite order. This change makes the points-to comparison symmetric, so overlapping points-to declarations are detected no matter what order they appear in a spec. This fixes one of the remaining known false positives from #938.
We now completely avoid using the `ResolvedState` code from SAWScript.Crucible.Common, which is too specific to LLVM. This fixes one of the remaining known false positives from intTests/test_jvm_setup_errors (#938).
We now completely avoid using the `ResolvedState` code from SAWScript.Crucible.Common, which is too specific to LLVM. This fixes one of the remaining known false positives from intTests/test_jvm_setup_errors (#938).
The issue with |
test_jvm_setup_errors
regression testjvm_return
is missing when it was expected
PR #929 adds a collection of regression tests that ensure that
crucible_jvm_unsafe_assume_spec
andcrucible_jvm_verify
will catch ill-formedJVMSetup
blocks. The tests for the type-correctness checks added in #929 work as expected. However there are a lot of other bogusJVMSetup
blocks that are not caught; these are marked in the test script as "KNOWN FALSE POSITIVE".We should enhance the well-formedness checks in SAW/JVM to eliminate all the known false positives in the test suite. These include:
jvm_field_is
on the same field (Multiplejvm_field_is
declarations on same field are not detected #937)jvm_elem_is
jvm_array_is
jvm_array_is
andjvm_elem_is
on the same arrayjvm_execute_func
jvm_return
jvm_return
The text was updated successfully, but these errors were encountered: