objdump [-a|--archive-headers]
[-b bfdname|--target=bfdname]
[-C|--demangle[=style] ]
[-d|--disassemble]
[-D|--disassemble-all]
[-z|--disassemble-zeroes]
[-EB|-EL|--endian={big | little }]
[-f|--file-headers]
[--file-start-context]
[-g|--debugging]
[-e|--debugging-tags]
[-h|--section-headers|--headers]
[-i|--info]
[-j section|--section=section]
[-l|--line-numbers]
[-S|--source]
[-m machine|--architecture=machine]
[-M options|--disassembler-options=options]
[-p|--private-headers]
[-r|--reloc]
[-R|--dynamic-reloc]
[-s|--full-contents]
[-G|--stabs]
[-t|--syms]
[-T|--dynamic-syms]
[-x|--all-headers]
[-w|--wide]
[--start-address=address]
[--stop-address=address]
[--prefix-addresses]
[--[no-]show-raw-insn]
[--adjust-vma=offset]
[--special-syms]
[-V|--version]
[-H|--help]
objfile...
objdumpは,一つ以上のオブジェクトファイルに関する情報を表示し ます.オプションで,表示する情報を制御します.この情報は,プログラムを コンパイルして動作させたいだけのプログラマより,コンパイルツールに関す る作業をしているプログラマに対し最も役に立ちます.
objfile...は,調査されるオブジェクトファイルです.アーカイブ を指定したとき,objdumpは,それぞれのメンバーオブジェクトファ イルの情報を表示します.
ここに交互に表示しているオプションの長い形式と短い形式は等価です.リス トの-a,-d,-D,-e,-f,-g,-G,-h,-H,-p,-r,-R,-s,-S,-t,-T,-V,-xから 少なくとも一つのオプションを与える必要があります.
a.outのようなセクションアドレ
スが存在しないフォーマットを使用しているとき,セクションを特定のアドレ
スに配置するとき発生します.
例えば,以下のようにします.
objdump -b oasys -m vax -h fu.o
それは,fu.oのセクションヘッダ(-h)からの情報の概要を表
示し,それは特に,Oasysコンパイラで生成されるフォーマットのVAXオブジェ
クトファイルとして認識(-m)されます.-iオプションを用
いて利用可能なフォーマットをリストアップすることが可能です.詳細は,
See Target Selection.
ファイルのセグメントは,非標準のアドレスに再配置され,例えば,
-Ttext,-Tdata,または-Tbssオプションが
ldで使用されています.しかし,a.outのようなオブジェク
トファイルのフォーマットによっては,ファイルセグメントの開始アドレスを
保存しないものもあります.そのような状況では,ldがセクション
を正しく再配置しますが,ファイルのセクションのヘッダのリストに
`objdump -h'を使用しても,正しいアドレスを表示することは不可能です.
その代わりに,それは通常のアドレスを表示し,それらはターゲットに対して
暗黙のうちに行われます.
ターゲットがARMアーキテクチャの場合,逆アセンブラが使用されている間に使 用するレジスタ名のセットを選択するために,このスイッチを使用することが 可能です.-M reg-name-std (デフォルト)を指定すると,ARMの命令 セットのドキュメントで使用しているレジスタ名を選択し,'sp'と呼ばれるレ ジスタ13,'lr'と呼ばれるレジスタ14,そして'pc'と呼ばれるレジスタ15を使 用します.-M reg-names-apcsを指定すると,ARM Procedure Call Standardで使用されている名前のセットを選択するのに対し,-M reg-names-rawを指定すると,`r'にレジスタ番号が続いたものを使用し ます.
APCSレジスタ命名規則には二つの変形があり,-M reg-names-atpcs と-M reg-names-special-atpcsにより利用可能で,それはARM/Thumb Procedure Call Standard命名規約を使用します.(通常のレジスタ名,または, 特殊なレジスタ名のどちらかを使用します.)
このオプションは,ARMアーキテクチャに対し,スイッチ --disassembler-options=force-thumbを使用して,すべての命令を Thumb命令として解釈するように逆アセンブラに強制するためにも使用すること が可能です.他のコンパイラで生成される thumb コードの逆アセンブラを試み るとき,これは役に立つはずです.
x86に対して,オプションによっては-mのスイッチの機能を複製しま すが,よりきめ細かい制御が可能になります.以下の複数のセクションをカン マで分けられた文字列として指定してもかまいません.x86-64, i386,そしてi8086は該当するアーキテクチャに対する逆ア センブルを選択します.intelとattは,インテルの構文の モードとAT&Tの構文のモードを選択します.addr32, addr16,data32,そしてdata16は,デフォルトの アドレスの大きさとオペランドの大きさを指定します.これらの四つのオプショ ンは,それ以降のオプション文字列にx86-64,i386,また はi8086が現れる場合は,そちらが優先されます.最後は suffixで,これはAT&Tモードのとき,サフィックスがオペランドで推 測可能なときでさえ,逆アセンブラはニーモニックサフィックスを出力します.
PPCに対し,booke,booke32,そしてbooke64は BookE命令の逆アセンブラを選択します.32と64は,それぞ れPowerPCとPowerPC64の逆アセンブラを選択します.
MIPSに対して,このオプションは逆アセンブルした命令でのニーモニック名と レジスタ名の出力を制御します.以下を複数選択するため,カンマで分離した 文字列で指定することが可能で,無効のオプションは無視されます.
no-aliasesgpr-names=ABIfpr-names=ABIcp0-names=ARCHhwr-names=ARCHrdhwr命令で使用される,hardware register(ハードウェアレジス
タ))名を,CPUまたはARCHで指定されたアーキテクチャに対して適切に出
力します.デフォルトで,HWR名は,逆アセンブルされたバイナリのアーキテク
チャとCPUに対応して選択されます.
reg-names=ABIreg-names=ARCH上記でリストアップされているすべてのオプションに対し,ABIや
ARCHは,選択されているレジスタに対する名前ではなく,出力される番
号となる`numeric'として指定します.--helpを使用して,利用
可能なABIとARCHの値をリストアップすることが可能です.
.stabデバッグシンボルテーブルのエントリーがELFのセクションに運び
込まれる(Solaris 2.0のような)システムでのみ役に立ちます.そのほかのほと
んどのフォーマットでは,デバッグシンボルテーブルのエントリーは,リンク
シンボルとともにバラバラに配置され,--symsの出力で見ることが可
能となります.
スタブシンボルの詳細は,Stabsを参照してください.