ELF Header:
Magic: 7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, big endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: Hitachi H8/300
Version: 0x1
Entry point address: 0x100
Start of program headers: 52 (bytes into file)
Start of section headers: 2264 (bytes into file)
Flags: 0x810000
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 3
Size of section headers: 40 (bytes)
Number of section headers: 9
Section header string table index: 6

readelfしたELFヘッダの出力を確認。

①Magic
先頭16バイトの識別情報の内容です。
|bit |表記 |内容
-------------------------------------------------------
|0-3 |- |0x7f 'E' 'L' 'F'(マジック・ナンバ)
|4 |Class |32ビット/64ビットの区別
|5 | Data |エンディアン
|6 |Version |ELF形式のバージョン
|7 |OS/ABI |OSの種別
|8 |ABI Version |OSのバージョン
|9-15 |- |予約(未使用)

文脈から推測するに対応した情報が以下かと思われる。
Magic: 7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, big endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0

ELF形式は汎用性の高いフォーマットになっており、32ビット/64ビットの両方と、さらにリトル・エンディアン/ビッグ・エンディアンの両方に対応している。

9-15はリザーブ領域です。今後情報を追加したい場合にELFヘッダのサイズが変化してしまったりなど、互換性の点で非常に都合の悪いことになるのでそれの対策のために設けてある。

これらの情報を識別した後でないとデータを正しく読みこめないとのこと。
要はそれらの情報が変わるとフォーマットも変わってくるということなのだろう。


|表記 |サイズ(byte) |内容
-------------------------------------------------------
|Type|2|オブジェクトファイル(REL:リロケータブルファイルの意)や実行形式ファイル(EXEC)などの種別
|Machine|2|CPUのアーキテクチャ(H8/i386)
|Version|4|ELF形式のバージョン
|Entry point address|4|実行開始アドレス(エントリ・ポイント)
|Start of program headers|4|プログラム・ヘッダ・テーブルの位置
|Start of section headers|4|セクション・ヘッダ・テーブルの位置
|Flags|4|フラグ(何のだろう?とりあえず置いておく)
|Size of this header|2|ELFヘッダのサイズ(たしかに52byteだ)
|Size of program headers|2|プログラム・ヘッダのサイズ
|Number of program headers|2|プログラム・ヘッダの個数
|Size of section headers|2|セクション・ヘッダのサイズ
|Number of section headers|2|セクション・ヘッダの個数
|Section header string table index|2|セクション名を格納するセクションの番号

文脈から推測するに対応した情報が以下かと思われます。
Type: EXEC (Executable file)
Machine: Hitachi H8/300
Version: 0x1
Entry point address: 0x100
Start of program headers: 52 (bytes into file)
Start of section headers: 2264 (bytes into file)
Flags: 0x810000
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 3
Size of section headers: 40 (bytes)
Number of section headers: 9
Section header string table index: 6


64ビットのELF形式ではサイズが変化するとのこと。
ここで重要なのは、セクション・ヘッダに関する情報と、プログラム・ヘッダに関する情報です。これらの情報を見ることで、セクション・ヘッダ・テーブルの位置を知ることができ、さらにセクション・ヘッダ・テーブルを見ることで、セクション構成を知ることができるということだ。