マップファイルの Linker created と Lc, Gb, Wk は何ですか?
テクニカル・ノート 81528
アーキテクチャ:
ARM, RiscV, RH850, RL78, RX, SH, STM8
コンポーネント:
linker
更新日:
2020/10/13 17:51
はじめに
このテクニカルノートは以下製品に適用されます:
IAR Embedded Workbench |
Versions |
1. 'Linker created' は何ですか ?
答え
IAR ILINKリンカによって行われる、追加のアロケーションです。
例
マップファイル例からの抜粋:
Module ro code ro data rw data
------ ------- ------- -------
...
...
Linker created 140 123 2 980
-----------------------------------------------
Grand Total: 76 888 3 800 5 716
解説
3つの異なった欄見出しは、IAR ILINKリンカによって生成された以下の追加に対応します:
Kind of section | Section type | 解説 |
ro code | Veneer | これらは、アドレスエリア全体でのジャンプを実行するために使用される"helpers"です。例えば +-4 MB / +-32 MB 以上(Thumb/Arm mode). |
ro data | .iar.init_table | 初期化制御のためにstart-upに使用されるテーブル |
ro data | Initializer bytes | RAMに配置されたシンボルがinitialize manuallyで初期化されるとき、リンカは "Initialize bytes'を生成します。 |
rw data ro data |
uninit |
.icf ファイル内に、sizeパラメータを持つ define block ディレクティブがあると、リンカは size で指定されたブロックを作成します。リンク時に、これらのブロックはリンカにより埋められます。 スタックを形成するブロックのための、リンカディレクティブは sizeパラメータを持たなくてはなりません。スタックはリンクされた時点では空なので、ブロック全体は uninit でマークされます。 スタック以外の、size パラメータを持つ define block ディレクティブの場合、定義された変数をブロックに置くことができます。全ての未使用の部分は uinit でマークされます。 |
rw data | .iar.dynexit | exitで呼び出されるテーブルを保持 |
2. 'Lc','Gb','Wk' は何ですか?
答え
ELF内で次の4つのプロパティが定義されており、この欄に示されます:
- Lc = local.
- Gb = global.
- Wk = weak.
- ?? = unknown.
例
マップファイル例からの抜粋:
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]
全ての製品名は、それぞれの所有者の商標または登録商標です