~/talk

The Bits Between the Bits: How We Get to main()

slides:none on file

Linux executables assemble from per-file ELF sections that the compiler emits and the linker stitches together; using objdump, gdb and readelf the talk traces .init_array global-constructor pointers, shows the linker script KEEP/PROVIDE_HIDDEN pattern that creates __init_array_start/end, and explains lazy dynamic linking via the PLT/GOT trampoline and the interpreter. Small hello binaries are ~8K but statically linking swells to ~2.5MB; LD_BIND, LD_DEBUG and LD_PRELOAD force or inspect resolution, letting one intercept calls — the demos all work and reveal where ODR and startup-order bugs hide.

AI-written summary · about

  1. 0:00Introduction
  2. 1:05Program compilation
  3. 4:56ELF file structure
  4. 7:57Static initialization
  5. 13:39Global construction array
  6. 19:25The linker process
  7. 24:54Relocations
  8. 30:55Linker scripts
  9. 37:16Dynamic linking
  10. 42:07Lazy symbol resolution
  11. 48:33The dynamic interpreter
  12. 51:42Interposition and weak symbols
  13. 55:47LTO and final questions
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.