Loading...
Please wait, while we are loading the content...
Similar Documents
Static analysis of variability in system software: the 90,000 #ifdefs issue ∗.
| Content Provider | CiteSeerX |
|---|---|
| Author | Tartler, Reinhard Dietrich, Christian Sincero, Julio Schröder-Preikschat, Wolfgang Lohmann, Daniel |
| Abstract | System software can be configured at compile time to tailor it with respect to a broad range of supported hardware architectures and application domains. The Linux v3.2 kernel, for instance, provides more than 12,000 configurable features, which control the configurationdependent inclusion of 31,000 source files with 89,000 #ifdef blocks. Tools for static analyses can greatly assist with ensuring the quality of code-bases of this size. Unfortunately, static configurability limits the success of automated software testing and bug hunting. For proper type checking, the tools need to be invoked on a concrete configuration, so programmers have to manually derive many configurations to ensure that the configuration-conditional parts of their code are checked. This tedious and error-prone process leaves many easy to find bugs undetected. We propose an approach and tooling to systematically increase the configuration coverage (CC) in compile-time configurable system software. Our VAMPYR tool derives the required configurations and can be combined with existing static checkers to improve their results. With GCC as static checker, we thereby have found hundreds of issues in Linux v3.2, BUSYBOX, and L4/FIASCO, many of which went unnoticed for several years and have to be classified as serious bugs. Our resulting patches were accepted by the respective upstream developers. 1 |
| File Format | |
| Access Restriction | Open |
| Subject Keyword | System Software Static Analysis Ifdefs Issue Linux V3 Static Checker Broad Range Configuration Coverage Configurable Feature Several Year Compile Time Ifdef Block L4 Fiasco Hardware Architecture Required Configuration Error-prone Process Vampyr Tool Serious Bug Configurationdependent Inclusion Proper Type Checking Application Domain Configuration-conditional Part Bug Hunting Static Configurability Compile-time Configurable System Software Source File Concrete Configuration Many Configuration Automated Software Respective Upstream Developer |
| Content Type | Text |