readelf とは†
- ELF ファイルの情報を表示する
- 例えば、とある static lib がどのアーキテクチャでコンパイルされたものなのか、が分かる情報を表示することが出来る
起動オプション†
option | description | remark |
-h, --file-header | ファイルヘッダ情報を表示する | |
-l, --program-headers, --segments | プログラムヘッダ情報を表示する | |
-S, --section-headers, --sections | セクションヘッダ情報を表示する | |
-e, --headers | 上記3つのヘッダ情報を表示する | |
-s, --syms, -symbols | シンボルテーブル | |
-r, --relocs | リロケーション方法 | |
-d, --dynamic | ダイナミックセグメント | |
-V, --version-info | バージョン情報 | |
-A, --arch-specific | アーキテクチャ依存 | |
-I, --histogram | パケットリスト長のヒストグラム | |
-a, --all | ヘッダ全てと以上の全て | |
-n, --notes | コアノート (core notes) | |
-u, --unwind | unwind 情報 | |
-W, --wide | 80 colmun 以上の行も改行せずに出力する | デフォルトでは80文字を超える場合は改行される |
-w, --debug-dump | DWARF2 デバッグセクションをダンプする | |
ELF セクションのダンプ†
- -x オプションで指定した内容をダンプする。
- セクションはセクション番号で指定する。(セクションは、 -Sオプションで表示されるセクションヘッダに付いている番号)
DWARF2 デバッグセクションの読み出し†
実行例†
$ readelf -h ./bash/bash-4.3/lib/glob/libglob.a
ファイル: ./bash/bash-4.3/lib/glob/libglob.a(gmisc.o)
ELF ヘッダ:
マジック: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
クラス: ELF64
データ: 2 の補数、リトルエンディアン
バージョン: 1 (current)
OS/ABI: UNIX - System V
ABI バージョン: 0
型: REL (再配置可能ファイル)
マシン: Advanced Micro Devices X86-64
バージョン: 0x1
エントリポイントアドレス: 0x0
プログラムの開始ヘッダ: 0 (バイト)
セクションヘッダ始点: 21872 (バイト)
フラグ: 0x0
このヘッダのサイズ: 64 (バイト)
プログラムヘッダサイズ: 0 (バイト)
プログラムヘッダ数: 0
セクションヘッダ: 64 (バイト)
セクションヘッダサイズ: 24
セクションヘッダ文字列表索引: 21