8.4.3 Execution region attributes

An execution region has attributes that allow you to control where parts of your image are loaded in the target memory at run-time.

The execution region attributes are:
ABSOLUTE
The content is placed at a fixed address that does not change after linking. The execution address of the region is specified by the base designator.
ALIGN alignment
Increase the alignment constraint for the execution region from 4 to alignment. alignment must be a positive power of 2. If the execution region has a base_address then this must be alignment aligned. If the execution region has a +offset then the linker aligns the calculated base address of the region to an alignment boundary.

Note

ALIGN on an execution region causes both the load address and execution address to be aligned. This can result in padding being added to the ELF file. To align only the execution address, use the AlignExpr expression on the base address.
ALIGNALL value
Increases the alignment of sections within the execution region.
The value must be a positive power of 2 and must be greater than or equal to 4.
ANY_SIZE max_size
Specifies the maximum size within the execution region that armlink can fill with unassigned sections. You can use a simple expression to specify the max_size. That is, you cannot use functions such as ImageLimit().

Note

max_size is not the contingency, but the maximum size permitted for placing unassigned sections in an execution region. For example, if an execution region is to be filled only with .ANY sections, a two percent contingency is still set aside for veneers. This leaves 98% of the region for .ANY section assignments.
Be aware of the following restrictions when using this keyword:
  • max_size must be less than or equal to the region size.
  • You can use ANY_SIZE on a region without a .ANY selector but it is ignored by armlink.
EMPTY [–]length
Reserves an empty block of memory of a given size in the execution region, typically used by a heap or stack. No section can be placed in a region with the EMPTY attribute.
length represents a stack that grows down in memory. If the length is given as a negative value, the base_address is taken to be the end address of the region.
FILL value
Creates a linker generated region containing a value. If you specify FILL, you must give a value, for example: FILL 0xFFFFFFFF. The FILL attribute replaces the following combination: EMPTY ZEROPAD PADVALUE.
In certain situations, for example, simulation, this is preferable to spending a long time in a zeroing loop.
FIXED
Fixed address. The linker attempts to make the execution address equal the load address. This makes the region a root region. If this is not possible the linker produces an error.

Note

The linker inserts padding with this attribute.
NOCOMPRESS
RW data compression is enabled by default. The NOCOMPRESS keyword enables you to specify that RW data in an execution region must not be compressed in the final image.
OVERLAY
Use for sections with overlaying address ranges. If consecutive execution regions have the same +offset then they are given the same base address.
The content is placed at a fixed address that does not change after linking. The content might overlap with other regions designated as OVERLAY regions.
PADVALUE value
Defines the value to use for padding. If you specify PADVALUE, you must give a value, for example:
EXEC 0x10000 PADVALUE 0xFFFFFFFF EMPTY ZEROPAD 0x2000
This creates a region of size 0x2000 full of 0xFFFFFFFF.
PADVALUE must be a word in size. PADVALUE attributes on load regions are ignored.
PI
This region contains only position independent sections. The content does not depend on any fixed address and might be moved after linking without any extra processing.

Note

This attribute is not supported if an image contains execute-only sections.
SORTTYPE algorithm
Specifies the sorting algorithm for the execution region, for example:
ER1 +0 SORTTYPE CallTree

Note

This attribute overrides any sorting algorithm that you specify with the --sort command-line option.
UNINIT
Use to create execution regions containing uninitialized data or memory-mapped I/O.

Note

ARM Compiler does not support systems with ECC or parity protection where the memory is not initialized.
ZEROPAD
Zero-initialized sections are written in the ELF file as a block of zeros and, therefore, do not have to be zero-filled at runtime.
This sets the load length of a ZI output section to Image$$region_name$$ZI$$Length.
Only root execution regions can be zero-initialized using the ZEROPAD attribute. Using the ZEROPAD attribute with a non root execution region generates a warning and the attribute is ignored.
In certain situations, for example, simulation, this is preferable to spending a long time in a zeroing loop.
Related concepts
7.4.8 Behavior when .ANY sections overflow because of linker-generated content
3.3.3 Section alignment with the linker
7.9 Creation of regions on page boundaries
7.10 Overalignment of execution regions and input sections
7.12 Example of using expression evaluation in a scatter file to avoid padding
8.6.11 Example of aligning a base address in execution space but still tightly packed in load space
7.6 Placement of sections with overlays
8.4.5 Considerations when using a relative address +offset for execution regions
8.6 Expression evaluation in scatter files
4.7 Optimization with RW data compression
8.4.4 Inheritance rules for execution region address attributes
Related reference
8.4.1 Components of an execution region description
8.4.2 Syntax of an execution region description
6.3.3 Load$$ execution region symbols
8.6.8 AlignExpr(expr, align) function
8.1 BNF notation used in scatter-loading description syntax
9.1 --any_contingency
6.3.2 Image$$ execution region symbols
8.5.2 Syntax of an input section description
9.108 --sort=algorithm
Non-ConfidentialPDF file icon PDF versionARM DUI0377G
Copyright © 2007, 2008, 2011, 2012, 2014, 2015 ARM. All rights reserved.