Mapping abstract symbol names in source code to concrete addresses at runtime requires cooperation between the compiler, static linker, and runtime loader. This talk will talk about some of the practices and data structures used for this task including ELF relocations, Global Offset Tables and Procedure Linkage Tables. Depending on time, it may also cover some more advanced topics such as initialization functions ("ifuncs").