Expand description
Layout, relaxation and fixup resolution.
Fragment sizes and symbol addresses depend on each other: an alignment’s
padding depends on where it lands, and where it lands depends on how long
the branches before it turned out to be. The pass below iterates to a fixed
point. Instruction sizes only ever grow — chosen never decreases — so the
branch half of the loop always terminates; the whole loop is bounded as
well, since a .org or .space whose size depends on a later symbol can
be written to oscillate.