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] [−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 のうちのいずれかのオプション 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 のオブジェクトファ イルであることが明示的に指定された ( −m )、ファイル fu.o の セ ク ションヘッダ ( −h ) からのサマリ情報を表示します。指定可能な形式名 は −i オプションでリストできます。 |
−C |
−−demangle[=style] |
シンボル名の内部表現をユーザレベルの表現にデマングル (demangle) し ます。加えてシステムが付加した先頭のアンダスコアも取り除くので、こ れによって C ++ の関数名がわかりやすくなります。コンパイラごと に、 マングル方法が異なります。オプションのデマングルスタイル引数を使用 することで、コンパイラにあったデマングルスタイルを選択可能です。 |
−g |
−−debugging |
デバッグ情報を表示します。ファイルに格納されているデバッグ情報を解 析 し て C 言語風の表記で出力する事を試みます。いくつかの種類のデ バッグ情報に関してのみ実装されています。 readelf −w により、他のタ イプもいくつかサポートされています。 |
−e |
−−debugging−tags |
−g と同様ですが、情報が ctags tool 互換の形式で生成されます。 |
−d |
−−disassemble |
objfile から、機械語に対応するアセンブラニーモニックを表示します。 このオプションでは機械語を含むはずのセクションだけを逆アセンブルし ます。 |
−D |
−−disassemble−all |
−d と同様ですが、すべてのセクションの内容を逆アセンブルします。機 械語を含むはずのセクションには限りません。 |
−−prefix−addresses |
逆アセンブル時に、各行に完全な形のアドレスを表示します。これは古い 逆アセンブル出力形式です。 |
−EB |
||
−EL |
−−endian={big│little} |
オブジェクトファイルのエンディアンを指定します。これは逆アセンブル にのみ影響します。エンディアン情報を持たない、 S レコードのよう な ファイル形式を逆アセンブルする際に有用です。 |
−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 レコードのような、アーキテクチャ情報を持たないオブジェクト ファイルを逆アセンブルする場合に有効です。 −i オプションで、指定で きるアーキテクチャ名をリストできます。 |
−M options |
−−disassembler−options=options |
逆アセンブラにターゲット固有情報を渡します。いくつかのターゲットで のみサポートされています。 2 個以上のディスアセンブラオプション を 指定する必要がある場合、複数の −M オプションを指定することができま すし、コンマで区切ったリストとしてまとめて置くこともできます。 ターゲットが ARM アーキテクチャの場合、このスイッチを使用して、 逆 ア セ ン ブ ラ が 使 用 す る レ ジスタ名セットを選択可能です。 −M reg-name-std (デフォルト) を指定すると、 ARM 命令セット文書で使 わ れ るレジスタ名を選択しますが、レジスタ 13 は ’sp’、レジスタ 14 は ’lr’、レジスタ 15 は ’pc’ と呼ばれます。 −M reg-names-apcs を指 定 す ると、 ARM Procedure Call Standard で使用される名前セットを選択 します。 −M reg-names-raw を指定すると、 r の後にレジスタ番号が 続 く名前を使用します。 APCS のレジスタ名規則には 2 つの変種があり、 −M reg-names-atpcs お よび −M reg-names-special-atpcs で有効化 で き ま す。 こ れ ら は ARM/Thumb Procedure Call Standard の命名規則を使用します (それぞ れ、通常レジスタ名と特殊レジスタ名です)。 ARM アーキテクチャにおいては、このオプションを使用することで、全命 令 を Thumb 命令として解釈するよう、逆アセンブラに強制できます。こ のためには、 −−disassembler−options=force−thumb スイッチを使用しま す。 他のコンパイラで生成された Thumb コードを逆アセンブルするとき に有用です。 x86 では、オプションの一部は −m と重複した機能を持ちますが、細粒度 の制御を提供します。次の選択肢の複数を、コンマで区切った文字列とし て指定可能です。 x86−64, i386, i8086 は、指定したアーキテクチャ の 逆 アセンブリを選択します。 intel および att は、 intel 文法モード と AT&T 文法モードを選択します。 addr32, addr16, data32, data16 は、デフォルトのアドレスサイズとオペランドサイズを指定します。これ らの 4 オプションより、オプション文字列中で後方に登場する x86−64, i386, i8086 が優先します。最後に、 AT&T モードでは、 suffix は、サ フィックスがオペランドから推察できる場合であっても、逆アセンブラが ニーモニックサフィックスを表示するよう指示します。 PPC では、booke, booke32, booke64 は BookE 命令の逆アセンブリを選 択します。 32 および 64 は PowerPC および PowerPC64 の逆アセンブリ をそれぞれ選択します。 MIPS では、このオプションは逆アセンブルされた命令におけるレジスタ 名の表示を制御します。以下の項目から複数個を選択してコンマで区切っ て並べることで指定できます。不当なオプションは無視されます。 |
"gpr−names= ABI " |
GPR (汎用レジスタ) の名前を、指定した ABI に適した形で表示しま す。デフォルトでは、 GPR の名前は、逆アセンブルしたバイナ リ の ABI に従って選択されます。 |
"fpr−names= ABI " |
FPR (浮動小数点数レジスタ) の名前を、指定した ABI に適した形で 表示します。デフォルトでは、 FPR の名前でなく FPR 数が表示さ れ ます。 |
"cp0−names= ARCH " |
CP0 (システムコントロールコプロセッサ/コプロセッサ 0) レジスタ の名前を、 ARCH で指定した CPU またはアーキテクチャに適した形で 表示します。デフォルトでは、逆アセンブルしたバイナリのアーキテ クチャと CPU に従って CP0 レジスタの名前が選択されます。 |
"hwr−names= ARCH " |
HWR (ハードウエアレジスタ、"rdhwr" 命令が使用す る) の 名 前 を、 ARCH で指定した CPU またはアーキテクチャに適した形で表示し ます。デフォルトでは、逆アセンブルしたバイナリのアーキテクチャ と CPU に従って HWR の名前が選択されます。 |
"reg−names= ABI " |
GPR と FPR の名前を、指定した ABI に適した形で表示します。 |
"reg−names= ARCH " |
CPU固有のレジスタの名前 ( CP0 レジスタと HWR の名前) を、選択し た CPU またはアーキテクチャに適した形で表示します。 |
上記に示したオプションのいずれにおいても、 ABI ま た は ARCH を numeric として指定して、指定したレジスタのタイプに対する名前でなく 番号を表示させるようにすることができます。利用可能な ABI と ARCH の 値の一覧は、 −−help オプションを用いることで得られます。 |
−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 での出力で見ることができま す。 |
−−start−address=address |
指定されたアドレスからデータの表示を開始します。これは −d, −r, −s オプションの出力に影響します。 |
−−stop−address=address |
指定されたアドレスでデータの表示を終了します。これは −d, −r, −s オ プションの出力に影響します。 |
−t |
−−syms |
シンボルテーブル。ファイルのシンボルテーブルのエントリを表示 し ま す。これは nm プログラムで得られる情報と似ています。 |
−T |
−−dynamic−syms |
ファイルのダイナミックシンボルテーブルのエントリを表示します。これ はある種の共有ライブラリのようなダイナミックオブジェクトでのみ意味 があります。これは nm プログラムに −D (−−dynamic) オプションを指定 した時に得られる情報と似ています。 |
−V |
−−version |
objdump のバージョン番号を表示して終了します。 |
−x |
−−all−headers |
得られるすべてのヘッダ情報を表示します。シンボルテーブルと再配置情 報も含まれます。 −x の指定は、 −a −f −h −r −t のすべてを指定するの と等価です。 |
−w |
−−wide |
80 桁を越える出力デバイス用に行を整形します。また、表示す る と き に、シンボル名を短縮しません。 |
−z |
−−disassemble−zeroes |
通常は、逆アセンブル出力では、ゼロブロックを飛ばしますが、このオプ ションは、これらのブロックを他のブロックと同様に逆アセンブルするよ うに指示します。 |
nm(1), readelf(1), Info の binutils の項。 |
Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002, 2003 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.1 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’’. |
野首 寛高(hnokubi@yyy.or.jp): FreeBSD 用に翻訳 |