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.
Conference DayTue 16 JunDisplayed time zone: Tijuana, Baja California change
14:00 - 15:40
|A Formal C Memory Model Supporting Integer-Pointer Casts|
Jeehoon KangSeoul National University, Chung-Kil HurSeoul National University, William ManskyUniversity of Pennsylvania, Dmitri GarbuzovUniversity of Pennsylvania, Steve Zdancewic, Viktor VafeiadisMPI-SWS, GermanyMedia Attached
|Defining the undefinedness of C|
Chris HathhornUniversity of Missouri, Chucky EllisonUniversity of Illinois, Grigore RoşuUniversity of Illinois at Urbana-ChampaignMedia Attached
Daejun ParkUniversity of Illinois at Urbana-Champaign, Andrei StefanescuUniversity of Illinois at Urbana-Champaign, Grigore RoşuUniversity of Illinois at Urbana-ChampaignMedia Attached
|Verdi: A Framework for Formally Verifying Distributed System Implementations|
James R. WilcoxUniversity of Washington, Doug WoosUniversity of Washington, Pavel PanchekhaUniversity of Washington, Zachary TatlockUniversity of Washington, Seattle, Xi WangUniversity of Washington, Michael D. ErnstUniversity of Washington, Thomas AndersonUniversity of WashingtonMedia Attached