Path: blob/main/documentation/manual-pages/ja/man5/link.5
18093 views
.\" 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.
.\"
.\" %FreeBSD: src/share/man/man5/link.5,v 1.28 2004/07/03 18:29:23 ru Exp %
.\"
.\" $FreeBSD$
.\"
.Dd October 23, 1993
.Dt LINK 5
.Os
.Sh ̾��
.Nm link
.Nd �����ʥߥå��������ȥ���ǥ������ե�����
.Sh ��
.In sys/types.h
.In nlist.h
.In link.h
.Sh ����
���롼�ɥե�����
.In link.h
�Ǥϡ������ʥߥå��˥���줿�ץ�������饤�֥��˴ޤޤ��
����ι�¤�Τ��������Ƥ��ޤ���
���ι�¤�Τϡ�����ǥ����ȥ����������Τ����Ĥ��ι������Ǵ֤�
���ե�������������ޤ���
�Х��ʥ���ǤΤ����ι�¤�ΤΥ쥤�����Ȥ�
¿�������� a.out ������������Ƥ��ꡢ
����ܥ���� (�տ魯��ʸ����ơ��֥��ޤ�) �䳰������ƥ��ƥ��ؤλ��Ȥ�
��褹��Τ�ɬ�פʥ�����������쥳���ɤȤ��ä���
�褯������ǽ�����ޤ���
����˲ä��������ʥߥå������ɤȥ�����˸�ͭ�Τ����Ĥ��Υǡ�����¤��
��Ͽ���Ƥ��ޤ������Τ褦�ʥǡ�����¤�Ȥ��Ƥϡ�
����ǥ��åȽ����뤹��Τ�ɬ�פ�¾�Υ��֥������Ȥؤλ��Ȥ䡢
�ۤʤ�ץ������֤ǥ����ɥڡ����ζ�ͭ��ʤ�뤿���
.Em ������������
(Position Independent Code ά���� PIC) ��ǽ�����뤿���
���ܥơ��֥뤬����ޤ���
�����ǽҤ٤�ǡ�����¤���Τ�
.Em ��������������������� (RRS)
�ȸƤӡ������ʥߥå��˥�����ץ������䶦ͭ���֥������Ȥ�
ɸ��ƥ����ȵڤӥǡ����������Ȥ������ޤ�ޤ���
����ϡ���¸��
.Xr a.out 5
�����ˤ� RRS �Τ���ξ�꤬¾�ˤʤ�����Ǥ���
.Pp
����ץ�������¹Բ�ǽ�Ȥ����������
�����ƥ������λ��Ѥ��Ŭ�����Ĥ���������λ����褦��
ʣ���Υ桼�ƥ���ƥ�����Ĵ����Ư���ޤ���
����ѥ���� PIC �����ɤ���Ϥ���
���줫��
.Xr ld 1
�ˤ�äƶ�ͭ�饤�֥�꤬����ޤ���
����ѥ���Ϥޤ�������������ƥǡ��������ƥ�Υ����������
������֥�ǥ��쥯�ƥ��� .size ���Ѥ��Ƶ�Ͽ���ޤ���
PIC �����ɤϡ�������ܥơ��֥���̤��ƥǡ����ѿ��˥���������������
����Υ����ɤȰۤʤäƤ��ޤ���
����ɽ�ϥ������Х륪�ե��åȥơ��֥�ȸƤФ졢
�����ˤ�äơ�ͽ��̾
.Dv _GLOBAL_OFFSET_TABLE_
�ˤ�äƥ���������ǽ�Ǥ���
�������Ѥ�����ᥫ�˥���ξܺ٤ϵ����¸�Ǥ������̾��
���Υޥ���Υ쥸���� 1 �ܤ��������Ӥ�ͽ��ޤ���
���Τ褦�ʻ��Ȥߤ��طʤˤ���������ϡ�
�ºݤΥ����ɥ��ɥ쥹�Ȥ���Ω���������ɤ��������뤳�ȤǤ���
�¹Ի��ˤϡ����ɥ쥹���֤ˤ������͡��ʶ�ͭ���֥������Ȥ������ɤ���륢�ɥ쥹
�˱����ơ��������Х륪�ե��åȥơ��֥�˴ޤޤ���ͤΤ��ѹ�����Ф褤�ΤǤ���
.Pp
Ʊ�ͤˡ����Ū��������줿�ؿ��θƤӽФ��ϡ�
����������Υǡ���������������֤���Ƥ���
�ץ��������������ơ��֥� (PLT) ���̤��ƴ���Ū�˹Ԥ��ޤ���
�����ޤ����¹Ի��˥ƥ����ȥ������Ȥ��������˺Ѥޤ��뤿��Τ�ΤǤ���
.Pp
����ǥ������������Х륪�ե��åȥơ��֥�ȥץ��������������ơ��֥��
���֤���Τϡ�
ʣ���� PIC ���֥������ȥե�������礷��
�ץ������Υ��ɥ쥹���֤˥ޥåפ���Τ�Ŭ���� 1 �ĤΥ�����ˤ�����Ǥ���
����ǥ����Ϥޤ����¹Ի��Υ���ǥ�����ɬ�פȤ������ƤΥ���ܥ�ᡢ
��������Υƥ����Ȥȥǡ����Υӥå���ȶ��˥��ȥ����ޤ���
�⤦ 1 �Ĥ�ͽ��ܥ�
.Em _DYNAMIC
�ϡ��¹Ի��Υ��¤��¸�ߤ��뤳�Ȥ��Τ��Ѥ����ޤ���
_DYNAMIC �� 0 �˥�������Ȥ������ϡ��¹Ի�����ǥ�����ư����
ɬ�פϤ���ޤ���
�⤷ _DYNAMIC ���� 0 �ʤ顢_DYNAMIC �ϡ�ɬ�פʥ���������������
����ܥ����ΰ��֤�����Ф����Ȥ��Ǥ���ǡ�����¤��ؤ��Ƥ��ޤ���
������äˡ��������ȥ��åץ⥸�塼��
.Em crt0
�����Ѥ���ޤ���
�����Ȥ��ơ�_DYNAMIC ��¤�Τϡ�
���줬°���륤����Υǡ����������Ȥκǽ���֤���ޤ���
.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
���Ѥ��ʤ��Dz����� (SunOS �Ǥ�
�饤�֥��θ����롼�����ꤹ��Τ˻��Ѥ���Ƥ��ޤ���)��
.It Fa sdt_got
���Υ������ǤΥ������Х륪�ե��åȥơ��֥�ΰ��֡�
.It Fa sdt_plt
���Υ������ǤΥץ��������������ơ��֥�ΰ��֡�
.It Fa sdt_rel
�¹Ի��Υ��������������ꤹ��
.Fa relocation_info
��¤�� (
.Xr a.out 5
����)
������ΰ��֡�
.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
��¤�Τϡ������ޤ४�֥������ȤΥ���ǥ��åȽ�����λ����Τ�
ɬ�פʶ�ͭ���֥������ȤҤ��ޤ���
���Τ褦�ʥ��֥������ȤΥꥹ�� (
.Fa sod_next
��Ϣ�뤵��ޤ�)
�� 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
���������뤳�Ȥˤʤ�饤�֥�����ꤷ�ޤ���
���Υѥ�̾�ϡ�����ǥ��쥯�ȥ귲 (
.Xr ldconfig 8
����)
��
.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
(
.Xr nlist 3
����)��
.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 �ƤӽФ������ˡ��������ȥ��åץ⥸�塼��
.Pa 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
.Pp
.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 ���ꥢ���줿�ǥޥ�ɥڡ��������ޤ���
.Fx
�ǤϤ��Υե�����ɤ� -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 ����ѥ���
�ΤߤǤ���¾�Υץ�����ߥ���Ǥ����ѤǤ��ޤ���