Latest posts · 33 articlesBrowse series
[The World of Linkers—Lab 15] Let Counterexamples Set the Quality Bar
Build replayable mutation and panic-survey tools, then test earlier backends through native execution, determinism checks, and behavioral comparison with GNU ld.
Read article
[The World of Linkers—Lab 14] Take the Linker Call from rustc
Add a command-line driver to the cumulative class13 static-PIE backend and let rustc use it to link a no_std program that exercises core::fmt.
Read article
[The World of Linkers—Lab 13] Addresses Have Semantics: Safe ICF and Code Order
Add conservative ICF and text ordering to class12's ET_EXEC and static-PIE backends, redirect references, and adjust debug information for folded copies.
Read article
[The World of Linkers—Lab 12] Make Debug Information Follow Addresses
Add debug sections, symbols, and section headers to ET_EXEC and static PIE, keeping image, debug-section, and TLS coordinates distinct.
Read article
[The World of Linkers—Lab 11] Seeing Through Indirection: GOT, Relaxation, and Static TLS
Extend class9's static PIE with GOT slots, the supported mov relaxation, a TLS template, and supplied startup code that installs main-thread TLS.
Read article
[The World of Linkers—Lab 10] Rewrite Instead of Copy: Constants and Unwind Tables
Extend class8's ET_EXEC backend with merged constants, input-offset mappings, and rebuilt eh_frame records and search indexes for live code.
Read article
[The World of Linkers—Lab 09] Link Before the Load Address Is Known
Build a static PIE from class8's frontend and class6's layout, separating static fixups from load-time pointers repaired by supplied startup code.
Read article
[The World of Linkers—Lab 08] Keep What Is Reachable: GC and Link Maps
Trace live sections from the entry and explicit roots, build an address-independent link plan, and emit deterministic byte-safe maps.
Read article