implementation module pdLinkerOffsets; import SymbolTable; :: *ModuleOffsets :== *{#Int}; compute_module_offset :: !Int !Symbol !Int !Int !Int !*{#Int} -> (!Int,!*{#Int}); compute_module_offset 0 (Module {length,align=alignment}) module_n offset0 file_symbol_index module_offsets0 = (aligned_offset0+length,{module_offsets0 & [file_symbol_index+module_n] = aligned_offset0}); { aligned_offset0=(offset0+alignment_mask) bitand (bitnot alignment_mask); alignment_mask=dec (1<