ELF
拡張子 なし、.o.so.elf
.app.bin.ko
マジック
ナンバー
0x7f ELF
開発者 UNIX Systems Laboratories
種別 バイナリ実行可能オブジェクト共有ライブラリコアダンプ
テンプレートを表示

Executable and Linkable Format (ELF) は、プログラム実行ファイルおよびオブジェクトファイルを保存するためのバイナリファイル形式である。Unix系オペレーティングシステムの標準的な実行形式としてSystem Vにより導入され、従来のa.outフォーマットCOFFに代わる形式として広く採用された。

現在は LinuxBSD系OS、ならびに組み込みシステムの開発環境などで、プログラムライブラリの生成・配布・読み込みに利用されている。内部を用途別の領域に分割して管理する構造を持ち、動的リンクや再配置、非連続なメモリ配置に対応できる柔軟性を備える点を特徴とする。

ヘッダ

編集

ELFには以下の3種類のヘッダがある。

ELFファイルの構造
ELFヘッダ
ファイルの先頭に存在し、ELF識別子、アーキテクチャ情報および、他の2つのヘッダへの情報を持つ。
プログラムヘッダ
ファイル上のどの部分(セグメント)がどのような属性で何処に読み込まれるかを保持するヘッダであり、ファイルローダによって扱われる。実行時にELFヘッダに続いてディスクから何らかの形で読み込まれるセグメントの数だけ存在する。直接読み込まれるわけではないオブジェクトファイルには存在しないことがある。
セクションヘッダ
オブジェクトファイルの論理的な構造を記述する部分である。一般にはリンカデバッガ等、バイナリの実行以外の目的でELFファイルにアクセスするツールが使用する。バイナリの実行時には必ずしも必要でない情報が多いため、ヘッダと名前がついているが実際にはファイルの最後あたりに置かれていることが多い。
各セクションには通常セクション名がある。セクション名の文字列はELFヘッダにて指定された文字列専用セクションにヌル終端文字列として置かれ、その専用セクションの先頭からのオフセット[1]をもって文字列を指定する。このことによって、エントリそのものは固定長にしつつセクション名の長さ制限を取り払っている。指定するオフセットは文字列専用セクションにある文字列の途中を指すことも可能で、サフィックスが重複する文字列をまとめて記述することができる。

共有ライブラリ

編集

共有ライブラリにも対応しており、しかるべき属性のセグメント内にある、Procedure Location Tableや、Global Offset Tableを利用して、間接的に参照することになる。

デバッグ情報ファイル

編集

デバッグ情報のフォーマットは定義されていないが、ELF(妖精)をもじったDebug With Arbitrary Record Format略してDWARF(小人)と呼ばれる形式のフォーマットがよく使われる。

編集
  1. ^ 正確には、文字列専用セクションの先頭から、各文字列のサイズをカウントしたときのオフセットである。文字列専用セクションにて2バイト以上のアラインメントが指定されている場合、文字列同士の間にパディングが入るため単純に文字列専用セクション先頭にオフセットを加えただけでは対象文字列の先頭にならないことがある。

関連項目

編集

外部リンク

編集

📚 Artikel Terkait di Wikipedia

実行ファイル

イルの形式はOSごとに定められており、WindowsではPortable Executable(PE)形式(拡張子 .exe など)、Linux・UNIX系OSではExecutable and Linkable Format(ELF)形式が標準的に用いられる。ファイルが実行可能かどうかは、拡張子ま

Portable Executable

Windows DLL files when attempting to load a Windows binary.” EXE Executable and Linkable Format Mach-O a.out 実行ファイル形式 実行ファイル圧縮 アプリケーション仮想化 Windows実行可能形式 S.S'S

ファイルフォーマット

Compact Pro EXEフォーマット Portable Executable COMフォーマット a.out ELF (Executable and Linkable Format) PEF (Preferred Executable Format) Mach-O S-record dyld MACフレーム

COFF

COFF (Common Object File Format) はUnixシステムで用いられる実行ファイル、オブジェクトファイル、共有ライブラリのファイルフォーマット仕様である。Unix System V で導入され、SVR4で導入されたELFによって広く置き換えられる前に、XCOFFやECOFF

エルフ (曖昧さ回避)

エルフ・アキテーヌが開発、製造したオートバイのシリーズ。 エリトリア解放戦線 - エチオピア・エリトリアの反政府組織。 Executable and Linkable Format - LinuxやBSDなどのUnix系オペレーティングシステム (OS) の一部が採用している実行ファイルフォーマット。

データフォーマットの一覧

Message Format JAR JBIG JBIG2 JPEG JPEG 2000 JPEG XR JSONP JavaScript Object Notation JavaServer Pages Javaクラスファイル LZH La Linear Executable Lzip lzop

UNIX

GroupはAustin Groupを立ち上げた。 1999年、互換性を達成するため、いくつかのUnixシステムベンダーはSVR4のExecutable and Linkable Format (ELF) をオブジェクトファイルおよび実行ファイルの標準規格とすることに合意した。これによって、同一CPUアーキテク

VDSO

によるパフォーマンス低下なしに、プロセス内で呼び出せる。 vDSO は、リンク と ロード に標準のメカニズムを使用する。すなわち、標準の Executable and Linkable Format (ELF) 形式である。 vDSO は、いくつかのカーネル機能を公開する、ユーザ空間に割り当てられたメモリ領域である。vDSO