What You See Is What I Want: Extending the LLVM Linker for View-Local Data in Multivariant ELFs

In the ATLAS project, we explore the possibilities of address-space views which are synchronized variants of a process’s address space that only differ in explicitly specified areas. Each thread can switch between the process’s address-space views, thereby allowing context-based variation.

Address-space views can be used to facilitate run-time alterations of multi-threaded programs without the need of stopping the threads before modification. To facilitate this, we use an extension for the Executable and Linking Format (ELF) which allows embedding blueprints for address-space views that are based on pre-generated variants. The extension allows the developer to specify alternative code variants on the granularity of source files, which are then combined by the linker to produce a multivariant ELF.

Currently, all variables declared in multivariant source files are shared between the different code views. This, however, causes problems when data is interpreted and used differently in the views.

The goal of this thesis is to design and implement a mechanism for view-local data.