aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man5/link.5
blob: cc75e32b425fa00064b62049733d2195f9cb83bf (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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
.\" Copyright (c) 1993 Paul Kranenburg
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"      This product includes software developed by Paul Kranenburg.
.\" 3. The name of the author may not be used to endorse or promote products
.\"    derived from this software without specific prior written permission
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\"	%Id: link.5,v 1.12 1997/03/21 20:14:05 mpp Exp %
.\" jpman %Id: link.5,v 1.3 1998/08/09 12:52:25 horikawa Stab %
.\"
.Dd October 23, 1993
.Dt LINK 5
.Os
.Sh 名称
.Nm link
.Nd ダイナミックローダとリンクエディタインタフェース
.Sh 書式
.Fd #include <sys/types.h>
.Fd #include <nlist.h>
.Fd #include <link.h>
.Sh 解説
インクルードファイル
.Aq Pa link.h
では、ダイナミックにリンクされたプログラムやライブラリに含まれる
数種の構造体が宣言されています。
その構造体は、リンクエディタとローダ機構のいくつかの構成要素間の
インタフェースを定義します。
バイナリ中でのこれらの構造体のレイアウトは
多くの点で a.out 形式に類似しており、
シンボル定義 (付随する文字列テーブルを含む) や外部エンティティへの参照を
解決するのに必要なリロケーションレコードといった、
よく似た機能を提供します。
それに加え、ダイナミックロードとリンク処理に固有のいくつかのデータ構造も
記録しています。このようなデータ構造としては、
リンクエディット処理を完結するのに必要な他のオブジェクトへの参照や、
異なるプロセス間でコードページの共有を進めるための
.Em 位置独立コード
(Position Independent Code 略して PIC) を機能させるための
間接テーブルがあります。
ここで述べるデータ構造全体を
.Em ランタイムリロケーションセクション (RRS)
と呼び、ダイナミックにリンクされるプログラムや共有オブジェクトの
標準テキスト及びデータセグメントに埋め込まれます。
これは、既存の
.Xr a.out 5
形式には RRS のための場所が他にないからです。
.Pp
あるプログラムを実行可能とする処理が、
システムリソースの使用を最適化しつつ正しく完了するよう、
複数のユーティリティが協調して働きます。
コンパイラは PIC コードを出力し、
それから
.Xr ld 1
によって共有ライブラリが作られます。
コンパイラはまた、初期化される各データアイテムのサイズ情報を
アセンブラディレクティブ .size を用いて記録します。
PIC コードは、ある間接テーブルを通じてデータ変数にアクセスする点で
従来のコードと異なっています。
この表はグローバルオフセットテーブルと呼ばれ、
慣習によって、予約名
.Em _GLOBAL_OFFSET_TABLE_
によってアクセス可能です。
ここで用いられるメカニズムの詳細は機種依存ですが、通常は
そのマシンのレジスタ 1 本がこの用途に予約されます。
このような仕組みの背景にある合理性は、
実際のロードアドレスとは独立したコードを生成することです。
実行時には、アドレス空間において様々な共有オブジェクトがロードされるアドレス
に応じて、グローバルオフセットテーブルに含まれる値のみ変更すればよいのです。
.Pp
同様に、大域的に定義された関数の呼び出しは、
コアイメージのデータセグメント中に置かれている
プロシージャリンケージテーブル (PLT) を通じて間接的に行われます。
これもまた、実行時にテキストセグメントを修正せずに済ませるためのものです。
.Pp
リンクエディタがグローバルオフセットテーブルとプロシージャリンケージテーブルを
配置するのは、
複数の PIC オブジェクトファイルを結合して
プロセスのアドレス空間にマップするのに適した 1 つのイメージにする時です。
リンクエディタはまた、実行時のリンクエディタが必要とする全てのシンボルを集め、
それらをイメージのテキストとデータのビット列と共にストアします。
もう 1 つの予約シンボル
.Em _DYNAMIC
は、実行時のリンク構造が存在することを示すのに用いられます。
_DYNAMIC が 0 にリロケートされる場合は、実行時リンクエディタを起動する
必要はありません。
もし _DYNAMIC が非 0 なら、_DYNAMIC は、必要なリロケーション情報と
シンボル情報の位置を引き出すことができるデータ構造を指しています。
これは特に、スタートアップモジュール
.Em crt0
で利用されます。
慣習として、_DYNAMIC 構造体は、
それが属するイメージのデータセグメントの最初に置かれます。
.Pp
.Sh データ構造
ダイナミックリンクと実行時リロケーションをサポートするデータ構造は、
それらの処理の適用対象イメージのテキスト及びデータセグメントの
両方の中にあります。
テキストセグメントにはシンボル記述や名前といった読み取り専用データが含まれ、
他方データセグメントにはリロケーション処理で更新する必要のあるテーブル類が
含まれます。
.Pp
シンボル _DYNAMIC は
.Fa _dynamic
構造体を参照します:
.Bd -literal -offset indent
struct	_dynamic {
	int	d_version;
	struct 	so_debug *d_debug;
	union {
		struct section_dispatch_table *d_sdt;
	} d_un;
	struct  ld_entry *d_entry;
};
.Ed
.Bl -tag -width d_version
.It Fa d_version
このフィールドは異なったバージョンのダイナミックリンク実装用に
提供されています。
.Xr ld 1
及び
.Xr ld.so 1
が理解する現在のバージョン番号は、
.Tn SunOS
4.x リリースで用いられている
.Em LD_VERSION_SUN (3)
と、
.Fx 1.1
以来使用されている
.Em LD_VERSION_BSD (8)
です。
.It Fa d_un
.Em d_version
に応じたデータ構造を参照します。
.It Fa so_debug
このフィールドは、
共有オブジェクトのシンボルテーブルをアクセスするためのフックを
デバッガに提供します。
この共有オブジェクトは、
実行時リンクエディタの処理の結果ロードされたものです。
.El
.Pp
.Fa section_dispatch_table
構造体がメインとなる
.Dq ディスパッチャ
テーブルであり、
イメージ内で様々なシンボル情報やリロケーション情報が置かれるセグメントへの
オフセットを保持します。
.Bd -literal -offset indent
struct section_dispatch_table {
	struct	so_map *sdt_loaded;
	long	sdt_sods;
	long	sdt_filler1;
	long	sdt_got;
	long	sdt_plt;
	long	sdt_rel;
	long	sdt_hash;
	long	sdt_nzlist;
	long	sdt_filler2;
	long	sdt_buckets;
	long	sdt_strings;
	long	sdt_str_sz;
	long	sdt_text_sz;
	long	sdt_plt_sz;
};
.Ed
.Pp
.Bl -tag -width sdt_filler1
.It Fa sdt_loaded
ロードされた最初のリンクマップ (後述) へのポインタ。
このフィールドは
.Nm ld.so
によって設定されます。
.It Fa sdt_sods
.Em この
オブジェクトが必要とする共有オブジェクトデスクリプタの (リンク) リストの先頭。
.It Fa sdt_filler1
使用しないで下さい (SunOS では
ライブラリの検索ルールを指定するのに使用されていました)。
.It Fa sdt_got
このイメージ中でのグローバルオフセットテーブルの位置。
.It Fa sdt_plt
このイメージ中でのプロシージャリンケージテーブルの位置。
.It Fa sdt_rel
実行時のリロケーションを指定する
.Fa relocation_info
構造体
.Po
.Xr a.out 5
参照
.Pc
の配列の位置。
.It Fa sdt_hash
このオブジェクトのシンボルテーブルでシンボル検索を高速化するための
ハッシュテーブルの位置。
.It Fa sdt_nzlist
シンボルテーブルの位置。
.It Fa sdt_filler2
現在使用されていません。
.It Fa sdt_buckets
.Fa sdt_hash
中のバケット数。
.It Fa sdt_strings
.Fa sdt_nzlist
に対応するシンボル文字列テーブルの位置。
.It Fa sdt_str_sz
文字列テーブルのサイズ。
.It Fa sdt_text_sz
このオブジェクトのテキストセグメントのサイズ。
.It Fa sdt_plt_sz
プロシージャリンケージテーブルのサイズ。
.El
.Pp
.Fa sod
構造体は、それを含むオブジェクトのリンクエディット処理を完了するのに
必要な共有オブジェクトを記述します。
そのようなオブジェクトのリスト
.Po
.Fa sod_next
で連結されます
.Pc
は section_dispatch_table 構造体の
.Fa sdt_sods
によって指し示されます。
.Bd -literal -offset indent
struct sod {
	long	sod_name;
	u_int	sod_library : 1,
		sod_reserved : 31;
	short	sod_major;
	short	sod_minor;
	long	sod_next;
};
.Ed
.Pp
.Bl -tag -width sod_library
.It Fa sod_name
このリンクオブジェクトを記述する文字列の、
テキストセグメントにおけるオフセット。
.It Fa sod_library
もし設定されていれば、
.Fa sod_name
は
.Nm ld.so
が検索することになるライブラリを指定します。
そのパス名は、あるディレクトリ群
.Po
.Xr ldconfig 8
参照
.Pc
で
.Em lib\&<sod_name>\&.so.n.m.
にマッチする共有オブジェクトを検索することで得られます。
もし設定されていなければ、
.Fa sod_name
は希望する共有オブジェクトに対するフルパス名を指し示す必要があります。
.It Fa sod_major
ロードすべき共有オブジェクトのメジャーバージョン番号を指定します。
.It Fa sod_minor
ロードすべき共有オブジェクトの希望するマイナーバージョン番号を指定します。
.El
.Pp
プロセスのアドレス空間にロードされる共有オブジェクト全てを追跡するために、
実行時リンクエディタは
.Em リンクマップ
と呼ばれる構造体のリストを管理しています。
これらの構造体は実行時にのみ用いられ、
実行可能ファイルや共有ライブラリのテキストあるいはデータセグメントには
ありません。
.Bd -literal -offset indent
struct so_map {
	caddr_t	som_addr;
	char 	*som_path;
	struct	so_map *som_next;
	struct	sod *som_sod;
	caddr_t som_sodbase;
	u_int	som_write : 1;
	struct	_dynamic *som_dynamic;
	caddr_t	som_spd;
};
.Ed
.Bl -tag -width som_dynamic
.It Fa som_addr
このリンクマップに対応する共有オブジェクトがロードされるアドレス。
.It Fa som_path
ロードされるオブジェクトのフルパス名。
.It Fa som_next
次のリンクマップへのポインタ。
.It Fa som_sod
この共有オブジェクトのロードをつかさどる
.Fa sod
構造体。
.It Fa som_sodbase
将来のバージョンにおいては、実行時リンカに渡されます。
.It Fa som_write
このオブジェクトのテキストセグメント (の一部分) が現在書き込み可能である
場合にセットされます。
.It Fa som_dynamic
このオブジェクトの
.Fa _dynamic
構造体へのポインタ。
.It Fa som_spd
実行時リンクエディタが管理するプライベートデータと連結するためのフック。
.El
.Pp
サイズ付きシンボル記述。
これは単に
.Fa nlist
構造体にフィールド
.Pq Fa nz_size
を 1 つ追加したものです。
共有オブジェクトのデータセグメントにあるアイテムの
サイズ情報を伝達するのに用いられます。
この構造体の配列は共有オブジェクトのテキストセグメントに存在し、
そのアドレスは
.Fa section_dispatch_table
の
.Fa sdt_nzlist
フィールドで指定されます。
.Bd -literal -offset indent
struct nzlist {
	struct nlist	nlist;
	u_long		nz_size;
#define nz_un		nlist.n_un
#define nz_strx		nlist.n_un.n_strx
#define nz_name		nlist.n_un.n_name
#define nz_type		nlist.n_type
#define nz_value	nlist.n_value
#define nz_desc		nlist.n_desc
#define nz_other	nlist.n_other
};
.Ed
.Bl -tag -width nz_size
.It Fa nlist
.Po
.Xr nlist 3
参照
.Pc 。
.It Fa nz_size
このシンボルで表現されるデータのサイズ。
.El
.Pp
実行時のリンクエディットで行われるシンボル検索を高速化するため、
共有オブジェクトのテキストセグメントにハッシュテーブルが含まれています。
.Fa section_dispatch_table
の
.Fa sdt_hash
フィールドは
.Fa rrs_hash
構造体を指し示します:
.Bd -literal -offset indent
struct rrs_hash {
	int	rh_symbolnum;		/* シンボル番号 */
	int	rh_next;		/* 次のハッシュエントリ */
};
.Ed
.Pp
.Bl -tag -width rh_symbolnum
.It Fa rh_symbolnum
共有オブジェクトのシンボルテーブル (
.Fa ld_symbols
で与えられます) での当該シンボルのインデックス。
.It Fa rh_next
衝突が起きたとき、このフィールドはこのハッシュテーブルのバケットにおける
次のエントリのオフセットを保持します。
最終バケット要素の場合は 0 となります。
.El
.Fa rt_symbol
構造体は、
実行時にアロケートされるコモン(commons)と
共有オブジェクトからコピーされるデータアイテムを
追跡するのに用いられます。
これらのアイテムはリンクリストで管理され、デバッガでの利用のために
.Fa so_debug
構造体 (後述) 中の
.Fa dd_cc
フィールドによって公開されます。
.Bd -literal -offset indent
struct rt_symbol {
	struct nzlist		*rt_sp;
	struct rt_symbol	*rt_next;
	struct rt_symbol	*rt_link;
	caddr_t			rt_srcaddr;
	struct so_map		*rt_smp;
};
.Ed
.Pp
.Bl -tag -width rt_scraddr
.It Fa rt_sp
シンボル記述。
.It Fa rt_next
次の rt_symbol の仮想アドレス。
.It Fa rt_link
ハッシュバケットにおける次の要素。
.Nm ld.so
の内部で用いられます。
.It Fa rt_srcaddr
共有オブジェクト中での初期化済データのソース位置。
.It Fa rt_smp
この実行時シンボルが記述するデータの元のソースとなる共有オブジェクト。
.El
.Pp
.Fa so_debug
構造体は、
実行時リンクエディットの結果、当該プロセスのアドレス空間にロードされた
あらゆる共有オブジェクトの情報を得るために、
デバッガによって利用されます。
実行時リンクエディタはプロセスの初期化処理の一部として実行されるため、
共有オブジェクトからシンボルにアクセスしようとするデバッガは、
crt0 からリンクエディタが呼ばれた後でのみそれが可能となります。
ダイナミックリンクされているバイナリは
.Fa so_debug
構造体を持っています。この構造体の場所は
.Fa _dynamic
中の
.Fa d_debug
フィールドで指示されます。
.Bd -literal -offset indent
struct 	so_debug {
	int	dd_version;
	int	dd_in_debugger;
	int	dd_sym_loaded;
	char    *dd_bpt_addr;
	int	dd_bpt_shadow;
	struct rt_symbol *dd_cc;
};
.Ed
.Pp
.Bl -tag -width dd_in_debugger
.It Fa dd_version
このインタフェースのバージョン番号。
.It Fa dd_in_debugger
当該プログラムがデバッガの制御下にあることを実行時リンカに知らせるために
デバッガによってセットされます。
.It Fa dd_sym_loaded
共有オブジェクトをロードすることで実行時リンカがシンボルを追加した場合、
実行時リンカによってセットされます。
.It Fa dd_bpt_addr
デバッガに制御を移すために実行時リンカによってセットされる
ブレークポイントアドレス。
このアドレスは、_main 呼び出しの前に、スタートアップモジュール
.Em crt0.o
によってある適切な場所に決定されます。
.It Fa dd_bpt_shadow
アドレス
.Fa dd_bpt_addr
にあった元の機械命令を保持します。
デバッガは、プログラム実行を再開する前にこの機械命令を元に戻すことに
なっています。
.It Fa dd_cc
デバッガが必要とする可能性のある、実行時にアロケートしたシンボルの
リンクリストへのポインタ。
.El
.Pp
.Em ld_entry
構造体は
.Nm ld.so
中のサービスルーチン一式を定義します。
.\" See
.\" .Xr libdl.a
.\" for more information.
.Bd -literal -offset indent
struct ld_entry {
	void	*(*dlopen)(char *, int);
	int	(*dlclose)(void *);
	void	*(*dlsym)(void *, char *);
	char	*(*dlerror)(void);
};
.Ed

.Fa crt_ldso
構造体は、crt0 中のスタートアップコードと
.Nm ld.so
との間のインタフェースを定義します。
.Bd -literal -offset indent
struct crt_ldso {
	int		crt_ba;
	int		crt_dzfd;
	int		crt_ldfd;
	struct _dynamic	*crt_dp;
	char		**crt_ep;
	caddr_t		crt_bp;
	char		*crt_prog;
	char		*crt_ldso;
	struct ld_entry	*crt_ldentry;
};
#define CRT_VERSION_SUN		1
#define CRT_VERSION_BSD_2	2
#define CRT_VERSION_BSD_3	3
#define	CRT_VERSION_BSD_4	4
.Ed
.Bl -tag -width crt_dzfd
.It Fa crt_ba
crt0 によって
.Nm ld.so
がロードされた仮想アドレス。
.It Fa crt_dzfd
SunOS では、このフィールドは
.Dq Pa /dev/zero
へのオープンされたファイル記述子を保持し、
0 クリアされたデマンドページを得ます。
.Tn FreeBSD
ではこのフィールドは -1 を保持します。
.It Fa crt_ldfd
.Nm ld.so
をロードするために crt0 が用いる、オープンされたファイル記述子
を保持します。
.It Fa crt_dp
main の
.Fa _dynamic
構造体へのポインタ。
.It Fa crt_ep
環境文字列へのポインタ。
.It Fa crt_bp
メインプログラムがデバッガで実行される場合、
実行時リンカがブレークポイントを置くアドレス。
.Fa so_debug
を参照してください。
.It Fa crt_prog
crt0 で決定されるメインプログラムの名前 (CRT_VERSION_BSD3 のみ)。
.It Fa crt_ldso
crt0 でマップされる実行時リンカのパス (CRT_VERSION_BSD4 のみ)。
.El
.Pp
.Fa hints_header
構造体及び
.Fa hints_bucket
構造体は、通常
.Dq Pa /var/run/ld.so.hints
に置かれるライブラリヒントのレイアウトを定義します。
ライブラリヒントは、ファイルシステム中で共有オブジェクトイメージの在処を
すばやく見つけるために
.Nm ld.so
によって利用されます。
ヒントファイルの構成は
.Dq a.out
とそれほど異なりません。つまりヒントファイルは、
固定長ハッシュバケットのオフセットとサイズを決定するためのヘッダと、
共通の文字列プールを持っています。
.Bd -literal -offset indent
struct hints_header {
	long		hh_magic;
#define HH_MAGIC	011421044151
	long		hh_version;
#define LD_HINTS_VERSION_1	1
	long		hh_hashtab;
	long		hh_nbucket;
	long		hh_strtab;
	long		hh_strtab_sz;
	long		hh_ehints;
};
.Ed
.Bl -tag -width hh_strtab_sz
.It Fa hh_magic
ヒントファイルのマジックナンバ。
.It Fa hh_version
インタフェースのバージョン番号。
.It Fa hh_hashtab
ハッシュテーブルのオフセット。
.It Fa hh_strtab
文字列テーブルのオフセット。
.It Fa hh_strtab_sz
文字列テーブルのサイズ。
.It Fa hh_ehints
ヒントファイルで利用可能な最大オフセット。
.El
.Pp
.Bd -literal -offset indent
/*
 * ヒントファイルのハッシュテーブル要素
 */
struct hints_bucket {
	int		hi_namex;
	int		hi_pathx;
	int		hi_dewey[MAXDEWEY];
	int		hi_ndewey;
#define hi_major hi_dewey[0]
#define hi_minor hi_dewey[1]
	int		hi_next;
};
.Ed
.Bl -tag -width hi_ndewey
.It Fa hi_namex
ライブラリを指定する文字列のインデックス。
.It Fa hi_pathx
ライブラリのフルパス名を表す文字列のインデックス。
.It Fa hi_dewey
共通ライブラリのバージョン番号。
.It Fa hi_ndewey
.Fa hi_dewey
中の有効エントリ数。
.It Fa hi_next
ハッシュ衝突の際の次のバケット。
.El
.Sh 警告
現在のところ、共有ライブラリ生成をサポートしているのは (GNU) C コンパイラ
のみです。他のプログラミング言語では利用できません。