AR# 18831

|

11.1 EDK - リンカ スクリプトの PHDRS セクションおよび HDR 行について

説明

キーワード : linker, ld, HDR, PHDRS, GNU, EDK, XPS, header, リンカ, ヘッダ

リンカ スクリプトの PHDRS セクションについて教えてください。これは、どのような場合に必要ですか。

ソリューション

PHDRS セクションは、ユーザー定義のリンカ スクリプト内にあり、実行ファイルのプログラム ヘッダ情報を作成するために使用されます。リンカは、デフォルトで適切なプログラム ヘッダを作成します。次に、PHDRS をいつ使用するか、またどのように使用するかを簡単に説明します。

PHDRS について

プログラム ヘッダは、システム ローダ (ザイリンクス EDK では data2bram) によって読み出され、プログラムをどのようにメモリに読み込むかを記述します。メモリ ロケーションの開始アドレスおよび読み込み可能なサイズを定義します。読み込み可能なセクション (.text、.data...) => 初期化されていないセクション (.bss、.sbss - これらをメモリに読み込む必要はなし) => その他の読み込み可能なセクション (.sdata、.sdata..) がメモリに含まれる場合、メモリ領域には 2 つのヘッダが必要です (読み込み可能な各メモリ セクションに 1つずつ)。ただし、この場合リンカで 2 つのヘッダは作成されないため、PHDRS を使用する必要があります。

PHDRS コマンドを使用する場合、リンカではプログラム ヘッダは生成されません。

PHDRS の使用方法

リンカでは、リンカ スクリプトに複数のメモリ領域がある場合でも、必要なプログラム ヘッダが作成されますが、前述のような場合には、正しいヘッダが作成されません。各メモリ領域に対してリンカを適切に動作させるためには、リンカ スクリプト内でまず読み込み可能なセクションを定義し、その後に初期化されていないセクションを定義します。これで、生成されたヘッダが正しいこと、そしてローダが正しく機能していることが保障されます。PHDRS は、メモリに初期化済みのセクションと初期化されていないセクションを混在させる必要がある場合にのみ使用してください。


AR# 18831
日付 12/15/2012
ステータス アクティブ
種類 一般
People Also Viewed