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

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

再配置可能なロード領域を使用した、スキャッタファイル形式の標準のベースプラットフォームアプリケーションバイナリインタフェース(BPABI)メモリモデルを以下に示します。

Example 51. 再配置可能なロード領域を使用した標準の 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 を示しています。

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

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 を使用します。

Show/hide関連項目

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