7.9 ページ境界での領域の作成

各実行領域がページ境界で開始される、ターゲットに直接ロードできる ELF ファイルを生成できます。

リンカには、ページ境界でのロード領域と実行領域の作成に役立つ以下の組み込み関数が用意されています。
  • AlignExpr
  • GetPageSize。この関数を使用する場合は、 --paged コマンドラインオプションも使用する必要があります。

実行領域を整列させると、ロードアドレスと実行アドレスの両方が整列されます。
以下の例では、各実行領域が新しいページから開始される ELF ファイルを生成しています。
LR1 GetPageSize() + SizeOfHeaders()
{
    ER_RO +0
    {
        *(+RO)
    }
    ER_RW AlignExpr(+0, GetPageSize())
    {
        *(+RW)
    }
    ER_ZI AlignExpr(+0, GetPageSize())
    {
        *(+ZI)
    }
}
デフォルトのページサイズである 0x8000 が使用されます。このページサイズを変更するには、--pagesize コマンドラインオプションを使用します。
関連する概念
7.10 実行領域と入力セクションのオーバーアライメント
3.4 リンカのデマンドページングファイルの作成に対するサポート
8.6 スキャッタファイル内の式の評価
7.12 スキャッタファイル内の式の評価を使用したパディングの回避の例
8.6.11 ロード領域に厳密に配置した状態で、実行領域でベースアドレスに合わせる例
関連する参考文書
8.6.8 AlignExpr(expr, align) 関数
8.6.9 GetPageSize() 関数
12.104 --paged
8.3.3 ロード領域の属性
8.4.3 実行領域の属性
12.105 --pagesize=pagesize
非機密扱いPDF file icon PDF 版ARM DUI0474LJ
Copyright © 2010-2015 ARM.All rights reserved.