The ISO C standard does not specify the semantics of many valid programs that use non-portable idioms such as integer-pointer casts. Recent efforts at formal definitions and verified implementation of the C language inherit this feature. By adopting high-level abstract memory models, they validate common optimizations. On the other hand, this prevents reasoning about much low-level code relying on the behavior of common implementations, where formal verification has many applications.
We present the first formal memory model that allows many common optimizations and “fully” supports operations on the representation of pointers. All arithmetic operations are well-defined for pointers that have been cast to integers. Crucially, our model is also simple to understand and program with. All our results are fully formalized in Coq.
Tue 16 JunDisplayed time zone: Tijuana, Baja California change
14:00 - 15:40
|A Formal C Memory Model Supporting Integer-Pointer Casts|
Jeehoon Kang Seoul National University, Chung-Kil Hur Seoul National University, William Mansky University of Pennsylvania, Dmitri Garbuzov University of Pennsylvania, Steve Zdancewic , Viktor Vafeiadis MPI-SWS, GermanyMedia Attached
|Defining the undefinedness of C|
Chris Hathhorn University of Missouri, Chucky Ellison University of Illinois, Grigore Roşu University of Illinois at Urbana-ChampaignMedia Attached
Daejun Park University of Illinois at Urbana-Champaign, Andrei Stefanescu University of Illinois at Urbana-Champaign, Grigore Roşu University of Illinois at Urbana-ChampaignMedia Attached
|Verdi: A Framework for Formally Verifying Distributed System Implementations|
James R. Wilcox University of Washington, Doug Woos University of Washington, Pavel Panchekha University of Washington, Zachary Tatlock University of Washington, Seattle, Xi Wang University of Washington, Michael D. Ernst University of Washington, Thomas Anderson University of WashingtonMedia Attached