リンクの処理において,各出力セクションの先頭アドレス,各出力セクションの終端を越える最初のアドレス値を値として持つ予約シンボルを生成します。ユーザがこれらの予約シンボルと同名のシンボルを定義した場合,最適化リンカは定義されたシンボルを用い,独自に生成することはしません。
セクションの先頭アドレス値を値として持つ予約シンボルとして,次の2種類のシンボルが用いられます。
- | 出力セクション名の先頭に“__s”を付加したシンボル |
- | 出力セクション名の中にある”@”,“.”の文字を”_”に置き換え,先頭に“__S”を付加したシンボル 【V1.06.00以降】 |
セクションの終端を越える最初のアドレス値を値として持つ予約シンボルとして,次の2種類のシンボルが用いられます。
- | 出力セクション名の先頭に“__e”を付加したシンボル |
- | 出力セクション名の中にある”@”,“.”の文字を”_”に置き換え,先頭に“__E”を付加したシンボル 【V1.06.00以降】 |
例えば,実行形式ファイル中に.textセクションと,FOO.constセクションの2つが存在する場合,次の8個の特殊シンボルを生成します。
__s.text
__S_text
__e.text
__E_text
__sFOO.const
__SFOO_const
__eFOO.const
__EFOO_const
このうち,__S_text, __E_text, __SFOO_const, __EFOO_constの4つは次の手順でCソースから参照できます。
- | シンボル名の先頭にある'_'を1つ除いて,char型の変数,またはchar配列型の変数としてextern宣言する。 |
例
extern char _S_text;
char* get_S_text(void) {
return &_S_text;
}
extern char _E_text[];
char* get_E_text(void) {
return _E_text;
}
|