Abstract
The Linux kernel is often used as a real world case study to demonstrate novel Software Product Line Engineering research methods. An important point in this is often the analysis of the Kconfig semantics. However, we detected that the semantics of Kconfig is rather unclear and has many special cases, which are not documented in its short specification. We performed a systematic analysis to uncover the correct behaviour of Kconfig and present the results, which are necessary for applying semantically correct analyses. Further, we analyse existing analysis tools of the research community whether they are aware of the correct semantics of Kconfig. These analyses can be used for improving existing analysis tools as well as decision support for selecting an appropriate tool for a specific analysis. In summary we contribute to a better understanding of Kconfig in the research community to improve the validity of evaluations based on Linux.
- T. Berger, S. She, R. Lotufo, A. Wasowski, and K. Czarnecki. Variability Modeling in the Systems Software Domain. Technical Report GSDLAB-TR 2012-07-06, Generative Software Development Laboratory, University of Waterloo, 2012.Google Scholar
- T. Berger, S. She, R. Lotufo, A. Wasowski, and K. Czarnecki. A Study of Variability Models and Languages in the Systems Software Domain. IEEE Transactions on Software Engineering, 39(12):1611–1640, Dec 2013. Google Scholar
Digital Library
- CADOS Undertaker. http://vamos.informatik.uni-erlangen. de/trac/undertaker. Last visited 15.05.2015.Google Scholar
- C. Dietrich, R. Tartler, W. Schröder-Preikschat, and D. Lohmann. A Robust Approach for Variability Extraction from the Linux Build System. In Proceedings of the 16th International Software Product Line Conference (SPLC ’12), volume 1, pages 21–30, 2012. Google Scholar
Digital Library
- N. Dintzner, A. Van Deursen, and M. Pinzger. Extracting Feature Model Changes from the Linux Kernel Using FMDiff. In Proceedings of the 8th International Workshop on Variability Modelling of Software-Intensive Systems (VaMos’14), pages 22:1–22:8, 2014. Google Scholar
Digital Library
- H. Eichelberger and K. Schmid. Mapping the design-space of textual variability modeling languages: A refined analysis. International Journal of Software Tools for Technology Transfer, pages 1–26, 2014. Google Scholar
Digital Library
- S. El-Sharkawy, A. Krafczyk, N. Asad, and K. Schmid. Analysing the KConfig Semantic and Related Analysis Tools. Technical Report 1/2015, SSE 1/15/E, Institute of Computer Science, University of Hildesheim, 2015. Available at https://sse.uni-hildesheim. de/kconfig-study.Google Scholar
- Extracts Repository. https://code.google.com/p/linuxvariability-analysis-tools/source/browse/?repo= extracts, 2010. Last visited 14.06.2015.Google Scholar
- Kconfig Language Specification. https://www.kernel.org/doc/ Documentation/kbuild/kconfig-language.txt, 2015.Google Scholar
- Last visited 04.03.2015.Google Scholar
- KconfigExtracts. https://code.google.com/p/linuxvariability-analysis-tools/wiki/KconfigExtracts, 2012. Last visited 13.06.2015.Google Scholar
- kconfigreader. https://github.com/ckaestne/kconfigreader, 2015. Last visited 15.05.2015.Google Scholar
- C. Kästner, P. G. Giarrusso, T. Rendel, S. Erdweg, K. Ostermann, and T. Berger. Variability-aware Parsing in the Presence of Lexical Macros and Conditional Compilation. In Proceedings of the 2011 ACM International Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA ’11), pages 805–824, 2011. Google Scholar
Digital Library
- Linux Variability Analysis Tools (LVAT). http://gsd.uwaterloo. ca/node/313. Last visited 15.06.2015.Google Scholar
- S. Nadi, T. Berger, C. Kästner, and K. Czarnecki. Mining Configuration Constraints: Static Analyses and Empirical Results. In Proceedings of the 36th International Conference on Software Engineering (ICSE 2014), pages 140–151, 2014. Google Scholar
Digital Library
- Satisfiability Suggested Format. Satisfiability Suggested Format. ftp://dimacs.rutgers.edu/pub/challenge/ satisfiability/doc/satformat.dvi, 1993.Google Scholar
- Last visited 04.03.2015.Google Scholar
- S. She and T. Berger. Formal Semantics of the Kconfig Language. Technical note, University of Waterloo, 2010.Google Scholar
- J. Sincero, R. Tartler, D. Lohmann, and W. Schröder-Preikschat. Efficient Extraction and Analysis of Preprocessor-Based Variability. In E. Visser, editor, Proceedings of the 9th International Conference on Generative Programming and Component Engineering (GPCE ’10), pages 33–42, 2010. Google Scholar
Digital Library
- TypeChef. http://ckaestne.github.io/TypeChef/, 2013. Last visited 12.06.2015.Google Scholar
- C. Zengler and W. Küchlin. Encoding the Linux kernel Configuration in Propositional Logic. In Proceedings of the 19th European Conference on Artificial Intelligence (ECAI 2010) Workshop on Configuration, volume 2010, pages 51–56, 2010.Google Scholar
Index Terms
Analysing the Kconfig semantics and its analysis tools
Recommendations
Finding broken Linux configuration specifications by statically analyzing the Kconfig language
ESEC/FSE 2021: Proceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software EngineeringHighly-configurable software underpins much of our computing infrastructure. It enables extensive reuse, but opens the door to broken configuration specifications. The configuration specification language, Kconfig, is designed to prevent invalid ...
Analysing the Kconfig semantics and its analysis tools
GPCE 2015: Proceedings of the 2015 ACM SIGPLAN International Conference on Generative Programming: Concepts and ExperiencesThe Linux kernel is often used as a real world case study to demonstrate novel Software Product Line Engineering research methods. An important point in this is often the analysis of the Kconfig semantics. However, we detected that the semantics of ...
An Empirical Study of Configuration Mismatches in Linux
SPLC '17: Proceedings of the 21st International Systems and Software Product Line Conference - Volume AIdeally the variability of a product line is represented completely and correctly by its variability model. However, in practice additional variability is often represented on the level of the build system or in the code. Such a situation may lead to ...






Comments