名 前
elf − 実 行 可 能 リ ン ク フ ォ ー マ ッ ト (ELF) フ ァ イ ル の フ ォ ー マ ッ ト
書 式
#include <elf.h>
説 明
ヘ ッ ダ ー フ ァ イ ル <elf.h> は ELF 実 行 可 能 バ イ ナ リ フ ァ イ ル の フ ォ ー マ ッ ト を 定 義 す る 。 こ れ ら の フ ァ イ ル と し て は 、 通 常 の 実 行 可 能 フ ァ イ ル ・ 再 配 置 可 能 オ ブ ジ ェ ク ト フ ァ イ ル ・ コ ア フ ァ イ ル ・ 共 有 ラ イ ブ ラ リ が あ る 。
ELF フ ァ イ ル フ ォ ー マ ッ ト を 使 う 実 行 可 能 フ ァ イ ル は 、 ELF ヘ ッ ダ ー の 後 に プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル ま た は セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル (ま た は そ の 両 方 ) が 続 く 構 成 で あ る 。 ELF ヘ ッ ダ ー は 常 に フ ァ イ ル の オ フ セ ッ ト 0 に あ る 。 プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル と セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の フ ァ イ ル 内 で の オ フ セ ッ ト は 、 ELF ヘ ッ ダ ー に 定 義 さ れ て い る 。 こ の 2 つ の テ ー ブ ル は フ ァ イ ル の 残 り の 部 分 の 詳 細 を 記 述 す る 。 こ の ヘ ッ ダ ー フ ァ イ ル は 上 記 の ヘ ッ ダ ー を C 言 語 の 構 造 体 で 記 述 し 、 ま た 動 的 セ ク シ ョ ン ・ 再 配 置 可 能 セ ク シ ョ ン ・ シ ン ボ ル テ ー ブ ル の 構 造 体 も 含 ん で い る 。 以 下 の 型 は N ビ ッ ト ア ー キ テ ク チ ャ ー で 使 わ れ る (N=32,64 で あ り ElfN は Elf32 ま た は Elf64 を 表 し 、 uintN_t は uint32_t ま た は uint64_t を 表 す ):
ElfN_Addr
符 号 な し の プ
ロ グ ラ ム ア ド
レ ス , uintN_t
ElfN_Off 符 号 な し の
フ ァ イ ル オ フ
セ ッ ト , uintN_t
ElfN_Section 符 号 な し の
セ ク シ ョ ン イ
ン デ ッ ク ス , uint16_t
ElfN_Versym 符 号 な し の
バ ー ジ ョ ン シ
ン ボ ル 情 報 , uint16_t
Elf_Byte unsigned char
ElfN_Half uint16_t
ElfN_Sword int32_t
ElfN_Word uint32_t
ElfN_Sxword int64_t
ElfN_Xword uint64_t
(注 意 : *BSD で の 用 語 は 少 し 異 な る 。 Elf64_Half は Elf32_Half の 2 倍 で あ り 、 Elf64Quarter が uint16_t に 用 い ら れ る 。 混 乱 を 避 け る た め 、 以 下 で は 、 こ れ ら の 型 は サ イ ズ が 自 明 な 型 に 置 き 換 え て あ る 。 ) こ の フ ァ イ ル フ ォ ー マ ッ ト が 定 義 す る 全 て の デ ー タ 構 造 体 は 、 関 連 す る ク ラ ス の "自 然 な " サ イ ズ と 配 置 の 指 針 に 従 う 。 必 要 な 場 合 、 デ ー タ 構 造 体 で は 明 示 的 な パ デ ィ ン グ (padding, 詰 め 込 み ) が 行 な わ れ る 。 こ れ は 4 バ イ ト オ ブ ジ ェ ク ト に 対 す る 4 バ イ ト 配 置 を 保 証 す る た め や 、 構 造 体 の サ イ ズ を 4 の 倍 数 に す る た め な ど で あ る 。
ELF ヘ ッ ダ ー は 型 Elf32_Ehdr ま た は Elf64_Ehdr で 記 述 さ れ る :
#define EI_NIDENT 16
typedef struct
{
unsigned char e_ident[EI_NIDENT];
uint16_t e_type;
uint16_t e_machine;
uint32_t e_version;
ElfN_Addr e_entry;
ElfN_Off e_phoff;
ElfN_Off e_shoff;
uint32_t e_flags;
uint16_t e_ehsize;
uint16_t e_phentsize;
uint16_t e_phnum;
uint16_t e_shentsize;
uint16_t e_shnum;
uint16_t e_shstrndx; }
ElfN_Ehdr; フ ィ ー ル ド
は 以 下 の 意 味
を 持 つ :
e_ident こ の バ イ ト 配 列 は 、 プ ロ セ ッ サ や フ ァ イ ル の 他 の 部 分 に は 依 存 せ ず に 、 フ ァ イ ル を 解 釈
(interpret) す る た め に 指 定 さ れ る 。 こ の 配 列 内 の す べ て の も の は 、 接 頭 辞 EI_ で 始 ま る マ ク ロ の 名 前 が 付 き 、 接 頭 辞 ELF で 始 ま る 値 を 持 つ 。 以 下 の マ ク ロ が 定 義 さ れ て い る :
EI_MAG0 マ ジ ッ ク ナ ン バ ー の 第
1 バ イ ト 。 ELFMAG0 で 埋 め
な け れ ば な ら な い 。 (0: 0x7f)
EI_MAG1 マ ジ ッ ク ナ ン バ ー の 第
2 バ イ ト 。 ELFMAG1 で 埋 め
な け れ ば な ら な い 。 (1: 'E')
EI_MAG2 マ ジ ッ ク ナ ン バ ー の 第
3 バ イ ト 。 ELFMAG2 で 埋 め
な け れ ば な ら な い 。 (2: 'L')
EI_MAG3 マ ジ ッ ク ナ ン バ ー の 第
4 バ イ ト 。 ELFMAG3 で 埋 め
な け れ ば な ら な い 。 (3: 'F')
EI_CLASS 第
5 バ イ ト は 、 こ の バ イ ナ リ の ア ー キ テ ク チ ャ ー を
示 す :
ELFCLASSNONE こ の ク ラ ス は 不 正 で あ る 。
ELFCLASS32
32 ビ ッ ト ア ー キ テ ク チ ャ ー を 定 義 す る 。 フ ァ イ ル と 仮 想 ア ド レ ス 空 間 が 4 ギ ガ バ イ ト ま で の マ シ ン を サ ポ ー ト す る 。
ELFCLASS64
64 ビ ッ ト ア ー キ テ ク チ ャ ー を 定 義 す る 。
EI_DATA 第
6 バ イ ト は フ ァ イ ル 内 の プ ロ セ ッ サ 固 有 デ ー タ の デ ー タ エ ン コ ー デ ィ ン グ を 指 定 す る 。 現 在 の と こ ろ 以 下 の エ ン コ ー デ ィ ン グ が サ ポ ー ト さ れ て い る :
ELFDATANONE 不 明 な デ ー タ フ ォ ー マ ッ ト 。
ELFDATA2LSB
2 の 補 数 、 リ ト ル エ ン デ ィ ア ン 。
ELFDATA2MSB
2 の 補 数 、 ビ ッ グ エ ン デ ィ ア ン 。
EI_VERSION 第
7 バ イ ト は ELF 仕 様 の バ ー ジ ョ ン 番 号 で あ る :
EV_NONE 不 正 な バ ー ジ ョ ン 。
EV_CURRENT 現 在 の バ ー ジ ョ ン 。
EI_OSABI 第
8 バ イ ト は オ ブ ジ ェ ク ト の タ ー ゲ ッ ト と な る オ ペ レ ー テ ィ ン グ シ ス テ ム と ABI を 示 す 。 他 の ELF 構 造 体 の フ ィ ー ル ド に は 、 プ ラ ッ ト フ ォ ー ム 固 有 の 意 味 を 持 つ フ ラ グ や 値 を 持 つ も の も あ る 。 こ れ ら の フ ィ ー ル ド の 解 釈 は 、 こ の バ イ ト の 値 に よ っ て 決 定 さ れ る 。 以 下 に 例 を 挙 げ る 。
ELFOSABI_NONE
ELFOSABI_SYSV と 同 じ 。
ELFOSABI_SYSV
UNIX System V ABI.
ELFOSABI_HPUX
HP−UX ABI.
ELFOSABI_NETBSD
NetBSD ABI.
ELFOSABI_LINUX
Linux ABI.
ELFOSABI_SOLARIS
Solaris ABI.
ELFOSABI_IRIX
IRIX ABI.
ELFOSABI_FREEBSD
FreeBSD ABI.
ELFOSABI_TRU64
TRU64 UNIX ABI.
ELFOSABI_ARM
ARM ア ー キ テ ク チ ャ ー ABI.
ELFOSABI_STANDALONE
ス タ ン ド ア ロ ン (組 み 込 み ) ABI.
EI_ABIVERSION 第 9 バ イ ト は オ ブ ジ ェ ク ト が タ ー ゲ ッ ト と し て い る ABI の バ ー ジ ョ ン を 示 す 。 こ の フ ィ ー ル ド は 互 換 性 の な い ABI の バ ー ジ ョ ン を 区 別 す る た め に 使 わ れ る 。 こ の バ ー ジ ョ ン 番 号 の 解 釈 は 、 EI_OSABI フ ィ ー ル ド で 識 別 さ れ る ABI に 依 存 す る 。 こ の 仕 様 に 準 拠 す る ア プ リ ケ ー シ ョ ン で は 、 値 0 を 使 う 。
EI_PAD パ デ ィ ン グ の 開 始 。 こ れ ら の バ イ ト は 予 約 さ れ て お り 、
0 に 設 定 さ れ て い る 。 こ れ ら を 読 み 込 む プ ロ グ ラ ム は 、 こ れ ら の バ イ ト を 無 視 す べ き で あ る 。 現 在 使 わ れ て い な い バ イ ト に 意 味 が 与 え ら れ る 場 合 、 EI_PAD の 値 は 将 来 変 更 さ れ る か も し れ な い 。
EI_NIDENT
e_ident 配 列 の サ イ ズ 。
e_type こ の 構 造 体 の
メ ン バ は オ ブ ジ ェ ク ト フ ァ イ ル タ イ プ を 示 す :
ET_NONE 不 明 な タ イ プ 。
ET_REL 再 配 置 可 能 フ ァ イ ル 。
ET_EXEC 実 行 可 能 フ ァ イ ル 。
ET_DYN 共 有 オ ブ ジ ェ ク ト 。
ET_CORE コ ア フ ァ イ ル 。
e_machine こ の メ ン バ は 個
々 の フ ァ イ ル に 必 要 と さ れ る ア ー キ テ ク チ ャ ー を 指 定 す る 。 例 :
EM_NONE 不 明 な マ シ ン 。
EM_M32
AT&T WE 32100.
EM_SPARC
Sun Microsystems SPARC.
EM_386
Intel 80386.
EM_68K
Motorola 68000.
EM_88K
Motorola 88000.
EM_860
Intel 80860.
EM_MIPS
MIPS RS3000 (ビ ッ グ エ ン デ ィ ア ン の み )。
EM_PARISC
HP/PA.
EM_SPARC32PLUS 拡 張 命 令 セ ッ ト 付 き SPARC。
EM_PPC
PowerPC.
EM_PPC64
PowerPC 64−bit.
EM_S390
IBM S/390
EM_ARM
Advanced RISC Machines
EM_SH
Renesas SuperH
EM_SPARCV9
SPARC v9 64−bit.
EM_IA_64
Intel Itanium
EM_X86_64
AMD x86−64
EM_VAX
DEC Vax.
e_version こ の メ ン バ は
フ ァ イ ル バ ー ジ ョ ン を 示 す :
EV_NONE 不 正 な バ ー ジ ョ ン 。
EV_CURRENT 現 在 の バ ー ジ ョ ン 。
e_entry こ の メ ン バ は 、 シ ス テ ム が 最 初 に 制 御 を 渡 す 、 つ ま り プ ロ セ ス を 開 始 す る 仮 想 ア ド レ ス を 指 定 す る 。 フ ァ イ ル に エ ン ト リ ー ポ イ ン ト が 関 連 付 け ら れ て い な い 場 合 、 こ の メ ン バ に は
0 が 入 る 。
e_phoff こ の メ ン バ は プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル の フ ァ イ ル オ フ セ ッ ト
(バ イ ト 単 位 ) を 保 持 す る 。 フ ァ イ ル に プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル が な い 場 合 、 こ の メ ン バ に は 0 が 入 る 。
e_shoff こ の メ ン バ は セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の フ ァ イ ル オ フ セ ッ ト
(バ イ ト 単 位 ) を 保 持 す る 。 フ ァ イ ル に セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル が な い 場 合 、 こ の メ ン バ に は 0 が 入 る 。
e_flags こ の メ ン バ は フ ァ イ ル に 関 連 付 け ら れ た プ ロ セ ッ サ 固 有 の フ ラ グ を 保 持 す る 。 フ ラ グ の 名 前 は
EF_’machine_flag’ と い う 形 式 で あ る 。 現 在 の と こ ろ フ ラ グ は 定 義 さ れ て い な い 。
e_ehsize こ の メ ン バ は
ELF ヘ ッ ダ ー サ イ ズ (バ イ ト 単 位 ) を 保 持 す る 。
e_phentsize こ の メ ン バ は こ
の フ ァ イ ル の プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル の 1 エ ン ト リ ー あ た り の サ イ ズ (バ イ ト 単 位 ) を 保 持 す る ; 全 て の エ ン ト リ ー は 同 じ サ イ ズ で あ る 。
e_phnum
こ の メ ン バ は プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル に あ る エ ン ト リ ー の 数 を 保 持 す る 。 よ っ て e_phentsize と e_phnum の 積 が テ ー ブ ル サ イ ズ (バ イ ト 単 位 ) に な る 。 フ ァ イ ル に プ ロ グ ラ ム ヘ ッ ダ ー が な い 場 合 、 e_phnum は 値 0 を 保 持 す る 。 プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル の エ ン ト リ ー 数 が PN_XNUM (0xffff) 以 上 の 場 合 、 こ の メ ン バ は PN_XNUM (0xffff) に な り 、 プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル の エ ン ト リ ー の 実 際 の 数 は 、 セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の 最 初 の エ ン ト リ ー の sh_info メ ン バ に 格 納 さ れ る 。 そ れ 以 外 の 場 合 、 セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の 最 初 の エ ン ト リ ー の sh_info メ ン バ に は 値 0 が 格 納 さ れ る 。
PN_XNUM
e_phnum が 保 持 で き る 最 大 値 を 表 し 、 0xffff に 定 義 さ れ て い る 。 e_phnum は プ ロ グ ラ ム ヘ ッ ダ ー の 実 際 の 数 が ど こ に 割 り 当 て ら れ て い る か を 示 す 。
e_shentsize こ の メ ン バ
は セ ク シ ョ ン ヘ ッ ダ ー の サ イ ズ (バ イ ト 単 位 ) を 保 持 す る 。 セ ク シ ョ ン ヘ ッ ダ ー は セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の 1 つ の エ ン ト リ ー で あ る ; 全 て の エ ン ト リ ー は 同 じ サ イ ズ で あ る 。
e_shnum
こ の メ ン バ は セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル に あ る エ ン ト リ ー の 数 を 保 持 す る 。 よ っ て e_shentsize と e_shnum の 積 は セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の サ イ ズ (バ イ ト 単 位 ) に な る 。 フ ァ イ ル に セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル が な い 場 合 、 e_shnum は 値 0 を 保 持 す る 。 セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の エ ン ト リ ー 数 が SHN_LORESERVE (0xff00) 以 上 の 場 合 、 e_shnum に は 値 0 が 入 り 、 セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の エ ン ト リ ー の 実 際 の 数 は セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の 最 初 の エ ン ト リ ー の sh_size メ ン バ に 格 納 さ れ る 。 そ れ 以 外 の 場 合 、 セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の 最 初 の エ ン ト リ ー の sh_info メ ン バ に は 値 0 が 格 納 さ れ る 。
e_shstrndx
こ の メ ン バ は セ ク シ ョ ン 名 文 字 列 テ ー ブ ル に 関 連 付 け ら れ た エ ン ト リ ー の セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル イ ン デ ッ ク ス を 保 持 す る 。 フ ァ イ ル に セ ク シ ョ ン 名 文 字 列 テ ー ブ ル が な い 場 合 、 こ の メ ン バ は 値 SHN_UNDEF を 保 持 す る 。 SHN_UNDEF. セ ク シ ョ ン 名 前 文 字 列 テ ー ブ ル の イ ン デ ッ ク ス が SHN_LORESERVE (0xff00) 以 上 の 場 合 、 こ の メ ン バ に は SHN_XINDEX (0xffff) が 入 り 、 セ ク シ ョ ン 名 前 文 字 列 テ ー ブ ル の 実 際 の イ ン デ ッ ク ス は セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の 最 初 の エ ン ト リ ー の sh_link メ ン バ に 格 納 さ れ る 。 そ れ 以 外 の 場 合 、 セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の 最 初 の エ ン ト リ ー の sh_link メ ン バ に は 値 0 が 格 納 さ れ る 。
SHN_UNDEF こ の 値 は 未 定 義 ・ 存 在 し な い ・ 無 関 係 そ の 他 、 意 味 の な い セ ク シ ョ ン の 参 照 で あ る こ と を 表 す 。 例 え ば 、 セ ク シ ョ ン 番 号
SHN_UNDEF に 関 連 づ け て 「 定 義 」 さ れ た シ ン ボ ル は 、 「 未 定 義 」 な シ ン ボ ル で あ る 。
SHN_LORESERVE
こ の 値 は 予 約 済 み の イ ン デ ッ ク ス 領 域 の 下 限 を 指 定 す る 。
SHN_LOPROC こ の 値 以 上 で
SHN_HIPROC 以 下 の 値 は プ ロ セ ッ サ
固 有 の 意 味 に 予 約 さ れ て い る 。
SHN_HIPROC こ の 値 以 下 で
SHN_HIPROC 以 上 の 値 は プ ロ セ ッ サ
固 有 の 意 味 に 予 約 さ れ て い る 。
SHN_ABS こ の 値 は 対 応 す る 参 照 の 絶 対 値 を 指 定 す る 。 例 え ば 、 セ ク シ ョ ン 番 号
SHN_ABS に 関 連 づ け ら れ た シ ン ボ ル は 絶 対 値 を 保 持 し 、 再 配 置 に 影 響 さ れ な い 。
SHN_COMMON こ の セ ク シ ョ ン に 関 連 し て 定 義 さ れ た シ ン ボ ル は 、
Fortran の COMMON や C の 未 割 り 当 て external 変 数 の よ う な 、 共 通 シ ン ボ ル で あ る 。
SHN_HIRESERVE こ の 値 は 予 約 さ れ た イ ン デ ッ ク ス の 範 囲 の 上 限 を 指 定 す る 。
SHN_LORESERVE と SHN_HIRESERVE は 含 ま れ る 。 こ の 値 は セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル を 参 照 し な い 。 つ ま り 、 セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル は 予 約 さ れ た イ ン デ ッ ク ス の エ ン ト リ ー を 含 ま な い 。 実 行 可 能 フ ァ イ ル ま た は 共 有 オ ブ ジ ェ ク ト フ ァ イ ル の プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル は 、 シ ス テ ム に よ る プ ロ グ ラ ム 実 行 準 備 に 必 要 な 、 セ グ メ ン ト 等 の 情 報 を 記 述 す る 構 造 体 の 配 列 で あ る 。 オ ブ ジ ェ ク ト フ ァ イ ル の セ グ メ ン ト に は 1 つ 以 上 の セ ク シ ョ ン が 含 ま れ る 。 プ ロ グ ラ ム ヘ ッ ダ ー は 実 行 可 能 フ ァ イ ル と 共 有 オ ブ ジ ェ ク ト フ ァ イ ル で の み 意 味 を 持 つ 。 フ ァ イ ル は 自 身 の プ ロ グ ラ ム ヘ ッ ダ ー サ イ ズ を ELF ヘ ッ ダ ー の e_phentsize メ ン バ と e_phnum メ ン バ で 指 定 す る 。 ELF プ ロ グ ラ ム ヘ ッ ダ ー は Elf32_Phdr 型 ま た は Elf64_Phdr 型 で 記 述 さ れ る (ど ち ら に な る か は ア ー キ テ ク チ ャ ー 依 存 ):
typedef struct
{
uint32_t p_type;
Elf32_Off p_offset;
Elf32_Addr p_vaddr;
Elf32_Addr p_paddr;
uint32_t p_filesz;
uint32_t p_memsz;
uint32_t p_flags;
uint32_t p_align; }
Elf32_Phdr;
typedef struct
{
uint32_t p_type;
uint32_t p_flags;
Elf64_Off p_offset;
Elf64_Addr p_vaddr;
Elf64_Addr p_paddr;
uint64_t p_filesz;
uint64_t p_memsz;
uint64_t p_align; }
Elf64_Phdr;
32 ビ ッ ト と 64 ビ ッ ト の プ ロ グ ラ ム ヘ ッ ダ ー の 主 な 違 い は 、 構 造 体 に お け る p_flags メ ン バ の 位 置 に あ る 。
p_type
Phdr 構 造 体 の こ の メ ン バ は 、 こ の 配 列 要 素 が ど の よ う な 種 類 の セ グ メ ン ト を 記 述 し て い る か 、 ま た は こ の 配 列 要 素 の 情 報 を ど の よ う に 解 釈 す る か 、 を 表 す 。
PT_NULL こ の 配 列 要 素 は 使 用 さ れ て お ら ず 、 そ の 他 の メ ン バ の 値 は 未 定 義 で あ る 。 こ れ に よ り 、 こ の プ ロ グ ラ ム ヘ ッ ダ ー の エ ン ト リ ー は 無 視 さ れ る 。
PT_LOAD こ の 配 列 要 素 は
p_filesz と p_memsz で 記 述 さ れ る
ロ ー ド 可 能 セ グ メ ン ト を 指 定 す る 。 こ の フ ァ イ ル か ら の バ イ ト デ ー タ が 、 こ の メ モ リ ー セ グ メ ン ト の 先 頭 か ら マ ッ プ さ れ る 。 セ グ メ ン ト の メ モ リ ー サ イ ズ Syp_memsz が フ ァ イ ル サ イ ズ Syp_filesz よ り 大 き い 場 合 、 「 余 っ た 」 バ イ ト は 値 0 と な り 、 そ の セ グ メ ン ト 初 期 化 デ ー タ の 後 ろ に 置 か れ る と 定 め ら れ て い る 。 フ ァ イ ル サ イ ズ は メ モ リ ー サ イ ズ よ り 大 き く て は い け な い 。 プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル の ロ ー ド 可 能 セ グ メ ン ト エ ン ト リ ー は 、 p_vaddr メ ン バ の 昇 順 に ソ ー ト さ れ て 出 現 す る 。
PT_DYNAMIC こ の 配 列 要 素 は 動 的 リ ン ク 情 報 を 指 定 す る 。
PT_INTERP こ の 配 列 要 素 は 、 イ ン タ ー プ リ タ ー と し て 起 動 さ れ る パ ス 名
(ヌ ル 文 字 終 端 ) の 位 置 と サ イ ズ を 指 定 す る 。 こ の セ グ メ ン ト 型 は (共 有 オ ブ ジ ェ ク ト に も あ る か も 知 れ な い が ) 実 行 可 能 フ ァ イ ル で の み 意 味 を 持 つ 。 た だ し 、 こ の セ グ メ ン ト 型 は 1 つ の フ ァ イ ル に 2 回 以 上 出 現 し て は な ら な い 。 も し 存 在 す る 場 合 、 こ の セ グ メ ン ト 型 は 全 て の ロ ー ド 可 能 セ グ メ ン ト エ ン ト リ ー よ り 前 に な け れ ば な ら な い 。
PT_NOTE こ の 配 列 要 素 は 補 足 情 報
(auxiliary information)
の 位 置 と サ イ ズ を 指 定 す る 。
PT_SHLIB こ の セ グ メ ン ト 型 は 予 約 さ れ て い る が 、 意 味 は 指 定 さ れ て い な い 。 こ の 型 の 配 列 要 素 を 保 持 す る プ ロ グ ラ ム は
ABI に 準 拠 し な い 。
PT_PHDR こ の 配 列 要 素 は 、 も し 存 在 し て い る な ら ば 、 フ ァ イ ル お よ び プ ロ グ ラ ム の メ モ リ ー イ メ ー ジ 双 方 に お け る プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル 自 身 の 位 置 と サ イ ズ を 指 定 す る 。 こ の セ グ メ ン ト 型 は
1 つ の フ ァ イ ル に 2 回 以 上 出 現 し て は な ら な い 。 さ ら に 、 こ の セ グ メ ン ト 型 が 存 在 し て も よ い の は 、 プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル が プ ロ グ ラ ム の メ モ リ ー イ メ ー ジ の 一 部 で あ る 場 合 の み で あ る 。 も し 存 在 す る 場 合 、 こ れ は 全 て の ロ ー ド 可 能 セ グ メ ン ト エ ン ト リ ー よ り 前 に な け れ ば な ら な い 。
PT_LOPROC こ の 値 以 上 で
PT_HIPROC 以 下 の 値 は プ ロ セ ッ サ 固 有
の 意 味 に 予 約 さ れ て い る 。
PT_HIPROC こ の 値 以 下 で
PT_LOPROC 以 上 の 値 は プ ロ セ ッ サ 固 有
の 意 味 に 予 約 さ れ て い る 。
PT_GNU_STACK
GNU 拡 張 で あ り 、 Linux カ ー ネ ル が p_flags の メ ン バ ー に セ ッ ト さ れ た フ ラ グ 経 由 で ス タ ッ ク の 状 態 を 制 御 す る た め に 使 用 す る 。
p_offset こ の メ ン バ は 、 セ グ メ ン ト の 先 頭 バ イ ト が あ る
(フ ァ イ ル 先 頭 か
ら の ) オ フ セ ッ ト を 保 持 す る 。
p_vaddr こ の メ ン バ は 、 セ グ メ ン ト の 先 頭 バ イ ト が あ る メ モ リ ー の 仮 想 ア ド レ ス を 保 持 す る 。
p_paddr 物 理 ア ド レ ス が 意 味 を も つ シ ス テ ム で は 、 こ の メ ン バ は セ グ メ ン ト の 物 理 ア ド レ ス と し て 予 約 さ れ て い る 。
BSD で は こ の メ ン バ は 使 用 さ れ な い 。 0 で な け れ ば な ら な い 。
p_filesz こ の メ ン バ は セ グ メ ン ト の フ ァ イ ル イ メ ー ジ の バ イ ト 数 を 保 持 す る 。 こ れ は
0 で も よ い 。
p_memsz こ の メ ン バ は セ グ メ ン ト の メ モ リ ー イ メ ー ジ の バ イ ト 数 を 保 持 す る 。 こ れ は
0 で も よ い 。
p_flags こ の メ ン バ は セ グ メ ン ト に 関 連 す る フ ラ グ の ビ ッ ト マ ス ク を 保 持 す る :
PF_X 実 行 可 能 セ グ メ ン ト 。
PF_W 書 き 込 み 可 能 セ グ メ ン ト
.
PF_R 読 み 込 み 可 能 セ グ メ ン ト 。 テ キ ス ト セ グ メ ン ト は 一 般 に フ ラ グ
PF_X と PF_R を 持 つ 。 デ ー
タ セ グ メ ン ト は 一 般 に PF_X, PF_W, PF_R を 持 つ 。
p_align こ の メ ン バ は 、 セ グ メ ン ト が メ モ リ ー お よ び フ ァ イ ル に お い て 配 置
(align) さ れ る 値 を 保 持 す る 。 ロ ー ド 可 能 プ ロ セ ス セ グ メ ン ト は 、 ペ ー ジ サ イ ズ を 法 と し て p_vaddr と p_offset と 合 同 で な け れ ば な ら な い (訳 注 :「 p_vaddr mod ペ ー ジ サ イ ズ = p_offset mod ペ ー ジ サ イ ズ 」 で な け れ ば な ら な い )。 。 0 と 1 と い う 値 は 配 置 が 必 要 な い こ と を 意 味 す る 。 そ れ 以 外 の 場 合 、 p_align は 正 で 2 の 整 数 乗 で な け れ ば な ら ず 、 p_vaddr は p_align を 法 と し て p_offset と 合 同 で な け れ ば な ら な い (訳 注 :「 p_vaddr mod p_align = p_offset mod p_align」 で な け れ ば な ら な い )。 フ ァ イ ル の セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル に は 、 全 て の フ ァ イ ル セ ク シ ョ ン の 場 所 が 記 述 さ れ て い る 。 セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル は Elf32_Shdr 構 造 体 ま た は Elf64_Shdr 構 造 体 の 配 列 で あ る 。 ELF ヘ ッ ダ ー の e_shoff メ ン バ は フ ァ イ ル の 先 頭 か ら セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル へ の バ イ ト オ フ セ ッ ト で あ る 。 e_shnum は セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル に 含 ま れ る エ ン ト リ ー の 数 を 保 持 す る 。 e_shentsize は 各 エ ン ト リ ー の サ イ ズ (バ イ ト 単 位 ) を 保 持 す る 。 セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル イ ン デ ッ ク ス は 、 こ の 配 列 の 添 字 で あ る 。 い く つ か の セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル イ ン デ ッ ク ス は 予 約 さ れ て い る 。 予 約 さ れ て い る の は 、 最 初 の エ ン ト リ ー と 、 SHN_LORESERVE と SHN_HIRESERVE の 間 の イ ン デ ッ ク ス で あ る 。 最 初 の エ ン ト リ ー は 、 ELF 拡 張 で e_phnum, e_shnum, e_strndx に 使 用 さ れ る 。 そ れ 以 外 の 場 合 、 最 初 の エ ン ト リ ー の 各 フ ィ ー ル ド に は 0 が 設 定 さ れ る 。 オ ブ ジ ェ ク ト フ ァ イ ル に は こ れ ら の 特 別 な イ ン デ ッ ク ス に 対 応 す る セ ク シ ョ ン は な い 。
SHN_UNDEF こ の 値 は 、 未 定 義
(undefined)、 不 足 (missing)、 無 関
係 (irrelevant)、 そ の 他 無 意 味 な セ ク シ ョ ン 参 照 を 示 す 。
SHN_LORESERVE こ の 値 は 予 約 済 み の イ ン デ ッ ク ス 領 域 の 下 限 を 指 定 す る 。
SHN_LOPROC こ の 値 以 上 で
SHN_HIPROC 以 下 の 値 は プ ロ セ ッ サ 固 有 の 意 味 に 予 約 さ れ て い る 。
SHN_HIPROC こ の 値 以 下 で
SHN_HIPROC 以 上 の 値 は プ ロ セ ッ サ 固 有 の
意 味 に 予 約 さ れ て い る 。
SHN_ABS こ の 値 は 対 応 す る 参 照 の 絶 対 値 を 指 定 す る 。 例 え ば 、 セ ク シ ョ ン 番 号
SHN_ABS に 関 連 し て 定 義 さ れ て い る シ ン ボ ル は 、 絶 対 値 を 保 持 し て い る の で 、 再 配 置 に 影 響 さ れ な い 。
SHN_COMMON こ の セ ク シ ョ ン に 関 連 し て 定 義 さ れ て い る シ ン ボ ル は 、
FORTRAN の COMMON や C の 未 割 り 当 て 外 部 変 数 の よ う な 共 通 シ ン ボ ル で あ る 。
SHN_HIRESERVE こ の 値 は 予 約 済 み の イ ン デ ッ ク ス 領 域 の 上 限 を 指 定 す る 。 シ ス テ ム は
SHN_LORESERVE と SHN_HIRESERVE を 含 む 範 囲 を 予 約 す る 。 セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル は 予 約 さ れ た イ ン デ ッ ク ス に 対 応 す る エ ン ト リ ー を 持 た な い 。 セ ク シ ョ ン ヘ ッ ダ ー は 以 下 の 構 造 体 を 持 つ :
typedef struct
{
uint32_t sh_name;
uint32_t sh_type;
uint32_t sh_flags;
Elf32_Addr sh_addr;
Elf32_Off sh_offset;
uint32_t sh_size;
uint32_t sh_link;
uint32_t sh_info;
uint32_t sh_addralign;
uint32_t sh_entsize; }
Elf32_Shdr;
typedef struct
{
uint32_t sh_name;
uint32_t sh_type;
uint64_t sh_flags;
Elf64_Addr sh_addr;
Elf64_Off sh_offset;
uint64_t sh_size;
uint32_t sh_link;
uint32_t sh_info;
uint64_t sh_addralign;
uint64_t sh_entsize; }
Elf64_Shdr;
32 ビ ッ ト と 64 ビ ッ ト の セ ク シ ョ ン ヘ ッ ダ ー に は 実 際 の 違 い は な い 。
sh_name こ の メ ン バ は セ ク シ ョ ン 名 を 定 め る 。 こ の 値 は セ ク シ ョ ン ヘ ッ ダ ー 文 字 列 テ ー ブ ル セ ク シ ョ ン の イ ン デ ッ ク ス で あ り 、 ヌ ル 文 字 で 終 端 さ れ た 文 字 列 の 場 所 を 示 す 。
sh_type こ の メ ン バ は セ ク シ ョ ン の 内 容 と 意 味 が 含 ま れ る カ テ ゴ リ ー を 示 す 。
SHT_NULL こ の 値 は セ ク シ ョ ン ヘ ッ ダ ー が 不 活 性 で あ る こ と を 示 す 。 こ れ は 関 連 す る セ ク シ ョ ン を 持 た な い 。 こ の セ ク シ ョ ン ヘ ッ ダ ー の 他 の メ ン バ は 、 未 定 義 の 値 を 持 つ 。
SHT_PROGBITS こ の セ ク シ ョ ン は プ ロ グ ラ ム に よ り 定 義 さ れ る 情 報 を 保 持 す る 。 こ の 情 報 の 形 式 と 意 味 は 、 ひ と え に プ ロ グ ラ ム に よ っ て 決 定 さ れ る 。
SHT_SYMTAB こ の セ ク シ ョ ン は シ ン ボ ル テ ー ブ ル を 保 持 す る 。 一 般 に は
SHT_SYMTAB は リ ン ク 編 集 の た め の シ ン ボ ル を 提 供 す る が 、 動 的 リ ン ク に も 使 わ れ る 。 完 全 な シ ン ボ ル テ ー ブ ル と し て 、 動 的 リ ン ク に は 不 要 な 多 く の シ ン ボ ル を 保 持 で き る 。 オ ブ ジ ェ ク ト フ ァ イ ル も SHT_DYNSYM セ ク シ ョ ン を 持 つ こ と が で き る 。
SHT_STRTAB こ の セ ク シ ョ ン は 文 字 列 テ ー ブ ル を 保 持 す る 。 オ ブ ジ ェ ク ト フ ァ イ ル は 複 数 の 文 字 列 テ ー ブ ル セ ク シ ョ ン を 持 つ こ と が で き る 。
SHT_RELA こ の セ ク シ ョ ン は 明 示 的 な 加 数
(addend) を 持 つ 再 配 置 エ ン ト リ ー を 保 持 す る 。 再 配 置 エ ン ト リ ー の 型 は 、 オ ブ ジ ェ ク ト フ ァ イ ル の 32 ビ ッ ト ク ラ ス で は Elf32_Rela で あ る 。 オ ブ ジ ェ ク ト フ ァ イ ル は 複 数 の 再 配 置 セ ク シ ョ ン を 持 つ こ と が で き る 。
SHT_HASH こ の セ ク シ ョ ン は シ ン ボ ル ハ ッ シ ュ テ ー ブ ル を 保 持 す る 。 動 的 リ ン ク さ れ る オ ブ ジ ェ ク ト は 、 シ ン ボ ル ハ ッ シ ュ テ ー ブ ル を 含 ん で い な け れ ば な ら な い 。 オ ブ ジ ェ ク ト フ ァ イ ル は
1 つ の ハ ッ シ ュ テ ー ブ ル の み を 持 つ こ と が で き る 。
SHT_DYNAMIC こ の セ ク シ ョ ン は 動 的 リ ン ク の 情 報 を 保 持 す る 。 オ ブ ジ ェ ク ト フ ァ イ ル は
1 つ の 動 的 セ ク シ ョ ン の み を 持 つ こ と が で き る 。
SHT_NOTE こ の セ ク シ ョ ン は フ ァ イ ル に 何 ら か の 印 を 付 け る 情 報 を 保 持 す る 。
SHT_NOBITS こ の タ イ プ の セ ク シ ョ ン は フ ァ イ ル の 領 域 を 使 わ な い と い う 以 外 は 、
SHT_PROGBITS と 似 て い る 。 こ の セ ク シ ョ ン は 1 バ イ ト も 含 ま な い が 、 sh_offset メ ン バ は 概 念 的 な フ ァ イ ル オ フ セ ッ ト を 持 つ 。
SHT_REL こ の セ ク シ ョ ン は 明 示 的 な 加 数 を 持 た な い 再 配 置 オ フ セ ッ ト を 保 持 す る 。 再 配 置 オ フ セ ッ ト の 型 は 、 オ ブ ジ ェ ク ト フ ァ イ ル の
32 ビ ッ ト ク ラ ス で は Elf32_Rel で あ る 。 オ ブ ジ ェ ク ト フ ァ イ ル は 複 数 の 再 配 置 セ ク シ ョ ン を 持 つ こ と が で き る 。
SHT_SHLIB こ の セ ク シ ョ ン は 予 約 さ れ て い る が 、 意 味 は 指 定 さ れ て い な い 。
SHT_DYNSYM こ の セ ク シ ョ ン は 動 的 リ ン ク シ ン ボ ル の 最 小 セ ッ ト を 保 持 す る 。 オ ブ ジ ェ ク ト フ ァ イ ル は
SHT_SYMTAB セ ク シ ョ ン も 含 む こ と が で き る 。
SHT_LOPROC こ の 値 以 上 で
SHT_HIPROC 以 下 の 範 囲 は プ ロ セ ッ サ
固 有 の 意 味 に 予 約 さ れ て い る 。
SHT_HIPROC こ の 値 以 下 で
SHT_LOPROC 以 上 の 範 囲 は プ ロ セ ッ サ
固 有 の 意 味 に 予 約 さ れ て い る 。
SHT_LOUSER こ の 値 は ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム の た め に 予 約 さ れ る イ ン デ ッ ク ス 範 囲 の 下 限 を 指 定 す る 。
SHT_HIUSER こ の 値 は ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム の た め に 予 約 さ れ る イ ン デ ッ ク ス 範 囲 の 上 限 を 指 定 す る 。
SHT_LOUSER か ら SHT_HIUSER の 間 の セ ク シ ョ ン タ イ プ は 、 現 在 ま た は 将 来 の シ ス テ ム 定 義 セ ク シ ョ ン タ イ プ と 衝 突 す る こ と な く 、 ア プ リ ケ ー シ ョ ン で 使 用 す る こ と が で き る 。
sh_flags 様
々 な 属 性 を 記 述 す る た め の 1 ビ ッ ト の フ ラ グ を サ ポ ー ト す る セ ク
シ ョ ン 。 フ ラ グ ビ ッ ト が sh_flags に 設 定 さ れ た 場 合 、 そ の セ ク シ ョ ン に つ い て の 属 性 は "オ ン " に な る 。 そ れ 以 外 の 場 合 、 属 性 が "オ フ " で あ る か 属 性 が 適 用 さ れ な い 。 未 定 義 の 属 性 は 0 に 設 定 さ れ る 。
SHF_WRITE こ の セ ク シ ョ ン は プ ロ セ ス 実 行 中 に 書 き 込 み 可 能 な デ ー タ を 含 む 。
SHF_ALLOC こ の セ ク シ ョ ン は プ ロ セ ス 実 行 中 に メ モ リ ー を 使 用 す る 。 制 御 セ ク シ ョ ン の 中 に は 、 オ ブ ジ ェ ク ト フ ァ イ ル の メ モ リ ー イ メ ー ジ に は 存 在 し な い も の も あ る 。 そ う し た セ ク シ ョ ン の 場 合 、 こ の 属 性 は オ フ で あ る 。
SHF_EXECINSTR こ の セ ク シ ョ ン は 実 行 可 能 な マ シ ン 命 令 を 含 む 。
SHF_MASKPROC こ の マ ス ク に 含 ま れ る 全 て の ビ ッ ト は プ ロ セ ッ サ 固 有 の 意 味 に 予 約 さ れ て い る 。
sh_addr こ の セ ク シ ョ ン が プ ロ セ ス の メ モ リ ー イ メ ー ジ に あ る 場 合 、 こ の メ ン バ は セ ク シ ョ ン の 最 初 の バ イ ト が 存 在 す る ア ド レ ス を 保 持 す る 。 そ れ 以 外 の 場 合 、 こ の メ ン バ は
0 で あ る 。
sh_offset こ の メ ン バ の 値 は 、 フ ァ イ ル の 先 頭 か ら セ ク シ ョ ン の 最 初 の バ イ ト へ の バ イ ト オ フ セ ッ ト を 保 持 す る 。 セ ク シ ョ ン タ イ プ
SHT_NOBITS は フ ァ イ ル の 領 域 を 全 く 使 用 せ ず 、 こ の タ イ プ の sh_offset メ ン バ は フ ァ イ ル の 概 念 的 な 位 置 を 示 す 。
sh_size こ の メ ン バ は セ ク シ ョ ン の サ イ ズ
(バ イ ト 単 位 ) を 保 持 す る 。 セ ク
シ ョ ン タ イ プ が SHT_NOBITS で な い 限 り 、 そ の セ ク シ ョ ン は フ ァ イ ル 中 の sh_size バ イ ト を 使 用 す る 。 タ イ プ が SHT_NOBITS の セ ク シ ョ ン は サ イ ズ が 0 で な い が 、 フ ァ イ ル の 領 域 を 使 用 し な い 。
sh_link こ の メ ン バ は 、 セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル イ ン デ ッ ク ス リ ン ク を 保 持 す る 。 こ の 解 釈 は セ ク シ ョ ン タ イ プ に 依 存 す る 。
sh_info こ の メ ン バ は 追 加 情 報 を 保 持 す る 。 こ の 解 釈 は セ ク シ ョ ン タ イ プ に 依 存 す る 。
sh_addralign ア
ド レ ス 配 置 に
制 約 が あ る セ
ク シ ョ ン も あ
る 。 セ ク シ ョ
ン が 倍 長 語 (doubleword)
を 保 持 す る 場
合 、 シ ス テ ム
は 全 て の セ ク
シ ョ ン に つ い
て 倍 長 語 の 配
置 を 保 証 し な
け れ ば な ら な
い 。 つ ま り 、
sh_addr の 値 は
sh_addralign の 値 を 法
と し て 0 と 合 同
で な け れ ば な
ら な い (訳 注 :「
sh_addr mod sh_addralign = 0 で な け
れ ば な ら な い
)。 2 の 0 乗 と 正 の
整 数 乗 の み が
許 可 さ れ る 。 0
ま た は 1 は セ ク
シ ョ ン の 配 置
に 制 約 が な い
こ と を 意 味 す
る 。
sh_entsize シ ン ボ ル テ
ー ブ ル の よ う
な 固 定 サ イ ズ
エ ン ト リ ー の
テ ー ブ ル を 保
持 す る セ ク シ
ョ ン も あ る 。
こ の よ う な セ
ク シ ョ ン で は
、 こ の メ ン バ
は 各 エ ン ト リ
ー の サ イ ズ (バ
イ ト 単 位 ) を 表
す 。 こ の メ ン
バ が 0 の 場 合 、
そ の セ ク シ ョ
ン は 固 定 サ イ
ズ エ ン ト リ ー
の テ ー ブ ル を
保 持 し な い 。
さ ま ざ ま な セ
ク シ ョ ン に プ
ロ グ ラ ム 情 報
・ 制 御 情 報 が
保 持 さ れ る :
.bss こ の セ ク シ ョ ン は プ ロ グ ラ ム の メ モ リ ー イ メ ー ジ に 配 置 さ れ る 非 初 期 化 デ ー タ を 保 持 す る 。 定 義 上 、 シ ス テ ム は プ ロ グ ラ ム の 実 行 開 始 時 に 、 デ ー タ を
0 で 初 期 化 す る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_NOBITS で あ る 。 属 性 タ イ プ は SHF_ALLOC と SHF_WRITE で あ る 。
.comment こ の セ ク シ ョ ン は バ ー ジ ョ ン 制 御 情 報 を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は
SHT_PROGBITS で あ る 。 属 性 タ イ プ は 使 用 さ れ な い 。
.ctors こ の セ ク シ ョ ン は
C++ コ ン ス ト ラ ク タ ー 関 数 へ の 初 期 化 さ れ た ポ イ
ン タ ー を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 属 性 タ イ プ は SHF_ALLOC と SHF_WRITE で あ る 。
.data こ の セ ク シ ョ ン は プ ロ グ ラ ム の メ モ リ ー イ メ ー ジ に 配 置 さ れ る 初 期 化 済 み デ ー タ を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は
SHT_PROGBITS で あ る 。 属 性 タ イ プ は SHF_ALLOC と SHF_WRITE で あ る 。
.data1 こ の セ ク シ ョ ン は プ ロ グ ラ ム の メ モ リ ー イ メ ー ジ に 配 置 さ れ る 初 期 化 済 み デ ー タ を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は
SHT_PROGBITS で あ る 。 属 性 タ イ プ は SHF_ALLOC と SHF_WRITE で あ る 。
.debug こ の セ ク シ ョ ン は シ ン ボ リ ッ ク デ バ ッ グ 用 の 情 報 を 保 持 す る 。 そ の 内 容 は 指 定 さ れ て い な い 。 こ の セ ク シ ョ ン の タ イ プ は
SHT_PROGBITS で あ る 。 属 性 タ イ プ は 使 用 さ れ な い 。
.dtors こ の セ ク シ ョ ン は
C++ デ ス ト ラ ク タ 関 数 へ の 初 期 化 さ れ た ポ イ ン
タ ー を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 属 性 タ イ プ は SHF_ALLOC と SHF_WRITE で あ る 。
.dynamic こ の セ ク シ ョ ン は 動 的 リ ン ク 情 報 を 保 持 す る 。 こ の セ ク シ ョ ン の 属 性 は
SHF_ALLOC ビ ッ ト を 含 む 。 SHF_WRITE ビ ッ ト が 設 定 さ れ る か 否 か は プ ロ セ ッ サ に よ る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_DYNAMIC で あ る 。 上 記 の 属 性 を 参 照 す る こ と 。
.dynstr こ の セ ク シ ョ ン は 動 的 リ ン ク に 必 要 な 文 字 列 を 保 持 す る 。 最 も 一 般 的 に は 、 こ の 文 字 列 は シ ン ボ ル テ ー ブ ル エ ン ト リ ー と 関 連 づ け ら れ た 名 前 を 表 す 。 こ の セ ク シ ョ ン の タ イ プ は
SHT_STRTAB で あ る 。 使 用 さ れ る 属 性 タ イ プ は SHF_ALLOC で あ る 。
.dynsym こ の セ ク シ ョ ン は 動 的 リ ン ク シ ン ボ ル テ ー ブ ル を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は
SHT_DYNSYM で あ る 。 使 用 さ れ る 属 性 タ イ プ は SHF_ALLOC で あ る 。
.fini こ の セ ク シ ョ ン は プ ロ セ ス 終 了 コ ー ド に 置 か れ る 実 行 可 能 命 令 を 保 持 す る 。 プ ロ セ ス が 正 常 に 終 了 し た 場 合 、 シ ス テ ム は こ の セ ク シ ョ ン に あ る コ ー ド を 配 置 し て 実 行 す る 。 こ の セ ク シ ョ ン の タ イ プ は
SHT_PROGBITS で
あ る 。 使 用 さ
れ る 属 性 タ イ
プ は SHF_ALLOC と
SHF_EXECINSTR で あ る 。
.gnu.version こ の セ ク
シ ョ ン は バ ー
ジ ョ ン シ ン ボ
ル テ ー ブ ル を
保 持 す る 。 そ
の 内 容 は ElfN_Half
要 素 の 配 列 で
あ る 。 こ の セ
ク シ ョ ン の タ
イ プ は SHT_GNU_versym で
あ る 。 使 用 さ
れ る 属 性 タ イ
プ は SHF_ALLOC で あ
る 。
.gnu.version_d こ の セ ク
シ ョ ン は バ ー
ジ ョ ン シ ン ボ
ル の 定 義 を 保
持 す る 。 そ の
内 容 は ElfN_Verdef 構
造 体 の テ ー ブ
ル で あ る 。 こ
の セ ク シ ョ ン
の タ イ プ は
SHT_GNU_verdef で あ る 。
使 用 さ れ る 属
性 タ イ プ は
SHF_ALLOC で あ る 。
.gnu.version_r こ の セ ク
シ ョ ン は バ ー
ジ ョ ン シ ン ボ
ル が 必 要 と す
る 要 素 を 保 持
す る 。 そ の 内
容 は ElfN_Verneed 構 造
体 の テ ー ブ ル
で あ る 。 こ の
セ ク シ ョ ン の
タ イ プ は SHT_GNU_versym
で あ る 。 使 用
さ れ る 属 性 タ
イ プ は shf_alloc で
あ る 。
.got こ の セ ク シ ョ ン は グ ロ ー バ ル オ フ セ ッ ト テ ー ブ ル を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は
SHT_PROGBITS で あ る 。 属 性 は プ ロ セ ッ サ 毎 に 異 な る 。
.hash こ の セ ク シ ョ ン は シ ン ボ ル ハ ッ シ ュ テ ー ブ ル を 保 持 す る 。 セ ク シ ョ ン の タ イ プ は
SHT_HASH で あ る 。 使 用 さ れ る 属 性 は SHF_ALLOC で あ る 。
.init こ の セ ク シ ョ ン は プ ロ セ ス 初 期 化 コ ー ド に 配 置 さ れ る 実 行 可 能 命 令 を 保 持 す る 。 プ ロ グ ラ ム が 実 行 を 開 始 す る と 、 シ ス テ ム は メ イ ン プ ロ グ ラ ム エ ン ト リ ー ポ イ ン ト を 呼 び 出 す 前 に 、 こ の セ ク シ ョ ン に あ る コ ー ド を 配 置 し て 実 行 す る 。 こ の セ ク シ ョ ン は の タ イ プ は
SHT_PROGBITS で あ る 。 使 用 さ れ る 属 性 は SHF_ALLOC と SHF_EXECINSTR で あ る 。
.interp こ の セ ク シ ョ ン は プ ロ グ ラ ム イ ン タ ー プ リ タ ー の パ ス 名 を 保 持 す る 。 フ ァ イ ル に こ の セ ク シ ョ ン を 含 む ロ ー ド 可 能 セ グ メ ン ト が あ る 場 合 、 そ の セ ク シ ョ ン の 属 性 に は
SHF_ALLOC ビ ッ ト が 含 ま れ る 。 そ れ 以 外 の 場 合 こ の ビ ッ ト は オ フ に な る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。
.line こ の セ ク シ ョ ン は シ ン ボ リ ッ ク デ バ ッ グ の た め の 行 番 号 情 報 を 保 持 す る 。 こ こ に は プ ロ グ ラ ム ソ ー ス コ ー ド と マ シ ン コ ー ド の 対 応 関 係 が 記 述 さ れ る 。 内 容 は 指 定 さ れ て い な い 。 こ の セ ク シ ョ ン の タ イ プ は
SHT_PROGBITS で あ る 。 属 性 タ イ プ は 使 用 さ れ な い 。
.note こ の セ ク シ ョ ン は
"Note Section" 形 式 で 情 報 を 保 持 す る 。 こ の セ
ク シ ョ ン の タ イ プ は SHT_NOTE で あ る 。 属 性 タ イ プ は 使 用 さ れ な い 。 通 常 OpenBSD ネ イ テ ィ ブ 実 行 可 能 フ ァ イ ル は 自 身 を 識 別 す る た め に .note.openbsd.ident セ ク シ ョ ン を 持 つ 。 こ れ に よ り カ ー ネ ル は 、 フ ァ イ ル を ロ ー ド す る 際 に 互 換 ELF バ イ ナ リ エ ミ ュ レ ー シ ョ ン テ ス ト を 回 避 で き る 。
.note.GNU−stack こ の セ ク シ ョ ン は Linux の オ ブ ジ ェ ク ト フ ァ イ ル で ス タ ッ ク 属 性 を 宣 言 す る の に 使 用 さ れ る 。 セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 使 用 さ れ る 属 性 は SHF_EXECINSTR だ け で あ る 。 こ の 属 性 は GNU リ ン カ ー に 対 し て オ ブ ジ ェ ク ト フ ァ イ ル が 実 行 可 能 な ス タ ッ ク (executable stack) を 必 要 と す る 示 す も の で あ る 。
.plt こ の セ ク シ ョ ン は 手 続 き
(procedure) リ ン ク テ ー ブ ル を 保 持 す る 。
こ の セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 属 性 は プ ロ セ ッ サ 毎 に 異 な る 。
.relNAME こ の セ ク シ ョ ン は 以 下 に 記 述 さ れ る 再 配 置 情 報 を 保 持 す る 。 フ ァ イ ル が 再 配 置 を 含 む ロ ー ド 可 能 セ グ メ ン ト を 持 っ て い る 場 合 、 こ の セ ク シ ョ ン の 属 性 は
SHF_ALLOC ビ ッ ト を 含 む 。 そ れ 以 外 の 場 合 、 そ の ビ ッ ト は オ フ で あ る 。 慣 例 と し て 、 "NAME" は 再 配 置 が 適 用 さ れ る セ ク シ ョ ン が 指 定 さ れ る 。 よ っ て .text に つ い て の 再 配 置 セ ク シ ョ ン は 、 通 常 は .rel.text と い う 名 前 を 持 つ 。 こ の セ ク シ ョ ン の タ イ プ は SHT_REL で あ る 。
.relaNAME こ の セ ク シ ョ ン は 以 下 に 記 述 さ れ る 再 配 置 情 報 を 保 持 す る 。 フ ァ イ ル が 再 配 置 を 含 む ロ ー ド 可 能 セ グ メ ン ト を 持 っ て い る 場 合 、 こ の セ ク シ ョ ン の 属 性 は
SHF_ALLOC ビ ッ ト を 含 む 。 そ れ 以 外 の 場 合 、 そ の ビ ッ ト は オ フ で あ る 。 慣 例 と し て 、 "NAME" は 再 配 置 が 適 用 さ れ る セ ク シ ョ ン が 指 定 さ れ る 。 よ っ て .text に つ い て の 再 配 置 セ ク シ ョ ン は 、 通 常 は .rela.text と い う 名 前 を 持 つ 。 こ の セ ク シ ョ ン の タ イ プ は SHT_RELA で あ る 。
.rodata こ の セ ク シ ョ ン は リ ー ド オ ン リ ー の デ ー タ を 保 持 す る 。 こ の デ ー タ は プ ロ セ ス イ メ ー ジ に お け る 書 き 込 み 不 可 能 な セ グ メ ン ト に 置 か れ る 。 こ の セ ク シ ョ ン の タ イ プ は
SHT_PROGBITS で あ る 。 使 用 さ れ る 属 性 は SHF_ALLOC で あ る 。
.rodata1 こ の セ ク シ ョ ン は リ ー ド オ ン リ ー の デ ー タ を 保 持 す る 。 こ の デ ー タ は プ ロ セ ス イ メ ー ジ に お け る 書 き 込 み 不 可 能 な セ グ メ ン ト に 置 か れ る 。 こ の セ ク シ ョ ン の タ イ プ は
SHT_PROGBITS で あ る 。 使 用 さ れ る 属 性 は SHF_ALLOC で あ る 。
.shstrtab こ の セ ク シ ョ ン は セ ク シ ョ ン 名 を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は
SHT_STRTAB で あ る 。 属 性 タ イ プ は 使 用 さ れ な い 。
.strtab こ の セ ク シ ョ ン は 文 字 列 を 保 持 す る 。 最 も 一 般 的 な の は 、 シ ン ボ ル テ ー ブ ル エ ン ト リ ー に 関 連 づ け ら れ た 名 前 を 表 す 文 字 列 で あ る 。 フ ァ イ ル が シ ン ボ ル 文 字 列 テ ー ブ ル を 含 む ロ ー ド 可 能 セ グ メ ン ト を 持 つ 場 合 、 セ ク シ ョ ン の 属 性 は
SHF_ALLOC ビ ッ ト を 含 む 。 そ れ 以 外 の 場 合 、 そ の ビ ッ ト は オ フ で あ る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_STRTAB で あ る 。
.symtab こ の セ ク シ ョ ン は シ ン ボ ル テ ー ブ ル を 保 持 す る 。 フ ァ イ ル が シ ン ボ ル テ ー ブ ル を 含 む ロ ー ド 可 能 セ グ メ ン ト を 持 つ 場 合 、 セ ク シ ョ ン の 属 性 は
SHF_ALLOC ビ ッ ト を 含 む 。 そ れ 以 外 の 場 合 、 ビ ッ ト は オ フ で あ る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_SYMTAB で あ る 。
.text こ の セ ク シ ョ ン は プ ロ グ ラ ム の
"テ キ ス ト " ま た は 実 行 可 能 命 令 を
保 持 す る 。 セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 使 用 さ れ る 属 性 は SHF_ALLOC と SHF_EXECINSTR で あ る 。 文 字 列 テ ー ブ ル セ ク シ ョ ン は ヌ ル 文 字 で 終 端 さ れ た キ ャ ラ ク タ ー 配 列 (通 常 文 字 列 と 呼 ば れ る も の ) を 保 持 す る 。 オ ブ ジ ェ ク ト フ ァ イ ル は こ れ ら の 文 字 列 を シ ン ボ ル 名 と セ ク シ ョ ン 名 を 表 す た め に 使 う 。 文 字 列 は 、 文 字 列 テ ー ブ ル セ ク シ ョ ン へ の イ ン デ ッ ク ス と し て 参 照 さ れ る 。 イ ン デ ッ ク ス 0 の 最 初 の バ イ ト は 、 ヌ ル バ イ ト ('0円') を 保 持 す る と 定 義 さ れ て い る 。 同 様 に 文 字 列 テ ー ブ ル の 最 後 の バ イ ト も ヌ ル 文 字 を 保 持 す る と 定 義 さ れ て い る 。 こ れ は 全 て の 文 字 列 が ヌ ル バ イ ト で 終 端 さ れ て い る こ と を 保 証 す る た め で あ る 。 オ ブ ジ ェ ク ト フ ァ イ ル の シ ン ボ ル テ ー ブ ル は 、 プ ロ グ ラ ム の シ ン ボ ル 定 義 と 参 照 を 配 置 ま た は 再 配 置 す る の に 必 要 な 情 報 を 保 持 す る 。
typedef struct
{
uint32_t st_name;
Elf32_Addr st_value;
uint32_t st_size;
unsigned char st_info;
unsigned char st_other;
uint16_t st_shndx; }
Elf32_Sym;
typedef struct
{
uint32_t st_name;
unsigned char st_info;
unsigned char st_other;
uint16_t st_shndx;
Elf64_Addr st_value;
uint64_t st_size; }
Elf64_Sym;
32 ビ ッ ト 版 と 64 ビ ッ ト 版 は 同 じ メ ン バ を 持 ち 、 単 に 順 番 が 異 な る だ け で あ る 。
st_name こ の メ ン バ は オ ブ ジ ェ ク ト フ ァ イ ル の シ ン ボ ル 文 字 列 テ ー ブ ル の イ ン デ ッ ク ス を 保 持 す る 。 シ ン ボ ル 文 字 列 テ ー ブ ル は シ ン ボ ル 名 の 文 字 表 現 を 保 持 す る 。 こ の 値 が
0 で な い 場 合 、 シ ン ボ ル 名 を 得 る た め の 文 字 テ ー ブ ル イ ン デ ッ ク ス を 表 す 。 そ れ 以 外 の 場 合 、 シ ン ボ ル テ ー ブ ル は 名 前 を 持 た な い 。
st_value こ の メ ン バ は 関 連 づ け ら れ た シ ン ボ ル の 値 を 表 す 。
st_size 多 く の シ ン ボ ル に は そ れ に 関 連 づ け ら れ た サ イ ズ が あ る 。 シ ン ボ ル が サ イ ズ を 持 た な い 場 合 、 ま た は サ イ ズ が 不 明 な 場 合 、 こ の メ ン バ は
0 で あ る 。
st_info こ の メ ン バ は シ ン ボ ル の タ イ プ と バ イ ン デ ィ ン グ
(binding) 属 性 を
指 定 す る :
STT_NOTYPE シ ン ボ ル の タ イ プ が 定 義 さ れ て い な い 。
STT_OBJECT シ ン ボ ル は デ ー タ オ ブ ジ ェ ク ト に 関 連 づ け ら れ て い る 。
STT_FUNC シ ン ボ ル は 関 数 ま た は そ の 他 の 実 行 コ ー ド に 関 連 づ け ら れ て い る 。
STT_SECTION シ ン ボ ル は セ ク シ ョ ン に 関 連 づ け ら れ て い る 。 こ の タ イ プ の シ ン ボ ル テ ー ブ ル エ ン ト リ ー は 、 主 と し て 再 配 置 の た め に 存 在 し 、 通 常 は
STB_LOCAL バ イ ン デ ィ ン グ を 持 つ 。
STT_FILE 慣 例 と し て 、 シ ン ボ ル の 名 前 は オ ブ ジ ェ ク ト フ ァ イ ル に 関 連 づ け ら れ た ソ ー ス フ ァ イ ル の 名 前 を 指 定 す る 。 フ ァ イ ル シ ン ボ ル は
STB_LOCAL バ イ ン デ ィ ン グ を 持 ち 、 そ の セ ク シ ョ ン イ ン デ ッ ク ス は SHN_ABS で あ る 。 フ ァ イ ル シ ン ボ ル は 、 フ ァ イ ル に 他 の STB_LOCAL シ ン ボ ル が あ る 場 合 は 、 そ れ よ り も 先 に 来 る 。
STT_LOPROC こ の 値 以 上 で
STT_HIPROC 以 下 の 範 囲 は プ ロ セ ッ サ 固
有 の 意 味 に 予 約 さ れ て い る 。
STT_HIPROC こ の 値 以 下 で
STT_LOPROC 以 上 の 範 囲 は プ ロ セ ッ サ 固
有 の 意 味 に 予 約 さ れ て い る 。
STB_LOCAL 局 所 的 シ ン ボ ル は そ の 定 義 を 含 む オ ブ ジ ェ ク ト フ ァ イ ル の 外 か ら は 見 え な い 。 同 じ 名 前 の 局 所 的 シ ン ボ ル は 、 お 互 い に 影 響 を 受 け る こ と な く 、 複 数 の フ ァ イ ル に 存 在 で き る 。
STB_GLOBAL 大 域 的 シ ン ボ ル は 結 び つ け ら れ て い る 全 て の オ ブ ジ ェ ク ト フ ァ イ ル か ら 見 え る 。
1 つ の フ ァ イ ル で 大 域 的 シ ン ボ ル が 定 義 さ れ て い た ら 、 他 の フ ァ イ ル で は 同 じ シ ン ボ ル へ の 参 照 は 未 定 義 で な け れ ば な ら な い 。
STB_WEAK 弱 シ ン ボ ル は 大 域 的 シ ン ボ ル に 似 て い る が 、 そ の 定 義 は 優 先 度 が 低 い 。
STB_LOPROC こ の 値 以 上 で
STB_HIPROC 以 下 の 範 囲 は プ ロ セ ッ サ 固 有 の 意 味 に 予 約 さ れ て い る 。
STB_HIPROC こ の 値 以 下 で
STB_LOPROC 以 上 の 範 囲 は プ ロ セ ッ サ 固
有 の 意 味 に 予 約 さ れ て い る 。 バ イ ン デ ィ ン グ と タ イ プ フ ィ ー ル ド を パ ッ ク し た り ア ン パ ッ ク し た り す る マ ク ロ が あ る :
ELF32_ST_BIND(info) ま た は ELF64_ST_BIND(info) st_info の 値 か ら バ イ ン デ ィ ン グ を 取 り 出 す 。
ELF32_ST_TYPE(info)
ま た は ELF64_ST_TYPE(info)
st_info の 値 か ら タ
イ プ を 取 り 出
す 。
ELF32_ST_INFO(bind, type) ま た は ELF64_ST_INFO(bind, type) バ イ ン デ ィ ン グ と タ イ プ を st_info の 値 に 変 換 す る 。
st_other こ の メ ン バ は シ ン ボ ル の
visibility (見 え る 範 囲 ) を 規 定 す る 。
STV_DEFAULT デ フ ォ ル
ト の シ
ン ボ ル visibility ル ー
ル 。
STV_INTERNAL プ ロ セ ッ
サ 固 有 の 隠 し
ク
ラ ス 。
STV_HIDDEN シ ン ボ ル は 他 の モ ジ ュ ー ル か ら は 利 用 で き な い 。
STV_PROTECTED 横 取 り で き ず
(not preemptible)、 公 開 さ れ な い 。
visibility 種 別 を 抽 出 す る た め の マ ク ロ が あ る 。
ELF32_ST_VISIBILITY(other) ま た は ELF64_ST_VISIBILITY(other)
st_shndx 各 シ ン ボ ル テ ー ブ ル エ ン ト リ ー は 、 い く つ か の セ ク シ ョ ン に 関 連 し て
"定 義 さ れ て い る "。 こ の メ ン バ は 関 連 す る セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル イ ン デ ッ ク ス を 保 持 す る 。 再 配 置 は シ ン ボ ル 参 照 と シ ン ボ ル 定 義 を 結 合 す る プ ロ セ ス で あ る 。 再 配 置 可 能 フ ァ イ ル は セ ク シ ョ ン の 内 容 を ど の よ う に 修 正 す る か に 関 す る 情 報 を 持 た な け れ ば な ら な い 。 こ れ に よ り 、 実 行 可 能 フ ァ イ ル と 共 有 オ ブ ジ ェ ク ト フ ァ イ ル は プ ロ セ ス の プ ロ グ ラ ム イ メ ー ジ に つ い て の 正 し い 情 報 を 持 つ こ と が で き る 。 再 配 置 エ ン ト リ ー は 以 下 の よ う な デ ー タ で あ る 。 加 数 を 必 要 と し な い 再 配 置 構 造 体 。
typedef struct
{
Elf32_Addr r_offset;
uint32_t r_info; }
Elf32_Rel;
typedef struct
{
Elf64_Addr r_offset;
uint64_t r_info; }
Elf64_Rel; 加 数 を 必 要
と す る 再 配 置
構 造 体 。
typedef struct
{
Elf32_Addr r_offset;
uint32_t r_info;
int32_t r_addend; }
Elf32_Rela;
typedef struct
{
Elf64_Addr r_offset;
uint64_t r_info;
int64_t r_addend; }
Elf64_Rela;
r_offset こ の メ ン バ は 再 配 置 動 作 が 適 用 さ れ る 位 置 を 与 え る 。 再 配 置 可 能 フ ァ イ ル の 場 合 、 こ の 値 は セ ク シ ョ ン の 先 頭 か ら 再 配 置 で 影 響 を 受 け る 格 納 単 位
(storage unit) ま で の バ イ ト オ フ セ ッ ト で あ る 。 実 行 可 能 フ ァ イ ル ま た は 共 有 オ ブ ジ ェ ク ト の 場 合 、 こ の 値 は 再 配 置 で 影 響 を 受 け る 格 納 単 位 の 仮 想 ア ド レ ス で あ る 。
r_info こ の メ ン バ は 、 再 配 置 が 行 わ れ な け れ ば な ら な い シ ン ボ ル テ ー ブ ル イ ン デ ッ ク ス と 、 適 用 さ れ る 再 配 置 の タ イ プ の 両 方 を 与 え る 。 再 配 置 タ イ プ は プ ロ セ ッ サ 毎 に 異 な る 。 テ キ ス ト が 再 配 置 エ ン ト リ ー の 再 配 置 タ イ プ ま た は シ ン ボ ル テ ー ブ ル イ ン デ ッ ク ス を 参 照 し て い る 場 合 、 そ れ ぞ れ エ ン ト リ ー の
r_info メ ン バ に 対 し て 、 そ れ ぞ れ ELF[32|64]_R_TYPE と ELF[32|64]_R_SYM を 適 用 し た 結 果 を 意 味 す る 。
r_addend こ の メ ン バ は 定 数 の 加 数 を 指 定 す る 。 こ の 加 数 は 再 配 置 可 能 フ ィ ー ル ド に 格 納 さ れ る 値 を 計 算 す る た め に 使 わ れ る 。
.dynamic セ ク シ ョ ン は 、 関 連 す る 動 的 リ ン ク 情 報 を 保 持 し て い る 一 連 の 構 造 体 を 保 持 す る 。 d_tag メ ン バ は d_un の 解 釈 を 制 御 す る 。
typedef struct
{
Elf32_Sword d_tag;
union {
Elf32_Word d_val;
Elf32_Addr d_ptr; }
d_un; }
Elf32_Dyn;
extern Elf32_Dyn _DYNAMIC[];
typedef struct
{
Elf64_Sxword d_tag;
union {
Elf64_Xword d_val;
Elf64_Addr d_ptr; }
d_un; }
Elf64_Dyn;
extern Elf64_Dyn _DYNAMIC[];
d_tag こ の メ ン バ は 以 下 の 値 を 持 つ こ と が で き る :
DT_NULL 動 的 セ ク シ ョ ン の 終 り の マ ー ク
DT_NEEDED 必 要 な ラ イ ブ ラ リ の 名 前 へ の 文 字 列 テ ー ブ ル オ フ セ ッ ト
DT_PLTRELSZ
PLT 再 配 置 (reloc) テ ー ブ ル の サ イ ズ (バ イ ト 単 位 )
DT_PLTGOT
PLT と GOT (ま た は 何 れ か 一 方 ) の ア ド レ ス
DT_HASH
シ ン ボ ル ハ ッ シ ュ テ ー ブ ル の ア ド レ ス
DT_STRTAB 文 字 列 テ ー ブ ル の ア ド レ ス
DT_SYMTAB シ ン ボ ル テ ー ブ ル の ア ド レ ス
DT_RELA
Rela 再 配 置 テ ー ブ ル の ア ド レ ス
DT_RELASZ
Rela テ ー ブ ル の サ イ ズ (バ イ ト 単 位 )
DT_RELAENT
Rela テ ー ブ ル エ ン ト リ ー の サ イ ズ (バ イ ト 単 位 )
DT_STRSZ
文 字 列 テ ー ブ ル の サ イ ズ (バ イ ト 単 位 )
DT_SYMENT シ ン ボ ル テ ー ブ ル エ ン ト リ
ー の サ
イ ズ (バ イ ト 単
位 )
DT_INIT 初 期 化 関 数
の ア ド レ ス
DT_FINI 終 了 関 数 の
ア ド レ ス
DT_SONAME 共 有 オ ブ ジ
ェ ク ト の 名 前
へ の 文 字 列 テ
ー
ブ ル オ フ セ ッ ト
DT_RPATH ラ イ ブ ラ リ 検 索 パ ス へ の 文 字 列 テ ー ブ ル オ フ セ ッ ト
(推 奨 さ れ な い )
DT_SYMBOLIC リ ン カ ー が シ ン ボ ル の 実 行 可 能 フ ァ イ ル よ り 前 に こ の 共 有 オ ブ ジ ェ ク ト を 検 索 し た 場 合 は 、 警 告 を 出 す 。
DT_REL
Rel 再 配 置 テ ー ブ ル の ア ド レ ス
DT_RELSZ
Rel テ ー ブ ル の サ イ ズ (バ イ ト 単 位 )
DT_RELENT
Rel テ ー ブ ル エ ン ト リ ー の サ イ ズ (バ イ ト 単 位 )
DT_PLTREL
PLT が 参 照 す る 再 配 置 テ ー ブ ル の タ イ プ (Rela ま た は Rel)
DT_DEBUG
デ バ ッ グ の た め に 使 用 さ れ て い る 。 内 容 は 定 義 さ れ て い な い 。
DT_TEXTREL こ れ が 指 定 さ れ て い な い 場 合 、 書 き 込 み 不 可 の セ グ メ ン ト に は 再 配 置 は 適 用 さ れ な い 。
DT_JMPREL
PLT 専 用 の 再 配 置 エ ン ト リ ー の ア ド レ ス
DT_BIND_NOW 実 行 可 能 フ ァ イ ル に 制 御 を 譲 る 前 に 、 全 て の 再 配 置 を 処 理 す る よ う に 動 的 リ ン カ ー に 指 示 す る 。
DT_RUNPATH ラ イ ブ ラ リ 検 索 パ ス へ の 文 字 列 テ ー ブ ル オ フ セ ッ ト
DT_LOPROC プ ロ セ ッ サ 固 有 の 意 味 の 開 始
DT_HIPROC プ ロ セ ッ サ 固 有 の 意 味 の 終 了
d_val こ の メ ン バ は 様
々 な 意 味 に 解 釈 さ れ る 整 数 値 で あ る 。
d_ptr こ の メ ン バ は プ ロ グ ラ ム の 仮 想 ア ド レ ス を 表 す 。 こ れ ら の ア ド レ ス を 解 釈 す る 際 に 、 実 際 の ア ド レ ス は 元
々 の フ ァ イ ル の 値 と メ モ リ ー の 基 底 ア ド レ ス か ら 計 算 さ れ る 。 フ ァ イ ル に は こ れ ら の ア ド レ ス を 修 正 す る た め の 再 配 置 エ ン ト リ ー を 含 め て は な ら な い 。
_DYNAMIC
.dynamic セ ク シ ョ ン に あ る 全 て の 動 的 構 造 体 を 含 む 配 列 。 こ れ は 自 動 的 に リ ン カ ー に 渡 さ れ る 。
注 意
ELF は System V で 初 め て 登 場 し た 。 ELF 自 体 は System V で 初 め て 登 場 し た 。 ELF フ ォ ー マ ッ ト は 採 択 さ れ た 標 準 で あ る 。
e_phnum, e_shnum, e_strndx に 対 す る 拡 張 は 、 い ず れ も Linux で の 拡 張 で あ る 。 Sun, BSD, AMD64 も こ れ に 対 応 し て い る 。 詳 し い 情 報 は 、 関 連 項 目 を 参 照 。
関 連 項 目
as(1), gdb(1), ld(1), objdump(1), execve(2), core(5)
Hewlett−Packard, Elf−64 Object File Format.
Santa Cruz Operation, System V Application Binary Interface.
UNIX System Laboratories, "Object Files", Executable and Linking Format (ELF).
Sun Microsystems, Linker and Libraries Guide.
AMD64 ABI Draft, System V Application Binary Interface AMD64 Architecture Processor Supplement.
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。