llvm-nm - LLVMビットコードおよびオブジェクトファイルのシンボルテーブル一覧

概要

llvm-nm [オプション] [ファイル名…]

説明

llvm-nm ユーティリティは、LLVMビットコードファイル、オブジェクトファイル、およびアーカイブファイルからシンボルの名前を一覧表示します。各シンボルは、その起源に関する簡単な情報とともに一覧表示されます。ファイル名が指定されていない場合は、a.outが入力として使用されます。-がファイル名として使用されている場合、llvm-nmは標準入力ストリームからファイルを読み取ります。

llvm-nmのデフォルトの出力形式は、従来のBSD nm出力形式です。このような各出力レコードは、(オプションの)8桁の16進アドレス、型コード文字、名前の順に、各シンボルに対して構成されます。1行に1レコードが出力されます。フィールドはスペースで区切られます。アドレスが省略されている場合は、8つのスペースに置き換えられます。

サポートされている型コード文字は次のとおりです。同じ意味で小文字と大文字の両方がリストされている場合、小文字はローカルシンボルを表し、大文字はグローバル(外部)シンボルを表します。

a, A

絶対シンボル。

b, B

初期化されていないデータ(bss)オブジェクト。

C

共通シンボル。複数の定義が1つの定義にリンクされます。

d, D

書き込み可能なデータオブジェクト。

i, I

COFF:.idataシンボルまたはIMAGE_SCN_LNK_INFOが設定されたセクション内のシンボル。

n

ELF:非割り当てセクションからのローカルシンボル。

COFF:デバッグシンボル。

N

ELF:デバッグセクションシンボル、または非割り当てセクションからのグローバルシンボル。

s, S

COFF:セクションシンボル。

Mach-O:絶対シンボル、または__TEXT_EXEC __text、__TEXT __text、__DATA __data、__DATA __bss以外のセクションからのシンボル。

r, R

読み取り専用データオブジェクト。

t, T

コード(テキスト)オブジェクト。

u

ELF:GNU固有シンボル。

U

名前付きオブジェクトはこのファイルで未定義です。

v

ELF:未定義の弱いオブジェクト。オブジェクトが定義されていなくても、リンクエラーではありません。

V

ELF:定義済みの弱いオブジェクトシンボル。この定義は、リンクに通常の定義が存在しない場合にのみ使用されます。複数の弱い定義が存在し、通常の定義が存在しない場合、弱い定義の1つが使用されます。

w

ELFオブジェクトシンボル以外の未定義の弱いシンボル。シンボルが定義されていなくても、リンクエラーではありません。

W

ELFオブジェクトシンボル以外の定義済みの弱いシンボル。この定義は、リンクに通常の定義が存在しない場合にのみ使用されます。複数の弱い定義が存在し、通常の定義が存在しない場合、弱い定義の1つが使用されます。

-

Mach-O:N_STABシンボル。

?

認識できないもの。

LLVMビットコードファイルには、通常、実行可能イメージにリンクされるか、動的に「ジャストインタイム」でコンパイルされるまでアドレスを持たないと見なされるオブジェクトが含まれているため、llvm-nmは、ビットコードファイルで定義されているシンボルであっても、LLVMビットコードファイルのシンボルのアドレスを出力しません。

オプション

-B

BSD出力形式を使用します。--format=bsdのエイリアスです。

-X

llvm-nmが検査する必要があるコマンドラインまたはアーカイブファイルからのXCOFFオブジェクトファイル、ELFオブジェクトファイル、またはIRオブジェクトファイル入力のタイプを指定します。モードは次のいずれかである必要があります。

32

32ビットオブジェクトファイルのみを処理します。

64

64ビットオブジェクトファイルのみを処理します。

32_64

32ビットと64ビットの両方のオブジェクトファイルを処理します。

any

サポートされているすべてのオブジェクトファイルを処理します。

AIX OSでは、デフォルトでは32ビットオブジェクトファイルのみを処理し、64ビットオブジェクトは無視します。これは、OBJECT_MODE環境変数を設定することで変更できます。たとえば、OBJECT_MODE = 64を設定すると、llvm-nmは64ビットオブジェクトを処理し、32ビットオブジェクトを無視します。-XフラグはOBJECT_MODE変数をオーバーライドします。

他のオペレーティングシステムでは、デフォルトですべてのオブジェクトファイルを処理します。OBJECT_MODE環境変数はサポートされていません。

--debug-syms, -a

通常は抑制されるシンボルも含めて、すべてのシンボルを表示します。

--defined-only, -U

このファイルで定義されているシンボルのみを出力します。

--demangle, -C

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

--dynamic, -D

通常のシンボルの代わりに動的シンボルを表示します。

--export-symbols

重複を削除し、可視性(該当する場合)とともにソートされたシンボルを出力します。

--extern-only, -g

定義が外部であるシンボル、つまり他のファイルからアクセスできるシンボルのみを出力します。

--format=<format>, -f

出力形式を選択します。 _format_は_sysv_、_posix_、_darwin_、_bsd_、または_just-symbols_です。デフォルトは_bsd_です。

--help, -h

コマンドラインオプションとその意味の概要を出力します。

-j

シンボル名のみを出力します。`--format=just-symbols`のエイリアスです。

--line-numbers, -l

デバッグ情報を使用して、シンボルが定義されているファイル名と行番号を出力します。未定義のシンボルは、代わりに最初の再配置の場所が出力されます。

-m

Darwin形式を使用します。--format=darwinのエイリアスです。

--no-demangle

シンボル名をデマングルしません。これがデフォルトです。

--no-llvm-bc

LLVMビットコードリーダーを無効にします。

--no-sort, -p

検出された順序でシンボルを表示します。

--no-weak, -W

弱いシンボルを出力しません。

--numeric-sort, -n, -v

アドレスでシンボルをソートします。

--portability, -P

POSIX.2出力形式を使用します。--format=posixのエイリアスです。

--print-armap

シンボルに加えて、アーカイブシンボルテーブルを出力します。

--print-file-name, -A, -o

各シンボルの前に、それが由来するファイル名を付けます。

--print-size, -S

アドレスだけでなくシンボルサイズも表示します(Mach-Oには適用されません)。

--quiet

「シンボルがありません」という診断メッセージを抑制します。

--radix=<RADIX>, -t

シンボルアドレスの基数を指定します。受け入れられる値は *d* (10進数), *x* (16進数), *o* (8進数) です。

--reverse-sort, -r

シンボルを逆順にソートします。

--size-sort

シンボルをサイズ順にソートします。

--special-syms

特殊シンボルを出力から除外しません。

--undefined-only, -u

未定義シンボルのみを出力します。

--version, -V

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

@<FILE>

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

MACH-O 固有のオプション

--add-dyldinfo

シンボルテーブルにまだ存在しない場合、dyldinfo からシンボルを追加します。これはデフォルトです。

--add-inlinedinfo

インライン化されたライブラリからシンボルを追加します。TBD ファイル入力のみ。

--arch=<arch1[,arch2,...]>

指定されたアーキテクチャからシンボルをダンプします。

--dyldinfo-only

dyldinfo からのシンボルのみをダンプします。

--no-dyldinfo

dyldinfo からシンボルを追加しません。

-s <segment> <section>

このセグメントとセクション名からのシンボルのみをダンプします。

-x

シンボルエントリを16進数で出力します。

XCOFF 固有のオプション

--no-rsrc

リソースファイルシンボル (__rsrc) をエクスポートシンボルリストから除外します。

バグ

  • llvm-nm は、GNU nm のすべての引数をサポートしているわけではありません。

終了ステータス

llvm-nm は、終了コード 0 で終了します。

関連項目

llvm-ar(1), llvm-objdump(1), llvm-readelf(1), llvm-readobj(1)