3.5.1 Simple Assignments

You may assign to a symbol 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. You may only use this within a SECTIONS command. See Location Counter .

The semicolon after expression is required.

Expressions are defined below; see Expressions .

You may write symbol assignments 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 Expression Section .

Here is an example showing the three different places that symbol assignments may be used:

     floating_point = 0;
     SECTIONS
     {
       .text :
         {
           *(.text)
           _etext = .;
         }
       _bdata = (. + 3) & ~ 3;
       .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.