EN JA
OBJDUMP(1)
OBJDUMP(1) GNU Development Tools OBJDUMP(1)

名称

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]
[ -W| --dwarf]
[ -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 のうちの 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) します。システムによって先頭に追加された始めの下線 (underscore) を取り除くことに加えて、これは、C++ 関数名を読み込み可能とします。コンパイラが変われば、マングル (mangle) スタイルも変わります。利用者のコンパイラのための適切なデマングル (demangle) スタイルを選択するためにオプションのデマングル (demangle) スタイルをを使用することができます。
-g
--debugging
デバッグ情報を表示します。ファイルに格納されたデバッグ情報を解析して、C 言語のような構文を使用して、それを印刷することを試みます。デバッグ情報の特定のタイプだけが実装されています。他のタイプは、 readelf -w によってサポートされています。
-e
--debugging-tags
-g に似ていますが、情報は、ctags ツールと互換性のある形式で生成されます。
-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-names-std (デフォルト) を指定すると、 ARM 命令セット文書で使用されるレジスタ名を選択しますが、レジスタ 13 は、'sp' と呼ばれ、レジスタ 14 は、'lr' と呼ばれ、レジスタ 15 は、'pc' と呼ばれます。 -M reg-names-apcs を指定すると、ARM Procedure Call Standard によって使用される名前セットを選択し、一方 -M reg-names-raw を指定すると、レジスタ番号が続く r を単に使用します。
 
また、ARM/Thumb Procedure Call Standard 命名規則を使用する、 -M reg-names-atpcs-M reg-names-special-atpcs によって有効にされた APCS 命名体系には、2 つの変異型があります。 (通常レジスタ名と特殊レジスタ名のいずれかです)。
 
また、ARM アーキテクチャに対して、逆アセンブラが、スイッチ --disassembler-options=force-thumb を使用することによって、Thumb 命令としてすべての命令を解釈するように強制する、このオプションを使用することができます。他のコンパイラによって生成された thumb コードを逆アセンブルしようとするとき、これは、役に立つかもしれません。
 
x86 に関して、オプションのいくつかは、 -m スイッチの機能と重複していますが、より細かい制御ができます。コンマで区切られた文字列として次の複数の選択を指定できます。 x86-64, i386i8086 は、与えられたアーキテクチャのための逆アセンブリを選択します。 intelatt は、 intel 構文モードと AT&T 構文モードを選択します。 addr64, addr32, addr16, data32data16 は、デフォルトのアドレスサイズとオペランドサイズを指定します。これらの 4 つのオプションは、 x86-64, i386 または i8086 がオプション文字列の後に現れるなら、優先されます。最後に、AT&T モードのとき、 suffix は、接尾辞 (suffix) が、オペランドによって、推論できたときでさえ、簡略接尾辞を印刷するよう逆アセンブラに指示します。
 
PPC に関して、 booke, booke32booke64 は、 BookE 命令の逆アセンブルを選択します。 3264 は、それぞれ PowerPC と PowerPC64 の逆アセンブルを選択します。 e300 は、e300 ファミリのために逆アセンブルを選択します。 440 は、PowerPC 440 のための逆アセンブルを選択します。
 
MIPS に関して、このオプションは、逆アセンブルされた命令の命令ニーモニック名とレジスタ名の印刷を制御します。コンマで区切られた文字列として、次の複数の選択を、指定することができます、そして、無効のオプションは、無視されます:
"no-aliases"
何らかの疑似命令ニーモニックの代わりに '生の' 命令ニーモニックを印刷します。すなわち、'move' の代わりに 'daddu' または 'or'、'nop' の代わりに 'sll' などを印刷します。
"gpr-names= ABI"
指定された ABI にふさわしい GPR (汎用レジスタ) 名を印刷します。デフォルトで、GPR 名は、逆アセンブルされるバイナリの ABI に従って選択されます。
"fpr-names= ABI"
指定された ABI にふさわしい FPR (浮動小数点レジスタ) 名を印刷します。デフォルトで、名前でなく FPR 番号を印刷します。
"cp0-names= ARCH"
ARCH によって指定された CPU またはアーキテクチャにふさわしい CP0 (システム制御コプロセッサ;コプロセッサ 0) レジスタ名を印刷します。デフォルトで、CP0 レジスタ名は、逆アセンブルされるバイナリのアーキテクチャと CPU に従って選択されます。
"hwr-names= ARCH"
ARCH によって指定された CPU またはアーキテクチャにふさわしい HWR ("rdhwr"命令によって使用されるハードウェアレジスタ) 名を印刷します。デフォルトで、HWR 名は、逆アセンブルされるバイナリのアーキテクチャと CPU に従って選択されます。
"reg-names= ABI"
選択された ABI にふさわしい GPR と FPR 名を印刷します。
"reg-names= ARCH"
選択された CPU またはアーキテクチャにふさわしい CPU 特有のレジスタ名 (CP0 レジスタと HWR 名) を印刷します。
 
上記にリストされたオプションのいずれも、 ABI または ARCH は、選択されたレジスタのタイプについて、名前ではなく印刷された番号がある numeric として指定されます。 --help オプションを使用して ABIARCH の利用可能な値をリストすることができます。
 
VAX に関して、 -M entry:0xf00ba エントリで関数のエントリアドレスを指定できます。 (ROM ダンプのような) シンボルテーブルを含まない VAX バイナリファイルを適切に逆アセンブルするために複数回、これを使用することができます。これらの場合に、関数のエントリマスクは、たぶん、間違って逆アセンブルされた関数の残りを導く、 VAX 命令として別の方法でデコードされるでしょう。
-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 が使用されるとき、これはデフォルトです。
-W
--dwarf
いずれかが存在しているなら、ファイルの DWARF デバッグセクションの内容を表示します。
-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
ファイルの動的なシンボルテーブルエントリを印刷します。これは、特定のタイプの共有ライブラリのような、動的オブジェクトだけに意味があります。これは、 -D ( --dynamic) オプションが与えられるとき、 nm プログラムによってもたらされる情報と同様です。
--special-syms
表示するとき、シンボルは、何らかの方法で特別であると見なされるターゲットと通常、ユーザに興味がないものを含みます。
-V
--version
objdump のバージョン番号を印刷して、終了します。
-x
--all-headers
シンボルテーブルと再配置エントリを含むすべての利用可能なヘッダ情報を表示します。 -x を使用するのは、 -a -f -h -p -r -t のすべてを指定することと同等です。
-w
--wide
80 カラムを超える出力デバイスのためにいくつかの行を書式化します。また、それらを表示するとき、シンボル名を切り詰めません。
-z
--disassemble-zeroes
通常、逆アセンブル出力は、0 のブロックをスキップします。このオプションは、他のデータと同様に、それらのブロックを逆アセンブルするように指示します。
@ file
file からコマンドラインのオプションを読み込みます。読み込まれたオプションは、オリジナルの @ file オプションの場所に代わって挿入されます。 file が存在しないか、または読み込むことができないなら、オプションは、文字通りに扱われ、取り除かれません。
 
file 中のオプションは、空白類によって分離されます。空白類の文字は、シングルクォートまたはダブルクォートのいずれかで全体のオプションを囲むことによって、オプションに含めることができます。 (バックスラッシュを含む) 任意の文字は、バックスラッシュを文字を前に置くことによって、含めることができます。 file は、それ自体に、追加の @ file オプションを含むことができます。そのようなオプションは、再帰的に処理されます。

関連項目

nm(1), readelf(1) と binutils のための Info エントリ。

COPYRIGHT

Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 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".

2010-10-30 binutils-2.17.50