aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man8/genassym.8
blob: d3de17aee791c623fecd6e911aacc93f2dc1bea6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
.\"
.\" %FreeBSD: src/usr.bin/genassym/genassym.8,v 1.2.2.1 2000/12/08 15:13:37 ru Exp %
.\" $FreeBSD$
.\"
.Dd December 20, 1999
.Dt GENASSYM 8
.Os
.Sh 名称
.Nm genassym
.Nd C からアセンブラのシンボルを作成する
.Sh 書式
.Nm
.Op Fl o Ar outfile
.Ar objfile
.Sh 解説
.Nm
コマンドは、
C のコードよりアセンブラシンボルを作成するための
特別な目的のためのプログラムであり、
C のコードと低レベルなアセンブラコードとのインタフェースとして使われます。
これは、例えば、
.Fx
のカーネルやモジュールを作成するために
使われます。引数
.Ar objfile
はシンボルの定義を保持している ELF オブジェクトファイルの名前です。
これらの定義はオブジェクトファイルより抽出され、
標準出力、もしくは
アセンブラソースファイルで取り込むために適した
.Ar outfile
で指定されたファイルに書かれます。
.Pp
.Nm
コマンドはオブジェクトファイルより
.Nm assym_
プレフィックスを持ちグローバルデータ型であるシンボルの抽出のみを行い、
その値はシンボルに与えられた値となります。以下の C の宣言
.Bd -literal -offset indent -compact
int assym_MY_SYMBOL = 3;
.Ed
は以下のアセンブラシンボルを作成するために用いられます。
.Bd -literal -offset indent -compact
#define MY_SYMBOL 0x3
.Ed
シンボルの大きさはオブジェクトファイルから抽出されることに
注意してください。これはシンボルが値を保持するために
十分に大きい様々な型を持つかもしれないということを意味しています。
.Sh 関連項目
.Xr config 8 ,
.Xr gensetdefs 8
.Sh 作者
.Nm
コマンドは
.An Marcel Moolenaar Aq marcel@FreeBSD.org
が記述しました。本コマンドは
.Dv gensetdefs
コマンドを元にしています。
.Sh バグ
全てのリンカが ELF オブジェクトファイルにシンボルの大きさを
保存するわけではありません。
例えば Alpha 向けの GNU リンカ (binutils 2.9.1) では
このバグが存在します。
このよう場合シンボルの大きさは ELF オブジェクトファイルでの
ワードサイズと等しいと仮定されます。
Alpha では 64 ビットであり、i386 では 32 ビットとなります。
.Sh 歴史
.Nm
コマンドは
.Fx 4.0
ではじめて登場しました。