Skip to content

Conversation

FrNecas
Copy link
Contributor

@FrNecas FrNecas commented Mar 18, 2021

I will merge this PR similarly to the last one, this time in 3 commits - all the necessary fixes, commit 770d349 (so that we can easily revert it once propagation is fixed) and commit updating version.

Related: peterschrammel/cbmc#22

Changes

  • minor renaming, some deprecations
  • a lot of enums transformed into enum classes
  • message_handler must not be NULL when get_message_handler is called, otherwise the program exits (fixed in 17d7042)
  • assertions generated by CBMC now have the form FALSE || <assertion>, this required fixes in a0f6f5f to make memsafety work.
  • Messages from CBMC now contain typedefs instead of the typedef-ed structure, fixed this in test 2b4b91b
  • Constant propagation is broken in CBMC 5.8, a lot of tests would be failing. So the best temporary solution turned out to be disabling constant propagation by default.

Copy link
Member

@peterschrammel peterschrammel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM
Prerequisites have been merged. Please rebase.

"(no-spurious-check)(stop-on-fail)" \
"(competition-mode)(slice)(no-propagation)(independent-properties)" \
"(no-unwinding-assertions)"
"(constant-propagation)(no-unwinding-assertions)"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⛏️ put each declaration on a separate line to reduce merge conflicts in future.

FrNecas added 3 commits March 26, 2021 08:36
Workaround final keyword in dstringt.
Update c_types.h header path.
Avoid use of goto_functiont copy constructor.
Fix moved attributes from goto_trace_stept to goto_trace_stept::typet.
Replace deprecated integer_constant.
Fix checking decision_proceduret result.
Fix missing ID__start.
Fix checking against ui_message_handlert attributes.
Fix checking property_checkert result.
Fix deprecated status() call.
Add message_handler to remove_function_pointers.
Fix smt2_convt::Z3 attribute location.
Fix unwinding strategy specification.
Do not propagate message_handler when it is NULL.
Fix SSA assert construction.
 - CBMC 5.8 added FALSE || to the beginning of instrumented assertions
   which revealed a flaw in how the assertions were constructed in 2LS.
   Make the approach more general, recursively going through the whole
   assertion.
Fix CPROVER entrypoint.
Remove typedef from test to make it consistent.
 - Messages from CBMC now contain the typedef instead of the typedef-ed
   structure, remove typedefs in tests to avoid inconsistencies.

Signed-off-by: František Nečas <[email protected]>
This is a temporary commit, constant propagation is broken in CBMC 5.8
(constants are propagated when they should not) which results in
incorrect 2LS behaviour.

Signed-off-by: František Nečas <[email protected]>
Signed-off-by: František Nečas <[email protected]>
@FrNecas
Copy link
Contributor Author

FrNecas commented Mar 26, 2021

Fixed, rebased and squashed, should be ready for merging.

@peterschrammel peterschrammel merged commit 64a3320 into diffblue:master Mar 26, 2021
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

Successfully merging this pull request may close these issues.

3 participants