[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

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']
        [`-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]
        [`-V'|`--version']
        [`-H'|`--help']
        objfile...

objdumpは,一つ以上のオブジェクトファイルに関する情報を表示 します.オプションで,表示する情報を制御します.この情報は,プログラム をコンパイルして動作させたいだけのプログラマより,コンパイルツールに関 する作業をしているプログラマに対し最も役に立ちます.

objfile...は,調査されるオブジェクトファイルです.アーカイブ を指定したとき,objdumpは,それぞれのメンバーオブジェクトファ イルの情報を表示します.

ここに交互に表示しているオプションの長い形式と短い形式は等価です.リス トの`-a,-d,-D,-f,-g,-G,-h,-H,-p,-r,-R,-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 section 15.1 ターゲットの選択.

-C
--demangle[=style]
低レベルのシンボル名をユーザレベルの名前に復号(demangle)します. システムによって前置される,最初のすべてのアンダースコアを削除するだけ でなく.これはC++関数名を可読にします.別々のコンパイラでは,mangle形 式が異なります.追加のdemangle形式の引数は,コンパイラに対する適切な demangle形式を選択するために使用することが可能です.demangleの情報は, See section 9. c++filt.

-g
--debugging
デバッグ情報を表示します.これは,ファイルに保存されているデバッグ情報 の解析を試み,Cのような構文を使用してそれを出力します.デバッグ情報の 特定の形式のみ実装されています.他の形式も,いくつかはreadelf -wでサポートされています.See section 14. readelf.

-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
ターゲット指定の情報を逆アセンブラに渡します.いくつかのターゲットだけ をサポートします.

ターゲットが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に対して,このオプションは逆アセンブルした命令でのレジスタ名の出力 を制御します.以下を複数選択することは,カンマで分けた文字列で指定し, 無効のオプションは無視されます.

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やアーキテ クチャに対して適切に出力します.

上記でリストアップされているすべてのオプションに対し,ABIARCHは,選択されているレジスタに対する名前ではなく,出力される番 号となる`numeric'として指定します.`--help'を使用して,利 用可能なABIARCHの値をリストアップすることが可能です.

-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'の出力で見るこ とが可能となります. スタブシンボルの詳細は,section `Stabs Overview' in The "stabs" debug formatを参照してください.

--start-address=address
データの表示を,指定したアドレスで開始します.これは`-d', `-r',そして`-s'オプションの出力に効果があります.

--stop-address=address
データの表示を,指定したアドレスで停止します.これは`-d', `-r',そして`-s'オプションの出力に効果があります.

-t
--syms
ファイルのシンボルテーブルのエントリーを出力します.これは,`nm' プログラムで提供される情報に似ています.

-T
--dynamic-syms
ファイルの動的シンボルテーブルのエントリーを表示します.これは,特定の 形式の共有ライブラリのような,動的オブジェクトに対してのみ意味がありま す.これは,`-D' (`--dynamic')オプションが与えられている `nm'プログラムで提供される情報に似ています.

-V
--version
objdumpのバージョンナンバーを出力し終了します.

-x
--all-headers
利用可能なヘッダ情報をすべて表示し,それにはシンボルテーブルと,再配置 エントリが含まれます.`-x'を用いると,`-a -f -h -r -t'を すべて指定したものと等価になります.

-w
--wide
80列以上の出力デバイスに対し,数行で書式化します.また,表示するときに シンボル名を切り詰めません.

-z
--disassemble-zeroes
通常,逆アセンブルの出力はゼロのブロックを省略します.このオプションは, これらのブロックを逆アセンブルするため,他のデータと同様,直接逆アセン ブルします.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Akihiro Sagawa on March, 3 2004 using texi2html