llvm-objdump - LLVM オブジェクトファイルダンプユーティリティ¶
概要¶
llvm-objdump [コマンド] [オプション] [ファイル名…]
説明¶
llvm-objdump ユーティリティは、コマンドラインで指定されたオブジェクトファイルと最終的なリンク済みイメージの内容を出力します。ファイル名が指定されていない場合、llvm-objdump はa.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>¶
逆アセンブルまたはセクションヘッダーの出力における表示アドレスを、指定されたオフセット分増加させます。
- --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>¶
逆アセンブルと同時に、ソースレベル変数の位置(レジスタまたはメモリ内)を出力します。
format
はunicode
または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-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** です。
- -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¶
遅延バインディング情報を表示します。
- --link-opt-hints¶
リンカ最適化ヒントを表示します。
- -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/> をご覧ください。