Volatiles are miscompiled, and what to do about it

12 years 3 months ago
Volatiles are miscompiled, and what to do about it
C's volatile qualifier is intended to provide a reliable link between operations at the source-code level and operations at the memorysystem level. We tested thirteen production-quality C compilers and, for each, found situations in which the compiler generated incorrect code for accessing volatile variables. This result is disturbing because it implies that embedded software and operating systems--both typically coded in C, both being bases for many mission-critical and safety-critical applications, and both relying on the correct translation of volatiles--may be being miscompiled. Our contribution is centered on a novel technique for finding volatile bugs and a novel technique for working around them. First, we present access summary testing: an efficient, practical, and automatic way to detect code-generation errors related to the volatile qualifier. We have found a number of compiler bugs by performing access summary testing on randomly generated C programs. Some of these bug...
Eric Eide, John Regehr
Added 19 Oct 2010
Updated 19 Oct 2010
Type Conference
Year 2008
Authors Eric Eide, John Regehr
Comments (0)