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 Jun
|14:00 - 14:25|
Jeehoon KangSeoul National University, Chung-Kil HurSeoul National University, William ManskyUniversity of Pennsylvania, Dmitri GarbuzovUniversity of Pennsylvania, Steve Zdancewic, Viktor VafeiadisMPI-SWS, GermanyMedia Attached
|14:25 - 14:50|
Chris HathhornUniversity of Missouri, Chucky EllisonUniversity of Illinois, Grigore RosuUniversity of Illinois at Urbana-ChampaignMedia Attached
|14:50 - 15:15|
Daejun ParkUniversity of Illinois at Urbana-Champaign, Andrei StefanescuUniversity of Illinois at Urbana-Champaign, Grigore RosuUniversity of Illinois at Urbana-ChampaignMedia Attached
|15:15 - 15:40|
James R. WilcoxUniversity of Washington, Doug WoosUniversity of Washington, Pavel PanchekhaUniversity of Washington, Zachary Tatlock, Xi WangUniversity of Washington, Michael D. ErnstUniversity of Washington, Thomas AndersonUniversity of WashingtonMedia Attached