4.5 リンカフィードバックについて

リンカフィードバックはコンパイラとリンカによる連携です。それによって、ELF イメージから削除できる未使用コードの量を増やすことができます。

フィードバックオプションを使用すると、未使用の関数と、リンカによってインライン展開された関数のリストを含むテキストファイルが生成されます。この情報をコンパイラにフィードバックして、これらの関数が独自のセクションに配置されたオブジェクトを再度ビルドできます。そうすると、通常の未使用セクションの削除中に、リンカはこれらのセクションを削除することができます。

フィードバックファイルの形式は以下のとおりです。

;#<FEEDBACK># ARM Linker, N.nn [Build num]:Last Updated:day mmm dd hh:mm:ss yyyy ;VERSION 0.2 ;FILE filename.o unused_function &lt;= USED 0 inlined_function &lt;= LINKER_INLINED
…

フィードバックファイルには、各オブジェクトファイルのエントリが含まれます。各エントリには、以下が含まれます。

  • コメントとして指定されたオブジェクトのファイル名:

    ;FILE filename.o

  • そのファイル内の未使用の関数のリスト:

    unused_function &lt;= USED 0

  • そのファイル内のリンカによってインライン展開された関数のリスト:

    inlined_function &lt;= LINKER_INLINED

リンカフィードバックを使用するには、リンカコマンドラインとコンパイラコマンドラインで --feedback file を指定します。

フィードバックファイルが存在しない場合は、コンパイラによって警告メッセージが生成されます。そのため、最初のコンパイラの呼び出しでは、--feedback file オプションを指定しないことを推奨します。

リンカには、以下の追加のフィードバックオプションが用意されています。

  • スキャッタロードを使用する場合は、コードが、スキャッタファイルに記述されている領域の制限を越えると、実行可能な ELF イメージを作成できません。この場合は、--feedback_image=option コマンドラインオプションを使用します。

  • リンカがフィードバックファイルに挿入する情報を制御するには、 --feedback_type=type コマンドラインオプションを使用します。インターワークを必要とする関数または未使用の関数のリストを挿入するかどうかを制御できます。

関連する概念
4.12 リンカによる関数のインライン展開
関連する作業
4.6 リンカフィードバックの使用例
関連する参考文書
12.57 --feedback=filename
12.58 --feedback_image=option
12.59 --feedback_type=type
7 スキャッタロード機能
12.74 --inline、--no_inline
12.126 --scatter=filename
関連情報
--feedback=filename コンパイラオプション
ARM と Thumb のインターワーク
非機密扱いPDF file icon PDF 版ARM DUI0474JJ
Copyright © 2010-2013 ARM.All rights reserved.