Multiverse: Extending LLVM by Compiler-Assisted Dynamic Variability

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.

EuroSys Conference A
Multiverse: Compiler-Assisted Management of Dynamic Variability in Low-Level System Software
Florian Rommel, Christian Dietrich, Michael Rodin, Daniel LohmannFourteenth EuroSys Conference 2019 (EuroSys '19)ACM Press2019.
PDF Slides 10.1145/3302424.3303959 [BibTex]
DSPL Workshop
Function Multiverses for Dynamic Variability
Valentin Rothberg, Christian Dietrich, Alexander Graf, Daniel LohmannFoundations and Applications of Self* Systems2016.
PDF [BibTex]