-
Notifications
You must be signed in to change notification settings - Fork 43
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
SV-COMP: Add overrides for more __VERIFIER_nondet_*
functions
#842
Comments
Many of those seem uncomplicated. The intended semantics of Not sure it makes sense for us to support |
For what it's worth, many of these functions are only used in a small number of programs:
As a result, the answers to questions like "what are the intended semantics?" may very well be "whatever makes the programs in |
https://gitlab.com/sosy-lab/benchmarking/sv-benchmarks/-/issues/1304#note_693280508 clarifies that the omission of the |
This adds `crux-llvm` overrides for the `u8`, `u16`, `u32`, `unsigned`, `size_t`, `loff_t`, and `longlong` variants of `__VERIFIER_nondet_*`. This checks off several boxes in #842.
Currently,
crux-llvm
has overrides for the following SV-COMP–related__VERIFIER_nondet_*
functions:crucible/crux-llvm/src/Crux/LLVM/Overrides.hs
Lines 249 to 296 in c96a404
This doesn't cover everything, however. Per the 2021 SV-COMP rules:
By my count,
crux-llvm
is missing overrides for the following__VERIFIER_nondet_*
variants:loff_t
pchar
pthread_t
sector_t
size_t
u32
unsigned
I'm unclear if all of these are actually used in SV-COMP in practice, but I have spotted a subset of these in the wild:
ldv-validator-v0.6/linux-stable-a9e7fb5-1-32_7a-drivers--media--rc--imon.ko-entry_point.cil.out.i
uses__VERIFIER_nondet_loff_t
.ldv-validator-v0.6/linux-stable-d47b389-1-32_7a-drivers--media--video--cx88--cx88-blackbird.ko-entry_point.cil.out.i
uses__VERIFIER_nondet_size_t
.ldv-validator-v0.6/linux-stable-431e8d4-1-102_1a-drivers--net--r8169.ko-entry_point.cil.out.i
uses__VERIFIER_nondet_u32
.In addition to the ones above, I have spotted a number of
__VERIFIER_nondet_*
variants that aren't specified in the rules:ldv-commit-tester/main0_drivers-media-video-tlg2300-poseidon-ko--32_7a--4a349aa.i
uses__VERIFIER_nondet_longlong
.heap-data/packet_filter.i
uses__VERIFIER_nondet_charp
.ldv-linux-3.16-rc1/205_9a_array_safes_linux-3.16-rc1.tar.xz-205_9a-drivers--net--wireless--rtlwifi--btcoexist--btcoexist.ko-entry_point.cil.out.i
uses__VERIFIER_nondet_u8
.ldv-linux-3.16-rc1/205_9a_array_unsafes_linux-3.16-rc1.tar.xz-205_9a-drivers--net--ethernet--intel--i40evf--i40evf.ko-entry_point.cil.out.i
uses__VERIFIER_nondet_u16
.ldv-commit-tester/main0_drivers-media-video-tlg2300-poseidon-ko--32_7a--4a349aa.i
uses__VERIFIER_nondet_ulonglong
.I'm unclear if we should add support for these right away, as their inclusion in SV-COMP could arguably be considered a bug. I've submitted https://gitlab.com/sosy-lab/benchmarking/sv-benchmarks/-/issues/1304 in an attempt to clarify the situation. EDIT: See #842 (comment).
The text was updated successfully, but these errors were encountered: