- Tumbleweed 20260115-1.1
- Leap-16.0
- Leap-15.6
| OBJDUMP(1) | GNU Development Tools | OBJDUMP(1) |
名前¶
objdump - オブジェクトファイルの情報を表示
書式¶
objdump [-a|--archive-headers]
[-b bfdname|--target=bfdname]
[-C|--demangle[=style] ]
[-d|--disassemble[=symbol]]
[-D|--disassemble-all]
[-z|--disassemble-zeroes]
[-EB|-EL|--endian={big | little }]
[-f|--file-headers]
[-F|--file-offsets]
[--file-start-context]
[-g|--debugging]
[-e|--debugging-tags]
[-h|--section-headers|--headers]
[-i|--info]
[-j section|--section=section]
[-l|--line-numbers]
[-S|--source]
[--source-comment[=text]]
[-m machine|--architecture=machine]
[-M options|--disassembler-options=options]
[-p|--private-headers]
[-P options|--private=options]
[-r|--reloc]
[-R|--dynamic-reloc]
[-s|--full-contents]
[-Z|--decompress]
[-W[lLiaprmfFsoORtUuTgAck]|
--dwarf[=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|--dwarf=follow-links]
[-WN|--dwarf=no-follow-links]
[-wD|--dwarf=use-debuginfod]
[-wE|--dwarf=do-not-use-debuginfod]
[-L|--process-links]
[--ctf=section]
[--sframe=section]
[-G|--stabs]
[-t|--syms]
[-T|--dynamic-syms]
[-x|--all-headers]
[-w|--wide]
[--start-address=address]
[--stop-address=address]
[--no-addresses]
[--prefix-addresses]
[--[no-]show-raw-insn]
[--adjust-vma=offset]
[--show-all-symbols]
[--dwarf-depth=n]
[--dwarf-start=n]
[--ctf-parent=section]
[--no-recurse-limit|--recurse-limit]
[--special-syms]
[--prefix=prefix]
[--prefix-strip=level]
[--insn-width=width]
[--visualize-jumps[=color|=extended-color|=off]
[--disassembler-color=[off|terminal|on|extended]
[-U method] [--unicode=method]
[-V|--version]
[-H|--help]
objfile...
説明¶
objdump は指定されたひとつ以上のオブジェクトファイルについて、その情報を表示します。 オプションは、表示する特定の情報を制御します。この情報は、プログラムをコンパイルして動作させたいだけのプログラマーとは対照的に、コンパイルツールに取り組んでいるプログラマーにとって主に役立ちます。
objfile...は、検査されるオブジェクトファイルです。アーカイブを指定すると、 objdump は各メンバー・オブジェクト・ファイルに関する情報を表示します。
オプション¶
ここで選択肢として示されているオプションの、長い形式と短い形式は同等です。少なくとも -a,-d,-D,-e,-f,-g,-G,-h,-H,-p,-P,-r,-R,-s,-S,-t,-T,-V,-x のどれかから 1つのオプションを指定する必要があります。
- -a
- --archive-header
- objfile ファイルのいずれかがアーカイブの場合は、アーカイブ・ヘッダー情報を表示します (ls-lのような形式)。ar tv でリストできる情報の他に、objdump-a は各アーカイブ・メンバーのオブジェクト・ファイル・フォーマットを表示します。
- --adjust-vma=offset
- 情報をダンプするときは、まずすべてのセクション・アドレスに offset を追加します。これは、セクションアドレスがシンボルテーブルに対応していない場合に便利です。これは、 a.out などのセクションアドレスを表現できない形式を使用して特定のアドレスにセクションを配置する場合に発生する可能性があります。
- -b bfdname
- --target=bfdname
- オブジェクトファイルのオブジェクトコード形式が
bfdname
であることを指定します。objdump
は多くのフォーマットを自動的に認識するので、このオプションは必要ないかもしれません。
たとえば、
objdump -b oasys -m vax -h fu.oは、Oasys コンパイラによって生成された形式の VAX オブジェクトファイルとして明示的に識別される fu.o のセクションヘッダー (-h) からの概要情報を表示します。-i オプションを使用して、使用可能なフォーマットをリストできます。 Xrefなので削る
- -C
- --demangle[=style]
- (demangle)低レベルシンボル名をユーザレベルの名前にデコードします。 これにより、システムによって先頭に追加されたアンダースコアが削除されるだけでなく、C++ 関数名が読みやすくなります。コンパイラが異なれば、操作スタイルも異なります。オプションの demangling style 引数を使用すると、コンパイラに適した デコード(demangling) スタイルを選択できます。
- --recurse-limit
- --no-recurse-limit
- --recursion-limit
- --no-recursion-limit
- 文字列のデコード
(demangling)
中に実行される反復の量に対する制限を有効または無効にします。名前をエンコード
(mangling)
する形式は無限レベルの再帰を許すので、デコード操作がホストマシンで利用可能なスタック空間の量を使い果たし、メモリ障害を引き起こすような文字列を作成する可能性があります。この制限では、再帰を
2048レベルまでのネストに制限することで、これが発生しないようにしています。
デフォルトでは、この制限は有効になっていますが、本当に複雑な名前をデコード (demangle) するには無効にする必要がある場合があります。ただし、再帰制限が無効になっている場合は、スタックが枯渇する可能性があり、そのようなイベントに関するバグレポートは拒否されることに注意してください。
- -g
- --debugging
- デバッグ情報を表示します。これは、ファイルに保存されている STABS デバッグ形式情報の解析をこころみ、C のような構文を使用して出力します。STABS デバッグが見つからない場合、このオプションは -W オプションに戻り、ファイル内の DWARF 情報を出力します。
- -e
- --debugging-tags
- -g と似ていますが、情報は ctags ツールと互換性のある形式で生成されます。
- -d
- --disassemble
- --disassemble=symbol
- 入力ファイルからマシン命令のアセンブラニーモニックを表示します。このオプションは、命令が含まれているはずのセクションだけを逆アセンブルします。オプションの
symbol 引数が
(場合によっては複数回)
指定された場合は、(すべての)
symbol
で始まるアセンブラニーモニックが表示されます。symbol
が関数名の場合、逆アセンブルは関数の最後で停止します。それ以外の場合は、次のシンボルが出現した時点で停止します。symbol
に一致するものがない場合は、何も表示されません。
--dwarf=follow-links オプションが有効になっている場合、リンクされたデバッグ情報ファイル内のシンボルテーブルが読み込まれ、逆アセンブル時に使用されることに注意してください。
- -D
- --disassemble-all
- -d
と同様ですが、命令を含むことが期待されるセクションだけでなく、空でない
non-bss
セクションの内容をすべて逆アセンブルします。
-j
を使用すると、特定のセクションを選択できます。
このオプションは、コードセクション内の命令の逆アセンブルにも微妙な影響を与えます。オプション -d が有効な場合、 objdump はコードセクションに存在するシンボルが命令間の境界で発生すると想定し、そのような境界を越えて逆アセンブルすることを拒否します。ただし、オプション -D が有効な場合、この仮定は省略されます。これは、例えば、データがコードセクションに格納されている場合、-d と -D の出力が異なる可能性があることを意味します。
ターゲットが ARM アーキテクチャである場合、このスイッチは、逆アセンブラに対して、コードセクションにあるデータの断片を命令であるかのようにデコードさせる効果もあります。
--dwarf=follow-links オプションが有効になっている場合、リンクされたデバッグ情報ファイル内のシンボルテーブルが読み込まれ、逆アセンブル時に使用されることに注意してください。
- --no-addresses
- 逆アセンブル時に、各行毎にアドレスまたは、シンボルと再配置オフセットを出力しません。--no-show-raw-insnと組み合わせて使用すると、コンパイラの出力を比較する場合に便利です。
- --prefix-addresses
- 逆アセンブルするとき、各行ごとに完全なアドレスを表示します。これは古い逆アセンブル形式です。
- -EB
- -EL
- --endian={big|little}
- オブジェクトファイルのエンディアンを指定します。これは逆アセンブリにのみ影響します。これは、S レコードなどのエンディアン情報を記述していないファイル形式を逆アセンブルする場合に便利です。
- -f
- --file-headers
- 各objfile ファイルのヘッダー全体のサマリー情報を表示します。
- -F
- --file-offsets
- セクションを逆アセンブルするときは、シンボルが表示されるたびに、ダンプしようとしているデータの領域のファイルオフセットも表示します。ゼロがスキップされている場合は、逆アセンブルが再開されたときに、スキップされたゼロの数と、逆アセンブルが再開される場所のファイルオフセットをユーザに通知します。セクションをダンプするときに、ダンプの開始位置からのファイルオフセットを表示します。
- --file-start-context
- まだ表示されていないファイルからインターリスト化されたソースコード/逆アセンブル (-Sを想定) を表示するときに、コンテキストをファイルの先頭まで拡張することを指定します。
- -h
- --section-headers
- --headers
- オブジェクトファイルのセクションヘッダーから概要情報を表示します。
ファイルセグメントは、たとえば ld に対して -Ttext、 -Tdata、または -Tbss のオプションを使用することによって、非標準のアドレスに再配置される場合があります。ただし、a.out などの一部のオブジェクトファイル形式には、ファイルセグメントの開始アドレスが格納されません。このような状況では、 ld はセクションを正しく再配置しますが、objdump -h を使用してファイルセクションヘッダーをリストすると、正しいアドレスを表示できません。 代わりに、ターゲットに対して暗黙的な通常のアドレスが表示されます。
場合によっては、セクションに READONLY 属性と NOREAD 属性の両方を設定できることに注意してください。このような場合、NOREAD アトリビュートが優先されますが、フラグビットの正確な設定が重要な場合があるため、 objdump は両方を報告します。
- -H
- --help
- オプションの概要を objdump に出力して終了します。
- -i
- --info
- -b または -m を使用して指定できるすべてのアーキテクチャとオブジェクトフォーマットを示すリストを表示します。
- -j name
- --section=name
- セクション name の情報を表示します。このオプションは、複数回指定できます。
- -L
- --process-links
- メインファイルにリンクされている個別のdebuginfoファイルにあるデバッグ以外のセクションの内容を表示します。このオプションは自動的に -WK オプションを仮定し、他のコマンドラインオプションによって要求されたセクションのみが表示されます。
- -l
- --line-numbers
- 表示されたオブジェクトコードまたは再配置に対応するファイル名とソース行番号を使用して、 (デバッグ情報を使用して) 表示にラベルを付けます。 -d、 -D、 -r とともに使うときにのみ便利です。
- -m machine
- --architecture=machine
- オブジェクトファイルを逆アセンブルする際に使用するアーキテクチャを指定します。これは、S
レコードなどのアーキテクチャ情報を記述していないオブジェクトファイルを逆アセンブルする場合に便利です。-i
オプションを使用して、使用可能なアーキテクチャを一覧表示できます。
ほとんどのアーキテクチャでは、アーキテクチャ名とマシン名をコロンで区切って指定できます。たとえば、foo:bar は、foo アーキテクチャの bar マシンタイプを参照します。これは、objdump が複数のアーキテクチャをサポートするように設定されている場合に役立ちます。
ターゲットが ARM アーキテクチャの場合、この切り替えには追加の効果があります。逆アセンブルは、 machine で指定されたアーキテクチャでサポートされている命令のみに制限されます。 入力ファイルにアーキテクチャ情報が含まれていないためにこのスイッチを使用する必要がありますが、すべての命令を逆アセンブルすることも望ましい場合は、-marm を使用します。
- -M options
- --disassembler-options=options
- ターゲット固有の情報を逆アセンブラに渡します。いくつかのターゲットのみサポートしています。複数の逆アセンブラオプションを指定する必要がある場合は、複数の
-M
オプションを使用するか、カンマ区切りのリストにまとめることができます。
ARCでは、 dsp は DSP 命令の表示を制御し、 spfp は FPX 単精度 FP 命令の表示を選択し、dpfp は FPX 倍精度 FP 命令の表示を選択し、 quarkse_em は特殊な TakeNE-EM 命令の表示を選択し、 fpuda は倍精度アシスト命令の表示を選択し、fpus は FPU 単精度 FP 命令の表示を選択し、 fpud はFPU 倍精度 FP 命令の表示を選択します。 さらに、hex を使用して、すべての即値を 16進数で出力することもできます。デフォルトでは、short immediate 値は 10進数で出力され、long immediate 値は 16進数で出力されます。
cpu=. を使用すると、命令を逆アセンブルするときに特定の ISA を適用し、-m の値や ELF ファイル内の値を上書きすることができます。 ARC EM または HS ISA を選択すると便利な場合があります。これらのアーキテクチャは同じであり、逆アセンブラはコードが EM 用か HS 用かを決定するためにプライベート ELF ヘッダーデータに依存しているためです。このオプションは複数回指定できます。しかし、最新の値のみが使用されます。有効な値は、アセンブラの -mcpu=. オプションと同じです。
ターゲットが ARM アーキテクチャの場合、このスイッチを使用して、逆アセンブラ時に使用するレジスタ名セットを選択できます。-M reg-names-std (デフォルト) を指定すると、ARM の命令セットドキュメントで使用されているレジスタ名が選択されますが、レジスタ 13は「sp」、レジスタ 14は「lr」、レジスタ 15は「pc」と呼ばれます。-M reg-names-apcs を指定すると、ARM Procedure Call Standard で使用される名前セットが選択されます。一方、 -M reg-names-raw を指定すると、 r の後に登録番号が続くだけの名前セットが使用されます。
また、 -M reg-names-atpcs と -M reg-names-special-atpcs で使用可能な APCS レジスタ命名方式には、ARM/Thumb Procedure Call Standard 命名規則を使用する 2つのバリエーションがあります。(ノーマルレジスタ名または特殊レジスタ名)
このオプションは、ARM アーキテクチャでも使用できます。スイッチ --disassembler-options=force-thumb を使用して、逆アセンブラにすべての命令を Thumb 命令として解釈させることができます。これは、他のコンパイラで生成された thumb コードを逆アセンブルしようとする場合に便利です。
AArch64 ターゲットの場合、このスイッチを使用して、 -M no-aliases オプションを使用して命令を最も一般的な命令として逆アセンブルするかどうか、または -M notes を使用して命令ノートをコメントとして生成するかどうかを設定できます。
x86 では、一部のオプションは -m スイッチの機能と重複しますが、細かく制御できます。
- "x86-64"
- "i386"
- "i8086"
- 特定のアーキテクチャの逆アセンブリを選択します。
- "intel"
- "att"
- intel 構文モードと AT&T 構文モードを選択します。
- "amd64"
- "intel64"
- AMD64 ISAx とI ntel64 ISA から選択します。
- "intel-mnemonic"
- "att-mnemonic"
- インテルニーモニックモードと AT&T ニーモニックモードを選択します。 注意:"intel-mnemonic" は "intel" を意味し、 "att-mnemonic" は "att" を意味します。
- "addr64"
- "addr32"
- "addr16"
- "data32"
- "data16"
- デフォルトのアドレスサイズとオペランドサイズを指定します。これらの 5つのオプションは、オプション文字列の後半に "x86-64"、 "i386" 、または "i8086" が出現する場合に上書きされます。
- "suffix"
- AT&T モードの場合、および Intel モードの限られた命令セットの場合、オペランドによってサフィックスが推測される場合でも、または特定の命令の場合は逆アセンブラモードのデフォルトでも、ニーモニックサフィックスを出力するように実行に指示します。
PowerPCの場合、 -M の引数 raw は、エイリアスではなくハードウェア命令を選択します。例えば、 "clrlwi"ではなく "rlwinm" 、 "li"ではなく "addi" が見えます。CPU を選択する gas の -m 引数はすべてサポートされています。それらは: 403, 405, 440, 464, 476, 601, 603, 604, 620, 7400, 7410, 7450, 7455, 750cl, 821, 850, 860, a2, booke, booke32, cell, com, e200z2, e200z4, e300, e500, e500mc, e500mc64, e500x2, e5500, e6500, efs, power4, power5, power6, power7, power8, power9, power10, power11, ppc, ppc32, ppc64, ppc64bridge, ppcps, pwr, pwr2, pwr4, pwr5, pwr5x, pwr6, pwr7, pwr8, pwr9, pwr10, pwr11, pwrx, titan, vle, と future です。 32 および 64 は、デフォルトまたは以前のプロセッサ選択を変更し、 64ビット命令をそれぞれ無効または有効にします。さらに、 altivec、 any、lsp、 htm、 vsx、spe、 spe2では、以前の あるいはそれ以降 のプロセッサ選択に機能が追加されています。 any は binutils が知っている opcode を逆アセンブルしますが、opcode が 2つの異なる意味を持っていたり、異なる引数を持っていたりすると、期待したような逆アセンブルは行われません。 CPU を選択せずに逆アセンブルした場合、BFD によってオブジェクトファイルヘッダーから収集された情報からデフォルトが選択されますが、結果は期待どおりにならない可能性があります。
RISC-V では、次のオプションがサポートされています:
- "max"
- アーキテクチャ文字列をチェックしない逆アセンブル。これはベストエフォートモードであるため、重複する ISA 拡張の場合、最初の一致(特定のコンテキストでは正しくない可能性がある)が命令のデコードに使用されます。これは、ELF ファイルが ISA 文字列を公開せず、自動 ISA サブセット推論を防止し、デフォルトのフォールバック ISA 文字列 ("rv64gc") がバイナリ内のすべての命令をカバーしない場合に便利です。
- "numeric"
- ABI 名ではなく、数値のレジスタ名を出力します(例:"sp" の代わりに "x2" を出力します)。
- "no-aliases"
- 標準的な命令にのみ逆アセンブルします。例えば、圧縮された命令はそのように表現されます ("addi sp,sp,-128" は "c.addi16sp sp,-128" となります)。
- "priv-spec=SPEC"
- 選択した特権仕様バージョン (例: 1.10, 1.11, 1.12, 1.13) に従ってレポートを表示します。
MIPS の場合、このオプションは逆アセンブルされた命令内の命令ニーモニック名とレジスタ名の表示を制御します。次の複数の選択肢をカンマ区切りの文字列として指定できます。無効なオプションは無視されます:
- "no-aliases"
- 擬似命令ニーモニックの代わりに「生の」命令ニーモニックを出力します。つまり、 「move」の代わりに 「daddu」または 「or」、 「nop」の代わりに 「sll」などを出力します。
- "msa"
- MSA 命令を逆アセンブルします。
- "virt"
- 仮想化 ASE 命令を逆アセンブルします。
- "xpa"
- eXtended Physical Address (XPA) ASE命令を逆アセンブルします。
- "gpr-names=ABI"
- 指定された ABI に適切な GPR(汎用レジスタ) 名を出力します。デフォルトでは、逆アセンブルされるバイナリの ABI に従って GPR 名が選択されます。
- "fpr-names=ABI"
- 指定された ABI に適切な FPR(浮動小数点レジスタ) 名を出力します。デフォルトでは、名前ではなくFPR番号が表示されます。
- "cp0-names=ARCH"
- ARCH で指定した CPU またはアーキテクチャに応じて、CP0 (system control coprocessor;coprocessor 0) レジスタ名を出力します。デフォルトでは、CP0 レジスタ名は、逆アセンブルされるバイナリのアーキテクチャと CPU に従って選択されます。
- "hwr-names=ARCH"
- ARCH で指定された CPU またはアーキテクチャに応じて、HWR ("rdhwr" 命令で使用されるハードウェア・レジスタ) 名を出力します。デフォルトでは、HWR 名は、逆アセンブルされるバイナリのアーキテクチャと CPU に従って選択されます。
- "reg-names=ABI"
- 選択したABIに適切な GPR 名と FPR 名を出力します。
- "reg-names=ARCH"
- 選択したCPU またはアーキテクチャに応じて、CPU 固有のレジスタ名 (CP0 レジスタ名、HWR 名) を表示します。
上記のいずれのオプションでも、ABI または ARCH を numeric として指定すると、選択したタイプのレジスタに対して、名前ではなく番号が表示されます。 --help オプションを使用すると、ABI と ARCH の使用可能な値を一覧表示できます。
VAX の場合は、-M entry:0xf00ba でファンクションエントリアドレスを指定できます。これを複数回使用して、シンボルテーブルを含まない VAX バイナリファイル(ROM ダンプなど) を適切に逆アセンブルすることができます。これらの場合、関数エントリは VAX 命令としてデコードされるため、これにより関数の残りの部分が誤って逆アセンブルされる可能性があります。(訳注:原文を確認してください)
- -p
- --private-headers
- オブジェクトファイル形式に固有の情報を出力します。出力される情報は、オブジェクトファイルの形式によって異なります。一部のオブジェクトファイル形式では、追加情報は出力されません。
- -P options
- --private=options
- オブジェクトファイル形式に固有の情報を出力します。引数
options
は、形式に応じたカンマ区切りのリストです
(オプションのリストはヘルプとともに表示されます)。
XCOFF で有効なオプションは以下のとおりです:
- "header"
- "aout"
- "sections"
- "syms"
- "relocs"
- "lineno,"
- "loader"
- "except"
- "typchk"
- "traceback"
- "toc"
- "ldinfo"
PE で有効なオプションは以下のとおりです:
- "header"
- "sections"
すべてのオブジェクトフォーマットがこのオプションをサポートしているわけではありません。特に ELF 形式では使用されません。
- -r
- --reloc
- ファイルの再配置エントリを出力します。-d または -D とともに使用する場合、再配置情報は逆アセンブルの合間に出力されます。
- -R
- --dynamic-reloc
- ファイルの動的再配置エントリを出力します。これは、特定のタイプの共有ライブラリなどの動的オブジェクトに対してのみ意味があります。-r
に関しては、-d
または -D
で使用される場合、再配置は逆アセンブルの合間に出力されます。
注意:objdump は、RELR タイプの再配置の表示をサポートしていません。これらは readelf プログラムで表示できます。
- -s
- --full-contents
- セクションの完全な内容を表示します。特定のセクションを要求するために -j と組み合わせて使用されることがよくあります。デフォルトでは、空でない non-bss セクションがすべて表示されます。デフォルトでは、圧縮されたセクションは圧縮形式で表示されます。解凍された形式で内容を表示するには、コマンドラインに -Z オプションを追加します。
- -S
- --source
- 可能であれば、逆アセンブルされたソースコードを表示します。-d を仮定します。
- --show-all-symbols
- 逆アセンブルするときは、最初のアドレスだけでなく、指定されたアドレスに一致するすべてのシンボルを表示します。
- --source-comment[=txt]
- -S オプションと同様ですが、すべてのソース・コード行は接頭辞 txt で表示されます。通常、txt はコメント文字列であり、アセンブラコードとソースコードを区別するために使用できます。txt が指定されない場合は、デフォルトの文字列 `#" (ハッシュの後にスペース) が使用されます。
- --prefix=prefix
- -S とともに使用する場合、絶対パスに追加するには prefix を指定します。
- --prefix-strip=level
- 固定された絶対パスを削除する初期ディレクトリ名の数を指定します。 --prefix=prefix がない場合は無効です。
- --show-raw-insn
- 命令を逆アセンブルするときは、命令をシンボル形式だけでなく 16進数形式でも出力します。--prefix-addresses が使われる時を除いて、これはデフォルトです。
- --no-show-raw-insn
- 命令を逆アセンブルする場合、命令バイトを表示しません。 これは --prefix-addresses が使われる時のデフォルトです。
- --insn-width=width
- 命令を逆アセンブルするときに、width バイトを 1行で表示します。
- --visualize-jumps[=color|=extended-color|=off]
- 開始アドレスとターゲットアドレスの間に
ASCII
アートを描画することで、関数内に留まるジャンプを視覚化します。オプションの
=color
引数は、単純な端末の色を使用して出力に色を追加します。代わりに
=extended-color 引数
は8ビットの色を追加しますが、全ての端末で動作するとは限りません。
visualize-jumps オプションを有効にした後で無効にする必要がある場合は、 visualize-jumps=off を使用します。
- --disassembler-color=off
- --disassembler-color=terminal
- --disassembler-color=on|color|colour
- --disassembler-color=extended|extended-color|extended-colour
- 逆アセンブル出力での色付き構文強調表示の使用を有効または無効にします。デフォルトの動作は
configure time
オプションによって決定されます。すべてのアーキテクチャが色付きの構文強調表示をサポートしているわけではなく、使用する端末によっては、色付きの出力が実際には判読できない場合があることに注意してください。
on 引数は、単純な端末色を使用して色を追加します。
terminal 引数も同様ですが、出力デバイスが端末の場合に限ります。
extended-color 引数は on 引数と似ていますが、 8ビットカラーを使用します。これらは全ての端末で動作するとは限りません。
off 引数は色付き逆アセンブルを無効にします。
- -W[lLiaprmfFsoORtUuTgAckK]
- --dwarf[=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 と組み合わせて使用できます。
- --dwarf-check
- Dwarf 情報における一貫性の追加チェックを有効にします。
- --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 の異なるメンバーには配置されません。
- --sframe[=section]
- 指定した SFrame
セクションの内容を表示します。
デフォルトでは、 .sframe という名前のセクションの名前が表示されます。これは、 ld によって発行された名前です。
- -G
- --stabs
- 要求されたセクションの内容をすべて表示します。ELF ファイルの .stab セクション、.stab.index セクション、および .stab.excl セクションの内容を表示します。".stab" デバッグシンボルテーブルエントリが ELF セクションに含まれているシステム (Solaris 2.0など) でのみ有効です。その他のほとんどのファイル形式では、デバッグシンボルテーブルエントリはリンケージシンボルとインターリーブされ、--syms の出力に表示されます。
- --start-address=address
- 指定したアドレスからデータの表示を開始します。これは、 -d、 -r 、および-sオプションの出力に影響します。
- --stop-address=address
- 指定されたアドレスのデータの表示を停止します。これは、 -d、 -r 、および-sオプションの出力に影響します。
- -t
- --syms
- ファイルのシンボルテーブルエントリを出力します。
これは nm
プログラムで提供される情報に似ていますが、表示形式が異なります。出力の形式は、ダンプされるファイルの形式によって異なりますが、主に
2つのタイプがあります。1つ目は以下のようになります:
[ 4](sec 3)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .bss [ 6](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 fredここで、角括弧内の数字はシンボルテーブル内のエントリの番号、 sec 番号はセクション番号、 fl 値はシンボルのフラグビット、 ty 番号はシンボルのタイプ、 scl 番号はシンボルのストレージクラス、 nx 値はシンボルに関連付けられた補助エントリの数です。最後の 2つのフィールドは、シンボルの値と名前です。
もう 1つの一般的な出力形式は、通常 ELF ベースのファイルに見られるもので、次のようなものです:
00000000 l d .bss 00000000 .bss 00000000 g .text 00000000 fredここで、最初の数字はシンボルの値(アドレスと呼ばれることもあります)です。次のフィールドは、実際には、シンボルに設定されているフラグビットを示す文字とスペースのセットです。これらの文字については、以下で説明します。次はシンボルが関連付けられているセクションです。セクションが絶対である (つまりどのセクションとも接続されていない) 場合は *ABS* 、セクションがダンプされるファイル内で参照されているが、そこで定義されていない場合は *UND* です。
セクション名の後には別のフィールドがあります。番号は、一般的なシンボルの場合はアラインメント、その他のシンボルの場合はサイズです。最後にシンボルの名前が表示されます。
フラグ文字は 7つのグループに分かれ、それは以下のとおりです:
- "l"
- "g"
- "u"
- "!"
- シンボルが ローカル(l)、 グローバル(g)、 一意のグローバル(u) であり、グローバルでもローカルでもない (スペース) か、グローバルとローカルの両方(!) です。シンボルは、デバッグに使用されるなど、さまざまな理由でローカルにもグローバルにもできませんが、ローカルとグローバルの両方にある場合は、おそらくバグを示しています。一意大域シンボルは、 ELF シンボルバインディングの標準セットに対する GNU 拡張です。このようなシンボルの場合、動的リンカーは、プロセス全体でこの名前とタイプを持つシンボルが 1つだけ使用されていることを確認します。
- "w"
- シンボルは弱 (w) または強 (スペース) です。
- "C"
- 記号は、コンストラクタ (C) または通常の記号 (スペース) です。
- "W"
- シンボルは、警告 (W) または通常のシンボル (スペース) です。警告シンボルの名前は、警告シンボルの後に続くシンボルが参照された場合に表示されるメッセージです。
- "I"
- "i"
- シンボルは、別のシンボルへの間接参照 (I) 、再配置処理中に評価される関数 (i) 、または通常のシンボル (スペース) です。
- "d"
- "D"
- シンボルは、デバッグシンボル (d) 、ダイナミックシンボル (D) 、または通常のシンボル (スペース) です。
- "F"
- "f"
- "O"
- シンボルは、関数 (F) 、ファイル (f) 、オブジェクト (O) の名前、または通常のシンボル (スペース) です。
- -T
- --dynamic-syms
- ファイルの動的シンボルテーブルエントリを出力します。これは、特定のタイプの共有ライブラリなどの動的オブジェクトに対してのみ意味があります。これは、
nm プログラムで -D
(--dynamic)
オプションが指定された場合に提供される情報に似ています。
出力形式は --syms オプションで生成される形式と似ていますが、シンボル名の前に追加フィールドが挿入され、シンボルに関連付けられたバージョン情報が提供される点が異なります。 バージョンが、シンボルへのバージョン化されていない参照を解決するときに使用されるデフォルトのバージョンである場合はそのまま表示され、そうでない場合は括弧で囲まれます。
- --special-syms
- シンボルを表示する場合、ターゲットが何らかの形で特別であると考え、通常はユーザーが興味を持たないシンボルも含まれます。
- -U [d|i|l|e|x|h]
- --unicode=[default|invalid|locale|escape|hex|highlight]
- 文字列内の UTF-8
エンコード・マルチバイト文字の表示を制御します。
デフォルト(--unicode=default)では、特別な処理は行われません。--unicode=locale
オプションを選択すると、シーケンスが現在のロケールで表示されます。ロケールによっては、サポートされない場合もあります。オプション
--unicode=hex および --unicode=invalid
では、不等号括弧または波括弧で囲まれた
16進バイト列として表示されます。
--unicode=escape オプションを選択すると、これらはエスケープシーケンス(\uxxxx) として表示され、--unicode=highlight オプションを選択すると、赤色で強調表示されたエスケープシーケンスとして表示されます (出力デバイスでサポートされている場合)。色分けは、ユニコード配列の存在が予期されない場合に注意を引くことを目的としています。
- -V
- --version
- objdump のバージョン番号を表示して終了します。
- -x
- --all-headers
- シンボルテーブルや再配置エントリなど、使用可能なすべてのヘッダ情報を表示します。 -x を使用すると、 -a -f -h -p -r -t全体を指定したことになります。
- -w
- --wide
- 列数が 80 を超える出力デバイス用に一部の行をフォーマットします。 また、シンボル名が表示されるときに切り詰めません。
- -z
- --disassemble-zeroes
- 通常、逆アセンブル出力はゼロのブロックをスキップします。このオプションは、他のデータと同様に、逆アセンブラがこれらのブロックを逆アセンブルするように指示します。
- -Z
- --decompress
- -Z オプションは、 -s オプションと組み合わせて使用します。objdump に対して、内容を表示する前に圧縮されたセクションを解凍するように指示します。
- @file
- file
からコマンドラインオプションを読み込みます。読み込まれた
オプションは、元の
@file
オプションの代わりに挿入されます。
fileが存在しない場合、または読み込めない場合、オプションは
文字通りに扱われ、削除されません。
file 中のオプションは空白で区切られます。空白文字は、オプション 全体を一重引用符または二重引用符で囲むことによってオプションに含める ことができます。任意の文字 (バックスラッシュを含む) は、含まれる文字の 前にバックスラッシュを付けることによって含めることができます。 file 自体に追加の @file オプションを含めることができます。 このようなオプションは再帰的に処理されます。
関連項目¶
nm(1), readelf(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 |