12.162 --veneer_inject_type=type

--largeregions モードがオンの場合に、ベニアのレイアウトを制御します。

構文

--veneer_inject_type= type
ここで、 type には以下のいずれかを指定できます。
individual
ベニアを配置する際、リンカは、そのベニアを使用するできるだけ多くのセクションがそこに到達できるように配置します。実行領域間でのベニアの再利用が可能となります。このタイプでは、必要とされるベニアの数が最小になりますが、イメージの構造が最も複雑になります。
pool
リンカには以下の制限があります。
  1. 連続する範囲の実行領域からベニアを収集します。
  2. その範囲から生成されたすべてのベニアをプールに配置します。
  3. そのプールを範囲の最後に配置します。
大きな実行領域には、複数の範囲がある場合があるため、複数のプールがある可能性があります。このタイプは、イメージの構造に及ぼす影響ははるかに小さいものの、再利用の機会は少なくなります。これは、一連のコードが、別のプールにあるベニアを再利用できないためです。リンカは、ベニアが必要であると予測される分岐命令の存在に基づいて範囲を計算します。次のいずれかに該当する場合、分岐にベニアが必要であると予測されます。
  • 状態の変更が必要である。
  • ソースからターゲットまでの距離にコンティンジェンシを加えた値が、分岐範囲を越える。
コンティンジェンシのサイズは、 --veneer_pool_size=size オプションで設定できます。デフォルトでは、コンティンジェンシのサイズが 102400 バイトに設定されます。ベニアプールがリンカによってどのように配置されたかについての情報は、--info=veneerpools オプションを使用して確認できます。

制約条件

このオプションは --largeregions と組み合わせて使用する必要があります。
関連する参考文書
12.71 --info=topic[,topic,…]
12.161 --veneerinject、--no_veneerinject
12.163 --veneer_pool_size=size
12.79 --largeregions、--no_largeregions
非機密扱いPDF file icon PDF 版ARM DUI0474LJ
Copyright © 2010-2015 ARM.All rights reserved.