[Main]
Title=MLINK_FORMAT_BSS
See Also=advanced_kernelbss: KERNEL_FORMAT_BSS, advanced_compressedbss: COMPRESSED_FORMAT_BSS, advanced_mergebss: MERGE_BSS

[Top]
In nostub mode, if you put
<PRE>#define MLINK_FORMAT_BSS
</PRE>
at the beginning of the program, a BSS section will be created dynamically at
run time, and the references into this section will be stored in the program
in a compressed format. A BSS section holds uninitialized global variables.
This format for the relocation entries (first used in Johan Eilert's mlink
linker) is designed to balance the size of the relocs against the size of the
decompression routine. The relocation entries take only slightly more space
than in the compressed format, but the decoding code is much smaller.
Moreover, as for the compressed format, the decoding code only has to be
inserted into the program once if multiple <CODE>MLINK_FORMAT_...</CODE>
features are used. In most cases, this should be the optimal format to use for
relocation entries, but for programs with very few or very many relocations,
the kernel or compressed formats (respectively) are more efficient.
<BR><BR>
This feature uses the linker-specific symbol
<A HREF="$$INFOLINK(ld/insert_mlink_bss_refs)">__ld_insert_mlink_bss_refs</A>.
