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