EN JA
NM(1)
NM(1) GNU Development Tools NM(1)

名称

nm -オブジェクトファイルからシンボルをリストする

書式

nm [ -a| --debug-syms] [ -g| --extern-only]
[ -B] [ -C| --demangle[= style]] [ -D| --dynamic]
[ -S| --print-size] [ -s| --print-armap]
[ -A| -o| --print-file-name][ --special-syms]
[ -n| -v| --numeric-sort] [ -p| --no-sort]
[ -r| --reverse-sort] [ --size-sort] [ -u| --undefined-only]
[ -t radix| --radix= radix] [ -P| --portability]
[ --target= bfdname] [ -f format| --format= format]
[ --defined-only] [ -l| --line-numbers] [ --no-demangle]
[ -V| --version] [ -X 32_64] [ --help] [ objfile...]

解説

GNU nm は、オブジェクトファイル objfile... からシンボルをリストします。オブジェクトファイルが引数としてリストされていないなら、 nm は、ファイル a.out を仮定します。

各シンボルごとに、 nm は、次を表示します:

オプション (下記参照) によって選択された基数または、デフォルトの 16 進数のシンボル値。
シンボルタイプ。少なくとも次のタイプが使用されます。なお、他のタイプは、オブジェクトファイルの形式に依存しています。小文字であるなら、シンボルは、ローカルです。大文字であるなら、シンボルは、グローバル (外部) です。
"A"
シンボルの値は、絶対値であり、さらにリンクすることによって変更されません。
"B"
シンボルは、(BSS として知られている) 初期化されていないデータセクションにあります。
"C"
シンボルは、コモン (common) です。コモンシンボルは、初期化されていないデータです。リンクするとき、複数のコモンシンボルが、同じ名前で現れます。シンボルがどこかで定義されているなら、コモンシンボルは、未定義の参照として扱われます。
"D"
シンボルは、初期化されているデータセクションにあります。
"G"
シンボルは、小さなオブジェクトのための初期化されたデータセクションにあります。いくつかのオブジェクトファイル形式は、大きなグローバル配列とは対照的にグローバルな int 変数のような、小さなデータオブジェクトへのアクセスをより効率的にできます。
"I"
シンボルは、別のシンボルへの間接的な参照です。これは、めったに使用されない a.out オブジェクトファイル形式への GNU の拡張です。
"N"
シンボルは、デバッグシンボルです。
"R"
シンボルは、読み込み専用データセクションにあります。
"S"
シンボルは、小さなオブジェクトのための初期化されていないデータセクションにあります。
"T"
シンボルは、テキスト (コード) セクションにあります。
"U"
シンボルは、未定義です。
"V"
シンボルは、ウィーク (weak, 弱い) オブジェクトです。ウィークに定義されたシンボルが正常に定義されたシンボルにリンクされるとき、正常に定義されたシンボルは、エラーなしで使用されます。ウィークな未定義のシンボルがリンクされ、シンボルが定義されないとき、ウィークシンボルの値は、エラーなしで 0 になります。
"W"
シンボルは、ウィークなオブジェクトシンボルとして明確にタグ付けされていないウィークシンボルです。ウィークに定義されたシンボルが正常に定義されたシンボルにリンクされるとき、正常に定義されたシンボルは、エラーなしで使用されます。ウィークな未定義のシンボルリンクされ、シンボルが定義されないとき、シンボルの値は、エラーなしでシステム特有の方法で決定されます。いくつかのシステムにおいて、大文字は、デフォルト値が指定されたことを示します。
"-"
シンボルは、a.out オブジェクトファイルのスタブ (stab) シンボルです。訳注: スタブは、プログラム作成中に使用するエントリだけの仮の関数。この場合、次に印刷される値は、スタブの他のフィールド、スタブの desc フィールド、とスタブのタイプです。スタブシンボルは、デバッグ情報を保持するために使用されます。
"?"
シンボルタイプが、未知であるか、または特有のオブジェクトファイル形式です。
シンボル名。

オプション

代わりの方法としてここに示された、長い形式と短い形式のオプションは、同等です。
-A
-o
--print-file-name
すべてのシンボルの前に、入力ファイルを識別するために一度だけ付けるのではなく、それが見つかった入力ファイル (またはアーカイブのメンバ) の名前を各シンボルの前に付けます。
-a
--debug-syms
デバッガ専用のシンボルも含めてすべてのシンボルを表示します。通常、これらはリストされません。
-B
(MIPS nm との互換性のために) --format=bsd と同様です。
-C
--demangle[= style ]
低レベルのシンボル名をユーザレベルの名前にデコード ( demangle) します。それに加えて、システムによって前に付けられた先頭の下線を削除します、これで、C++ の関数名が読みやすくなります。さまざまなコンパイラには、さまざまな mangling (台無しにする) スタイルがあります。利用者のコンパイラのための適切な demangling (台無しにされたものを元にもどす) スタイルを選択するためにオプションの demangling スタイル引数を使用することができます。
--no-demangle
低レベルのシンボル名を demangle (台無しにされたものを元にもど) しません。これは、デフォルトです。
-D
--dynamic
通常のシンボルでなくダイナミックシンボルを表示します。特定のタイプの共有ライブラリのような、ダイナミックオブジェクトのためだけに、これは、意味があります。
-f format
--format= format
出力形式として "bsd", "sysv"または "posix"のいずれかの format を使用します。デフォルトは、"bsd"です。 format の最初の文字だけが重要です。それは大文字、または、小文字のいずれでも指定できます。
-g
--extern-only
外部シンボルのみを表示します。
-l
--line-numbers
シンボルごとに、ファイル名と行番号を見つけようとするためにデバッグ情報を使用します。定義されたシンボルについて、シンボルのアドレスの行番号を検索します。未定義のシンボルについて、シンボルを参照する再配置 (リロケーション) エントリの行番号を検索します。行番号情報を見つけることができるなら、別のシンボル情報の後にそれを印刷 (表示) します。
-n
-v
--numeric-sort
シンボルの名前をアルファベット順でなく、アドレスの数値でシンボルをソートします。
-p
--no-sort
どんな順序でもシンボルをわざわざソートしません。シンボルは、見つかった順に印刷 (表示) します。
-P
--portability
デフォルトの形式の代わりに POSIX.2 標準の出力形式を使用します。 -f posix と同等です。
-S
--print-size
"bsd"出力形式の定義されたシンボルの値ではなく、サイズを印刷します。
-s
--print-armap
アーカイブのメンバからシンボルをリストするときに、次のインデックスを含めます: モジュールがどの名前の定義を含むかの ( ar または ranlib によってアーカイブに格納された) マッピング。
-r
--reverse-sort
(数値であろうとアルファベットであろうと) のソートの順序を逆にします。最後を最初にするようにします。
--size-sort
サイズでシンボルをソートします。サイズは、シンボルの値と次のより高い値があるシンボルの値の差として計算されます。 "bsd"出力形式が使用されているなら、値ではなく、シンボルのサイズが印刷されます、サイズと値の両方を印刷するためには、 -S を使用しなければなりません。
--special-syms
ターゲット特有の特別な意味があるシンボルを表示します。これらのシンボルは、いつもは、何らかの特別な処理のためのターゲットによって使用され、通常のシンボルリストに含まれているとき、普通に役立ちません。例えば、ARM ターゲットのために、このオプションは、 ARM コードと、THUMB コードとデータの間の遷移をマークするために使用されるマッピングシンボルをスキップするでしょう。
-t radix
--radix= radix
シンボル値を印刷するための基数として radix を使用します。 10 進数のために d、8 進数のために o、または 16 進数のために x でなければなりません。
--target= bfdname
システムのデフォルト形式以外のオブジェクトコード形式を指定します。
-u
--undefined-only
(各オブジェクトファイルの外部 (external) の) 未定義のシンボルのみを表示します。
--defined-only
各オブジェクトファイルごとに定義されたシンボルのみを表示します。
-V
--version
nm のバージョン番号を表示して、終了します。
-X
このオプションは、 nm の AIX バージョンとの互換性のために無視されます。それは、文字列 32_64 でなければならない、1 つのパラメータを取ります。 AIX nm のデフォルトモードは、GNU nm でサポートされていない、 -X 32 に対応しています。
--help
nm のオプションの概要を表示して、終了します。
@ file
file からコマンドラインのオプションを読み込みます。読み込まれたオプションは、オリジナルの @ file オプションの場所に代わって挿入されます。 file が存在しないか、または読み込むことができないなら、オプションは、文字通りに扱われ、取り除かれません。
 
file 中のオプションは、空白類によって分離されます。空白類の文字は、シングルクォートまたはダブルクォートのいずれかで全体のオプションを囲むことによって、オプションに含めることができます。 (バックスラッシュを含む) 任意の文字は、バックスラッシュを文字を前に置くことによって、含めることができます。 file は、それ自体に、追加の @ file オプションを含むことができます。そのようなオプションは、再帰的に処理されます。

関連項目

ar(1), objdump(1), ranlib(1) と binutils の Info エントリ。

COPYRIGHT

Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 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".

2010-10-30 binutils-2.17.50