Version 1

Technicaltalk: A tale of ELFs and DWARFs

A glimpse into the world of linkers, loaders and binary formats.


During our daily work the details of what happens between compiling a source file and running the resulting executable are hidden from us. If something goes wrong, be it a linker error or bizarre runtime behavior, it is useful to know what happens there and how to diagnose these problems.

Getting from a compiled object file to a running executable is probably one of the most intransparent steps during software development, the build system shields us from the use of the linker that assembles the libraries and executables we are building, and the operating system shields us from the loader that gets all these parts into memory and prepares them for execution. In case of a failure anywhere along the way it is useful to be able to peek inside though.

In this talk we are going to look at what happens in this process, as well as the available tools to help investigate problems. While simple linker errors are somewhat common and are hard to miss as they break the build, failures in the linking and loading process can also manifest in tricky runtime errors, which is when a basic understanding of what's going on in the background is most helpful.

Of course this is generally useful for any developer of native software, but some new features of Qt5 such as the plug-in meta-data system or function pointer connects add their own specific requirements. We will pay special attention to those.


Day: 2014-09-06
Start time: 15:30
Duration: 00:25
Track: Technical Talk (30 min)




Click here to let us know how you liked this event.