What is 'Linker created' and 'Lc','Gb','Wk' in the .map file?
Technical Note 81528
Arkitekturer:
ARM, RiscV, RH850, RL78, RX, SH, STM8
Komponent:
linker
Uppdaterad:
2020-08-31 12:40
Introduction
This Technical Note applies to:
IAR Embedded Workbench |
Versions |
1. What is 'Linker created' ?
Answer
These are the extra allocations done by the IAR ILINK Linker.
Example
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
Explanation
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 "Initializer bytes' are created by the linker. |
rw data ro data |
uninit |
If the The linker directive for a block that holds a stack must use the A |
rw data |
.iar.dynexit |
Holds the table of calls to be made at exit. |
|
2. What is 'Lc','Gb','Wk' ?
Answer
There are four variants of properties defined in the ELF that may appear in this column:
- Lc = local.
- Gb = global.
- Wk = weak.
- ?? = unknown.
Example
Extracts from example linker files:
Undefined_Handler 0x00000274 Code Wk vectortrap.o [4]
Region$$Table$$Base 0x08002d2c -- Gb - Linker created -
Region$$Table$$Limit 0x08002d50 -- Gb - Linker created -
SysTick_Config 0x08002667 0x32 Code Lc main.o [1]
All product names are trademarks or registered trademarks of their respective owners.