Authors
- Yonghyun Kim, Seoul National University, Korea
- Minki Cho, Seoul National University, Korea
- Jayhyung Lee, Seoul National University, Korea
- Jinwoo Kim, Seoul National University, Korea
- Taeyoung Yoon, Seoul National University, Korea
- Youngju Song, MPI-SWS, Germany
- Chung-Kil Hur*, Seoul National University, Korea
* Hur is the corresponding author.
Abstract
Although there have been many approaches for developing formal memory models that support integer-
pointer casts, previous approaches share the drawback that they are not designed for end-to-end verification,
failing to support some important source-level coding patterns, justify some backend optimizations, or lack a
source-level logic for program verification.
This paper presents Archmage, a framework for integer-pointer casting designed for end-to-end verification,
supporting a wide range of source-level coding patterns, backend optimizations, and a formal notion of out-of-
memory. To facilitate end-to-end verification via Archmage, we also present two systems based on Archmage:
CompCertCast, an extension of CompCert with Archmage to bring a full verified compilation chain to
integer-pointer casting programs, and Archmage logic, a source-level logic for reasoning about integer-
pointer casts. We design CompCertCast such that the overhead from formally supporting integer-pointer
casts is mitigated, and illustrate the effectiveness of Archmage logic by verifying an xor-based linked-list
implementation, Together, our paper presents the first practical end-to-end verification chain for programs
containing integer-pointer casts.