SN Systems Tech Blog


Dead Debug Data Elimination Using Fragmented DWARF

ARTICLE BY: James Henderson
POSTED: Nov 17, 2020
TAGS: LLVM Developers Meeting, Toolchain

Standard DWARF debug information defines a series of sections in the output, with one of each per object file. Each of these sections may have information about every function and variable in that unit. Linkers typically leave this information intact, this approach has issues such as potential ambiguity and excessive space usage. This talk will present a solution to these issues.


LLVM Build Times Using a Program Repository

POSTED: Jan 20, 2020
TAGS: LLVM Developers Meeting, Toolchain

The Program Repository is a project studying the benefits of changing the build workflow, storing object data in a database instead of object files, structured to eliminate duplicated work from the compilation process, enable incremental compilation, and to minimize the work that must be performed by the linker. This article will present the current compile time gains building LLVM and Clang. The Program Repository identifies duplicate code and data across compile units and avoids repeated work during both compilation and linkage. For example, if a function is present in multiple compile units then it will only be optimised and stored once. With duplicates identified at compile time, a program repository linker will not need to process any code or data that it would otherwise discard


Improving the Optimized Debugging Experience

ARTICLE BY: Orlando Cazalet-Hyams
POSTED: Dec 06, 2019
TAGS: LLVM Developers Meeting, Toolchain

Sometimes it is impractical to debug unoptimized code (-g -O0). However, the optimized debugging experience (-g -O2) can be frustrating and occasionally misleading. This is not ideal, especially when printf-debugging won't cut it. But it doesn't have to be this way! Over the last year, using DExTer and other tools, we have found many debug-info bugs that occur when compiling with optimizations. Some remain unfixed and there are certainly more to be found. In this talk I'll outline some examples of these bugs, how we found them, and what we're doing to improve the optimized debugging experience.