Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-doc
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 ����ѥ���
�ΤߤǤ���¾�Υץ�����ߥ󥰸���Ǥ����ѤǤ��ޤ���