e_phnum が 保
持 で き る 最 大
値 を 表 し 、 0xffff に
定 義 さ れ て い
る 。 e_phnum は プ ロ
グ ラ ム ヘ ッ ダ
ー の 実 際 の 数
が ど こ に 割 り
当 て ら れ て い
る か を 示 す 。
は セ ク
シ ョ ン ヘ ッ ダ
ー の サ イ ズ (バ
イ ト 単 位 ) を 保
持 す る 。 セ ク
シ ョ ン ヘ ッ ダ
ー は セ ク シ ョ
ン ヘ ッ ダ ー テ
ー ブ ル の 1 つ の
エ ン ト リ ー で
あ る ; 全 て の エ
ン ト リ ー は 同
じ サ イ ズ で あ
る 。
こ の メ
ン バ は セ ク シ
ョ ン ヘ ッ ダ ー
テ ー ブ ル に あ
る エ ン ト リ ー
の 数 を 保 持 す
る 。 よ っ て
e_shentsize と e_shnum の 積
は セ ク シ ョ ン
ヘ ッ ダ ー テ ー
ブ ル の サ イ ズ
(バ イ ト 単 位 ) に
な る 。 フ ァ イ
ル に セ ク シ ョ
ン ヘ ッ ダ ー テ
ー ブ ル が な い
場 合 、 e_shnum は 値
0 を 保 持 す る 。
セ ク シ ョ ン ヘ
ッ ダ ー テ ー ブ
ル の エ ン ト リ
ー 数 が SHN_LORESERVE (0xff00)
以 上 の 場 合 、
e_shnum に は 値 0 が
入 り 、 セ ク シ
ョ ン ヘ ッ ダ ー
テ ー ブ ル の エ
ン ト リ ー の 実
際 の 数 は セ ク
シ ョ ン ヘ ッ ダ
ー テ ー ブ ル の
最 初 の エ ン ト
リ ー の sh_size メ ン
バ に 格 納 さ れ
る 。 そ れ 以 外
の 場 合 、 セ ク
シ ョ ン ヘ ッ ダ
ー テ ー ブ ル の
最 初 の エ ン ト
リ ー の sh_info メ ン
バ に は 値 0 が 格
納 さ れ る 。
こ の メ
ン バ は セ ク シ
ョ ン 名 文 字 列
テ ー ブ ル に 関
連 付 け ら れ た
エ ン ト リ ー の
セ ク シ ョ ン ヘ
ッ ダ ー テ ー ブ
ル イ ン デ ッ ク
ス を 保 持 す る
。 フ ァ イ ル に
セ ク シ ョ ン 名
文 字 列 テ ー ブ
ル が な い 場 合
、 こ の メ ン バ
は 値 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 (見 え
る 範 囲 ) を 規 定
す る 。
ト の シ
ン ボ ル 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_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/ に 書
か れ て い る 。
| | |