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

Polish __goblint_check #814

Closed
7 tasks done
sim642 opened this issue Aug 4, 2022 · 0 comments · Fixed by #845
Closed
7 tasks done

Polish __goblint_check #814

sim642 opened this issue Aug 4, 2022 · 0 comments · Fixed by #845
Assignees
Labels
cleanup Refactoring, clean-up preprocessing C preprocessing testing
Milestone

Comments

@sim642
Copy link
Member

sim642 commented Aug 4, 2022

In #278 all the asserts in tests were changed to __goblint_check, which is declared by a goblint.h header that we forcefully include into every analyzed file via -include. This makes the programs normally uncompilable and most of them still include assert.h, which now is excessive.

This situation should be improved:

  • Add explicit #include <goblint.h> to all tests using __goblint_check.

  • Remove excessive #include <assert.h> from such tests.

  • Add explicit #include <goblint.h> to all tests using __goblint_assume_join, __goblint_split_begin and __goblint_split_end.

  • Provide a dummy implementation for goblint.h, which wouldn't be used for analysis (they're handled as specials), but could be used for compiling the programs. It would also allow using Goblint function annotations in actual projects/stories.

  • Document __goblint_check, etc as function annotations like __goblint_assume_join is documented in Interactive: improvements for chrony story #724.

  • Design a better structure for our includes directory: right now it contains a mix of various things and cannot be added to include paths of actual projects:

    1. Goblint-specific headers: goblint.h, linux/goblint_preconf.h, linuxlight.h?
    2. Goblint overrides of standard headers: assert.h.
    3. Goblint stubs for standard functions: stdlib.c, pthread.c.
    4. Goblint stubs for non-standard functions: sv-comp.c.
    5. And eventually general stubs for Goblint-specific functions: goblint.c.

    They should be split by these various types. Moreover, each of them should have standard structure (include, src, etc).

  • Rename includes to something better since it also contains various stub implementations.

@sim642 sim642 added cleanup Refactoring, clean-up testing preprocessing C preprocessing labels Aug 4, 2022
@sim642 sim642 self-assigned this Oct 4, 2022
@sim642 sim642 added this to the v2.1.0 milestone Oct 24, 2022
sim642 added a commit to sim642/opam-repository that referenced this issue Nov 25, 2022
CHANGES:

Functionally equivalent to Goblint in SV-COMP 2023.

* Add automatic configuration tuning (goblint/analyzer#772).
* Add many library function specifications (goblint/analyzer#865, goblint/analyzer#868, goblint/analyzer#878, goblint/analyzer#884, goblint/analyzer#886).
* Reorganize library stubs (goblint/analyzer#814, goblint/analyzer#845).
* Add Trace Event Format output to timing (goblint/analyzer#844).
* Optimize domains for address and path sets (goblint/analyzer#803, goblint/analyzer#809).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cleanup Refactoring, clean-up preprocessing C preprocessing testing
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant