DocumentCode
2617679
Title
C/C++ conditional compilation analysis using symbolic execution
Author
Hu, Ying ; Merlo, Ettore ; Dagenais, Mario ; Lagüe, Bruno
Author_Institution
Dept. of Electr. & Comput. Eng., Ecole Polytech., Montreal, Que., Canada
fYear
2000
fDate
2000
Firstpage
196
Lastpage
206
Abstract
Conditional compilation is one of the most powerful parts of a C/C++ environment available for building software for different platforms with different feature sets. Although conditional compilation is powerful, it can be difficult to understand and is error-prone. In large software systems, file inclusion, conditional compilation and macro substitution are closely related and are often largely interleaved. Without adequate tools, understanding complex header files is a tedious task. This practice may even be complicated as the hierarchies of header files grow with projects. This paper presents our experiences of studying conditional compilation based on the symbolic execution of preprocessing directives. Our two concrete goals are: for any given preprocessor directive or C/C++ source code line, finding the simplest sufficient condition to reach/compile it, and finding the full condition to reach/compile that code line. Two different strategies were used to achieve these two goals. A series of experiments conducted on the Linux kernel are presented
Keywords
C language; C++ language; Unix; operating system kernels; program compilers; program diagnostics; reachability analysis; symbol manipulation; C language environment; C++ environment; Linux kernel; conditional compilation analysis; feature sets; file inclusion; header file hierarchies; large software systems; macro substitution; preprocessing directives; reachability; source code lines; sufficient condition; symbolic execution; C language;
fLanguage
English
Publisher
ieee
Conference_Titel
Software Maintenance, 2000. Proceedings. International Conference on
Conference_Location
San Jose, CA
ISSN
1063-6773
Print_ISBN
0-7695-0753-0
Type
conf
DOI
10.1109/ICSM.2000.883045
Filename
883045
Link To Document