オブジェクトファイルの形式は、8 ビットバイト、32 ビットアーキテクチャー、および 64 ビットアーキテクチャーを持つさまざまなプロセッサをサポートしています。しかしながら、データ表現は、より大きな、またはより小さなアーキテクチャーに拡張できるように意図されています。表 7–1 と表 7–2 に、32 ビットデータタイプと 64 ビットデータタイプの一覧を示します。
オブジェクトファイルは、いくつかの制御データをマシンに依存しない形式で表現します。この形式は、オブジェクトファイルの共通の識別および解釈を規定します。オブジェクトファイルの残りのデータは、このオブジェクトファイルが作成されたマシンとは関係なく、対象となるプロセッサ用に符号化されています。
表 7–1 ELF 32 ビットデータタイプ
名前 |
サイズ |
整列 |
目的 |
---|---|---|---|
Elf32_Addr |
4 |
4 |
符号なしプログラムアドレス |
Elf32_Half |
2 |
2 |
符号なし、中程度の整数 |
Elf32_Off |
4 |
4 |
符号なしファイルオフセット |
Elf32_Sword |
4 |
4 |
符号付き整数 |
Elf32_Word |
4 |
4 |
符号なし整数 |
unsigned char |
1 |
1 |
符号なし、短い整数 |
表 7–2 ELF 64 ビットデータタイプ
名前 |
サイズ |
整列 |
目的 |
---|---|---|---|
Elf64_Addr |
8 |
8 |
符号なしプログラムアドレス |
Elf64_Half |
2 |
2 |
符号なし、中程度の整数 |
Elf64_Off |
8 |
8 |
符号なしファイルオフセット |
Elf64_Sword |
4 |
4 |
符号付き整数 |
Elf64_Word |
4 |
4 |
符号なし整数 |
Elf64_Xword |
8 |
8 |
符号なし、長い整数 |
Elf64_Sxword |
8 |
8 |
符号付き、長い整数 |
unsigned char |
1 |
1 |
符号なし、短い整数 |
オブジェクトファイルの形式で定義されるすべてのデータ構造は、該当クラスの自然なサイズと整列ガイドラインに従います。データ構造に明示的にパッドを入れることで、4 バイトオブジェクトに対して 4 バイト整列を保証したり構造サイズを 4 の倍数に設定したりできます。また、データはファイルの先頭から適切に整列されます。したがってたとえば、Elf32_Addr メンバーが存在する構造はファイル内において 4 バイト境界で整列されます。同様に、Elf64_Addr メンバーが存在する構造は 8 バイト境界で整列されます。
移植性を考慮して、ELF ではビットフィールドを使用していません。