| READELF(1) | GNU Development Tools | READELF(1) |
名前¶
readelf - ELF ファイルの情報を表示
書式¶
readelf [-a|--all]
[-h|--file-header]
[-l|--program-headers|--segments]
[-S|--section-headers|--sections]
[-g|--section-groups]
[-t|--section-details]
[-e|--headers]
[-s|--syms|--symbols]
[--dyn-syms|--lto-syms]
[--sym-base=[0|8|10|16]]
[--demangle=style|--no-demangle]
[--quiet]
[--recurse-limit|--no-recurse-limit]
[-U method|--unicode=method]
[-X|--extra-sym-info|--no-extra-sym-info]
[-n|--notes]
[-r|--relocs]
[-u|--unwind]
[-d|--dynamic]
[-V|--version-info]
[-A|--arch-specific]
[-D|--use-dynamic]
[-L|--lint|--enable-checks]
[-x <number or name>|--hex-dump=<number or name>]
[-p <number or name>|--string-dump=<number or
name>]
[-R <number or name>|--relocated-dump=<number or
name>]
[-j <number or name>|--display-section=<number or
name>]
[-z|--decompress]
[-c|--archive-index]
[-w[lLiaprmfFsoORtUuTgAck]|
--debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links]]
[-wK|--debug-dump=follow-links]
[-wN|--debug-dump=no-follow-links]
[-wD|--debug-dump=use-debuginfod]
[-wE|--debug-dump=do-not-use-debuginfod]
[-P|--process-links]
[--dwarf-depth=n]
[--dwarf-start=n]
[--ctf=section]
[--ctf-parent=section]
[--ctf-symbols=section]
[--ctf-strings=section]
[--sframe=section]
[-I|--histogram]
[-v|--version]
[-W|--wide]
[-T|--silent-truncation]
[-H|--help]
elffile...
説明¶
readelf は、1つまたは複数の ELF 形式のオブジェクトファイルに関する情報を表示します。オプションは、表示する特定の情報を制御します。
elffile... は検査されるオブジェクトファイルです。32ビット と64ビットの ELF ファイル、および ELF ファイルを含むアーカイブがサポートされています。
このプログラムはobjdump と同様の機能を実行しますが、より詳細であり、 BFD ライブラリとは独立して存在するため、 BFD にバグがあっても readelf は影響を受けません。
オプション¶
ここで選択肢として示されているオプションの、長い形式と短い形式は同等です。 -v または -H 以外に少なくとも 1つのオプションを指定する必要があります。
- -a
- --all
- --file-header, --program-headers, --sections,
--symbols, --relocs, --dynamic, --notes,
--version-info, --arch-specific, --unwind,
--section-groups and --histogram
を指定するのと同じです。
注意 - このオプションは --use-dynamic 自体を有効にしません。そのため、このオプションがコマンドラインに存在しない場合、動的シンボルと動的再配置は表示されません。
- -h
- --file-header
- ファイルの先頭にある ELF ヘッダーに含まれる情報を表示します。
- -l
- --program-headers
- --segments
- ファイルのセグメントヘッダーに含まれる情報を表示します (セグメントヘッダーがある場合)。
- --quiet
- "no symbols" 診断表示を省略します。
- -S
- --sections
- --section-headers
- ファイルのセクションヘッダーに含まれる情報を表示します (セクションヘッダーがある場合)。
- -g
- --section-groups
- ファイルのセクショングループに含まれる情報を表示します
(セクショングループがある場合)。
セクションの詳細情報を表示します。-S を仮定します。
- -s
- --symbols
- --syms
- ファイルのシンボルテーブルセクションにエントリがある場合、そのエントリを表示します。 シンボルにバージョン情報が関連付けられている場合は、その情報も表示されます。バージョン文字列はシンボル名の接尾辞として表示され、先頭に @ 文字が付きます。例 foo@VER_1. バージョンが、シンボルへのバージョン化されていない参照を解決する際に使用されるデフォルトのバージョンである場合、 2つの @ 文字の後に接尾辞として表示されます。例は次のようになります foo@@VER_2 。
- --dyn-syms
- ファイルの動的シンボルテーブルセクションにエントリがある場合、そのエントリを表示します。出力の形式は、 --syms オプションで使用される形式と同じです。
- --lto-syms
- ファイル内の LTO シンボルテーブルの内容が表示されます。
- --sym-base=[0|8|10|16]
- シンボルテーブルのサイズフィールドで、指定した基数が強制的に使用されます。認識できないオプションは
0
として扱われます。--sym-base=0
は、デフォルトおよび従来の動作を表します。これにより、
100000未満の数値のサイズが
10進数として出力されます。サイズについては、
100000以上の 16進数表記が
0x
プレフィックスとともに使用されます。
--sym-base=8
は、シンボルのサイズを
8進数で表示します。
--sym-base=10
は、常にシンボルサイズを
10進数で表示します。
--sym-base=16 は、常に 0x
の接頭辞を持つ
16進数のシンボルサイズを与えます。
低レベルのシンボル名をユーザーレベルの名前にデコード(demangle)します。 これにより、C++ 関数名が読みやすくなります。コンパイラが異なれば、 mangle スタイルも異なります。オプションの demangling style 引数を使用して、コンパイラに適した demangling スタイルを選択できます。demangling の詳細については c++filt を参照してください。
- --no-demangle
- 下位レベルのシンボル名をデコード (demangle) しません。これがデフォルトです。
- --recurse-limit
- --no-recurse-limit
- --recursion-limit
- --no-recursion-limit
- 文字列のデコード
(demangling)
中に実行される反復の量に対する制限を有効または無効にします。名前をエンコード
(mangling)
する形式は無限レベルの再帰を許すので、デコード操作がホストマシンで利用可能なスタック空間の量を使い果たし、メモリ障害を引き起こすような文字列を作成する可能性があります。この制限では、再帰を
2048レベルまでのネストに制限することで、これが発生しないようにしています。
デフォルトでは、この制限は有効になっていますが、本当に複雑な名前をデコード (demangle) するには無効にする必要がある場合があります。ただし、再帰制限が無効になっている場合は、スタックが枯渇する可能性があり、そのようなイベントに関するバグレポートは拒否されることに注意してください。
- -U [d|i|l|e|x|h]
- --unicode=[default|invalid|locale|escape|hex|highlight]
- 識別子名の非 ASCII
文字の表示を制御します。
デフォルト (--unicode=locale
または --unicode=default)
では、マルチバイト文字として扱われ、現在のロケールで表示されます。このオプションの他のすべてのバージョンは、バイトを
UTF-8
エンコード値として扱い、それらを解釈しようとします。解釈できない場合、または
--unicode=invalid
オプションが使用されている場合は、
16進数バイトのシーケンスとして表示され、折り畳まれた置換文字で囲まれます。
--unicode=escape オプションを使用すると、文字は Unicode エスケープ・シーケンス (\uxxxx) として表示されます。--unicode=hex を使用すると、山括弧で囲まれた 16進バイト列として文字が表示されます。
--unicode=highlight を使用すると、文字は unicode のエスケープシーケンスとして表示されますが、出力デバイスで色付けがサポートされている場合は、赤で強調表示されます。色分けは、 unicode シーケンスの存在が予期されない場合に注意を引くことを目的としています。
- -X
- --extra-sym-info
- シンボルの詳細を表示する場合は、通常は表示されない追加情報を含めます。現在は、シンボルのインデックスフィールドで参照されるセクションの名前を追加するだけです
(存在する場合)。今後、このオプションを有効にすると、より多くの情報が表示される可能性があります。
このオプションを有効にすると、少なくともシンボル情報を表示する場合には、 --wide オプションも有効になります。
- --no-extra-sym-info
- --extra-sym-info オプションの効果を無効にします。これはデフォルトです。
- -e
- --headers
- ファイル中のすべてのヘッダを表示します。-h -l -S と同じです。
- -n
- --notes
- NOTE セグメントやセクションの内容を表示します (存在する場合)。
- -r
- --relocs
- ファイルの再配置セクションがあれば、その内容が表示されます。
- -u
- --unwind
- ファイルの巻き戻しセクションがある場合は、その内容を表示します。現在サポートされているのは、 IA64 ELF ファイルの巻き戻しセクションと ARM 巻き戻しテーブル (".ARM.exidx" / ".ARM.extab") のみです。お使いのアーキテクチャでまだサポートされていない場合は、 --debug-dump=frames または --debug-dump=frames-interp オプションを使用して、 .eh_frames セクションの内容をダンプしてみてください。
- -d
- --dynamic
- ファイルの動的セクションがある場合は、その内容を表示します。
- -V
- --version-info
- ファイルの動的セクションがある場合は、その内容を表示します。
- -A
- --arch-specific
- ファイルの動的セクションがある場合は、その内容を表示します。
- -D
- --use-dynamic
- シンボルを表示する場合、このオプションを使用すると、
readelf
はシンボルテーブルセクションではなく、ファイルの動的セクションのシンボルハッシュテーブルを使用します。
このオプションを指定すると、 readelf は静的再配置ではなく動的再配置を表示します。
- -L
- --lint
- --enable-checks
- 調査中のファイルで発生する可能性がある問題についての警告メッセージを表示します。単独で使用すると、ファイルのすべての内容が検査されます。いずれかのダンプオプションと一緒に使用すると、警告メッセージは表示されているものに対してのみ生成されます。
- -x <number or name>
- --hex-dump=<number or name>
- 指定されたセクションの内容を 16進数バイトで表示します。 番号は、セクションテーブル内のインデックスによって特定のセクションを識別します。その他の文字列は、オブジェクトファイル内のその名前を持つすべてのセクションを識別します。 このオプションは、複数の 16進数ダンプを要求するために、コマンドラインで複数回繰り返すことができます。
- -R <number or name>
- --relocated-dump=<number or name>
- 指定されたセクションの内容を 16進数バイトで表示します。番号は、セクションテーブル内のインデックスによって特定のセクションを識別します。その他の文字列は、オブジェクトファイル内のその名前を持つすべてのセクションを識別します。セクションの内容は、表示される前に再配置されます。 このオプションは、複数の再配置ダンプを要求するために、コマンド・ラインで複数回繰り返すことができます。
- -p <number or name>
- --string-dump=<number or name>
- 指定されたセクションの内容を印刷可能な文字列として表示します。 番号は、セクションテーブル内のインデックスによって特定のセクションを識別します。その他の文字列は、オブジェクトファイル内のその名前を持つすべてのセクションを識別します。 このオプションは、複数の文字列ダンプを要求するために、コマンドラインで複数回繰り返すことができます。
- -j <number or name>
- --display-section
- セクションヘッダーのタイプに従って、指定されたセクションの内容を表示します。再配置を含むセクションは
--relocations
オプションが使用されたかのように表示され、シンボルを含むセクションは
--syms
オプションが使用されたかのように表示されます。
セクションテーブル内のインデックスによって、番号が特定のセクションを識別します。その他の文字列は、入力ファイル内のその名前を持つすべてのセクションを識別します。
このオプションは、複数のセクションのダンプを要求するために、コマンドラインで複数回繰り返すことができます。
- -z
- --decompress
- x、R、または p のオプションによってダンプされるセクションを表示する前に解凍するように要求します。セクションが圧縮されていない場合は、そのまま表示されます。
- -c
- --archive-index
- バイナリアーカイブのヘッダ部分に含まれるファイルシンボルインデックス情報を表示します。ar に対する t コマンドと同じ機能を実行しますが、 BFD ライブラリを使用しません。
- -w[lLiaprmfFsOoRtUuTgAckK]
- --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links,=follow-links]
- ファイル内の DWARF デバッグセクションの内容を表示します (存在する場合)。圧縮されたデバッグセクションは、表示される前に自動的に (一時的に) 解凍されます。スイッチの後にオプションの文字または単語が 1つ以上続く場合は、それらのタイプのデータのみがダンプされます。文字と単語は以下の情報を参照します:
- "a"
- "=abbrev"
- .debug_abbrev セクションの内容を表示します。
- "A"
- "=addr"
- .debug_addr セクションの内容を表示します。
- "c"
- "=cu_index"
- .debug_cu_index セクションと .debug_tu_index セクションの内容を表示します。
- "f"
- "=frames"
- .debug_frame セクションの内容をそのまま表示します。
- "F"
- "=frames-interp"
- .debug_frame セクションの解釈された内容を表示します。
- "g"
- "=gdb_index"
- .gdb_index セクションと .debug_names セクションの内容を表示します。
- "i"
- "=info"
- .debug_info セクションの内容を表示します。注意: このオプションからの出力は、 --dwarf-depth および --dwarf-start オプションを使用して制限することもできます。
- "k"
- "=links"
- .gnu_debuglink、 .gnu_debugaltlink、および .debug_sup セクションが存在する場合、その内容を表示します。また、 .debug_info セクション の DW_AT_GNU_dwo_name または DW_AT_dwo_name 属性によって指定されている場合は、個別の dwarf オブジェクトファイル (dwo) へのリンクも表示します。
- "K"
- "=follow-links"
- リンクされた個別のデバッグ情報ファイルで見つかった、選択されたデバッグセクションの内容を表示します。これにより、同じデバッグセクションが複数のファイルに存在する場合、複数のバージョンが表示される可能性があります。
さらに、 DWARF 属性を表示するときに、個別のデバッグ情報ファイルを参照するフォームが見つかった場合は、参照された内容も表示されます。
注意 - 一部のディストリビューションでは、このオプションはデフォルトで有効になっています。N デバッグオプションを使用して無効にできます。デフォルトは、 binutils の設定時に --enable-follow-debug-links=yes または --enable-follow-debug-links=no オプションで選択できます。これらが使用されない場合、デフォルトでは次のデバッグリンクが有効になります。
注意 - binutils が構築された時に debuginfod プロトコルのサポートが有効になっていた場合、このオプションは DEBUGINFOD_URLS 環境変数に指定された debuginfod サーバへの接続も行います。この問題の解決には時間がかかる場合があります。この動作は、デバッグオプション =do-not-use-debuginfod を使用して無効にできます。
- "N"
- "=no-follow-links"
- 個別のデバッグ情報ファイルへの次のリンクを無効にします。
- "D"
- "=use-debuginfod"
- デバッグリンクをたどる必要がある場合に、 debuginfod サーバとの通信を有効にします。これがデフォルトの動作です。
- "E"
- "=do-not-use-debuginfod"
- デバッグリンクをたどる必要がある場合に、debuginfod サーバへの接続を無効にします。
- "l"
- "=rawline"
- .debug_line セクションの内容を raw 形式で表示します。
- "L"
- "=decodedline"
- .debug_line セクションの解釈された内容を表示します。
- "m"
- "=macro"
- .debug_macro セクションと .debug_macinfo セクションの内容を表示します。
- "o"
- "=loc"
- .debug_loc セクションおよび .debug_loclists セクションの内容を表示します。
- "O"
- "=str-offsets"
- .debug_str_offsets セクションの内容を表示します。
- "p"
- "=pubnames"
- .debug_pubnames および .debug_gnu_pubnames セクションの内容を表示します。
- "r"
- "=aranges"
- .debug_aranges セクションの内容を表示します。
- "R"
- "=Ranges"
- .debug_ranges セクションと .debug_rnglists セクションの内容を表示します。
- "s"
- "=str"
- .debug_str、.debug_line_str 、.debug_str_offsets の各セクションの内容を表示します。
- "t"
- "=pubtype"
- .debug_pubtypes および .debug_gnu_pubtypes セクションの内容を表示します。
- "T"
- "=trace_aranges"
- .trace_aranges セクションの内容を表示します。
- "u"
- "=trace_abbrev"
- .trace_abbrev セクションの内容を表示します。
- "U"
- "=trace_info"
- .trace_info セクションの内容を表示します。
注意: .debug_static_funcs、.debug_static_vars 、および debug_weaknames セクションの内容の表示は、現在サポートされていません。
- --dwarf-depth=n
- ".debug_info"
セクションのダンプを
n
の子に制限します。
これは --debug-dump=info
を指定した場合にのみ有用です。デフォルトでは、すべての
DIE
が出力されます。n
の特別な値 0
もこの効果を持ちます。
n にゼロ以外の値を指定すると、 n 位以上の DIE は出力されません。n の範囲は 0 ベースです。
- --dwarf-start=n
- 番号 n の DIE で始まる
DIE
だけを出力します。これは
--debug-dump=info
を指定した場合にのみ有用です。
このオプションを指定すると、番号が n の DIE より前のすべてのヘッダー情報およびすべての DIE の表示が抑制されます。指定された DIE の兄弟と子だけが出力されます。
これは --dwarf-depth と組み合わせて使用できます。
- -P
- --process-links
- メインファイルにリンクされている個別の debuginfo ファイルにあるデバッグ以外のセクションの内容を表示します。このオプションは自動的に -wK オプションを意味し、他のコマンドラインオプションによって要求されたセクションのみが表示されます。
- --ctf[=section]
- 指定した CTF
セクションの内容を表示します。CTF
セクション自体には多くのサブセクションが含まれており、それらはすべて順番に表示されます。
デフォルトでは、 .ctf という名前のセクションの名前が表示されます。これは ld によって発行された名前です。
- --ctf-parent=member
- CTF セクションが曖昧に定義された型を含む場合、多くの CTF 辞書のアーカイブから構成され、そのすべてが曖昧さのない型を含む 1つの辞書から継承されます。このメンバはデフォルトで、このメンバを含むセクションと同様に .ctf という名前になりますが、リンク時に "ctf_link_set_memb_name_changer" 関数を使用してこの名前を変更できます。親アーカイブメンバーの名前を変更するために名前変更子を使用するリンカーによって作成された CTF アーカイブを見る場合、 --ctf-parent を使用して親に使用される名前を指定できます。
- --ctf-parent-section=section
- このオプションを使用すると、あいまいでない型を含む CTF 親辞書に対して、あいまいな残りを含む子辞書とはまったく異なるセクションを選択できます。リンカーはこのように構成された ELF オブジェクトを生成しませんが、一部のサード・パーティーのリンカーは生成します。また、複数の raw ファイルとして書き出された CTF を検査して objcopy で構成すると便利です。これにより、CTF は異なる ELF セクションに配置されますが、単一の CTF dict の異なるメンバーには配置されません。
- --ctf-symbols=section
- --ctf-strings=section
- CTF
ファイルが文字列とシンボルを継承できる別のセクションの名前を指定します。既定では、
".symtab"
とそれにリンクされた文字列テーブルが使用されます。
--ctf-symbols または --ctf-strings のいずれかを指定する場合は、もう一方も指定する必要があります。
- -I
- --histogram
- シンボルテーブルの内容を表示するときに、バケットリストの長さのヒストグラムを表示します。
- -v
- --version
- readelf のバージョン番号を表示します。
- -W
- --wide
- 80 カラムに収まるように出力行を分割しません。デフォルトで readelf は、 64ビット ELF ファイルのセクションヘッダとセグメントリスト行を、 80カラムに収まるように分割します。このオプションを指定すると readelf は各セクションヘッダと各セグメントをそれぞれ 1行に表示します。これは 80カラムよりも幅の広い端末ではずっと読みやすくなります。
- -T
- --silent-truncation
- 通常、readelf がシンボル名を表示していて、 80桁の表示に収まるように名前を切り詰める必要がある場合、 "[.]" のサフィックスが名前に追加されます。このコマンドラインオプションはこの動作を無効にし、さらに 5文字の名前を表示できるようにし、 readelf の以前の動作 (リリース2.35より前) を復元します。
- -H
- --help
- readelf が解釈できるコマンドラインオプションを表示します。
- @file
- file
からコマンドラインオプションを読み込みます。読み込まれた
オプションは、元の
@file
オプションの代わりに挿入されます。
fileが存在しない場合、または読み込めない場合、オプションは
文字通りに扱われ、削除されません。
file 中のオプションは空白で区切られます。空白文字は、オプション 全体を一重引用符または二重引用符で囲むことによってオプションに含める ことができます。任意の文字 (バックスラッシュを含む) は、含まれる文字の 前にバックスラッシュを付けることによって含めることができます。 file 自体に追加の @file オプションを含めることができます。 このようなオプションは再帰的に処理されます。
関連項目¶
objdump(1) と binutils の Info エントリ。
著作権¶
Copyright (c) 1991-2025 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
日本語訳¶
対応バージョン:2.45.50 翻訳日:2025-10-13 翻訳者:ribbon
| 2025-10-13 | binutils-2.45.50 |