Controls the sorting order of sections in large execution regions to minimize the distance between sections that call each other.
If the execution region contains more code than the range of a branch instruction then the linker switches to large region mode. In this mode the linker sorts according to the approximated average call depth of each section in ascending order. The linker might also distribute veneers amongst the code sections to minimize the number of veneers.
To disable large region mode and revert to lexical order, use
--no_largeregions. Section placement is then predictable and
image comparisons are more predictable. The linker automatically switches on
--veneerinject if it is needed for a branch to reach the veneer.
Large region support enables:
Average call depth sorting,
The following command lines are equivalent:
armlink --largeregions --no_api --no_veneerinject --sort=Lexical armlink --no_largeregions
The default is
--no_largeregions. The linker automatically switches to
--largeregions if at least one execution region contains more code than
the smallest inter-section branch. The smallest inter-section branch depends on the code in
the region and the target processor:
Execution region contains only ARM instructions.
Execution region contains Thumb instructions and the processor supports Thumb-2 technology.
Execution region contains Thumb instructions and the processor does not support Thumb-2 technology.