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

18. コンフィギュレーションファイル

コンフィギュレーションファイル ‘xm-machine.h’ では、 GCC が動作するマシンとシステムを記述するマクロを 定義する。これは、GCC の生成コードが目的とするマシンを記述する ‘machine.h’ の定義と異なる点である。 ‘xm-machine.h’ で定義される値のほとんどは、 実際には GCC が動作する全てのマシンで同じになる。 このため、全てのコンフィギュレーションファイルの多くの部分は 同一である。しかし、幾つかのマクロは異なっており、それを 以下に示す。

USG

ホストが System V なら、このマクロを定義する。

VMS

ホストが VMS なら、このマクロを定義する。

FATAL_EXIT_CODE

コンパイラが重大なエラーの後で終了するときに返すべきステータスコードを 表す式。

SUCCESS_EXIT_CODE

コンパイラが重大なエラーなしに終了した場合に返すべきステータスコードを 表す式。

HOST_WORDS_BIG_ENDIAN

ホストマシンが複数ワードからなる値を構成するワードを、ビッグエンディアンで 格納するなら、このマクロを定義する。 (GCC は、ホストの、一個のワードの中のバイト順には依存しない。)

HOST_FLOAT_WORDS_BIG_ENDIAN

ホストマシンが、DFmodeXFmodeTFmode の 浮動小数点数をメモリに格納するのに、符号ビットを含むワードを最下位アドレス に置くなら、このマクロを 1 に定義する。 それ以外なら、ゼロに定義する。

このマクロは、バイト順が複数ワードの整数と同じなら、定義する必要はない。

HOST_FLOAT_FORMAT

ホスト機種の浮動小数点形式を区別する数値コード。 このコードの選択肢とデフォルトについては、記憶領域のレイアウトTARGET_FLOAT_FORMAT を参照のこと。

HOST_BITS_PER_CHAR

ホストマシンの char のビット数を表す C の式。

HOST_BITS_PER_SHORT

ホストマシンの short のビット数を表す C の式。

HOST_BITS_PER_INT

ホストマシンの int のビット数を表す C の式。

HOST_BITS_PER_LONG

ホストマシンの long のビット数を表す C の式。

ONLY_INT_FIELDS

ホストのコンパイラが、ビットフィールドの型として int しかサポート していない場合は、このマクロを定義する。 ほとんどの C コンパイラでは、enum を含む他の整数型も使える。

OBSTACK_CHUNK_SIZE

通常の obstack のメモリ塊の大きさを表す C の式である。 これを定義しない場合は、普通の適切なデフォルトが使われる。

OBSTACK_CHUNK_ALLOC

obstack のメモリ塊を確保するのに使われる関数である。 これを定義しない場合は、xmalloc が使われる

OBSTACK_CHUNK_FREE

obstack のメモリ塊を開放するのに使われる関数である。 これを定義しない場合は、free が使われる

USE_C_ALLOCA

このマクロを定義すると、C で実装された alloca を使って GNU C を実行することを表す。alloca の C 版は、 ‘alloca.c’ にある。これを使うには、‘Makefile’ の 変数 ALLOCA も修正する必要がある。 (これは、我々がこの処置が必要であることを知っているシステムでは 自動的に行なわれる。)

このマクロを定義するなら、おそらく以下のようにする必要がある。

 
#ifndef __GNUC__
#define USE_C_ALLOCA
#else
#define alloca __builtin_alloca
#endif

こうしておくと、GCC が GCC でコンパイルされた場合は、 もっと効率の良い組み込み alloca 関数を使うようになる。

FUNCTION_CONVERSION_BUG

ホストコンパイラが、式の中で使った場合に、関数値を関数へのポインタに 正しく変換できない場合はこのマクロを定義する。

HAVE_VPRINTF

ライブラリ関数 vprintf があればこれを定義する。

MULTIBYTE_CHARS

GCC への入力としてマルチバイト文字をサポートすることを有効にするなら、 このマクロを定義する。このためには、ホストシステムがマルチバイト文字を 幅広文字に変換するための ANSI C ライブラリ関数群をサポートしている 必要がある。

HAVE_PUTENV

ライブラリ関数 putenv がある場合は、これを定義する。

POSIX

システムが POSIX.1 準拠であればこれを定義する。

NO_SYS_SIGLIST

変数 sys_siglist を提供していないシステムではこのマクロを 定義する。

システムによっては、この変数を提供はしているが、_sys_siglist の ように別の名前になっている場合もある。そういう場合は、 sys_siglist をマクロとして定義し、実際に提供される名前に 展開されるようにすることが出来る。

autoconf は、普通、システムヘッダファイルの中に sys_siglist の宣言 を見つけたなら、SYS_SIGLIST_DECLARES を定義する。 しかし、sys_siglist を別の名前に定義した場合には、 autoconf が自動的に SYS_SIGLIST_DECLARED を定義することはない。 つまり、sys_siglist を定義したなら、 % SYS_SIGLIST_DECLARE も合わせて定義すべきである。

USE_PROTOTYPES

ホストのコンパイラがプロトタイプをサポートしている場合は、 たとえ __STDC__ を定義していない場合でも、このマクロを 1 に定義する。 あるいは、GCC をコンパイルする際にはプロトタイプを使いたくないので あれば、このマクロを 0 に定義する。 ‘USE_PROTOTYPES’ が定義されていない場合は、 ホストのコンパイラがプロトタイプをサポートしているかどうかは、 ‘__STDC__’ が定義されているかを検査することにより、 自動的に決定される。

NO_MD_PROTOTYPES

マシン記述ファイルからプロトタイプが生成されるのは抑止したいが、 GCC 内の他のプロトタイプは使いたいという場合は、これを定義する。 ‘USE_PROTOTYPES’ が 0 に定義されているか、ホストコンパイラが プロトタイプをサポートしていない場合は、このマクロを定義しても 何の効果もない。

MD_CALL_PROTOTYPES

マシン記述ファイルから生成される関数 gen_callgen_call_value のプロトタイプを生成したい場合はこのマクロを定義する。 ‘USE_PROTOTYPES’ が 0 に定義されているか、ホストコンパイラが プロトタイプをサポートしていない場合、あるいは、‘NO_MD_PROTOTYPES’ が 定義されている場合は、このマクロは何の効果もない。 全てのマシン記述ファイルを、適切な数の引数を持つようにする修正が 終わったら、このマクロは削除される予定である。

PATH_SEPARATOR

パスの成分の区切り文字を表す C の文字定数を定義する。 デフォルト値はコロンである。

DIR_SEPARATOR

ファイル名指定の中のディレクトリを区切るのにスラッシュ以外の文字を 使っているシステムでは、このマクロで、その文字を指定する C の文字定数を 定義する。GCC がファイル名を表示するとき、指定した文字が使われる。 GCC は、ファイル名をパースするときにスラッシュと指定した文字の両方を 調べる。

OBJECT_SUFFIX

移植しようとしている機種でのオブジェクトファイルの拡張子を表す C の文字列を定義するマクロである。 このマクロを定義しない場合は、GCC はオブジェクトファイルの拡張子として ‘.o’ を使う。

EXECUTABLE_SUFFIX

移植しようとしている機種での実行形式ファイルの拡張子を表す C の文字列を定義するマクロである。 このマクロを定義しない場合は、GCC は実行形式ファイルの拡張子として ヌル文字列を使う。

COLLECT_EXPORT_LIST

このマクロが定義されていると、collect2 は、コマンド行に 指定された個々のオブジェクトファイルを調べ、リンカ向けに エクスポートリストを作る。 AIX のように、リンカが main 関数から参照されていない オブジェクトファイルは捨て去り、エクスポートリストを使うような システムではこのマクロを定義する。

さらに、System V 向けのコンフィギュレーションファイルでは、 bcopybzerobcmp を別名として定義している。 いくつかのファイルでは、GCC でコンパイルされる場合には alloca をマクロとして定義するようになっており、 GCC の組み込みの alloca の利点をいかすようになっている。


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

This document was generated using texi2html 1.78.