リンカーとライブラリ

データ表現

オブジェクトファイルの形式は、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 ではビットフィールドを使用していません。