| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ld への移行を行なっているユーザの
ために, ld は, 3. リンカスクリプト で
説明される, より汎用のリンカスクリプト言語とは別に, MRI 互換リンカ
スクリプトを使うことができる. MRI 互換リンカスクリプトは,
ld のそれ以外のスクリプト言語の部分よりもずっと単純なコマンド
のセットを持つ. GNU ld は最も良く使われるMRI リンカコマンド
に対応している. それらのコマンドを以下で説明する.
一般に, MRI スクリプトは, a.out オブジェクトファイル形式には
あまり使えない. a.out にはセクションが三つしかなく,
MRI スクリプトには, それらを使う機能がいくつか欠けているからである.
MRI互換スクリプトの入っているファイルを指定するには, コマンド行 オプション `-c' を使う.
MRI 互換スクリプトの各コマンドは, それ自体でそれぞれの行を占める. 各コマンド行はコマンドを特定するキーワードで始まる (空行は区切りとして許される). MRI互換スクリプトのある行が 認識できないキーワードで始まっていると, 警告メッセージを 出すものの, スクリプトの処理を続行する.
`*' で始まる行はコメントである.
以下のコマンドを書く時は全て大文字にするか, 全て小文字にする. 例えば, `chip' は `CHIP' に同じである. 以下のリストでは, 各コマンドの大文字形だけを示す.
ABSOLUTE secname
ABSOLUTE secname, secname, ... secname
ld は全ての入力ファイルの全てのセクションを出力ファイルに
取り込む. だが, MRI互換スクリプトでは, ABSOLUE コマンドを
使って, 出力ファイルに現れるセクションを制限することができる.
ABSOLUTE コマンドをスクリプトで使うと, とにかく,
ABSOLUTE コマンドで明示的に指定したセクションしかリンカの
出力に現れない. それでも, 他の入力セクション(コマンド行で指定したもの,
あるいは LOAD を使ったもの)を使って出力ファイル中のアドレスを
解決することは可能である.
ALIAS out-secname, in-secname
in-secname は整数でも良い.
ALIGN secname = expression
BASE expression
CHIP expression
CHIP expression, expression
END
FORMAT output-format
OUTPUT_FORMAT コマンドに似ているが,
出力形式は以下の一つに限られる.
LIST anything...
キーワード LIST の後ろに同じ行内で何を書いても良く, その効果は
変わらない.
LOAD filename
LOAD filename, filename, ... filename
NAME output-name
ld により生成されるプログラム名である.
MRI互換コマンド NAME は, コマンド行オプション `-o' や
汎用スクリプト言語のコマンド OUTPUT に同じである.
ORDER secname, secname, ... secname
ORDER secname secname secname
ld は出力ファイル中のセクションの順序を
入力ファイルに先に現れたものの順にする. MRI 互換スクリプトでは,
ORDER コマンドでこの順序付けを変えることができる.
ORDER コマンドで列挙したセクションが先に, 指定した順序で
出力ファイルに現れる.
PUBLIC name=expression
PUBLIC name,expression
PUBLIC name expression
SECT secname, expression
SECT secname=expression
SECT secname expression
SECT コマンドの一つを使うと,
セクション secname の開始アドレス(expression)を指定する
ことができる. 同じ secname に複数 SECT 文を使うと,
最初のものだけが開始アドレスを指定する.
| [ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |