Non-Confidential | ![]() | DUI0803J | ||
| ||||
Home > Image Structure and Generation > Section placement with the linker > Default section placement |
By default, the linker places input sections in a specific order within an execution region.
The sections are placed in the following order:
By attribute as follows:
FIRST
or LAST
input section
attribute.These rules mean that the positions of input sections with identical
attributes and names included from libraries depend on the order the linker
processes objects. This can be difficult to predict when many libraries are present
on the command line. The --tiebreaker=
option
uses a more predictable order based on the order the section appears on the command
line.cmdline
The base address of each input section is determined by the sorting order defined by the linker, and is correctly aligned within the output section that contains it.
The linker produces one output section for each attribute present in the execution region:
If an attempt is made to place data in an XO only execution region, then the linker generates an error.
XO sections lose the XO property if mixed with RO code in the same Execution region.
The XO and RO output sections can be protected at run-time on systems that have memory management hardware. RO and XO sections can be placed in ROM or Flash.
Alternative sorting orders are available with the --sort=
command-line option. The linker might change
the algorithm
to
minimize the amount of veneers generated if no algorithm is chosen.algorithm
The following scatter file shows how the linker places sections:
LoadRegion 0x8000 { ExecRegion1 0x0000 0x4000 { *(sections) *(moresections) } ExecRegion2 0x4000 0x2000 { *(evenmoresections) } }
The order of execution regions within the load region is not altered by the linker.
The linker might not be able to place some input sections in any execution region.
When the linker is unable to place some input sections it generates an error message. This might occur because your current scatter file does not permit all possible module select patterns and input section selectors.
How you fix this depends on the importance of placing these sections correctly:
If the sections must be placed at specific locations, then modify your scatter file to include specific module selectors and input section selectors as required.
If the placement of the unassigned sections is not important, you can use one
or more .ANY
module selectors with optional input section
selectors.