VIP: Verifying real-world C idioms with integer-pointer casts
Lepigre R, Sammler MJ, Memarian K, Krebbers R, Dreyer D, Sewell P. 2022. VIP: Verifying real-world C idioms with integer-pointer casts. Proceedings of the ACM on Programming Languages. 6(POPL), 1–32.
Download (ext.)
https://doi.org/10.1145/3498681
[Published Version]
DOI
Journal Article
| Published
| English
Scopus indexed
Author
Lepigre, Rodolphe;
Sammler, Michael JoachimISTA;
Memarian, Kayvan;
Krebbers, Robbert;
Dreyer, Derek;
Sewell, Peter
Abstract
Systems code often requires fine-grained control over memory layout and pointers, expressed using low-level (e.g., bitwise) operations on pointer values. Since these operations go beyond what basic pointer arithmetic in C allows, they are performed with the help of integer-pointer casts. Prior work has explored increasingly realistic memory object models for C that account for the desired semantics of integer-pointer casts while also being sound w.r.t. compiler optimisations, culminating in PNVI, the preferred memory object model in ongoing discussions within the ISO WG14 C standards committee. However, its complexity makes it an unappealing target for verification, and no tools currently exist to verify C programs under PNVI.
In this paper, we introduce VIP, a new memory object model aimed at supporting C verification. VIP sidesteps the complexities of PNVI with a simple but effective idea: a new construct that lets programmers express the intended provenances of integer-pointer casts explicitly. At the same time, we prove VIP compatible with PNVI, thus enabling verification on top of VIP to benefit from PNVI’s validation with respect to practice. In particular, we build a verification tool, RefinedC-VIP, for verifying programs under VIP semantics. As the name suggests, RefinedC-VIP extends the recently developed RefinedC tool, which is automated yet also produces foundational proofs in Coq. We evaluate RefinedC-VIP on a range of systems-code idioms, and validate VIP’s expressiveness via an implementation in the Cerberus C semantics.
Publishing Year
Date Published
2022-01-12
Journal Title
Proceedings of the ACM on Programming Languages
Publisher
Association for Computing Machinery
Volume
6
Issue
POPL
Page
1-32
ISSN
IST-REx-ID
Cite this
Lepigre R, Sammler MJ, Memarian K, Krebbers R, Dreyer D, Sewell P. VIP: Verifying real-world C idioms with integer-pointer casts. Proceedings of the ACM on Programming Languages. 2022;6(POPL):1-32. doi:10.1145/3498681
Lepigre, R., Sammler, M. J., Memarian, K., Krebbers, R., Dreyer, D., & Sewell, P. (2022). VIP: Verifying real-world C idioms with integer-pointer casts. Proceedings of the ACM on Programming Languages. Association for Computing Machinery. https://doi.org/10.1145/3498681
Lepigre, Rodolphe, Michael Joachim Sammler, Kayvan Memarian, Robbert Krebbers, Derek Dreyer, and Peter Sewell. “VIP: Verifying Real-World C Idioms with Integer-Pointer Casts.” Proceedings of the ACM on Programming Languages. Association for Computing Machinery, 2022. https://doi.org/10.1145/3498681.
R. Lepigre, M. J. Sammler, K. Memarian, R. Krebbers, D. Dreyer, and P. Sewell, “VIP: Verifying real-world C idioms with integer-pointer casts,” Proceedings of the ACM on Programming Languages, vol. 6, no. POPL. Association for Computing Machinery, pp. 1–32, 2022.
Lepigre R, Sammler MJ, Memarian K, Krebbers R, Dreyer D, Sewell P. 2022. VIP: Verifying real-world C idioms with integer-pointer casts. Proceedings of the ACM on Programming Languages. 6(POPL), 1–32.
Lepigre, Rodolphe, et al. “VIP: Verifying Real-World C Idioms with Integer-Pointer Casts.” Proceedings of the ACM on Programming Languages, vol. 6, no. POPL, Association for Computing Machinery, 2022, pp. 1–32, doi:10.1145/3498681.
All files available under the following license(s):
Copyright Statement:
This Item is protected by copyright and/or related rights. [...]
Link(s) to Main File(s)
Access Level
Open Access