-
Notifications
You must be signed in to change notification settings - Fork 273
Reachability slice requires function bodies #6505
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
Reachability slice requires function bodies #6505
Conversation
Codecov Report
@@ Coverage Diff @@
## develop #6505 +/- ##
========================================
Coverage 76.73% 76.73%
========================================
Files 1579 1579
Lines 181999 182006 +7
========================================
+ Hits 139652 139662 +10
+ Misses 42347 42344 -3
Continue to review full report at Codecov.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi Michael, confirmed it works against the code in #6394 .
Thanks for handling this!
if( | ||
cmdline.isset("add-library") || cmdline.isset("mm") || | ||
cmdline.isset("reachability-slice") || | ||
cmdline.isset("reachability-slice-fb") || |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Once upon a future... it'd be lovely if we had proper feature flags, grouping of feature flags, etc.... rather than sprinkling hardcoded strings all over the place :-)
b2d7f31
to
ebe37f4
Compare
ccb5813
to
459ec09
Compare
This is a non-trivial implementation with external dependencies. Upcoming changes will make it even more complex.
Reachability slicing relies on the CFG. The CFG, however, will not contain edges from a function call to the next instruction when no body is available for the function call. Therefore, reachability slicing requires two steps: - The model library needs to be applied. CBMC already did so, goto-instrument now does with this commit. - Remaining function calls without body need to be replaced by nondet-return-value assignments. Fixes: diffblue#6394
Use of this functionality will make symex warnings about functions without body go away. To make up for this, at least status output should be produced to ensure that this possible soundness issue of the verification result can be caught.
459ec09
to
0359a87
Compare
Reachability slicing relies on the CFG. The CFG, however, will not
contain edges from a function call to the next instruction when no body
is available for the function call. Therefore, reachability slicing
requires two steps:
goto-instrument now does with this commit.
nondet-return-value assignments.
Fixes: #6394