Multiverse: Extending LLVM by Compiler-Assisted Dynamic Variability
- Typ der Arbeit: Bachelorarbeit
- Status der Arbeit: abgeschlossen
- Projekte: CADOS
- Betreuer: Tobias Landsberg, Daniel Lohmann
- Bearbeiter: Nils Fuhler
- Ende der Arbeit: 19. Sep 2022
Multiverse is an approach to handle dynamic variability efficiently by means of binary patching. It provides an extension to the C programming language that enables the developer to express dynamic variability in performance-critical paths. With specially annotated config variables, multiverse can generate multiple versions of a function and dynamically binary patch the running system to use the version of the current configuration. The goal is to narrow the gap between dynamic and static variability by allowing the developer to easily employ run-time configurability at zero or low cost.
Previously, Multiverse was implemented as a GCC plugin. However, this comes with various limitations. In consequence of GCC's architecture, changes to the existing code base are tedious and error-prone. To facilitate further research in this area, this limitation has to be fixed.
The goal of this thesis is to rewrite the compiler plugin using LLVM. Using a combination of a Clang plugin and an LLVM pass, the function of the existing GCC plugin must be reimplemented, ideally resulting in a binary compatible with the existing Multiverse run-time. Afters this task is completed, the new implementation can be evaluated against the old one.
Related Publications
-
EuroSys
Conference
A
Multiverse: Compiler-Assisted Management of Dynamic Variability in Low-Level System Software -
Fourteenth EuroSys Conference 2019 (EuroSys '19)ACM Press2019.
PDF Slides 10.1145/3302424.3303959 [BibTex]