GENASSYM(8)

名称
genassym - C からアセンブラのシンボルを作成する

書式
genassym [-o outfile] objfile

解説
genassym コマンドは、 C のコードよりアセンブラシンボルを作成するための 特別な目的のためのプログラムであり、 C のコードと低レベルなアセンブラコードとのインタフェースとして使われます。 これは、例えば、 FreeBSD のカーネルやモジュールを作成するために 使われます。引数 objfile はシンボルの定義を保持している ELF オブジェクトファイルの名前です。 これらの定義はオブジェクトファイルより抽出され、 標準出力、もしくは アセンブラソースファイルで取り込むために適した outfile で指定されたファイルに書かれます。

genassym コマンドはオブジェクトファイルより assym_ プレフィックスを持ちグローバルデータ型であるシンボルの抽出のみを行い、 その値はシンボルに与えられた値となります。以下の C の宣言
    int assym_MY_SYMBOL = 3;

は以下のアセンブラシンボルを作成するために用いられます。
    #define MY_SYMBOL 0x3

シンボルの大きさはオブジェクトファイルから抽出されることに 注意してください。これはシンボルが値を保持するために 十分に大きい様々な型を持つかもしれないということを意味しています。

関連項目
config(8), gensetdefs(8)

作者
genassym コマンドは Marcel Moolenaar <marcel@FreeBSD.org> が記述しました。本コマンドは gensetdefs コマンドを元にしています。

バグ
全てのリンカが ELF オブジェクトファイルにシンボルの大きさを 保存するわけではありません。 例えば Alpha 向けの GNU リンカ (binutils 2.9.1) では このバグが存在します。 このよう場合シンボルの大きさは ELF オブジェクトファイルでの ワードサイズと等しいと仮定されます。 Alpha では 64 ビットであり、i386 では 32 ビットとなります。

歴史
genassym コマンドは FreeBSD 4.0 ではじめて登場しました。