10.5.3.1 Simple Assignments
A symbol may be assigned using any of the C assignment operators:
symbol = expression ;
symbol += expression ;
symbol -= expression ;
symbol *= expression ;
symbol /= expression ;
symbol <<= expression ;
symbol >>= expression ;
symbol &= expression ;
symbol |= expression ;
The first case will define symbol to the value of expression. In the other cases, symbol must already be defined, and the value will be adjusted accordingly.
The special symbol name ‘.’ indicates the location counter. This symbol may only be used within a SECTIONS
command.
The semicolon after expression is required.
Expressions are defined in Expressions in Linker Scripts.
Symbol assignments may appear as commands in their own right, or as statements within a SECTIONS
command, or as part of an output section description in a SECTIONS
command.
The section of the symbol will be set from the section of the expression; for more information, see The Section of an Expression.
Here is an example showing the three different places that symbol assignments may be used:
floating_point = 0;
SECTIONS
{
.text :
{
*(.text)
_etext = .;
}
_bdata = (. + 3) & ~ 4;
.data : { *(.data) }
}
In this example, the symbol floating_point
will be defined as zero. The symbol _etext
will be defined as the address following the last .text
input section. The symbol _bdata
will be defined as the address following the .text
output section aligned upward to a 4-byte boundary.