3.7.1 変数/関数情報ファイルの出力

-

-lnkopt=-vfinfoオプションを指定すると,最適化リンカが変数/関数情報ファイルを出力します。
-vfinfoオプションについての詳細は,「-VFINFO」を参照してください。

-

最適化リンカは,変数のサイズ,および変数や関数の参照頻度を元にして,コードサイズの削減効果が高い変数や関数を選択し,それらの変数や関数に対して#pragma指令によるsaddr変数,callt関数,near関数の宣言を追加したヘッダ・ファイル(変数/関数情報ファイル)を出力します。
#pragma saddrについては「saddr領域利用(#pragma saddr)」,#pragma calltについては「callt関数(#pragma callt)」,#pragma nearについては「near/far関数(#pragma near/#pragma far) 【V1.05以降】」を参照してください。

-

以下の変数や関数は,変数/関数情報ファイルの対象にはなりません。
ただし,割り込みハンドラについては,コメントアウトして変数/関数情報ファイルに表示されます。

-

標準ライブラリ関数,ランタイムライブラリ関数

-

ソフトウェア割り込みハンドラ,ハードウェア割り込みハンドラ,RTOS割り込みハンドラ

-

アセンブリ・ソースで定義した変数や関数

-

変数/関数情報ファイルの出力例を以下に示します。

/* RENESAS OPTIMIZING LINKER GENERATED FILE 2014.10.20 */
/*** variable information ***/
(1)                   (2)       (3)   (4)   (5)
#pragma saddr var1 /* count:10,size:1,near, file1.obj */
(6)                         (2)      (3)    (4)  (7)    (5)
/* #pragma saddr var2 */ /* count: 0,size:2,near,unref, file2.obj */
 
/*** function information ***/
(8)                    (9)      (10)  (11)
#pragma callt func1 /* count:20,near, file1.obj */
(12)                  (9)      (10) (11)
#pragma near func2 /* count:10,far, file2.obj */
(13)                        (9)      (10) (14)  (11)
/* #pragma near func3 */ /* count: 0,far,unref, file3.obj */

項番

説明

(1)

変数情報

#pragma指令によるsaddr変数の宣言を出力します。

(2)

参照回数

変数の参照回数を出力します。

(3)

変数のサイズ

変数のサイズを出力します。

(4)

参照タイプ

変数の元の参照タイプをnear,far,saddrで出力します。

(5)

ファイル名

変数が所属するオブジェクトファイル名を出力します。

(6)

変数情報

saddr領域から溢れた変数をコメントで出力します。

(7)

変数の補足情報

変数の補足情報を出力します。補足情報は次のものがあります。

unref : 変数の参照がない場合に出力します。

const : const変数の場合に出力します。

fix : 変数の配置がリロケータブルでない場合に出力します。

unrecognizable : 変数をシンボルとして認識できない場合に出力します。

(8)

関数情報

#pragma指令によるcallt関数の宣言を出力します。

(9)

参照回数

関数の参照回数を出力します。

(10)

関数の呼び出し方法

関数の元の呼び出し方法をnear,far,calltで出力します。

(11)

ファイル名

関数が所属するオブジェクトファイル名を出力します。

(12)

関数情報

#pragma指令によるnear関数の宣言を出力します。

(13)

関数情報

callt,near領域から溢れた関数をコメントで出力します。

(14)

関数の補足情報

関数の補足情報を出力します。補足情報は次のものがあります。

unref : 関数の参照がない場合に出力します。

interrupt : 割り込みハンドラの場合に出力します。

unrecognizable : 関数をシンボルとして認識できない場合に出力します。