Room 2 

11:40 - 12:40 


Talk (60 min)

How symbols work and why we need them

Knowing how symbols work and how they are used can be very useful. Not only when solving linker errors but also when consuming or creating libraries, and even when creating executables. But most importantly, it is interesting to know how your binaries work! The talk covers Linux and its ELF symbols in particular, but Windows has some similar concepts. It applies to both C and C++. In this talk, I'll go over - What symbols are, and why do we need them - Why your program has three different symbol tables - The difference between binding and visibility and how C/C++ linkage relates to the two - Where symbols are stored and how to view them - Global, local, weak, and unique symbols - Allowing users to override your functions/globals - How the linker handles C++ templates and inline variables - Which entities need symbols and which don't - Symbol tables used in static and dynamic linking - Default vs hidden visibility and a useful idiom to work with these - Why visibility is a compiler option, not a linker option - How and why to strip symbols and which symbols you can't strip

Anders Schau Knatten

Anders started programming in Turbo Pascal in 1995, and has been programming professionally in various languages since 2001. He's currently a principal developer at Ascenium, working on a new CPU design without an instruction set. He's also the author of and the blog C++ on a Friday.