Executable and Linkable Format
Executable and Linkable Format (ELF) は実行ファイルおよびオブジェクトファイルのためのファイルフォーマットである。コンテナフォーマットの一種。
| 拡張子 | なし、.o、.so、.elf、 .app、.bin、.ko |
|---|---|
| マジック ナンバー | 0x7f ELF |
| 開発者 | UNIX Systems Laboratories |
| 種別 | バイナリ、実行可能、オブジェクト、共有ライブラリ、コアダンプ |
a.outフォーマット、COFFの後継として広く採用されている。セクション数の制限が緩く、メモリ上で連続していないファイルや、ロードされる場所と実行される場所が違う箇所を含む場合にも対応が可能な柔軟な設計となっている。
System V が採用し、GNUツールチェーンがサポートしている。今ではBSD派生OSやLinuxをはじめとするフリーなOSにおける実行ファイルフォーマットや、ゲーム機等を含む組み込み機器開発にも数多く使われている。
ヘッダ
ELFには以下の3種類のヘッダがある。

ELFファイルの構造
- ELFヘッダ
- ファイルの先頭に存在し、ELF識別子、アーキテクチャ情報および、他の2つのヘッダへの情報を持つ。
- プログラムヘッダ
- ファイル上のどの部分(セグメント)がどのような属性で何処に読み込まれるかを保持するヘッダであり、ファイルローダによって扱われる。実行時にELFヘッダに続いてディスクから何らかの形で読み込まれるセグメントの数だけ存在する。直接読み込まれるわけではないオブジェクトファイルには存在しないことがある。
- セクションヘッダ
- オブジェクトファイルの論理的な構造を記述する部分で、ヘッダと名前がついているが実際にはファイルの最後あたりに置かれていることが多い。ここはリンカやデバッガによって参照されることがある。セクションはセクション名があるが、それは特殊なセクションに置かれ何番目の文字列かという指し方を行う。このことによって、エントリそのものは固定長にしつつセクション名の長さ制限を取り払っている。
共有ライブラリ
共有ライブラリにも対応しており、しかるべき属性のセグメント内にある、Procedure Location Tableや、Global Offset Tableを利用して、間接的に参照することになる。
デバッグ情報ファイル
デバッグ情報のフォーマットは定義されていないが、ELF(妖精)をもじったDebug With Arbitrary Record Format略してDWARF(小人)と呼ばれる形式のフォーマットがよく使われる。
外部リンク
elf(5)– JM Project Linux File Formats マニュアル
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.