Back to 2015-proposals
Title: What's an ABI and why is it so complicated?
Proposer: Jonathan Wakely
Type: Tutorial
Duration: 90 mins
Description:
The Application Binary Interface (ABI) for software written in C++ is
much more complicated than the equivalent for C. In addition to
obvious properties of the architecture such as instruction set and
calling conventions, and details of how standard library types are
defined, a C++ compiler has to care about details such as how name
mangling, virtual functions and exception-handling are implemented. In
your own code, the One Definition Rule means that the full definition
of inline functions and template may become part of your program's
ABI. This session will look at what depends on the ABI, what in your
code affects your program's ABI, and what doesn't affect it. We will
also look at recent changes in GCC's C++ standard library and how
changes to the ABI were managed.