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]
        [-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 のうちのいずれかのオプション 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 言語風の表記で出力する事を試みます。 いくつかの種類のデバッグ情報に関してのみ実装されています。

-d
--disassemble
    objfile から、機械語に対応するアセンブラニーモニックを表示します。 このオプションでは機械語を含むはずのセクションだけを 逆アセンブルします。

-D
--disassemble-all
    -d と同様ですが、すべてのセクションの内容を 逆アセンブルします。機械語を含むはずのセクションには 限りません。

--prefix-addresses
    逆アセンブル時に、各行に完全な形のアドレスを表示します。 これは古い逆アセンブル出力形式です。

--disassemble-zeroes
    通常は逆アセンブル出力で 0 が連続する部分は飛ばされます。 このオプションは逆アセンブラに、そういった部分も他のデータと 同様に逆アセンブルするように指示します。

-EB
-EL
--endian={big|little}
    オブジェクトファイルのエンディアンを指定します。これは 逆アセンブルにのみ影響します。エンディアン情報を持たない、 S レコードのようなファイル形式を逆アセンブルする際に有用です。

-f
--file-header
    objfile の各ファイルのヘッダ全体からのサマリ情報を表示します。

--file-start-context
    まだ表示していないファイルから ソースコードと逆アセンブリの交互リストを表示するとき (-S を仮定)、 コンテキストをファイルの先頭まで拡張します。

-h
--section-header
--header
    オブジェクトファイルのセクションヘッダからサマリ情報を表示します。

    ファイルセグメントは非標準アドレスへ再配置されるかもしれません。 これは例えば -Ttext, -Tdata, -Tbss を ld に使用することで可能となります。 しかしながら、a.out のようなオブジェクトファイル形式では、 ファイルセグメントの開始アドレスを格納しません。 このような場合、 ld はセクションを正しく再配置しますが、 objdump -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
    逆アセンブラにターゲット固有情報を渡します。 いくつかのターゲットでのみサポートされています。

    ターゲットが 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 の逆アセンブリ をそれぞれ選択します。

-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) オプションを指定した時に得られる情報と似ています。

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

-x
--all-header
    得られるすべてのヘッダ情報を表示します。 シンボルテーブルと再配置情報も含まれます。 -x の指定は、 -a -f -h -r -t のすべてを指定するのと等価です。

-w
--wide
    80 桁を越える出力デバイス用に行を整形します。 また、表示するときに、シンボル名を短縮しません。

関連項目
nm(1), readelf(1), Info の binutils の項。

COPYRIGHT
Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002 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 用に翻訳