C-CLR: a tool for navigating highly configurable system software
Proceedings of the 6th workshop on Aspects, components, and patterns for infrastructure software
Aspect mining in the presence of the C preprocessor
Proceedings of the 2008 AOSD workshop on Linking aspect technology and evolution
Partial preprocessing C code for variability analysis
Proceedings of the 5th Workshop on Variability Modeling of Software-Intensive Systems
Scalable analysis of variable software
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Hi-index | 0.00 |
C/C++ code relying on preprocessing can be quite complexto analyze. This is often due to free preprocessing variablesset at compile time. In general, preprocessing selectivelycompile parts of the source code based on the valuesof preprocessing variables which may be free. In thiscase, the relations between these parts can only be representedby conditional expressions using the free variables.Traditional symbolic evaluation can be used to infer theseexpressions, but its best case time complexity is exponential.We present a new approach for symbolic evaluation that canefficiently compute these conditions by binding variables toconditional values and avoiding the path feasibility analysisof traditional symbolic evaluation. It infers the exact conditionalexpressions for which the lines of code are compiledand the (conditional) values of preprocessing variables ateach point of the source code. Our prototype shows the approachas practical and scaleable to large C/C++ software.