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
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;
Conference_Titel :
Software Maintenance, 2000. Proceedings. International Conference on
Conference_Location :
San Jose, CA
Print_ISBN :
0-7695-0753-0
DOI :
10.1109/ICSM.2000.883045