7.4.1 複数の .ANY セレクタを使用した場合の配置規則

リンカには、複数の .ANY セレクタを使用する際のデフォルトの配置規則があります。

スキャッタファイルに複数の .ANY セレクタが存在する場合、リンカはセクションをサイズの降順にソートします。次に、未割り当てセクションのうち、サイズが最大のセクションを取得し、それを最も限定的で空きスペースが十分ある .ANY 実行領域に割り当てます。たとえば、.ANY(.text) は、.ANY(+RO) よりも限定的だと判断されます。
複数の実行領域が等しく限定的である場合、空きスペースが最も大きい実行領域にセクションが割り当てられます。
以下に例を示します。
  • 2 つの実行領域が同じくらい限定的であり、1 つはサイズ制限が 0x2000 で、もう 1 つは制限がない場合、後者の無制限の .ANY 領域にすべてのセクションが割り当てられます。
  • 2 つの実行領域が同じくらい限定的であり、1 つはサイズ制限が 0x2000 で、もう 1 つはサイズ制限が 0x3000 である場合、配置されるセクションはまず、サイズ制限が 0x3000 である後者の .ANY 領域に、.ANY の残りサイズが 0x2000 になるまで割り当てられていきます。その後は、両方の .ANY 実行領域に交互にセクションが割り当てられます。
未割り当てセクションに使用する最大スペースサイズを実行領域属性 ANY_SIZE で指定できます。
関連する概念
7.14 スキャッタファイルの処理時の複数のマッチングをリンカが解決する方法
7.4 .ANY モジュールセレクタによる未割り当てセクションの配置
7.4.8 リンカによって生成されたコンテンツによって .ANY セクションがオーバーフローしたときの動作
関連する参考文書
12.4 --any_placement=algorithm
12.3 --any_contingency
8.5.2 入力セクション記述の構文
12.71 --info=topic[,topic,…]
非機密扱いPDF file icon PDF 版ARM DUI0474LJ
Copyright © 2010-2015 ARM.All rights reserved.