8.18 リンカによって生成されたコンテンツによって .ANY セクションがオーバーフローしたときの動作

リンカによって生成されたコンテンツは .ANY 領域をオーバーフローさせる可能性があるため、コンティンジェンシアルゴリズムをリンカにインクルードします。

セクションが領域に割り当てられるまで、リンカは、そのセクションのアドレスを知ることができません。したがって、.ANY 領域を埋めるときには、リンカは、コンティンジェンシスペースを計算することができず、呼び出し元の関数にベニアが必要かどうかを判別できません。リンカには、パディングに対するワーストケースの予測を行い、ベニア用に 2% のスペースを確保するコンティンジェンシアルゴリズムが備わっています。このアルゴリズムを有効にするには、--any_contingency コマンドラインオプションを使用します。

以下の図に、.ANY の配置時における概念的なイメージレイアウトを示します。

図 8-5 .ANY コンティンジェンシ
この図を表示するには、ご使用のブラウザが SVG 形式をサポートしている必要があります。ネイティブでサポートしているブラウザをインストールするか、次のような適切なプラグインをインストールします。Adobe SVG Viewer。.

予想されるパディングの下向きの矢印は、.ANY セレクタにセクションが追加されると、それにつれて、予想されるパディングも増えていくことを示しています。

予想されるパディングは、2% のベニアのコンティンジェンシの前に処理されます。

予想されるパディングがクリアされると、優先順位はゼロに設定されます。2% がクリアされると、優先順位は再度デクリメントされます。

実行領域で ANY_SIZE キーワードを使用すると、.ANY セクションを割り当てるために確保する領域の最大スペースサイズを指定することもできます。

関連する概念
7.13 .ANY モジュールセレクタによる未割り当てセクションの配置
8.17 スキャッタファイルの処理時の複数のマッチングをリンカが解決する方法
関連する参考文書
12.3 --any_contingency
8.8 実行領域の属性
8.16 入力セクション記述の構文
非機密扱いPDF file icon PDF 版ARM DUI0474JJ
Copyright © 2010-2013 ARM.All rights reserved.