7.4.2 複数の .ANY セレクタの入力セクションの配置を制御するためのコマンドラインオプション

複数の .ANY セレクタを使用している場合、リンカによる未割り当て入力セクションの配置動作は、配置アルゴリズムまたはソート順序を変えることによって制御できます。

以下のコマンドラインオプションが利用できます。
  • --any_placement=algorithm algorithm には、first_fitworst_fitbest_fit、または next_fit のいずれかを指定します。
  • --any_sort_order=order order には、cmdline または descending_size のいずれかを指定します。
領域を順に埋めていくには、first_fit を使用します。
領域をその上限まで埋めるには、best_fit を使用します。
領域を均等に埋めるには、worst_fit を使用します。同じサイズの領域およびセクションの場合、worst_fit は、領域を循環的に埋めていきます。
より確定的なパターンで埋めていく必要がある場合は、next_fit を使用します。
first_fitbest_fit で、領域の上限まで埋めていくと、領域が一杯になってしまう可能性があります。これは、リンカによって生成されるコンテンツ(パディング、ベニアなど)は、セクションが .ANY セレクタに割り当てられるまで判明しないためです。その場合は、次のエラーが表示されます。
エラー:L6220E:実行領域 regionname のサイズ(size バイト)が制限(limit バイト)を超えています。
--any_contingency は、領域が埋め尽くされるのを防ぐためのオプションです。リンカによって生成されるコンテンツのために、領域の全体のうち一部のサイズが確保されます。この非常用(contingency)のエリアは、他に空きのある領域がない場合にしか使用されません。この動作が最も起きやすい first_fit および best_fit のアルゴリズムでは、このオプションがデフォルトで有効になっています。
関連する概念
7.4.5 .ANY セクションの配置アルゴリズムの使用例
7.4.6 領域の割り当て、セレクタ、および優先度の動作を示す next_fit アルゴリズムの例
7.4.7 .ANY セクションのソートアルゴリズムの使用例
7.4.8 リンカによって生成されたコンテンツによって .ANY セクションがオーバーフローしたときの動作
関連する参考文書
12.5 --any_sort_order=order
12.94 --map、--no_map
12.127 --section_index_display=type
12.154 --tiebreaker=option
12.4 --any_placement=algorithm
12.3 --any_contingency
非機密扱いPDF file icon PDF 版ARM DUI0474LJ
Copyright © 2010-2015 ARM.All rights reserved.