objfile...は、検査されるオブジェクトファイルです。アーカイブを指定すると、 objdump は各メンバー・オブジェクト・ファイルに関する情報を表示します。
たとえば、
objdump -b oasys -m vax -h fu.o
は、Oasys コンパイラによって生成された形式の VAX オブジェクトファイルとして明示的に識別される fu.o のセクションヘッダー (-h) からの概要情報を表示します。-i オプションを使用して、使用可能なフォーマットをリストできます。 Xrefなので削る
デフォルトでは、この制限は有効になっていますが、本当に複雑な名前をデコード (demangle) するには無効にする必要がある場合があります。ただし、再帰制限が無効になっている場合は、スタックが枯渇する可能性があり、そのようなイベントに関するバグレポートは拒否されることに注意してください。
--dwarf=follow-links オプションが有効になっている場合、リンクされたデバッグ情報ファイル内のシンボルテーブルが読み込まれ、逆アセンブル時に使用されることに注意してください。
このオプションは、コードセクション内の命令の逆アセンブルにも微妙な影響を与えます。オプション -d が有効な場合、 objdump はコードセクションに存在するシンボルが命令間の境界で発生すると想定し、そのような境界を越えて逆アセンブルすることを拒否します。ただし、オプション -D が有効な場合、この仮定は省略されます。これは、例えば、データがコードセクションに格納されている場合、-d と -D の出力が異なる可能性があることを意味します。
ターゲットが ARM アーキテクチャである場合、このスイッチは、逆アセンブラに対して、コードセクションにあるデータの断片を命令であるかのようにデコードさせる効果もあります。
--dwarf=follow-links オプションが有効になっている場合、リンクされたデバッグ情報ファイル内のシンボルテーブルが読み込まれ、逆アセンブル時に使用されることに注意してください。
ファイルセグメントは、たとえば ld に対して -Ttext、 -Tdata、または -Tbss のオプションを使用することによって、非標準のアドレスに再配置される場合があります。ただし、a.out などの一部のオブジェクトファイル形式には、ファイルセグメントの開始アドレスが格納されません。このような状況では、 ld はセクションを正しく再配置しますが、objdump -h を使用してファイルセクションヘッダーをリストすると、正しいアドレスを表示できません。 代わりに、ターゲットに対して暗黙的な通常のアドレスが表示されます。
場合によっては、セクションに READONLY 属性と NOREAD 属性の両方を設定できることに注意してください。このような場合、NOREAD アトリビュートが優先されますが、フラグビットの正確な設定が重要な場合があるため、 objdump は両方を報告します。
ほとんどのアーキテクチャでは、アーキテクチャ名とマシン名をコロンで区切って指定できます。たとえば、foo:bar は、foo アーキテクチャの bar マシンタイプを参照します。これは、objdump が複数のアーキテクチャをサポートするように設定されている場合に役立ちます。
ターゲットが ARM アーキテクチャの場合、この切り替えには追加の効果があります。逆アセンブルは、 machine で指定されたアーキテクチャでサポートされている命令のみに制限されます。 入力ファイルにアーキテクチャ情報が含まれていないためにこのスイッチを使用する必要がありますが、すべての命令を逆アセンブルすることも望ましい場合は、-marm を使用します。
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 スイッチの機能と重複しますが、細かく制御できます。
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 では、次のオプションがサポートされています:
MIPS の場合、このオプションは逆アセンブルされた命令内の命令ニーモニック名とレジスタ名の表示を制御します。次の複数の選択肢をカンマ区切りの文字列として指定できます。無効なオプションは無視されます:
上記のいずれのオプションでも、ABI または ARCH を numeric として指定すると、選択したタイプのレジスタに対して、名前ではなく番号が表示されます。 --help オプションを使用すると、ABI と ARCH の使用可能な値を一覧表示できます。
VAX の場合は、-M entry:0xf00ba でファンクションエントリアドレスを指定できます。これを複数回使用して、シンボルテーブルを含まない VAX バイナリファイル(ROM ダンプなど) を適切に逆アセンブルすることができます。これらの場合、関数エントリは VAX 命令としてデコードされるため、これにより関数の残りの部分が誤って逆アセンブルされる可能性があります。(訳注:原文を確認してください)
XCOFF で有効なオプションは以下のとおりです:
PE で有効なオプションは以下のとおりです:
すべてのオブジェクトフォーマットがこのオプションをサポートしているわけではありません。特に ELF 形式では使用されません。
注意:objdump は、RELR タイプの再配置の表示をサポートしていません。これらは readelf プログラムで表示できます。
visualize-jumps オプションを有効にした後で無効にする必要がある場合は、 visualize-jumps=off を使用します。
on 引数は、単純な端末色を使用して色を追加します。
terminal 引数も同様ですが、出力デバイスが端末の場合に限ります。
extended-color 引数は on 引数と似ていますが、 8ビットカラーを使用します。これらは全ての端末で動作するとは限りません。
off 引数は色付き逆アセンブルを無効にします。
さらに、 DWARF 属性を表示するときに、個別のデバッグ情報ファイルを参照するフォームが見つかった場合は、参照された内容も表示されます。
注意 - 一部のディストリビューションでは、このオプションはデフォルトで有効になっています。N デバッグオプションを使用して無効にできます。デフォルトは、 binutils の設定時に --enable-follow-debug-links=yes または --enable-follow-debug-links=no オプションで選択できます。これらが使用されない場合、デフォルトでは次のデバッグリンクが有効になります。
注意 - binutils が構築された時に debuginfod プロトコルのサポートが有効になっていた場合、このオプションは DEBUGINFOD_URLS 環境変数に指定された debuginfod サーバへの接続も行います。この問題の解決には時間がかかる場合があります。この動作は、デバッグオプション =do-not-use-debuginfod を使用して無効にできます。
注意: .debug_static_funcs、.debug_static_vars 、および debug_weaknames セクションの内容の表示は、現在サポートされていません。
n にゼロ以外の値を指定すると、 n 位以上の DIE は出力されません。n の範囲は 0 ベースです。
このオプションを指定すると、番号が n の DIE より前のすべてのヘッダー情報およびすべての DIE の表示が抑制されます。指定された DIE の兄弟と子だけが出力されます。
これは --dwarf-depth と組み合わせて使用できます。
デフォルトでは、 .ctf という名前のセクションの名前が表示されます。これは ld によって発行された名前です。
デフォルトでは、 .sframe という名前のセクションの名前が表示されます。これは、 ld によって発行された名前です。
[ 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つのグループに分かれ、それは以下のとおりです:
出力形式は --syms オプションで生成される形式と似ていますが、シンボル名の前に追加フィールドが挿入され、シンボルに関連付けられたバージョン情報が提供される点が異なります。 バージョンが、シンボルへのバージョン化されていない参照を解決するときに使用されるデフォルトのバージョンである場合はそのまま表示され、そうでない場合は括弧で囲まれます。
--unicode=escape オプションを選択すると、これらはエスケープシーケンス(\uxxxx) として表示され、--unicode=highlight オプションを選択すると、赤色で強調表示されたエスケープシーケンスとして表示されます (出力デバイスでサポートされている場合)。色分けは、ユニコード配列の存在が予期されない場合に注意を引くことを目的としています。
file 中のオプションは空白で区切られます。空白文字は、オプション 全体を一重引用符または二重引用符で囲むことによってオプションに含める ことができます。任意の文字 (バックスラッシュを含む) は、含まれる文字の 前にバックスラッシュを付けることによって含めることができます。 file 自体に追加の @file オプションを含めることができます。 このようなオプションは再帰的に処理されます。
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".