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

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

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

Figure 5. .ANY コンティンジェンシ

To view this graphic, your browser must support the SVG format. Either install a browser with native support, or install an appropriate plugin such as Adobe SVG Viewer.


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

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

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

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

Show/hide関連項目

Copyright © 2010-2012 ARM. All rights reserved.ARM DUI 0493GJ
Non-ConfidentialID051612