.\" Copyright (c) 1994 Bjorn Ekwall .\" Copyright (c) 1997 Linux International .\" This program is distributed according to the Gnu General Public License. .\" See the file COPYING in the kernel source directory /linux .\" .\" Translated Sun Aug 15 10:58:55 JST 1999 .\" by FUJIWARA Teruyoshi .\" Updated Mon Mar 18 JST 2002 by Kentaro Shirakata .\" .TH GENKSYMS 8 "January 30, 2002" Linux "Linux Module Support" .SH 名前 genksyms \- シンボルのバージョン情報を生成する .SH 書式 .B genksyms [\-wq] [\-dD] [\-V] [\-k\ \fIversion\fR] [\-p string] [\fIoutput\ directory\fR] .SH このマニュアルについて、 これは、Linux Kernel 2.4 の時代に使われていた modutils パッケージ所収の古いユーティリティのマニュアルです。(2022/12/02, Linux JM Project) .SH 説明 .B genksyms は (標準入力から) "\fBgcc -E source.c\fR" の出力を読み込み、 バージョン情報を含むファイルを生成する。 .PP \fB\-k\fR\ オプションで指定される出力フォーマットにしたがって、 出力は指定された出力ディレクトリの \fB.ver\fR ファイルまたは標準出力に 書き出される。 .PP .B genksyms は普通ソースファイル中の明示的なシンボルテーブル定義を探す。 .BR typedef ,\ struct ,\ union ,\ enum の全ての定義と宣言は後で展開するために保存される。 全てのグローバルなシンボルも、後で全て展開できるようにするポインタと共に 保存される。 .PP シンボルテーブルがソース中で見つかると、シンボルは完全な定義に展開される。 この際には全ての構造体、共用体、列挙指定子、型宣言は基本部分まで再帰的に 展開される。 こうして得られた最終的な文字列が、CRC アルゴリズムへの入力として使われる。 このアルゴリズムは、このシンボルについて含まれている定義が変更されると すぐに値が変わる整数を与える。 .PP カーネルが持っているバージョン情報は普通、 .B symbol_R12345678 のようになっている。 ここで 12345678 は CRC を表す 16 進値である。 .SH オプション .TP .BR \-d ", " \-\-debug デバッグ情報を出力する。このオプションを繰り返して指定すると、 出力の詳しさのレベルが大きくなる。デバッグレベル 1 では行った動作に関する 普通の情報が表示される。デバッグレベル 2 ではパーザの認識した情報の出力が 有効になる。デバッグレベル 3 では構文解析の情報が出力されるようになる。 .TP .BR \-D ", " \-\-dump 展開したシンボル定義を標準エラー出力にダンプする。デバッグ専用の オプションである。 .TP .BR \-h ", " \-\-help オプションの一覧を表示して直ちに終了する。 .TP \fB\-k\fR\ \fIversion\fR,\ \fB\-\-kernel\fR\ \fIversion\fR 出力を生成する対象となるカーネルのバージョンを選択する。このオプションを 省略すると、バージョンは 2.1.0 より前として扱われる。2.1.18 より前では バージョン 1 のチェックサムを使っており、出力は直接コマンドライン上に 生成される。バージョン 2.1.18 以降ではバージョン 2 のチェックサムを 使っており、出力は標準出力に生成される。 .TP \fB\-p\fR\ \fIstring\fR,\ \fB\-\-prefix\fR\ \fIstring\fR 全てのシンボルについて、生成した CRC の前に与えられた文字列を付ける。 これは SMP 対応カーネル等で使うためのオプションである。このような場合には、 データの型で記述するよりも低いレベルにおいてモジュールの互換性がない。 非互換性の主な原因は、モジュールのコード自体におけるインライン関数の 展開である。 .TP .BR \-q ", " \-\-quiet 警告を出さないようにする。つまり、\-w オプションの逆である。 .TP .BR \-V ", " \-\-version \fBgenksyms\fR のバージョンを表示する。 .TP .BR \-w ", " \-\-warnings 認識できない構文や、宣言されているにも関わらず定義されていない構造体に 対する警告を表示するようにする。通常はこのような警告は行われない。 .SH 関連項目 .BR insmod "(8), " modprobe "(8) " .SH バグ \fB\-h\fR\ オプションは壊れている。\fB\-\-help\fR\ は正しく動く。 .br \fBgenksyms\fR [\fB\-V\fR\ |\ \fB\-\-version\fR] はバージョン情報を 表示して直ちに終了するべきである。 しかしながら、現在はバージョン情報を表示した後、 何もオプションが指定されなかったかのように振舞う。 .SH 履歴 このバージョン付けの概念は議論の結果得られたものである。 議論も KERNEL-channel だけでなく、多くの人々によって行われた。 .PP genksyms ユーティリティは 1994 年に Bjorn Ekwall が作成した。 その多くのアイディアは Jacques Gelinas と Jeremy Fitzhardinge によるものである。 .PP このユーティリティは 1996 年に Richard Hendersnon が書き直し、より適切な 字句解析器とパーザを使うようにした。