[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A. MRI 互換スクリプトファイル

MRI リンカから GNU 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 のデータを, リンカの出力ファイルの out-secname というセクションに置く.

in-secname は整数でも良い.

ALIGN secname = expression
セクション secnameexpression に整列させる. expression は 2 の冪乗でなければならない.

BASE expression
expression の値を出力ファイルの最低位アドレス(絶対アドレス以外の) として使用する.

CHIP expression
CHIP expression, expression
このコマンドは何もしない. 互換性のために受け付けられるだけである.

END
このコマンドは何もしない. 互換性のために受け付けられるだけである.

FORMAT output-format
一般的なリンカ言語の OUTPUT_FORMAT コマンドに似ているが, 出力形式は以下の一つに限られる.

  1. output-format`S' なら, Sレコード

  2. output-format`IEEE' なら, IEEE

  3. output-format`COFF' なら, COFF(BFD の `coff-m68k' の一種)

LIST anything...
標準出力にマップを出力する. コマンド行オプションの `-M' と 同じである.

キーワード LIST の後ろに同じ行内で何を書いても良く, その効果は 変わらない.

LOAD filename
LOAD filename, filename, ... filename
一つ以上のオブジェクトファイル filename をリンクに取り込む. これは, コマンド行で直接 filename を指定するのと同じである.

NAME output-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
リンカへの入力ファイルで使われている外部シンボル name に 値 expression を提供する.

SECT secname, expression
SECT secname=expression
SECT secname expression
この三つの形式の SECT コマンドの一つを使うと, セクション secname の開始アドレス(expression)を指定する ことができる. 同じ secname に複数 SECT 文を使うと, 最初のものだけが開始アドレスを指定する.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by YABUKI Youichi on March, 15 2002 using texi2html