4 objdump
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
- --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
それは,fu.oのセクションヘッダ(-h)からの情報の概要を表
示し,それは特に,Oasysコンパイラで生成されるフォーマットのVAXオブジェ
クトファイルとして認識(-m)されます.-iオプションを用
いて利用可能なフォーマットをリストアップすることが可能です.詳細は,
See Target Selection.
- -C
- --demangle[=style]
-
低レベルのシンボル名をユーザレベルの名前に復号(demangle)します.
システムによって前置される,最初のすべてのアンダースコアを削除するだけ
でなく.これはC++関数名を可読にします.別々のコンパイラでは,mangle形式
が異なります.追加のdemangle形式の引数は,コンパイラに対する適切な
demangle形式を選択するために使用することが可能です.demangleの情報は,
See c++filt.
- -g
- --debugging
-
デバッグ情報を表示します.これは,ファイルに保存されているデバッグ情報
の解析を試み,Cのような構文を使用してそれを出力します.デバッグ情報の特
定の形式のみ実装されています.他の形式も,いくつかはreadelf
-wでサポートされています.See readelf.
- -e
- --debugging-tags
-
-gに似ていますが,情報は,ctagツール互換の書式で生成されます.
- -d
- --disassemble
-
objfileから,機械語命令に対するアセンブラニーモニックを表示します.
このオプションは,命令を含むことを期待されるそれらのセクションを,逆ア
センブルするだけです.
- -D
- --disassemble-all
-
-dに似ていますが,命令を含むことを期待されるものだけでなく,す
べてのセクションの内容を逆アセンブルします.
- --prefix-addresses
-
逆アセンブルしているとき,それぞれの行に絶対アドレスを出力します.これ
はより古い逆アセンブルの書式です.
- -EB
- -EL
- --endian={big|little}
-
オブジェクトファイルのエンディアンを指定します.これは逆アセンブラにの
み効果があります.これは,S-recordのような,エンディアン情報を記述して
いないファイルフォーマットを逆アセンブルしているとき役に立つはずです.
- -f
- --file-headers
-
それぞれのobjfileファイルのヘッダ全体からの情報の概要を表示します.
- --file-start-context
-
まだ表示されていない,内部にリストアップされているソースコード/ファイル
から逆アセンブルされたもの(おそらく-S)を表示しているとき,コン
テクストをファイルの先頭まで拡張することを指定します.
- -h
- --section-headers
- --headers
-
オブジェクトファイルのセクションヘッダの情報の概要を表示します.
ファイルのセグメントは,非標準のアドレスに再配置され,例えば,
-Ttext,-Tdata,または-Tbssオプションが
ldで使用されています.しかし,a.out
のようなオブジェク
トファイルのフォーマットによっては,ファイルセグメントの開始アドレスを
保存しないものもあります.そのような状況では,ldがセクション
を正しく再配置しますが,ファイルのセクションのヘッダのリストに
`objdump -h'を使用しても,正しいアドレスを表示することは不可能です.
その代わりに,それは通常のアドレスを表示し,それらはターゲットに対して
暗黙のうちに行われます.
- -H
- --help
-
objdumpに対するオプションの概要を出力し,終了します.
- -i
- --info
-
-bや-mを用いて指定可能な,すべてのアーキテクチャとオ
ブジェクトのフォーマットを示すリストを表示します.
- -j name
- --section=name
-
セクションnameに対する情報のみ表示します.
- -l
- --line-numbers
-
(デバッグ情報を使用した)表示に,表示されているオブジェクトコードや再配
置に一致しているファイル名とソースの行番号を用いてラベル付けします.
-d,-D,または-rを用いた場合のみ有益です.
- -m machine
- --architecture=machine
-
オブジェクトファイルの逆アセンブル時に,使用するアーキテクチャを指定し
ます.これは,S-recordのような,アーキテクチャ情報が記述されていないオ
ブジェクトファイルを逆アセンブルするとき役に立ちます.-iオプショ
ンを用いて,利用可能なアーキテクチャをリストアップすることが可能です.
- -M options
- --disassembler-options=options
-
ターゲット指定の情報を逆アセンブラに渡します.いくつかのターゲットだけ
をサポートします.一つ以上の逆アセンブラオプションが必要な場合,複数の
-Mオプションを使用したり,カンマで分離したリストで一度に与える
ことが可能です.
ターゲットが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-aliases
-
偽の命令ニーモニックではなく,'raw'の命令ニーモニックを出力します.つま
り,'move'の代わりに'daddu'や'or'を,'nop'の代わりに'sll'を出力する等の
ようになります.
gpr-names=
ABI-
GPR(general-purpose register(汎用レジスタ))名を,指定されたABIに対して
適切に出力します.デフォルトで,GPR名は,逆アセンブルされたバイナリの
ABIに対応して選択されます.
fpr-names=
ABI-
FPR(floating-point register(浮動小数点レジスタ))名を,指定されたABIに対
して適切に出力します.デフォルトで,FPR番号が,名前の代わりに出力されま
す.
cp0-names=
ARCH-
CP0(system control coprocessor; coprocessor 0(システム制御コプロセッサ;
コプロセッサ0))レジスタ名を,CPUまたはARCHで指定されたアーキテク
チャに対して適切に出力します.デフォルトで,CP0レジスタ名は,逆アセンブ
ルされたバイナリのアーキテクチャとCPUに対応して選択されます.
hwr-names=
ARCH-
HWR(
rdhwr
命令で使用される,hardware register(ハードウェアレジス
タ))名を,CPUまたはARCHで指定されたアーキテクチャに対して適切に出
力します.デフォルトで,HWR名は,逆アセンブルされたバイナリのアーキテク
チャとCPUに対応して選択されます.
reg-names=
ABI-
GPRとFPR名を選択されたABIに対して適切に出力します.
reg-names=
ARCH-
CPU特有のレジスタ名(CP0レジスタとHWRの名前)を,選択されたCPUやアーキテ
クチャに対して適切に出力します.
上記でリストアップされているすべてのオプションに対し,ABIや
ARCHは,選択されているレジスタに対する名前ではなく,出力される番
号となる`numeric'として指定します.--helpを使用して,利用
可能なABIとARCHの値をリストアップすることが可能です.
- -p
- --private-headers
-
オブジェクトファイルのフォーマット特有の情報を出力します.出力される厳
密な情報はオブジェクトファイルのフォーマットに依存します.オブジェクト
ファイルのフォーマットによっては,追加情報は出力されません.
- -r
- --reloc
-
ファイルの再配置エントリを出力します.-dや-Dとともに
使用される場合,再配置は逆アセンブルの中にバラバラに出力されます.
- -R
- --dynamic-reloc
-
ファイルの動的な再配置エントリを出力します.これは,ある形式の共有ライ
ブラリのような,動的オブジェクトのみで意味があります.
- -s
- --full-contents
-
要求されたあらゆるセクションの,すべての内容を表示します.デフォルトで,
すべての空ではないセクションが表示されます.
- -S
- --source
-
可能な場合,逆アセンブラの中にソースコードを混ぜて表示します.
-dが暗黙のうちに指定されます.
- --show-raw-insn
-
命令を逆アセンブルするとき,命令をシンボリック形式と同様に16進で出力し
ます.--prefix-addressesが使用されているとき以外,これはデフォ
ルトです.
- --no-show-raw-insn
-
命令を逆アセンブルするとき,命令バイトを出力しません.これは
--prefix-addressesが使用されているときデフォルトです.
- -G
- --stabs
-
要求されるすべてのセクションの内容を全部表示します.ELFファイルの.stab
と .stab.indexと .stab.exclセクションの内容を表示します.これは,
.stab
デバッグシンボルテーブルのエントリーがELFのセクションに運び
込まれる(Solaris 2.0のような)システムでのみ役に立ちます.そのほかのほと
んどのフォーマットでは,デバッグシンボルテーブルのエントリーは,リンク
シンボルとともにバラバラに配置され,--symsの出力で見ることが可
能となります.
スタブシンボルの詳細は,Stabsを参照してください.
- --start-address=address
-
データの表示を,指定したアドレスで開始します.これは-d,
-r,そして-sオプションの出力に効果があります.
- --stop-address=address
-
データの表示を,指定したアドレスで停止します.これは-d,
-r,そして-sオプションの出力に効果があります.
- -t
- --syms
-
ファイルのシンボルテーブルのエントリーを出力します.これは,`nm'
プログラムで提供される情報に似ています.
- -T
- --dynamic-syms
-
ファイルの動的シンボルテーブルのエントリーを表示します.これは,特定の
形式の共有ライブラリのような,動的オブジェクトに対してのみ意味がありま
す.これは,-D (--dynamic)オプションが与えられている
`nm'プログラムで提供される情報に似ています.
- --special-syms
-
表示するとき,なんらかの方法で,ターゲットが特殊なものだと考えたり,通
常はユーザに興味が無いものを含めます.
- -V
- --version
-
objdumpのバージョンナンバーを出力し終了します.
- -x
- --all-headers
-
利用可能なヘッダ情報をすべて表示し,それにはシンボルテーブルと,再配置
エントリが含まれます.-xを用いると,-a -f -h -p -r
-tをすべて指定したものと等価になります.
- -w
- --wide
-
80列以上の出力デバイスに対し,数行で書式化します.また,表示するときに
シンボル名を切り詰めません.
- -z
- --disassemble-zeroes
-
通常,逆アセンブルの出力はゼロのブロックを省略します.このオプションは,
これらのブロックを逆アセンブルするため,他のデータと同様,直接逆アセン
ブルします.