Manpages

名 前

elf − 実 行 可 能 リ ン ク フ ォ ー マ ッ ト (ELF) フ ァ イ ル の フ ォ ー マ ッ ト

書 式

#include <elf.h>

説 明

ヘ ッ ダ ー フ ァ イ ル <elf.h> は ELF 実 行 可 能 バ イ ナ リ フ ァ イ ル の フ ォ ー マ ッ ト を 定 義 す る 。 こ れ ら の フ ァ イ ル と し て は 、 通 常 の 実 行 可 能 フ ァ イ ル ・ 再 配 置 可 能 オ ブ ジ ェ ク ト フ ァ イ ル ・ コ ア フ ァ イ ル ・ 共 有 ラ イ ブ ラ リ が あ る 。

ELF フ ァ イ ル フ ォ ー マ ッ ト を 使 う 実 行 可 能 フ ァ イ ル は 、 ELF ヘ ッ ダ ー の 後 に プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル ま た は セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル (ま た は そ の 両 方 ) が 続 く 構 成 で あ る 。 ELF ヘ ッ ダ ー は 常 に フ ァ イ ル の オ フ セ ッ ト 0 に あ る 。 プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル と セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の フ ァ イ ル 内 で の オ フ セ ッ ト は 、 ELF ヘ ッ ダ ー に 定 義 さ れ て い る 。 こ の 2 つ の テ ー ブ ル は フ ァ イ ル の 残 り の 部 分 の 詳 細 を 記 述 す る 。 こ の ヘ ッ ダ ー フ ァ イ ル は 上 記 の ヘ ッ ダ ー を C 言 語 の 構 造 体 で 記 述 し 、 ま た 動 的 セ ク シ ョ ン ・ 再 配 置 可 能 セ ク シ ョ ン ・ シ ン ボ ル テ ー ブ ル の 構 造 体 も 含 ん で い る 。 以 下 の 型 は N ビ ッ ト ア ー キ テ ク チ ャ ー で 使 わ れ る (N=32,64 で あ り ElfNElf32 ま た は Elf64 を 表 し 、 uintN_tuint32_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_HalfElf32_Half の 2 倍 で あ り 、 Elf64Quarteruint16_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_phentsizee_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_shentsizee_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_LORESERVESHN_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_fileszp_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_XPF_R を 持 つ 。 デ ー

タ セ グ メ ン ト は 一 般 に PF_X, PF_W, PF_R を 持 つ 。

p_align こ の メ ン バ は 、 セ グ メ ン ト が メ モ リ ー お よ び フ ァ イ ル に お い て 配 置

(align) さ れ る 値 を 保 持 す る 。 ロ ー ド 可 能 プ ロ セ ス セ グ メ ン ト は 、 ペ ー ジ サ イ ズ を 法 と し て p_vaddrp_offset と 合 同 で な け れ ば な ら な い (訳 注 :「 p_vaddr mod ペ ー ジ サ イ ズ = p_offset mod ペ ー ジ サ イ ズ 」 で な け れ ば な ら な い )。 。 0 と 1 と い う 値 は 配 置 が 必 要 な い こ と を 意 味 す る 。 そ れ 以 外 の 場 合 、 p_align は 正 で 2 の 整 数 乗 で な け れ ば な ら ず 、 p_vaddrp_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_LORESERVESHN_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_LORESERVESHN_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_ALLOCSHF_WRITE で あ る 。

.comment こ の セ ク シ ョ ン は バ ー ジ ョ ン 制 御 情 報 を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は

SHT_PROGBITS で あ る 。 属 性 タ イ プ は 使 用 さ れ な い 。

.ctors こ の セ ク シ ョ ン は

C++ コ ン ス ト ラ ク タ ー 関 数 へ の 初 期 化 さ れ た ポ イ

ン タ ー を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 属 性 タ イ プ は SHF_ALLOCSHF_WRITE で あ る 。

.data こ の セ ク シ ョ ン は プ ロ グ ラ ム の メ モ リ ー イ メ ー ジ に 配 置 さ れ る 初 期 化 済 み デ ー タ を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は

SHT_PROGBITS で あ る 。 属 性 タ イ プ は SHF_ALLOCSHF_WRITE で あ る 。

.data1 こ の セ ク シ ョ ン は プ ロ グ ラ ム の メ モ リ ー イ メ ー ジ に 配 置 さ れ る 初 期 化 済 み デ ー タ を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は

SHT_PROGBITS で あ る 。 属 性 タ イ プ は SHF_ALLOCSHF_WRITE で あ る 。

.debug こ の セ ク シ ョ ン は シ ン ボ リ ッ ク デ バ ッ グ 用 の 情 報 を 保 持 す る 。 そ の 内 容 は 指 定 さ れ て い な い 。 こ の セ ク シ ョ ン の タ イ プ は

SHT_PROGBITS で あ る 。 属 性 タ イ プ は 使 用 さ れ な い 。

.dtors こ の セ ク シ ョ ン は

C++ デ ス ト ラ ク タ 関 数 へ の 初 期 化 さ れ た ポ イ ン

タ ー を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 属 性 タ イ プ は SHF_ALLOCSHF_WRITE で あ る 。

.dynamic こ の セ ク シ ョ ン は 動 的 リ ン ク 情 報 を 保 持 す る 。 こ の セ ク シ ョ ン の 属 性 は

SHF_ALLOC ビ ッ ト を 含 む 。 SHF_WRITE ビ ッ ト が 設 定 さ れ る か 否 か は プ ロ セ ッ サ に よ る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_DYNAMIC で あ る 。 上 記 の 属 性 を 参 照 す る こ と 。

.dynstr こ の セ ク シ ョ ン は 動 的 リ ン ク に 必 要 な 文 字 列 を 保 持 す る 。 最 も 一 般 的 に は 、 こ の 文 字 列 は シ ン ボ ル テ ー ブ ル エ ン ト リ ー と 関 連 づ け ら れ た 名 前 を 表 す 。 こ の セ ク シ ョ ン の タ イ プ は

SHT_STRTAB で あ る 。 使 用 さ れ る 属 性 タ イ プ は SHF_ALLOC で あ る 。

.dynsym こ の セ ク シ ョ ン は 動 的 リ ン ク シ ン ボ ル テ ー ブ ル を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は

SHT_DYNSYM で あ る 。 使 用 さ れ る 属 性 タ イ プ は SHF_ALLOC で あ る 。

.fini こ の セ ク シ ョ ン は プ ロ セ ス 終 了 コ ー ド に 置 か れ る 実 行 可 能 命 令 を 保 持 す る 。 プ ロ セ ス が 正 常 に 終 了 し た 場 合 、 シ ス テ ム は こ の セ ク シ ョ ン に あ る コ ー ド を 配 置 し て 実 行 す る 。 こ の セ ク シ ョ ン の タ イ プ は

SHT_PROGBITS で あ る 。 使 用 さ れ る 属 性 タ イ プ は SHF_ALLOCSHF_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_ALLOCSHF_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_ALLOCSHF_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_TYPEELF[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/ に 書 か れ て い る 。