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]
���ޤ�����