11.2 ベースプラットフォームリンクモデルのスキャッタファイルの例

この例では、ベースプラットフォームリンクモデルでのスキャッタファイルの使用方法を示しています。

再配置可能なロード領域を使用した標準の BPABI スキャッタファイル

再配置可能なロード領域を使用した、スキャッタファイル形式の標準のベースプラットフォームアプリケーションバイナリインタフェース(BPABI)メモリモデルを以下に示します。
LR1 0x8000 RELOC
{
    ER_RO +0
    {
        *(+RO)
    }
}
LR2 0x0 RELOC
{
    ER_RW +0
    {
        *(+RW)
    }
    ER_ZI +0
    {
        *(+ZI)
    }
}
この例は、BPABI 仕様と同じ 2 領域形式であるため、BPABI に準拠しています。

再配置可能ではないロード領域を使用したスキャッタファイル

この例では、再配置可能ではない 2 つのロード領域 LR1 と LR2 を示しています。
LR1 0x8000
{
    ER_RO +0
    {
        *(+RO)
    }
    ER_RW +0
    {
        *(+RW)
    }
    ER_ZI +0
    {
        *(+ZI)
    }
}
LR2 0x10000
{
    ER_KNOWN_ADDRESS +0
    {
        *(fixedsection)
    }
}
LR3 0x20000 RELOC
{
    ER_RELOCATABLE +0
    {
        *(floatingsection)
    }
}
LR1 と LR2 には固定アドレスが指定されているため、リンカは LR1 と LR2 の間のダイナミックな再配置を生成する必要がありません。ただし、RELOC ロード領域 LR3 は、アドレス空間内でロード領域 LR1 と LR2 から非常に離れた場所に配置される可能性があります。そのため、LR1 と LR3 の間および LR2 と LR3 の間には、ダイナミックな再配置が必要になります。
各ロード領域に対して PLT が生成されるようにするには、オプション --pltgot=direct --pltgot_opts=crosslr を使用します。
関連する概念
2.5 ベースプラットフォームリンクモデル
2.2 ベアメタルリンクモデル
2.4 ベースプラットフォームアプリケーションバイナリインタフェース(BPABI)リンクモデル
2.7 BPABI リンクモデルと SysV リンクモデルの両方に共通する概念
11.1 ベースプラットフォームモデルでのスキャッタファイルの使用に関する制限
関連する参考文書
8.3.3 ロード領域の属性
非機密扱いPDF file icon PDF 版ARM DUI0474LJ
Copyright © 2010-2015 ARM.All rights reserved.