This Technical Note applies to:
IAR Embedded Workbench
These are the extra allocations done by the IAR ILINK Linker.
This is a extract from an example linker file:
Module ro code ro data rw data
------ ------- ------- -------
Linker created 140 123 2 980
Grand Total: 76 888 3 800 5 716
The 3 different headings correspond to these addtions made by the IAR ILINK Linker:
|Kind of section||Section type||Explanation|
|ro code||Veneer||These are "helpers" used in order to achive jumps in the whole address area, i.e. longer than +-4 MB / +-32 MB (Thumb/Arm mode).|
|ro data||.iar.init_table||The table which is used during start-up to control the initialization.|
|ro data||Initializer bytes||If any symbols placed in RAM are to be initialized manually, then are "Initialize bytes' created by the linker.|
If the define block directive is combined with the parameter size in the .icf file, this will order the linker to create a block of the specified size. So when linking, each such block will be filled by the linker.
The linker directive for a block that holds a stack must use the size parameter. The whole block is marked "uninit", (as a stack is an empty when it comes to linking).
A block that is not a stack (and marked with the size parameter) can more or less filled with defined variables in the block. All unused bytes in the block become marked with "uninit".
|rw data||.iar.dynexit||Holds the table of calls to be made at exit.|
There are four variants of properties defined in the ELF that may appear in this column:
- Lc = local.
- Gb = global.
- Wk = weak.
- ?? = unknown.
Extracts from example linker files:
Undefined_Handler 0x00000274 Code Wk vectortrap.o 
Region$$Table$$Base 0x08002d2c -- Gb - Linker created -
Region$$Table$$Limit 0x08002d50 -- Gb - Linker created -
SysTick_Config 0x08002667 0x32 Code Lc main.o 
All product names are trademarks or registered trademarks of their respective owners.