llvm-objdump - LLVM オブジェクトファイルダンプユーティリティ

概要

llvm-objdump [コマンド] [オプション] [ファイル名…]

説明

llvm-objdump ユーティリティは、コマンドラインで指定されたオブジェクトファイルと最終的なリンク済みイメージの内容を出力します。ファイル名が指定されていない場合、llvm-objdumpa.outから読み込みを試みます。ファイル名として-が使用された場合、llvm-objdump は標準入力ストリームからのファイル処理を行います。

コマンド

以下のコマンドのうち少なくとも1つは必要であり、一部のコマンドは他のコマンドと組み合わせることができます。

-a, --archive-headers

アーカイブのヘッダーに含まれる情報を表示します。

-d, --disassemble

入力ファイルにあるすべての実行可能セクションを逆アセンブルします。一部のアーキテクチャ(AArch64、PowerPC、x86)では、既知のすべての命令がデフォルトで逆アセンブルされます。それ以外のアーキテクチャでは、--mcpu または --mattr を使用して、一部の命令セットを有効にする必要があります。無効な命令は<unknown>と表示されます。

-D, --disassemble-all

入力ファイルにあるすべてのセクションを逆アセンブルします。

--disassemble-symbols=<symbol1[,symbol2,...]>

指定されたシンボルのみを逆アセンブルします。--demangle が指定されている場合はデマングルされたシンボル名を使用し、それ以外の場合はマングルされたシンボル名を使用します。--disassemble を意味します。

--dwarf=<value>

指定されたDWARFデバッグセクションをダンプします。サポートされている値は次のとおりです。

frames - .debug_frame

-f, --file-headers

全体のファイルヘッダーの内容を表示します。

--fault-map-section

フォールトマップセクションの内容を表示します。

-h, --headers, --section-headers

各セクションのヘッダーのサマリーを表示します。

--help

使用方法の情報を表示して終了します。他のコマンドとは併用できません。

-p, --private-headers

フォーマット固有のファイルヘッダーを表示します。

-r, --reloc

ファイル内のリロケーションエントリを表示します。

-R, --dynamic-reloc

ファイル内の動的リロケーションエントリを表示します。

--raw-clang-ast

clang AST セクションの生のバイナリコンテンツをダンプします。

-s, --full-contents

各セクションの内容を表示します。

-t, --syms

シンボルテーブルを表示します。

-T, --dynamic-syms

動的シンボルテーブルの内容を表示します。

-u, --unwind-info

入力のアンワインド情報を表示します。

この操作は現在、COFF および Mach-O オブジェクトファイルでのみサポートされています。

-v, --version

llvm-objdump 実行ファイルのバージョンを表示します。他のコマンドとは併用できません。

-x, --all-headers

使用可能なすべてのヘッダー情報を表示します。--archive-headers--file-headers--private-headers--reloc--section-headers、および--syms を指定することと同じです。

オプション

llvm-objdump は以下のオプションをサポートします。

--adjust-vma=<offset>

逆アセンブルまたはセクションヘッダーの出力における表示アドレスを、指定されたオフセット分増加させます。

--arch-name=<string>

逆アセンブル時にターゲットアーキテクチャを指定します。--version を使用して、利用可能なターゲットの一覧を表示できます。

--build-id=<string>

16進数の文字列で指定されたビルドIDを使用して、オブジェクトを検索します。検出されたオブジェクトは、入力ファイル名であるかのように処理されます。

-C, --demangle

出力でシンボル名をデマングルします。

--debug-file-directory <path>

.build-id サブディレクトリを含むディレクトリへのパスを指定して、ストリップされたバイナリのデバッグ情報を検索します。この引数の複数のインスタンスは、指定された順序で検索されます。

--debuginfod, --no-debuginfod

デバッグバイナリの debuginfod 検索を試行するかどうかを指定します。指定しない限り、debuginfod は、libcurl がコンパイルされている場合 (LLVM_ENABLE_CURL) かつ環境変数 DEBUGINFOD_URLS に少なくとも1つのサーバーURLが指定されている場合にのみ有効になります。

--debug-vars=<format>

逆アセンブルと同時に、ソースレベル変数の位置(レジスタまたはメモリ内)を出力します。formatunicode または ascii で、省略した場合は unicode がデフォルトになります。

--debug-vars-indent=<width>

逆アセンブルの先頭からのソースレベル変数の表示のインデント距離を指定します。デフォルトは52文字です。

-j, --section=<section1[,section2,...]>

指定されたセクションのみに対してコマンドを実行します。Mach-Oの場合は、セクション名を指定するために segment,section を使用します。

-l, --line-numbers

逆アセンブル時に、ソースの行番号を表示します。--disassemble を意味します。

-M, --disassembler-options=<opt1[,opt2,...]>

ターゲット固有の逆アセンブラオプションを渡します。利用可能なオプション

  • reg-names-std: ARMのみ(デフォルト)。ARMの命令セットドキュメントに従って出力し、r13/r14/r15をsp/lr/pcに置き換えます。

  • reg-names-raw: ARMのみ。rの後にレジスタ番号を使用します。

  • no-aliases: AArch64とRISC-Vのみ。擬似命令ニーモニックではなく、生の命令ニーモニックを出力します。

  • numeric: RISC-Vのみ。ABIニーモニックではなく、生のレジスタ名を出力します。(例:raの代わりにx1を出力)

  • att: x86のみ(デフォルト)。AT&T構文で出力します。

  • intel: x86のみ。Intel構文で出力します。

--disassembler-color=<mode>

逆アセンブラのカラー出力の有効/無効を切り替えます。

  • off: 逆アセンブラのカラー出力を無効にします。

  • on: 逆アセンブラのカラー出力を有効にします。

  • terminal: ターミナルがサポートしている場合に逆アセンブラのカラー出力を有効にします(デフォルト)。

--mcpu=<cpu-name>

逆アセンブルのために特定のCPUタイプをターゲットにします。--mcpu=help を指定すると、利用可能なCPUが表示されます。

--mattr=<a1,+a2,-a3,...>

ターゲット固有の属性を有効/無効にします。--mattr=help を指定すると、利用可能な属性が表示されます。

-mllvm <arg>

LLVMのコマンドラインライブラリに転送する引数を指定します。

--no-leading-addr, --no-addresses

逆アセンブル時に、命令またはインラインリロケーションの先頭にアドレスを出力しません。

--no-print-imm-hex

逆アセンブル出力で、イミディエイト値に16進形式を使用しません。

--no-show-raw-insn

逆アセンブル時に、各命令の生のバイトを出力しません。

--offloading

LLVMオフロードセクションの内容を表示します。

--prefix=<prefix>

--source オプションを指定して逆アセンブルする際に、絶対パスにprefix を追加します。

--prefix-strip=<level>

--source オプションを指定して逆アセンブルする際に、絶対パスから先頭のlevel個のディレクトリを除去します。このオプションは、--prefix を指定しないと効果がありません。

--print-imm-hex

逆アセンブル出力でイミディエイト値を出力する際に16進形式を使用します(デフォルト)。

-S, --source

逆アセンブル時に、逆アセンブルとソースコードを交互に表示します。--disassemble を意味します。

--show-all-symbols

逆アセンブル時に、同じ場所に複数のシンボルが定義されている場合でも、すべてのシンボルを表示します。

--show-lma

ELFセクションヘッダをダンプする際にLMA列を表示します。セクションに異なるVMAとLMAがある場合を除き、デフォルトでオフになります。

--start-address=<address>

逆アセンブル時に、指定されたアドレスから逆アセンブルします。

リロケーションを出力する際に、少なくともaddressからのオフセットを修正するリロケーションのみを出力します。

シンボルを出力する際に、値が少なくともaddressであるシンボルのみを出力します。

--stop-address=<address>

逆アセンブル時に、指定されたアドレスまで(ただし、指定されたアドレスを含まず)逆アセンブルします。

リロケーションを出力する際に、addressまでのオフセットを修正するリロケーションのみを出力します。

シンボルを出力する際に、値がaddressまでであるシンボルのみを出力します。

--symbolize-operands

逆アセンブル時に、分岐ターゲットオペランドをシンボライズして、実際のアドレスではなくラベルを出力します。

PC相対のグローバルシンボル参照を出力する際に、先頭のシンボルからのオフセットとして出力します。

bb-address-mapセクションが存在する場合(つまり、オブジェクトファイルが-fbasic-block-sections=labelsでビルドされている場合)、ラベルはそのセクションから取得されます。pgo-analysis-mapがbb-address-mapとともに存在する場合、利用可能な分析は関連するブロックラベルの後に出力されます。デフォルトでは、特別な表現を持つ分析(BlockFrequency、BranchProbabilityなど)は生の16進値として出力されます。

PowerPCオブジェクトまたはX86リンク済みイメージでのみ動作します。

ローカルターゲットとPC相対メモリアクセスを持つ、シンボル化されていない分岐命令の例:

cmp eax, dword ptr [rip + 4112]
jge 0x20117e <_start+0x25>

は、次のように変わります。

<L0>:
  cmp eax, dword ptr <g>
  jge      <L0>
--pretty-pgo-analysis-map

--symbolize-operands オプションと bb-address-map、pgo-analysis-map を併用する場合、解析結果を、対応する解析パスが生成するフォーマットと同じフォーマットで出力します。 見やすいフォーマットの例としては、エントリブロックを基準としたブロック頻度の出力があり、BFI と同じです。

--symbolize-operands が有効になっている場合のみ機能します。

--triple=<string>

逆アセンブル対象のターゲットトリプルを指定します。--version で使用可能なターゲットを確認できます。

-w, --wide

GNU objdump との互換性のために無視されます。

--x86-asm-syntax=<style>

非推奨。 --disassemble と併用する場合、X86 バックエンドから出力するコードのスタイルを選択します。サポートされている値は

att

AT&T スタイルのアセンブリ

intel

Intel スタイルのアセンブリ

デフォルトの逆アセンブルスタイルは **att** です。

-z, --disassemble-zeroes

逆アセンブル時にゼロのブロックをスキップしません。

@<FILE>

レスポンスファイル `<FILE>` からコマンドラインオプションとコマンドを読み込みます。

MACH-O 専用オプションとコマンド

--arch=<architecture>

逆アセンブルするアーキテクチャを指定します。--version で使用可能なアーキテクチャを確認できます。

--archive-member-offsets

Mach-O アーカイブの各アーカイブメンバーへのオフセットを出力します(--archive-headers が必要です)。

--bind

バインディング情報を表示します。

--data-in-code

コード内のデータテーブルを表示します。

--dis-symname=<name>

指定されたシンボルの命令のみを逆アセンブルします。

--chained-fixups

チェーンされた修正情報を表示します。

--dyld-info

最終的にリンクされたバイナリで外部参照を解決するために dyld が使用するバインドとリベースの情報を表示します。

--dylibs-used

リンクされたファイルで使用されている共有ライブラリを表示します。

--dsym=<string>

デバッグ情報に .dSYM ファイルを使用します。

--dylib-id

dylib ファイルの共有ライブラリの ID を表示します。

--exports-trie

エクスポートされたシンボルを表示します。

--function-starts [=<addrs|names|both>]

Mach-O オブジェクトの関数開始テーブルを出力します。 addrs (デフォルト) は関数のアドレスのみを出力し、names は関数の名前のみを出力し (利用可能な場合)、both はアドレスの横に名前を出力します。

-g

利用可能な場合、デバッグ情報から行情報を表示します。

--full-leading-addr

逆アセンブル時に完全な先頭のアドレスを出力します。

--indirect-symbols

間接シンボルテーブルを表示します。

--info-plist

info plist セクションを文字列として表示します。

--lazy-bind

遅延バインディング情報を表示します。

リンカ最適化ヒントを表示します。

-m, --macho

Mach-O 固有のオブジェクトファイルパーサーを使用します。--macho と併用すると、コマンドやその他のオプションの動作が異なる場合があります。

--no-leading-headers

先頭のヘッダーを出力しません。

--no-symbolic-operands

逆アセンブル時にシンボリックオペランドを出力しません。

--non-verbose

Mach-O オブジェクトの情報を冗長でない数値形式で表示します。

--objc-meta-data

Objective-C ランタイムメタデータを表示します。

--private-header

最初のフォーマット固有のファイルヘッダーのみを表示します。

--rebase

リベース情報を表示します。

--rpaths

バイナリのランタイム検索パスを表示します。

--universal-headers

ユニバーサルヘッダーを表示します。

--weak-bind

弱いバインディング情報を表示します。

XCOFF 専用オプションとコマンド

--symbol-description

逆アセンブル出力にシンボル記述を追加します。

--traceback-table

逆アセンブル出力において、トレースバックテーブルをデコードします。 --disassemble を暗黙的に指定します。

バグ

バグの報告は、<https://github.com/llvm/llvm-project/labels/tools:llvm-objdump/> をご覧ください。

関連情報

llvm-nm(1)llvm-otool(1)llvm-readelf(1)llvm-readobj(1)