objdump(1) オブジェクトファイルの情報を表示する

書式

objdump
[-a|--archive-headers] [-b bfdname | --target=bfdname] [-C|--demangle] [--debugging] [-d|--disassemble] [-D|--disassemble-all] [--disassemble-zeroes] [-EB|-EL|--endian={big|little}] [-f|--file-headers] [-h|--section-headers | --headers] [-i|--info] [-j section | --section=section] [-l|--line-numbers] [-m machine | --architecture=machine] [--prefix-addresses] [-r|--reloc] [-R|--dynamic-reloc] [-s|--full-contents] [-S|--source] [--[no-]show-raw-insn] [--stabs] [-t|--syms] [-T|--dynamic-syms] [-x|--all-headers] [--start-address=address] [--stop-address=address] [--adjust-vma=offset] [--version] [--help] objfile...

説明

objdump は指定されたひとつ以上のオブジェクトファイルについて、その情報を表示す る。オプションで表示する情報の種類を指定できる。この情報はコンパイルツー ルに関する作業をしているプログラマーにとってもっとも有益であろう。逆に 単に自分のプログラムをコンパイルして実行させているだけの場合にはあまり 役に立たないかもしれない。

objfile は調べるオブジェクトファイルである。書庫 (archive) を指定した場合には、 objdump は書庫のメンバーであるオブジェクトファイルそれぞれについての情報を表示 する。

オプション

長い形式と短い形式が併記されている場合は、それらは等価である。少なくと も -l (--line-numbers) 以外のオプションをひとつ指定しなければならない。

-a
--archive-headers
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') が表示される。この際 fu.o は Oasys コンパイラによって生成されたフォーマットの Vax オブジェクトファ イルであるとして取り扱われる。指定可能なフォーマットのリストは `-i' オプションによって得られる。

-C
--demangle
低レベルのシンボル名をユーザーレベルのシンボル名にデコード (demangle) する。このときシステムによって前置されたアンダースコ アも削除される。この操作によって C++ の関数名が可読になる。

--debugging
デバッグ情報を表示する。ファイル中のデバッグ情報を解析して、 C のよう な文法で表示しようと試みる。対応しているデバッグ情報の形式はあまり多く ない。

-d
--disassemble
objfile の機械語命令に対応するアセンブラのニーモニックを表示する。このオプショ ンは、命令を含むと思われるセクションのみを逆アセンブルする。

-D
--disassemble-all
-d と似ているが、命令を含むと思われるセクションだけでなく、全てのセクショ ンを逆アセンブルする。

--prefix-addresses
逆アセンブルするとき、それぞれの行に絶対アドレスを表示する。これは古い 逆アセンブルフォーマットである。

--disassemble-zeroes
通常逆アセンブルの出力では 0 からなるブロックはスキップする。このオプ ションを指定すると、これらの 0 ブロックも他のデータと同様に逆アセンブ ルされる。

-EB
-EL
--endian={big|little}
オブジェクトファイルのエンディアンを指定する。逆アセンブルにのみ影響す る。これは S-record のようなエンディアン情報を含まないフォーマットを逆 アセンブルするときに効果的である。

-f
--file-headers
objfile のそれぞれに対して overall ヘッダ情報の要約を表示する。

-h
--section-headers
--headers
オブジェクトファイルのセクションヘッダ情報の要約を表示する。

--help
objdump のオプションの要約を表示して終了する。

-i
--info
オプション -b および -m と共に指定できるアーキテクチャとオブジェクトフォーマットの一覧を表示す る。

-j name
--section=name
セクション name だけの情報を表示する。

-l
--line-numbers
表示しているオブジェクトコードに、ソースのファイル名と行を (デバッグ情 報を用いて) 関連付けし、表示する。 -d-D-r などと同時に用いる。

-m machine
--architecture=machine
オブジェクトファイルを逆アセンブルするとき、アーキテクチャを指定する。 これは S-record のような、アーキテクチャの情報を持たないオブジェクトファ イルを逆アセンブルするときに有用である。指定可能なアーキテクチャンのリ ストは -i オプションによって得られる。

-r
--reloc
ファイルのリロケーションエントリを表示する。 -d または -D とともに用いると、エントリは逆アセンブルコードの中に埋め込ま れて表示される。

-R
--dynamic-reloc
ファイルのダイナミックリロケーションエントリを表示する。これはある種の 共有ライブラリのような、ダイナミックオブジェクトに対してのみ意味を持つ。

-s
--full-contents
指定したそれぞれのセクションに対して、全ての内容を表示する。

-S
--source
(可能であれば) ソースコードを逆アセンブル結果と混在させて表示する。 -d が暗黙のうちに指定される。

--show-raw-insn
マシン語を逆アセンブルするとき、命令コードを 16 進コードとシンボリック な記法と両方で表示する。これは --prefix-addresses が指定されていない場合のデフォルトである。

--no-show-raw-insn
マシン語を逆アセンブルするとき、16 進のバイトコードを表示しない。これ は --prefix-addresses が指定された場合のデフォルトである。

--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) オプションを指定した場合に得られる情報とほぼ同じ。

--version
objdump のバージョン番号を表示して終了する。

-x
--all-headers
表示可能な全てのヘッダ情報を表示する。シンボルテーブル、リロケーション エントリも表示する。 -x-a -f -h -r -t の全てを指定した場合と等価である。

著作権

Copyright (c) 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English.