• 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