Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-doc
Path: blob/main/documentation/manual-pages/ja/man5/elf.5
18093 views
.\"Copyright (c) 1999 Jeroen Ruigrok van der Werven
.\"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.
.\"
.\"THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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/elf.5,v 1.28 2004/07/03 18:29:22 ru Exp %
.\"
.\" $FreeBSD$
.Dd July 31, 1999
.Dt ELF 5
.Os FreeBSD
.Sh ̾��
.Nm elf
.Nd ELF �¹Է����Х��ʥ�ե�����Υե����ޥå�
.Sh ��
.In elf.h
.Sh ����
�إå��ե�����
.In elf.h
�ϡ�ELF �¹Է����Х��ʥ�ե�����Υե����ޥåȤ�������Ƥ��ޤ���
ELF �ˤ����̤μ¹Բ�ǽ�ե����롢�����ֲ�ǽ�ʥ��֥������ȥե����롢
�����ե����롢��ͭ�饤�֥�꤬����ޤ���
.Pp
ELF �ե�����ե����ޥåȤ�ȤäƤ���
�¹Բ�ǽ�ե������ ELF �إå�������ޤ���
�����ơ��ץ������إå��ơ��֥뤫��
���������إå��ơ��֥롢���뤤�Ϥ���ξ����³���ޤ���
ELF �إå��ϡ���˥ե�����Υ��ե��å� 0 �ˤ���ޤ���
�ץ������إå��ơ��֥��
���������إå��ơ��֥�Υե�������Υ��ե��åȤϡ�
ELF �إå����������Ƥ��ޤ���
2 �ĤΥơ��֥�ϡ��ե��������ħ�λĤ����ʬ�򵭽Ҥ��ޤ���
.Pp
�ͥ��ƥ��֥������ƥ������ ELF �Х��ʥ�ե������������륢�ץꥱ�������ϡ�
���Υ����������ɤ�
.In elf.h
�򥤥󥯥롼�ɤ�������Ǥ��ߤޤ���
�����Υ��ץꥱ�������ϡ�����̾
.Dq Elf_xxx
�ˤ���������פȹ�¤�Τؤλ��Ȥ�ޤ�ɬ�פ����ꡢ
.Dq ELF_xxx
�ˤ��ޥ����ؤλ��Ȥ�ޤ�ɬ�פ�����Ǥ��礦��
���Τ褦�ˤ��Ƶ��Ҥ��줿���ץꥱ�������ϡ�
�ɤΤ褦�ʥ������ƥ�����Ǥ��äƤ⡢
�ۥ��Ȥ� 32 �ӥåȤʤΤ������뤤�� 64 �ӥåȤʤΤ�
�Ȥ������Ȥ򵤤ˤ��ʤ��ǡ�����ѥ����ǽ�Ǥ���
.Pp
̤�ΤΥ������ƥ������ ELF �ե�������������ɬ�פ����륢�ץꥱ�������ϡ�
.In elf.h
�ǤϤʤ���
.In sys/elf32.h
��
.In sys/elf64.h
��ξ���򥤥󥯥롼�ɤ���ɬ�פ�����ޤ���
����ˡ����ƤΥ����פȹ�¤�Τϡ�
.Dq Elf32_xxx
��
.Dq Elf64_xxx
�ˤ�äƶ��̤���ɬ�פ�����ޤ���
�ޥ����ϡ�
.Dq ELF32_xxx
�ޤ���
.Dq ELF64_xxx
�ˤ�äƶ��̤���ɬ�פ�����ޤ���
.Pp
�����ƥ�Υ������ƥ����㤬���Ȥ����Ǥ��äƤ⡢���
.In sys/elf_generic.h
�����Ǥʤ���
.In sys/elf_common.h
�⥤�󥯥롼�ɤ��ޤ���
.Pp
�����Υإå��ե�����Ǥϡ�
��Ǹ��ڤ����إå��� C ��¤�ΤȤ��Ƶ��Ҥ���
����˲ä���ưŪ����������
�����֥��������ȥ���ܥ�ơ��֥�Τ���ι�¤�Τ�ޤ�Ǥ��ޤ���
.Pp
�ʲ��Υ����פ���32 �ӥåȥ������ƥ�����Τ���˻Ȥ��Ƥ��ޤ�:
.Bd -literal -offset indent
Elf32_Addr	���̵���ץ�����ॢ�ɥ쥹
Elf32_Half	���̵���ϡ��ե�ɥե������
Elf32_Off	���̵���ե����륪�ե��å�
Elf32_Sword	����դ�������
Elf32_Word	�ե�����ɤޤ������̵��������
Elf32_Size	���̵�����֥������ȥ�����
.Ed
.Pp
64 �ӥåȥ������ƥ������Ѥ˰ʲ��Υ����פ��Ѱդ���Ƥ��ޤ�:
.Bd -literal -offset indent
Elf64_Addr	���̵���ץ�����ॢ�ɥ쥹
Elf64_Half	���̵���ϡ��ե�ɥե������
Elf64_Off	���̵���ե����륪�ե��å�
Elf64_Sword	����դ�������
Elf64_Word	�ե�����ɤޤ������̵��������
Elf64_Size	���̵�����֥������ȥ�����
Elf64_Quarter	���̵������������ɥե������
.Ed
.Pp
ELF �ե�����ե����ޥåȤ�����������ƤΥǡ�����¤�ϡ�
��Ϣ���륯�饹�Τ����
.Dq ������
�������ȶ���Ĵ���Υ����ɥ饤��˽��äƤ��ޤ���
ɬ�פʤ�С��ǡ�����¤�ϡ�4 �Х��ȥ��֥������Ȥ�
4 �Х��ȶ����Ȥʤ뤳�Ȥ��ݾڤ��뤿��ˡ�
��¤�ΤΥ���������Ū�� 4 ���ܿ��ˤ���Ȥ����ä����ʤǡ�
����Ū�ʥѥǥ��󥰤�ޤ�ޤ���
.Pp
ELF �إå��ϡ�Elf32_Ehdr ���ޤ��� Elf64_Ehdr ���ˤ�äƵ��Ҥ���Ƥ��ޤ�:
.Bd -literal -offset indent
typedef struct {
        unsigned char   e_ident[EI_NIDENT];
        Elf32_Half      e_type;
        Elf32_Half      e_machine;
        Elf32_Word      e_version;
        Elf32_Addr      e_entry;
        Elf32_Off       e_phoff;
        Elf32_Off       e_shoff;
        Elf32_Word      e_flags;
        Elf32_Half      e_ehsize;
        Elf32_Half      e_phentsize;
        Elf32_Half      e_phnum;
        Elf32_Half      e_shentsize;
        Elf32_Half      e_shnum;
        Elf32_Half      e_shstrndx;
} Elf32_Ehdr;
.Ed
.Pp
.Bd -literal -offset indent
typedef struct {
	unsigned char   e_ident[EI_NIDENT];
	Elf64_Quarter   e_type;
	Elf64_Quarter   e_machine;
	Elf64_Half      e_version;
	Elf64_Addr      e_entry;
	Elf64_Off       e_phoff;
	Elf64_Off       e_shoff;
	Elf64_Half      e_flags;
	Elf64_Quarter   e_ehsize;
	Elf64_Quarter   e_phentsize;
	Elf64_Quarter   e_phnum;
	Elf64_Quarter   e_shentsize;
	Elf64_Quarter   e_shnum;
	Elf64_Quarter   e_shstrndx;
} Elf64_Ehdr;
.Ed
.Pp
�ե�����ɤϡ��ʲ��ΰ�̣����äƤ��ޤ�:
.Pp
.Bl -tag -width "e_phentsize" -compact -offset indent
.It Dv e_ident
���ΥХ�������ϥե������ɤΤ褦�˲�᤹�٤�������ꤷ�ޤ���
����ϡ��ץ����å��ޤ��ϥե�����λĤ�����Ƥ�����Ω���Ƥ��ޤ���
����������������Ǥϡ�
.Sy EI_
�dz��Ϥ���ޥ����ˤ��̾�դ���졢�ޤ���Ƭ��
.Sy ELF
���Ĥ����ͤ�������ޤ���
�ʲ��Υޥ������������Ƥ��ޤ�:
.Pp
.Bl -tag -width "EI_ABIVERSION" -compact
.It Dv EI_MAG0
�ޥ��å��ֹ���� 1 �ΥХ��ȡ�
.Sy ELFMAG0
�Ǥ��뤳�Ȥ�ɬ�פǤ���
.It Dv EI_MAG1
�ޥ��å��ֹ���� 2 �ΥХ��ȡ�
.Sy ELFMAG1
�Ǥ��뤳�Ȥ�ɬ�פǤ���
.It Dv EI_MAG2
�ޥ��å��ֹ���� 3 �ΥХ��ȡ�
.Sy ELFMAG2
�Ǥ��뤳�Ȥ�ɬ�פǤ���
.It Dv EI_MAG3
�ޥ��å��ֹ���� 4 �ΥХ��ȡ�
.Sy ELFMAG3
�Ǥ��뤳�Ȥ�ɬ�פǤ���
.It Dv EI_CLASS
�� 5 �ΥХ��Ȥϡ������ΥХ��ʥ�ե�����Υ������ƥ�������̤��ޤ�:
.Pp
.Bl -tag -width "ELFCLASSNONE" -compact
.It Dv ELFCLASSNONE
���Υ��饹�ϡ������Ǥ���
.It Dv ELFCLASS32
����ϡ�32 �ӥåȥ������ƥ������������ޤ���
�ե�������֤Ȳ��ۥ��ɥ쥹���֤� 4 �����Х��ȤޤǤˤ����ޤ�
�ޥ�����б����ޤ���
.It Dv ELFCLASS64
����ϡ�64 �ӥåȥ������ƥ������������ޤ���
.El
.It Dv EI_DATA
�� 6 �ΥХ��Ȥϡ�
�ե�����Υץ����å���ͭ�ǡ����Υ��󥳡��ǥ��󥰤���ꤷ�ޤ���
���ߡ����Υ��󥳡��ǥ��󥰤����ݡ��Ȥ���Ƥ��ޤ�:
.Pp
.Bl -tag -width "ELFDATA2LSB" -compact
.It Dv ELFDATANONE
̤�ΤΥǡ����ե����ޥåȡ�
.It Dv ELFDATA2LSB
2 ���������ȥ륨��ǥ�����
.It Dv ELFDATA2MSB
2 ��������ӥå�����ǥ�����
.El
.It Dv EI_VERSION
ELF ���ͽ�ΥС������ʥ��:
.Pp
.Bl -tag -width "EV_CURRENT" -compact
.It Dv EV_NONE
�����ʥС������
.It Dv EV_CURRENT
���ߤΥС������
.El
.It Dv EI_OSABI
���ΥХ��Ȥϡ����֥������Ȥ��оݤǤ��롢
���ڥ졼�ƥ��󥰥����ƥ�� ABI ���̤��ޤ���
¾�� ELF ��¤��Υե�����ɤˤϡ�
�ץ�åȥե������¸�ΰ�̣�Τ�Τ�����ޤ���
���Τ褦�ʥե�����ɤβ��ϡ����ΥХ��Ȥ��ͤǷ��ꤵ��ޤ���
�����ͤ������������Ƥ��ޤ�:
.Pp
.Bl -tag -width "ELFOSABI_STANDALONE" -compact
.It Dv ELFOSABI_SYSV
UNIX System V ABI��
.It Dv ELFOSABI_HPUX
HP-UX ���ڥ졼�ƥ��󥰥����ƥ� ABI��
.It Dv ELFOSABI_NETBSD
.Nx
���ڥ졼�ƥ��󥰥����ƥ� ABI��
.It Dv ELFOSABI_LINUX
GNU/Linux ���ڥ졼�ƥ��󥰥����ƥ� ABI��
.It Dv ELFOSABI_HURD
GNU/Hurd ���ڥ졼�ƥ��󥰥����ƥ� ABI��
.It Dv ELFOSABI_86OPEN
86Open Common IA32 ABI��
.It Dv ELFOSABI_SOLARIS
Solaris ���ڥ졼�ƥ��󥰥����ƥ� ABI��
.It Dv ELFOSABI_MONTEREY
Monterey �ץ��������� ABI��
.It Dv ELFOSABI_IRIX
IRIX ���ڥ졼�ƥ��󥰥����ƥ� ABI��
.It Dv ELFOSABI_FREEBSD
.Fx
���ڥ졼�ƥ��󥰥����ƥ� ABI��
.It Dv ELFOSABI_TRU64
TRU64 UNIX ���ڥ졼�ƥ��󥰥����ƥ� ABI��
.It Dv ELFOSABI_ARM
ARM �������ƥ����� ABI��
.It Dv ELFOSABI_STANDALONE
Standalone (�Ȥ߹���) ABI��
.El
.It Dv EI_ABIVERSION
���ΥХ��Ȥϡ����֥������Ȥ��оݤǤ��� ABI �ΥС��������̤��ޤ���
���Υե�����ɤϡ�Ʊ�� ABI �Ǥ⡢
�ߴ�����̵�����Ʊ�Τ���̤��뤿��˻��Ѥ���ޤ���
�С�������ֹ�β��ϡ�EI_OSABI �ե�����ɤǼ��̤���� ABI �˰�¸���ޤ���
���λ��ͤ˽�򤹤륢�ץꥱ�������ϡ��� 0 ����Ѥ��ޤ���
.It Dv EI_PAD
�ѥǥ��󥰤λϤᡣ
�����ΥХ��Ȥϡ�ͽ�󤵤�Ƥ��ꡢ0 �˥��åȤ���ޤ���
�������ɤ�ץ������ϡ������̵�뤹��ɬ�פ�����ޤ���
���衢���߻ȤäƤ��ʤ��Х��Ȥ˰�̣��Ϳ����줿���ˤϡ�
EI_PAD ���ͤ��Ѥ��ޤ���
.It Dv EI_BRAND
�������ƥ����㼱�̻ҤλϤᡣ
.It Dv EI_NIDENT
e_ident ������礭����
.El
.Pp
.It Dv e_type
��¤�ΤΤ��Υ��Фϡ����֥������ȥե����륿���פ��̤��ޤ�:
.Pp
.Bl -tag -width "ET_NONE" -compact
.It Dv ET_NONE
̤�ΤΥ����ס�
.It Dv ET_REL
�����ֲ�ǽ�ʥե����롣
.It Dv ET_EXEC
�¹Բ�ǽ�ե����롣
.It Dv ET_DYN
��ͭ���֥������ȡ�
.It Dv ET_CORE
�����ե����롣
.El
.Pp
.It Dv e_machine
���Υ��Фϡ��ġ��Υե������ɬ�פʥ������ƥ��������ꤷ�ޤ�:
.Pp
.Bl -tag -width "EM_MIPS_RS4_BE" -compact
.It Dv EM_NONE
̤�ΤΥޥ���
.It Dv EM_M32
AT&T WE 32100
.It Dv EM_SPARC
Sun Microsystems SPARC.
.It Dv EM_386
Intel 80386.
.It Dv EM_68K
Motorola 68000
.It Dv EM_88K
Motorola 88000
.It Dv EM_486
Intel 80486
.It Dv EM_860
Intel 80860
.It Dv EM_MIPS
MIPS RS3000 (�ӥå�����ǥ�����Τ�)
.It Dv EM_MIPS_RS4_BE
MIPS RS4000 (�ӥå�����ǥ�����Τ�)
.It Dv EM_SPARC64
SPARC v9 64-bit �����
.It Dv EM_PARISC
HPPA
.It Dv EM_PPC
PowerPC
.It Dv EM_ALPHA
Compaq [DEC] Alpha
.El
.Pp
.It Dv e_version
���Υ��Фϡ��ե�����С��������̤��ޤ�:
.Pp
.Bl -tag -width "EV_CURRENT" -compact
.It Dv EV_NONE
�����ʥС������
.It Dv EV_CURRENT
���ߤΥС������
.El
.It Dv e_entry
���Υ��Фϡ������ƥब�ǽ�������ܤ���
�Ĥޤ�ץ������򳫻Ϥ��벾�ۥ��ɥ쥹�򼨤��ޤ���
�ե�����˥���ȥ�ݥ���Ȥ��ʤ��ʤ�С����Υ��Ф� 0 �ˤʤ�ޤ���
.It Dv e_phoff
���Υ��Фϡ�
�ץ������إå��ơ��֥�ΥХ���ñ�̤Υե����륪�ե��åȤ�����ޤ���
.It Dv e_shoff
���Υ��Фϡ�
���������إå��ơ��֥�ΥХ���ñ�̤Υե����륪�ե��åȤ�����ޤ���
�ե�����˥��������إå��ơ��֥뤬�ʤ��ʤ�С����Υ��Ф� 0 �ˤʤ�ޤ���
.It Dv e_flags
���Υ��Фϡ��ե�����˴�Ϣ���롢�ץ����å��˸�ͭ�ʥե饰������ޤ���
�ե饰̾�ϡ�EF_`machine_flag' �Ȥ��������ˤʤ�ޤ���
���ߡ�������줿�ե饰�Ϥ���ޤ���
.It Dv e_ehsize
���Υ��Фϡ�ELF �إå��ΥХ���ñ�̤��礭��������ޤ���
.It Dv e_phentsize
���Υ��Фϡ�
�ե�����Υץ������إå��ơ��֥�ˤ��륨��ȥ� 1 ��ʬ�Υ�����������ޤ���
���ƤΥ���ȥ�ϡ�Ʊ���礭���Ǥ���
.It Dv e_phnum
���Υ��Фϡ��ץ������إå��ơ��֥���Υ���ȥ�θĿ�������ޤ���
�Ĥޤꡢ
.Sy e_phentsize
��
.Sy e_phnum
���Ѥϡ��ơ��֥�ΥХ���ñ�̤��礭����Ϳ���ޤ���
�ե�����˥ץ������إå����ʤ��ʤ�С�
.Sy e_phnum
���ͤ� 0 �ˤʤ�ޤ���
.It Dv e_shentsize
���Υ��Фϡ����������إå��ΥХ���ñ�̤��礭��������ޤ���
���������إå��ϡ�
���������إå��ơ��֥����� 1 �ĤΥ���ȥ�Ǥ�;
���ƤΥ���ȥ�ϡ�Ʊ���礭���Ǥ���
.It Dv e_shnum
���Υ��Фϡ����������إå��ơ��֥���Υ���ȥ�θĿ�������ޤ���
�Ĥޤꡢ
.Sy e_shentsize
��
.Sy e_shnum
���Ѥϡ����������إå��ơ��֥�ΥХ���ñ�̤��礭����Ϳ���ޤ���
�ե�����˥��������إå��ơ��֥뤬�ʤ��ʤ�С�
.Sy e_shnum
���ͤ� 0 �ˤʤ�ޤ���
.It Dv e_shstrndx
���Υ��Фϡ�
���������إå��ơ��֥�Ρ�
���������̾ʸ����ơ��֥�˷�ӤĤ���줿����ȥ�ؤ�
����ǥå���������ޤ���
�ե�����˥��������̾ʸ����ơ��֥뤬�ʤ��ʤ�С�
���Υ��Ф���
.Sy SHN_UNDEF
������ޤ���
.El
.Pp
�¹Բ�ǽ�ե�����ޤ��϶�ͭ���֥������ȥե�����Υץ������إå��ơ��֥�ϡ�
��¤�Τ�����Ǥ���
�ƹ�¤�Τϡ�
�ץ������¹Ԥ˥����ƥबɬ�פȤ��롢�����������ξ���򵭽Ҥ��ޤ���
���֥������ȥե������
.Em ��������
�ϡ�1 �İʾ��
.Em ���������
��ޤߤޤ���
�ץ������إå��ϡ�
�¹Բ�ǽ�ե�����ȶ�ͭ���֥������ȥե���������ǰ�̣������ޤ���
�ե�����ϡ�ELF �إå���
.Sy e_phentsize
��
.Sy e_phnum
���ФǤ��켫�ȤΥץ������إå�����������ꤷ�ޤ���
ELF �¹Է����Υإå���Ʊ�ͤˡ�
�ץ������إå��⥢�����ƥ�����˽����ۤʤ�С�����������ޤ�:
.Pp
.Bd -literal -offset indent
typedef struct {
        Elf32_Word      p_type;
        Elf32_Off       p_offset;
        Elf32_Addr      p_vaddr;
        Elf32_Addr      p_paddr;
        Elf32_Size      p_filesz;
        Elf32_Size      p_memsz;
        Elf32_Word      p_flags;
        Elf32_Size      p_align;
} Elf32_Phdr;
.Ed
.Pp
.Bd -literal -offset indent
typedef struct {
        Elf64_Half      p_type;
        Elf64_Half      p_flags;
        Elf64_Off       p_offset;
        Elf64_Addr      p_vaddr;
        Elf64_Addr      p_paddr;
        Elf64_Size      p_filesz;
        Elf64_Size      p_memsz;
        Elf64_Size      p_align;
} Elf64_Phdr;
.Ed
.Pp
32 �ӥåȤ� 64 �ӥåȤΥץ������إå��δ֤μ�ʺ��ϡ�
��¤�����
.Sy p_flags
���Фΰ��֤����Ǥ���
.Pp
.Bl -tag -width "p_offset" -compact -offset indent
.It Dv p_type
��¤�� Phdr �Τ��Υ��Фϡ������������Ǥ����Ҥ��Ƥ��륻�����Ȥμ���򼨤���
�ɤΤ褦���������Ǥ��᤹�٤����򼨤��ޤ���
.Bl -tag -width "PT_DYNAMIC" -compact
.Pp
.It Dv PT_NULL
�����������ǤϻȤäƤ��ޤ��󡣤ޤ���¾�Υ��Ф��ͤ�̤����Ǥ���
����ˤ�ꡢ�ץ������إå����̵�뤵��륨��ȥ����Ƥޤ���
.It Dv PT_LOAD
�����������Ǥϡ������ɲ�ǽ�ʥ������Ȥ���ꤷ�ޤ���
�����
.Sy p_filesz
��
.Sy p_memsz
�ǵ��Ҥ���ޤ���
�ե����뤫��ΥХ��Ȥϡ����ꥻ�����Ȥ���Ƭ�˥ޥåפ���ޤ���
�������ȤΥ��ꥵ����
.Pq Sy p_memsz
���ե����륵����
.Pq Sy p_filesz
����礭���ʤ�С�
.Dq ;ʬ��
�Х��Ȥϡ��� 0 ����äơ�
�������Ȥν�������줿�ΰ��³����Τ��������ޤ���
�ե����륵�����ϡ����ꥵ������ۤ��ƤϤʤ�ޤ���
�ץ������إå��ơ��֥����Υ����ɲ�ǽ��
�������ȥ���ȥ�ϡ�����Ǹ���ޤ���
�����ơ�
.Sy p_vaddr
���Фǥ����Ȥ���ޤ���
.It Dv PT_DYNAMIC
�����������Ǥϡ�ưŪ��󥯾������ꤷ�ޤ���
.It Dv PT_INTERP
�����������Ǥϡ�
���󥿥ץ꥿�Ȥ��Ƶ�ư����̥�ʸ���ǽ����ѥ�̾�ξ����礭������ꤷ�ޤ���
���Υ������ȥ����פϡ��¹Բ�ǽ�ե�����Τߤǰ�̣������ޤ�
(�ܥ������ȥ����פϡ���ͭ���֥���������ˤ��뤫�⤷��ޤ���)��
�ܥ������Ȥϡ��ե��������ʣ����¸�ߤ��ƤϤʤ�ޤ���
¸�ߤ����硢
�������ɲ�ǽ�������ȥ���ȥ����Ԥ���ɬ�פ�����ޤ���
.It Dv PT_NOTE
�����������Ǥϡ��������Τ���˾����礭������ꤷ�ޤ���
.It Dv PT_SHLIB
���Υ������ȥ����פϡ�
ͽ�󤵤�Ƥ��ꡢ��������Ƥ��ʤ����ޥ�ƥ�����������ޤ���
���Υ����פ��������Ǥ�ޤ�ץ������ϡ�ABI �˽����ޤ���
.It Dv PT_PHDR
�����������Ǥ�¸�ߤ����硢
�ե�������ȥ��ꥤ�᡼����ˤ����롢
�ץ������إå��ơ��֥뼫�Ȥΰ��֤��礭������ꤷ�ޤ���
�ܥ������ȥ����פϡ��ե��������ʣ����¸�ߤ��ƤϤʤ�ޤ���
����ˡ�
�ץ������إå��ơ��֥뤬�ץ������Υ��ꥤ�᡼���˴ޤޤ����Τߡ�
¸�ߤ�������ޤ���
¸�ߤ����硢
�������ɲ�ǽ�������ȥ���ȥ����Ԥ���ɬ�פ�����ޤ���
.It Dv PT_LOPROC
�����ͤ���
.Sy PT_HIPROC
�ʲ��ϡ��ץ����å���ͭ�Υ��ޥ�ƥ������Τ����ͽ�󤵤�Ƥ��ޤ���
.It Dv PT_HIPROC
�����ͤ���
.Sy PT_LOPROC
�ʾ�ϡ��ץ����å���ͭ�Υ��ޥ�ƥ������Τ����ͽ�󤵤�Ƥ��ޤ���
.El
.Pp
.It Dv p_offset
���Υ��Фϡ��������Ȥκǽ�ΥХ��ȤؤΡ�
�ե�������Ƭ����Υ��ե��åȤ�����ޤ���
.It Dv p_vaddr
���Υ��Фϡ�
�������Ȥκǽ�ΥХ��Ȥ������¸�ߤ��벾�ۥ��ɥ쥹������ޤ���
.It Dv p_paddr
ʪ�����ɥ�å��󥰤Υ����ƥ��Ǥϡ�
���Υ��Фϡ��������Ȥ�ʪ�����ɥ쥹�Τ����ͽ�󤵤�Ƥ��ޤ���
.Bx
�Ǥϡ��ܥ��ФϻȤ��줺��0 �Ǥ���ɬ�פ�����ޤ���
.It Dv p_filesz
���Υ��Фϡ��������ȤΥե����륤�᡼���ΥХ��ȿ�������ޤ���
0 �Ǥ��뤫�⤷��ޤ���
.It Dv p_memsz
���Υ��Фϡ��������ȤΥ��ꥤ�᡼���ΥХ��ȿ�������ޤ���
0 �Ǥ��뤫�⤷��ޤ���
.It Dv p_flags
���Υ��Фϡ��������Ȥ˴ؤ����ե饰������ޤ���
.Pp
.Bl -tag -width "PF_X" -compact
.It Dv PF_X
�¹Բ�ǽ�������ȡ�
.It Dv PF_W
�񤭹��߲�ǽ�ʥ������ȡ�
.It Dv PF_R
�ɤ߼���ǽ�ʥ������ȡ�
.El
.Pp
�ƥ����ȥ������Ȥϡ����̤˥ե饰
.Sy PF_X
��
.Sy PF_R
������ޤ���
�ǡ����������Ȥϡ����̤�
.Sy PF_X ,
.Sy PF_W
��
.Sy PF_R
������ޤ���
.It Dv p_align
���Υ��Фϡ������椪��ӥե�������ǥ������Ȥ����󤹤٤��ͤ�����ޤ���
�����ɲ�ǽ�ʥץ������ϡ�
.Sy p_vaddr
��
.Sy p_offset
��ڡ����������dz�ä�;���Ŭ�礹���ͤ����ɬ�פ�����ޤ���
0 �� 1 ���ͤϡ�����Ĵ�������פǤ��뤳�Ȥ��̣���ޤ���
�����Ǥʤ���硢
.Sy p_align
�ϡ��� (2 ��������) �Ǥ���ɬ�פ�����ޤ��������ơ�
.Sy p_vaddr
��
.Sy p_offset
��
.Sy p_align
�dz�ä�;���������ɬ�פ�����ޤ���
.El
.Pp
�ե�����Υ��������إå��ơ��֥�ϡ�
���ƤΥե�����Υ��������ΰ��ַ�����ǽ�Ȥ��ޤ���
���������إå��ơ��֥�ϡ�Elf32_Shdr �ޤ��� Elf64_Shdr ��¤�Τ�����Ǥ���
ELF �إå���
.Sy e_shoff
���Фϡ�
���������إå��ơ��֥�Ρ��ե�������Ƭ����ΥХ��ȥ��ե��åȤ�Ϳ���ޤ���
.Sy e_shnum
�ϡ����������إå��ơ��֥�Υ���ȥ��������ޤ���
.Sy e_shentsize
�ϡ��ƥ���ȥ���礭����Х��Ȥǻ����ޤ���
.Pp
���������إå��ơ��֥륤��ǥå����ϡ����������ź���Ǥ���
���������إå��ơ��֥륤��ǥå����ˤϡ�ͽ��Τ�Τ�����ޤ���
���֥������ȥե�����ˤϡ��������̤ʥ���ǥå����ˤϥ�������󤬤���ޤ���:
.Pp
.Bl -tag -width "SHN_LORESERVE" -compact
.It Dv SHN_UNDEF
�����ͤϡ�̤�������¸�ߤ��ʤ�����̵�ط��Ǥ��뤫��
��̣���ʤ���������󻲾Ȥ򼨤��ޤ���
�㤨�С�����������ֹ�
.Sy SHN_UNDEF
���������
.Dq ���
����륷��ܥ�ϡ�̤����Υ���ܥ�Ǥ���
.It Dv SHN_LORESERVE
�����ͤϡ�ͽ��Υ���ǥå������ϰϤβ��¤���ꤷ�ޤ���
.It Dv SHN_LOPROC
�����ͤ���
.Sy SHN_HIPROC
�ʲ��ϡ��ץ����å���ͭ�Υ��ޥ�ƥ������Τ����ͽ�󤵤�Ƥ��ޤ���
.It Dv SHN_HIPROC
�����ͤ���
.Sy SHN_LOPROC
�ʾ�ϡ��ץ����å���ͭ�Υ��ޥ�ƥ������Τ����ͽ�󤵤�Ƥ��ޤ���
.It Dv SHN_ABS
�����ͤϡ��б����뻲�Ȥ������ͤǤ��뤳�Ȥ���ꤷ�ޤ���
�㤨�С�����������ֹ�
.Sy SHN_ABS
��������Ф��������륷��ܥ�ϡ�����Ū�ʿ��ͤ������
�����֤ˤ�äƱƶ�������ޤ���
.It Dv SHN_COMMON
���Υ�������󤫤�����Ф��������륷��ܥ�ϡ����̥���ܥ�Ǥ��ꡢ
Fortran �� COMMON ���ΰ褬���ݤ���Ƥ��ʤ� C �γ����ѿ����������ޤ���
.It Dv SHN_HIRESERVE
�����ͤϡ�ͽ�󥤥�ǥå����ϰϤξ�¤���ꤷ�ޤ���
�����ϰϤϡ�
.Sy SHN_LORESERVE
��
.Sy SHN_HIRESERVE
�δ֤Ǥ��ꡢξü��ޤߤޤ���
���������إå��ơ��֥�ϡ�ͽ��Υ���ǥå����Τ���˥���ȥ��ޤߤޤ���
.El
.Pp
���������إå��ϡ��ʲ��ι�¤�Τ�����ޤ�:
.Bd -literal -offset indent
typedef struct {
	Elf32_Word      sh_name;
	Elf32_Word      sh_type;
	Elf32_Word      sh_flags;
	Elf32_Addr      sh_addr;
	Elf32_Off       sh_offset;
	Elf32_Size      sh_size;
	Elf32_Word      sh_link;
	Elf32_Word      sh_info;
	Elf32_Size      sh_addralign;
	Elf32_Size      sh_entsize;
} Elf32_Shdr;
.Ed
.Pp
.Bd -literal -offset indent
typedef struct {
	Elf64_Half      sh_name;
	Elf64_Half      sh_type;
	Elf64_Size      sh_flags;
	Elf64_Addr      sh_addr;
	Elf64_Off       sh_offset;
	Elf64_Size      sh_size;
	Elf64_Half      sh_link;
	Elf64_Half      sh_info;
	Elf64_Size      sh_addralign;
	Elf64_Size      sh_entsize;
} Elf64_Shdr;
.Ed
.Pp
.Bl -tag -width "sh_addralign" -compact
.It Dv sh_name
���Υ��Фϡ�����������̾������ꤷ�ޤ���
�����ͤϡ����������إå�ʸ����ơ��֥륻�������ؤ�
����ǥå����Ǥ��ꡢ�̥�ʸ���ǽ����ʸ����ξ���Ϳ���ޤ���
.It Dv sh_type
���Υ��Фϡ��������������Ƥȥ��ޥ�ƥ�������ʬ�ष�ޤ���
.Pp
.Bl -tag -width "SHT_PROGBITS" -compact
.It Dv SHT_NULL
�����ͤϡ����������إå����Գ����Ǥ��뤳�Ȥ򼨤��ޤ���
��Ϣ�Ť���줿��������������ޤ���
���������إå���¾�Υ��Фϡ�̤����ͤ�����ޤ���
.It Dv SHT_PROGBITS
���Υ��������ϡ��ץ������ˤ�ä�����������������ޤ���
�ե����ޥåȤȰ�̣�ϡ��ץ����������ˤ�äƤΤ߷��ꤵ��ޤ���
.It Dv SHT_SYMTAB
���Υ��������ϡ�����ܥ�ơ��֥������ޤ���
����Ū�ˡ�
.Sy SHT_SYMTAB
�ϥ�󥯥��ǥ��åȤΤ���Υ���ܥ���󶡤��ޤ���
����Ϥޤ���ưŪ��󥯤ˤ���Ѳ�ǽ�Ǥ���
����ϴ����ʥ���ܥ�ơ��֥�Ǥ��뤿�ᡢ
ưŪ��󥯤Τ���ˤ���ɬ�פ�¿���Υ���ܥ��ޤ��礬����ޤ���
���֥������ȥե�����ϡ�
.Sy SHN_DYNSYM
����������ޤळ�Ȥ��Ǥ��ޤ���
.It Dv SHT_STRTAB
���Υ��������ϡ�ʸ����ơ��֥������ޤ���
���֥������ȥե�����ϡ�ʣ����ʸ����ơ��֥륻��������������ޤ���
.It Dv SHT_RELA
���Υ��������ϡ�����Ū�ʲÿ�����ġ������֥���ȥ������ޤ���
�㤨�С����֥������ȥե������ 32 �ӥåȥ��饹�Υ�����
.Sy Elf32_Rela
���������ޤ���
���֥������Ȥϡ�ʣ���κ����֥���������������ޤ���
.It Dv SHT_HASH
���Υ��������ϡ�����ܥ�ϥå���ơ��֥������ޤ���
ưŪ��󥯤˴�Ϣ���������֥������Ȥϡ�
����ܥ�ϥå���ơ��֥��ޤ�ɬ�פ�����ޤ���
���֥������ȥե�����ϡ�ñ��Υϥå���ơ��֥�Τߤ�������ޤ���
.It Dv SHT_DYNAMIC
���Υ��������ϡ�ưŪ��󥯤Τ���˾��������ޤ���
���֥������ȥե�����ϡ�ñ���ưŪ���������Τߤ�������ޤ���
.It Dv SHT_NOTE
���Υ��������ϡ������Ф�������ˡ�ǥե�����˰��򤹤���������ޤ���
.It Dv SHT_NOBITS
���Υ����פΥ��������ϡ��ե�������ζ��֤���ͭ���ޤ��󤬡�
.Sy SHN_PROGBITS
�˻��Ƥ��ޤ���
���Υ��������ϥХ��Ȥ�ޤߤޤ��󤬡�
.Sy sh_offset
���Фϳ�ǰ��Υե����륪�ե��åȤ�ޤߤޤ���
.It Dv SHT_REL
���Υ��������ϡ�����Ū�ʲÿ�̵���κ����֥��ե��åȤ�����ޤ���
�㤨�С����֥������ȥե������ 32 �ӥåȥ��饹�Υ�����
.Sy Elf32_Rel
���������ޤ���
���֥������ȥե�����ϡ�ʣ���κ����֥���������������ޤ���
.It Dv SHT_SHLIB
���Υ��������ϡ�ͽ�󤵤�Ƥ��ꡢ��������Ƥ��ʤ����ޥ�ƥ�����������ޤ���
.It Dv SHT_DYNSYM
���Υ��������ϡ�ưŪ��󥯥���ܥ�κǾ��Υ��åȤ�����ޤ���
���֥������ȥե�����ϡ�
.Sy SHN_SYMTAB
����������ޤळ�Ȥ��Ǥ��ޤ���
.It Dv SHT_LOPROC
�����ͤ���
.Sy SHT_HIPROC
�ʲ��ϡ��ץ����å���ͭ�Υ��ޥ�ƥ������Τ����ͽ�󤵤�Ƥ��ޤ���
.It Dv SHT_HIPROC
�����ͤ���
.Sy SHT_LOPROC
�ʾ�ϡ��ץ����å���ͭ�Υ��ޥ�ƥ������Τ����ͽ�󤵤�Ƥ��ޤ���
.It Dv SHT_LOUSER
�����ͤϡ����ץꥱ�������ץ������Τ����ͽ�󤵤�Ƥ���
����ǥå����ϰϤβ��¤���ꤷ�ޤ���
.It Dv SHT_HIUSER
�����ͤϡ����ץꥱ�������ץ������Τ����ͽ�󤵤�Ƥ���
����ǥå����ϰϤξ�¤���ꤷ�ޤ���
.Sy SHT_LOUSER
��
.Sy SHT_HIUSER
�δ֤Υ�������󥿥��פϡ�
���ץꥱ�������ˤ�äƻ��Ѳ�ǽ�Ǥ��ꡢ
���ߤޤ��Ͼ���Υ����ƥ������������󥿥��פȾ��ͤ��ޤ���
.El
.Pp
.It Dv sh_flags
���������ϡ���¿��°���򵭽Ҥ��� 1 �ӥåȥե饰�򥵥ݡ��Ȥ��ޤ���
�ե饰�ӥåȤ�
.Sy sh_flags
�ǥ��åȤ����ʤ�С����Υ���������°����
.Dq ����
�ˤʤ�ޤ���
�����Ǥʤ���С�°����
.Dq ����
�Ǥ��뤫�����ƤϤޤ�ޤ���
̤���°���ϡ�0 �˥��åȤ���ޤ���
.Pp
.Bl -tag -width "SHF_EXECINSTR" -compact
.It Dv SHF_WRITE
���������ϡ��ץ������¹Ԥδ֡��񤭹��߲�ǽ�Ǥ���٤��ǡ�����ޤߤޤ���
.It Dv SHF_ALLOC
���������ϡ��ץ������¹Ԥδ֡��������ͭ���ޤ���
���楻�������ˤϡ�
���֥������ȥե�����Υ��ꥤ�᡼����¸�ߤ��ʤ���Τ�����ޤ���
���Τ褦�ʥ��������Ǥϡ�����°���ϥ��դǤ���
.It Dv SHF_EXECINSTR
���������ϡ��¹Բ�ǽ�ʵ�����̿���ޤߤޤ���
.It Dv SHF_MASKPROC
���Υޥ����Ǵޤޤ�����ƤΥӥåȤϡ�
�ץ����å���ͭ�Υ��ޥ�ƥ������Τ���˳��ݤ���ޤ���
.El
.Pp
.It Dv sh_addr
��������󤬥ץ������Υ��ꥤ�᡼���˸�����硢
���Υ��Фϡ����������κǽ�ΥХ��Ȥ�¸�ߤ��륢�ɥ쥹������ޤ���
�����Ǥʤ���硢���Υ��Ф� 0 ��ޤߤޤ���
.It Dv sh_offset
���Υ����ͤϡ�
���Υ��������Ρ��ե�������Ƭ����ΥХ��ȥ��ե��åȤ�Ϳ���ޤ���
1 �ĤΥ�������󥿥��ס����ʤ��
.Sy SHT_NOBITS
�ϡ��ե�������ζ��֤���ͭ������
����
.Sy sh_offset
���Фϡ��ե�������γ�ǰ��ΰ��֤���ꤷ�ޤ���
.It Dv sh_size
���Υ��Фϡ����������ΥХ��ȤǤ��礭��������ޤ���
��������󥿥��פ�
.Sy SHT_NOBITS
�Ǥʤ��¤ꡢ���������ϥե��������
.Sy sh_size
�Х��Ȥ���ͭ���ޤ���
������
.Sy SHT_NOBITS
�Υ��������� 0 �ʳ����礭����������ޤ�����
�ե�������ζ��֤���ͭ���ޤ���
.It Dv sh_link
���Υ��Фϡ�
���������إå��ơ��֥륤��ǥå�����󥯤�����ޤ���
���β��ϡ���������󥿥��װ�¸�Ǥ���
.It Dv sh_info
���Υ��Фϡ�
�ɲþ��������ޤ���
���β��ϡ���������󥿥��װ�¸�Ǥ���
.It Dv sh_addralign
�㴳�Υ��������ˤϡ����ɥ쥹���������󤬤���ޤ���
��������󤬥��֥��ɤ���Ĥʤ�С�
�����ƥ�ϥ��֥��ɶ�����
������������Τ��ݾڤ���ɬ�פ�����ޤ���
.Sy sh_addr
���ͤϡ�
.Sy sh_addralign
�dz�ä��ͤ� 0 �Ȥʤ뤳�Ȥ�ɬ�פǤ���
'\" �����褯�狼���
0 ������ 2 ��沾������������ޤ���0 �ޤ��� 1 ���ͤϡ�
���������ˤ϶��������󤬤ʤ����Ȥ��̣���ޤ���
.It Dv sh_entsize
�㴳�Υ��������ϡ�
����Ĺ����ȥ�Υơ��֥������ޤ���
�㤨�Х���ܥ�ơ��֥뤬����˳������ޤ���
���Τ褦�ʥ��������Τ���ˡ�
���Υ��Фϡ��ƥ���ȥ�ΥХ��ȤǤ��礭����Ϳ���ޤ���
��������󤬸��ꥵ�����Υ���ȥ�Υơ��֥������ʤ��ʤ�С�
���Υ��Ф� 0 ��ޤߤޤ���
.El
.Pp
�͡��ʥ�������󤬡��ץ�������������������ޤ�:
.Bl -tag -width ".shstrtab" -compact
.It .bss
���Υ��������Ͻ��������ʤ��ǡ����������
�ץ������Υ��ꥤ�᡼���ˤʤ�ޤ���
����Ǥϡ�
�ץ�����೫�ϻ��˥����ƥब�ǡ����� 0 ��������ޤ���
���Υ��������ϡ�������
.Sy SHT_NOBITS
�Ǥ���
°�������פϡ�
.Sy SHF_ALLOC
��
.Sy SHF_WRITE
�Ǥ���
.It .comment
���Υ��������ϡ��С������������������ޤ���
���Υ��������ϡ�������
.Sy SHT_PROGBITS
�Ǥ���
°�������פϻȤ��ޤ���
.It .data
���Υ��������Ͻ�������줿�ǡ����������
�ץ������Υ��ꥤ�᡼���ˤʤ�ޤ���
���Υ��������ϡ�������
.Sy SHT_PROGBITS
�Ǥ���
°�������פϡ�
.Sy SHF_ALLOC
��
.Sy SHF_WRITE
�Ǥ���
.It .data1
���Υ��������Ͻ�������줿�ǡ����������
�ץ������Υ��ꥤ�᡼���ˤʤ�ޤ���
���Υ��������ϡ�������
.Sy SHT_PROGBITS
�Ǥ���
°�������פϡ�
.Sy SHF_ALLOC
��
.Sy SHF_WRITE
�Ǥ���
.It .debug
���Υ��������ϡ�����ܥ�å��ǥХå��󥰤Τ���ξ��������ޤ���
���Ƥϡ���������Ƥ��ޤ���
���Υ��������ϡ�������
.Sy SHT_PROGBITS
�Ǥ���
°�������פϻȤ��ޤ���
.It .dynamic
���Υ��������ϡ�ưŪ��󥯾��������ޤ���
����������°���ϡ�
.Sy SHF_ALLOC
�ӥåȤ�ޤߤޤ���
.Sy SHF_WRITE
�ӥåȤ����åȤ���뤫�ݤ��ϡ��ץ����å���¸�Ǥ���
���Υ��������ϡ�������
.Sy SHT_DYNAMIC
�Ǥ���
���°���򸫤Ƥ���������
.It .dynstr
���Υ��������ϡ�ưŪ��󥯤Τ����ɬ�פȤ����ʸ���������ޤ���
�����ư��̤ˤϡ�̾����ɽ������ʸ����Ǥ��ꡢ
����ܥ�ơ��֥륨��ȥ�ȷ���դ����Ƥ��ޤ���
���Υ��������ϡ�������
.Sy SHT_STRTAB
�Ǥ���
�Ȥ���°�������פϡ�
.Sy SHF_ALLOC
�Ǥ���
.It .dynsym
���Υ��������ϡ�ưŪ��󥯥���ܥ�ơ��֥������ޤ���
���Υ��������ϡ�������
.Sy SHT_DYNSYM
�Ǥ���
�Ȥ���°���ϡ�
.Sy SHF_ALLOC
�Ǥ���
.It .fini
���Υ��������ϡ��ץ�������λ�����ɤμ¹Բ�ǽ̿�������ޤ���
�ץ����������ェλ���ˡ�
�����ƥ�Ϥ��Υ��������Υ����ɤ�¹Ԥ��ޤ���
���Υ��������ϡ�������
.Sy SHT_PROGBITS
�Ǥ���
�Ȥ���°���ϡ�
.Sy SHF_ALLOC
��
.Sy SHF_EXECINSTR
�Ǥ���
.It .got
���Υ��������ϡ��������Х륪�ե��åȥơ��֥������ޤ���
���Υ��������ϡ�������
.Sy SHT_PROGBITS
�Ǥ���
°���ϡ��ץ����å���¸�Ǥ���
.It .hash
���Υ��������ϡ�����ܥ�ϥå���ơ��֥������ޤ���
���Υ��������ϡ�������
.Sy SHT_HASH
�Ǥ���
�Ȥ���°���ϡ�
.Sy SHF_ALLOC
�Ǥ���
.It .init
���Υ��������ϡ��ץ���������������ɤμ¹Բ�ǽ̿�������ޤ���
�ץ������¹Գ��ϻ��ˡ�
�ᥤ��ץ�����२��ȥ�ݥ���Ȥ�ƤӽФ����ˡ�
�����ƥ�Ϥ��Υ��������Υ����ɤ�¹Ԥ��ޤ���
���Υ��������ϡ�������
.Sy SHT_PROGBITS
�Ǥ���
�Ȥ���°���ϡ�
.Sy SHF_ALLOC
��
.Sy SHF_EXECINSTR
�Ǥ���
.It .interp
���Υ��������ϡ��ץ�����।�󥿥ץ꥿�Υѥ�̾������ޤ���
�ե����뤬���Υ���������ޤ�����ɲ�ǽ�ʥ������Ȥ���Ĥʤ�С�
����������°����
.Sy SHF_ALLOC
�ӥåȤ�ޤߤޤ���
�����Ǥʤ���硢���ΥӥåȤϥ��դǤ���
���Υ��������ϡ�������
.Sy SHT_PROGBITS
�Ǥ���
.It .line
���Υ��������ϥ���ܥ�å��ǥХå��󥰤Τ���˹��ֹ���������ޤ���
����ϡ��ץ�����ॽ�����ȥޥ��󥳡��ɤδ֤δط��򵭽Ҥ��ޤ���
���Ƥϡ���������Ƥ��ޤ���
���Υ��������ϡ�������
.Sy SHT_PROGBITS
�Ǥ���
°�������פϻȤ��ޤ���
.It .note
���Υ��������ϡ����ǵ��Ҥ����
.Dq Note Section
�ե����ޥåȤǡ����������ޤ���
���Υ��������ϡ�������
.Sy SHT_NOTE
�Ǥ���
°�������פϻȤ��ޤ���
.It .plt
���Υ��������ϡ��ץ����������󥱡����ơ��֥������ޤ���
���Υ��������ϡ�������
.Sy SHT_PROGBITS
�Ǥ���
°���ϥץ����å���¸�Ǥ���
.It .relNAME
���Υ��������ϡ������Τ褦�˺����־��������ޤ���
�ե����뤬�����֤�ޤ�����ɲ�ǽ�ʥ������Ȥ���Ĥʤ�С�
����������°����
.Sy SHF_ALLOC
�ӥåȤ�ޤߤޤ���
�����Ǥʤ���硢���ΥӥåȤϥ��դǤ���
����ˤ�ꡢ�����֤���륻������󤫤�
.Dq NAME
��Ϳ�����ޤ���
.Sy .text
�Τ���κ����֥��������ϡ��̾�̾��
.Sy .rel.text
������ޤ���
���Υ��������ϡ�������
.Sy SHT_REL
�Ǥ���
.It .relaNAME
���Υ��������ϡ������Τ褦�˺����־��������ޤ���
�ե����뤬�����֤�ޤ�����ɲ�ǽ�ʥ������Ȥ���Ĥʤ�С�
����������°����
.Sy SHF_ALLOC
�ӥåȤ�ޤߤޤ���
�����Ǥʤ���硢���ΥӥåȤϥ��դǤ���
����ˤ�ꡢ�����֤���륻������󤫤�
.Dq NAME
��Ϳ�����ޤ���
.Sy .text
�Τ���κ����֥��������ϡ��̾�̾��
.Sy .rela.text
������ޤ���
���Υ��������ϡ�������
.Sy SHT_RELA
�Ǥ���
.It .rodata
���Υ����������ɤ߼�����ѥǡ����������
ŵ��Ū�ˤϥץ��������᡼���ν񤭹����Բĥ������Ȥˤʤ�ޤ���
���Υ��������ϡ�������
.Sy SHT_PROGBITS
�Ǥ���
�Ȥ���°���ϡ�
.Sy SHF_ALLOC
�Ǥ���
.It .rodata1
���Υ����������ɤ߼�����ѥǡ����������
ŵ��Ū�ˤϥץ��������᡼���ν񤭹����Բĥ������Ȥˤʤ�ޤ���
���Υ��������ϡ�������
.Sy SHT_PROGBITS
�Ǥ���
�Ȥ���°���ϡ�
.Sy SHF_ALLOC
�Ǥ���
.It .shstrtab
���Υ��������ϥ��������̾������ޤ���
���Υ��������ϡ�������
.Sy SHT_STRTAB
�Ǥ���
°�������פϻȤ��ޤ���
.It .strtab
���Υ���������ʸ���������ޤ���
����Ū�ˤ�̾����ɽ������ʸ����Ǥ��ꡢ
����ܥ�ơ��֥륨��ȥ�ȷ���դ����Ƥ��ޤ���
�ե����뤬����ܥ�ʸ����ơ��֥��ޤ�����ɲ�ǽ�ʥ������Ȥ���Ĥʤ�С�
����������°����
.Sy SHF_ALLOC
�ӥåȤ�ޤߤޤ���
�����Ǥʤ���硢���ΥӥåȤϥ��դǤ���
���Υ��������ϡ�������
.Sy SHT_STRTAB
�Ǥ���
.It .symtab
���Υ��������ϡ�����ܥ�ơ��֥������ޤ���
�ե����뤬����ܥ�ơ��֥��ޤ�����ɲ�ǽ�ʥ������Ȥ���Ĥʤ�С�
����������°����
.Sy SHF_ALLOC
�ӥåȤ�ޤߤޤ���
�����Ǥʤ���硢���ΥӥåȤϥ��դǤ���
���Υ��������ϡ�������
.Sy SHT_SYMTAB
�Ǥ���
.It .text
���Υ��������ϡ��ץ�������
.Dq �ƥ�����
�����ʤ���¹Բ�ǽ̿�������ޤ���
���Υ��������ϡ�������
.Sy SHT_PROGBITS
�Ǥ���
�Ȥ���°���ϡ�
.Sy SHF_ALLOC
��
.Sy SHF_EXECINSTR
�Ǥ���
.It .jcr
���Υ��������ϡ���Ͽ�����ɬ�פ����� Java ���饹�ξ��������ޤ���
.It .eh_frame
���Υ��������ϡ�C++ �㳰�����˻��Ѥ������������ޤ���
.El
.Pp
ʸ����ơ��֥륻�������ϡ��̥�ʸ���ǽ����ʸ���������󥹷�������ޤ���
�����ϡ����̤�ʸ����ȸƤФ�ޤ���
���֥������ȥե�����ϡ�
����ܥ�ȥ��������̾��ɽ�����뤿��ˤ�����ʸ�����Ȥ��ޤ���
ʸ����ơ��֥륻�������Υ���ǥå����Ȥ��ơ�ʸ����򻲾Ȥ��ޤ���
�ǽ�ΥХ��� (����ǥå��� 0) �ϡ�
ñ��Υ̥�ʸ������Ĥ��������ޤ���
Ʊ�ͤˡ�ʸ����ơ��֥�κǽ��Х��Ȥϥ̥�ʸ���Ǥ�����������Τǡ�
ʸ�������Τ��ʥ뽪ü����Ƥ��뤳�Ȥ��ݾڤ��ޤ���
.Pp
���֥������ȥե�����Υ���ܥ�ơ��֥�ϡ�
�ץ������Υ���ܥ�����Ȼ��Ȥΰ��ַ����ɬ�פʾ�����ݻ����ޤ���
����ܥ�ơ��֥륤��ǥå����ϡ����������ź���Ǥ���
.Pp
.Bd -literal -offset indent
typedef struct {
	Elf32_Word      st_name;
	Elf32_Addr      st_value;
	Elf32_Size      st_size;
	unsigned char   st_info;
	unsigned char   st_other;
	Elf32_Half      st_shndx;
} Elf32_Sym;
.Ed
.Pp
.Bd -literal -offset indent
typedef struct {
	Elf64_Half      st_name;
	unsigned char   st_info;
	unsigned char   st_other;
	Elf64_Quarter   st_shndx;
	Elf64_Addr      st_value;
	Elf64_Size      st_size;
} Elf64_Sym;
.Ed
.Pp
.Bl -tag -width "st_value" -compact
.It Dv st_name
���Υ��Фϡ����֥������ȥե������
����ܥ�ʸ����ơ��֥�ؤΥ���ǥå���������ޤ���
����ܥ�ʸ����ơ��֥�ϡ�����ܥ�̾��ʸ��ɽ��������ޤ���
�ͤ� 0 �ʳ��Ǥ���ʤ�С�
����ϥ���ܥ�̾��Ϳ����ʸ����ơ��֥륤��ǥå����򼨤��ޤ���
�����Ǥʤ���硢����ܥ�ơ��֥�ˤ�̾��������ޤ���
.It Dv st_value
���Υ��Фϡ���Ϣ��������ܥ���ͤ�Ϳ���ޤ���
.It Dv st_size
¿���Υ���ܥ�ϡ���Ϣ�����礭��������ޤ���
����ܥ�ˤ��礭����̵����̤�ΤǤ����硢���Υ��Ф� 0 �Ǥ���
.It Dv st_info
���Υ��Фϡ�����ܥ�Υ����פ�«��°������ꤷ�ޤ�:
.Pp
.Bl -tag -width "STT_SECTION" -compact
.It Dv STT_NOTYPE
����ܥ�Υ����פϡ��������ޤ���
.It Dv STT_OBJECT
����ܥ�ϡ��ǡ������֥������Ȥȷ���դ����Ƥ��ޤ���
.It Dv STT_FUNC
����ܥ�ϡ��ؿ��ޤ���¾�μ¹Բ�ǽ�����ɤȷ���դ����Ƥ��ޤ���
.It Dv STT_SECTION
����ܥ�ϡ����������ȷ���դ����Ƥ��ޤ���
���Υ����פΥ���ܥ�ơ��֥륨��ȥ�ϡ�
��˺����֤Τ����¸�ߤ��ơ��̾�
.Sy STB_LOCAL
«��������ޤ���
.It Dv STT_FILE
����ˤ�ꡢ����ܥ��̾���ϡ�
���֥������ȥե�����ȴ�Ϣ���륽�����ե������̾����Ϳ���ޤ���
¸�ߤ����硢�ե����륷��ܥ��
.Sy STB_LOCAL
«������������Υ�������󥤥�ǥå�����
.Sy SHN_ABS
�Ǥ��ꡢ
����ϥե������¾��
.Sy STB_LOCAL
����ܥ����Ԥ��ޤ���
.It Dv STT_LOPROC
�����ͤ���
.Sy STT_HIPROC
�ʲ��ϡ��ץ����å��˸�ͭ�Υ��ޥ�ƥ������Τ����ͽ�󤵤�Ƥ��ޤ���
.It Dv STT_HIPROC
�����ͤ���
.Sy STT_LOPROC
�ʾ�ϡ��ץ����å��˸�ͭ�Υ��ޥ�ƥ������Τ����ͽ�󤵤�Ƥ��ޤ���
.El
.Pp
.Bl -tag -width "STB_GLOBAL" -compact
.It Dv STB_LOCAL
��������ʥ���ܥ�ϡ�
�����������ޤ�Ǥ��륪�֥������ȥե�����γ�¦�ˤϡ������ޤ���
Ʊ��̾���Υ�������ʥ���ܥ�ϡ�
���ߤ��Τ���ޤ򤹤뤳�Ȥʤ�ʣ���ե������¸�ߤ����ޤ���
.It Dv STB_GLOBAL
�������Х륷��ܥ�ϡ���礵��Ƥ������ƤΥ��֥������ȥե����뤫�鸫���ޤ���
����ե�����ˤ�륰�����Х륷��ܥ������ϡ�
�̥ե������Ʊ������ܥ��̤������Ȥ���­�����ޤ���
.It Dv STB_WEAK
�夤����ܥ�ϥ������Х륷��ܥ�˻��Ƥ��ޤ���
������������������㤤ͥ���̤�����ޤ���
.It Dv STB_LOPROC
�����ͤ���
.Sy STB_HIPROC
�ʲ��ϡ��ץ����å��˸�ͭ�Υ��ޥ�ƥ������Τ����ͽ�󤵤�Ƥ��ޤ���
.It Dv STB_HIPROC
�����ͤ���
.Sy STB_LOPROC
�ʾ�ϡ��ץ����å��˸�ͭ�Υ��ޥ�ƥ������Τ����ͽ�󤵤�Ƥ��ޤ���
.Pp
«���ȥ����ץե�����ɤΥѥå�����ӥ���ѥå��ѤΥޥ���������ޤ�:
.Pp
.Bl -tag -width "ELF32_ST_INFO(bind, type)" -compact
.It Xo
.Fn ELF32_ST_BIND info
.Xc
�ޤ���
.Fn ELF64_ST_BIND info
�ϡ�«���� st_info �ͤ�����Ф��ޤ���
.It Xo
.Fn ELF64_ST_TYPE info
.Xc
�ޤ���
.Fn ELF32_ST_TYPE info
�ϡ������פ� st_info �ͤ�����Ф��ޤ���
.It Xo
.Fn ELF32_ST_INFO bind type
.Xc
�ޤ���
.Fn ELF64_ST_INFO bind type
�ϡ�«���ȥ����פ� st_info �ͤ��Ѵ����ޤ���
.El
.El
.Pp
.It Dv st_other
���Υ��Фϡ����� 0 �������������줿��̣������ޤ���
.It Dv st_shndx
�����륷��ܥ�ơ��֥륨��ȥ�ϡ�
�ʤ�餫�Υ��������˴ؤ���
.Dq �������Ƥ��ޤ�
��
���Υ��Фϡ���Ϣ���륻�������إå��ơ��֥륤��ǥå���������ޤ���
.El
.Pp
�����֤ϡ�����ܥ뻲�Ȥȥ���ܥ��������³��������Ǥ���
�����ֲ�ǽ�ʥե�����ϡ������Υ�����������Ƥ�
������ˡ�򵭽Ҥ����������ɬ�פ�����ޤ���
���Τ褦�ˤ��ơ��¹Բ�ǽ�ե�����ȶ�ͭ���֥������ȥե����뤬��
�ץ������Υץ�����।�᡼���Τ�����������������Ƥޤ���
�����֥���ȥ�ϡ������Υǡ����Ǥ���
.Pp
�ÿ���ɬ�פȤ��ʤ������ֹ�¤��:
.Pp
.Bd -literal -offset indent
typedef struct {
	Elf32_Addr      r_offset;
	Elf32_Word      r_info;
} Elf32_Rel;
.Ed
.Bd -literal -offset indent
typedef struct {
	Elf64_Addr      r_offset;
	Elf64_Size      r_info;
} Elf64_Rel;
.Ed
.Pp
�ÿ���ɬ�פȤ�������ֹ�¤��:
.Pp
.Bd -literal -offset indent
typedef struct {
	Elf32_Addr      r_offset;
	Elf32_Word      r_info;
	Elf32_Sword     r_addend;
} Elf32_Rela;
.Ed
.Bd -literal -offset indent
typedef struct {
	Elf64_Addr      r_offset;
	Elf64_Size      r_info;
	Elf64_Off       r_addend;
} Elf64_Rela;
.Ed
.Pp
.Bl -tag -width "r_offset" -compact
.It Dv r_offset
���Υ��Фϡ�������ư���Ŭ�Ѥ������Ϳ���ޤ���
�����ֲ�ǽ�ʥե�����Ǥϡ�
�ͤϡ������֤ˤ�äƱƶ�������뵭��ñ�̤�
�����������Ƭ����ΥХ��ȥ��ե��åȤǤ���
�¹Բ�ǽ�ե�����ޤ��϶��ѥ��֥������ȤǤϡ�
�ͤϡ������֤ˤ�äƱƶ�������뵭��ñ�̤β��ۥ��ɥ쥹�Ǥ���
.It Dv r_info
���Υ��Фϡ�
�����֤���륷��ܥ�ơ��֥륤��ǥå����ȡ�
���Ѥ�������֤Υ����פ�Ϳ���ޤ���
�����֥����פϡ��ץ����å���¸�Ǥ���
�ƥ����Ȥ������֥���ȥ�κ����֥����פޤ���
����ܥ�ơ��֥륤��ǥå����򻲾Ȥ���Ȥ���
����ȥ��
.Sy r_info
���Ф��Ф������줾��
.Sy ELF_[32|64]_R_TYPE
�ޤ���
.Sy ELF[32|64]_R_SYM
��Ŭ�Ѥ����̤��̣���Ƥ��ޤ���
.It Dv r_addend
���Υ��Фϡ�����βÿ�����ꤷ�ޤ���
����ϡ������ֲ�ǽ�ʥե�����ɤ�
��Ǽ������ͤ�׻����뤿��˻��Ѥ���ޤ���
.El
.Sh ��Ϣ����
.Xr as 1 ,
.Xr gdb 1 ,
.Xr ld 1 ,
.Xr objdump 1 ,
.Xr execve 2 ,
.Xr core 5
.Rs
.%A Hewlett Packard
.%B Elf-64 Object File Format
.Re
.Rs
.%A Santa Cruz Operation
.%B System V Application Binary Interface
.Re
.Rs
.%A Unix System Laboratories
.%T Object Files
.%B "Executable and Linking Format (ELF)"
.Re
.Sh ���
ELF �إå��ե�����ϡ�
.Fx 2.2.6
���о줷�ޤ�����
ELF ���Ȥϡ��ǽ��
.At V
���о줷�ޤ�����
ELF �ե����ޥåȤϡ�ɸ��Ȥ��ƺ��Ѥ���Ƥ��ޤ���
.Sh ���
���Υޥ˥奢��ڡ����ϡ�BSDi ��
.Bsx
.Xr elf 5
�Υޥ˥奢��ڡ����˿�ȯ����ơ�
.An Jeroen Ruigrok van der Werven
.Aq [email protected]
���񤭤ޤ�����