Latest posts · 33 articlesBrowse series
[The World of Linkers—Lab 07] Archives on Demand: A Fixed Point of Member Extraction
2026-10-06
A static library is a container of object files, not one larger object. This lab parses the ar format, extracts members one at a time for unresolved global names, and rescans each archive until no further member is selected.
Read article
[The World of Linkers—Theory 16] From a Working Linker to One You Can Trust
2026-10-04
A linker must do more than produce a runnable file. Follow the engineering behind parallel passes, deterministic output, useful diagnostics, layered tests, and incremental linking—and see how each optimization changes what must be proved.
Read article
[The World of Linkers—Theory 15] Beyond ELF: The Rules Change with the File Format
2026-10-04
Compare Mach-O and PE/COFF through their headers, directory records and contents. Byte layouts and coordinate conversions explain imports, pointer chains, unwind metadata, duplicate selection and TLS, while separating file structure, link-time interfaces and runtime contracts.
Read article
[The World of Linkers—Theory 14] What C++ and Rust Ask of a Linker
2026-10-04
Decode compiler-generated names, separate weak binding from COMDAT selection, diagnose missing vtables and initialization order, then follow Rust metadata, runtime libraries, panic strategies, and a minimal no_std program into the final link.
Read article
[The World of Linkers—Theory 13] The Library Changed. What Happens to the Old Program?
2026-10-04
Break a library without changing its function names, then examine SONAMEs, symbol versions, old glibc baselines, and ABI analysis tools—including the compatibility failures those tools cannot decide for you.
Read article
[The World of Linkers—Theory 12] What Changes When the Optimizer Can See Across Files?
2026-10-04
Watch a cross-file call disappear, inspect the contract between symbol resolution and LTO, measure ThinLTO caching, then explore identical code folding and function layout without confusing smaller output with correct or faster output.
Read article
[The World of Linkers—Theory 11] Teaching Machine Code to Remember Its Source
2026-10-04
Follow a deleted function through DWARF tombstones, debug relocations, string merging, compression, separate debug files, build IDs, and split DWARF—and test whether the debugger still tells the truth.
Read article
[The World of Linkers—Theory 10] When a Program Must Arrange Its Own Memory
2026-10-04
Linker scripts organize input sections and define the address contract for an image. Distinguish file offsets, VMA, and LMA; explain startup mappings, data copying, and BSS clearing; then examine kernel layouts, embedded data, section retention, alignment, and script assertions.
Read article