11.3 Linker Allocation
Linker allocation is controlled by the linker script, and proceeds in three steps:
- Mapping Input Sections to Output Sections
- Assigning Output Sections to Regions
- Allocating Unmapped Sections
Steps 1 and 2 are performed by a sequential memory allocator. Input sections which appear in the linker script are assigned to specific memory regions in the target devices. Addresses within a memory region are allocated sequentially, beginning with the lowest address and growing upwards.
Step 3 is performed by a best-fit memory allocator. Input sections which do not appear in the linker script are assigned to memory regions according to their attributes. The best-fit allocator makes efficient use of any remaining memory, including gaps between output sections that may have been left by the sequential allocator.
If memory has been reserved for the boot
and/or secure
segments, it will be allocated by the best-fit allocator in step 3. The sequential allocator will avoid these segments, so sections designated with the boot
or secure
attributes should not appear in the linker script.