名前 | 形式 | 機能説明 | オプション | オペランド | 出力 | 環境 | 終了ステータス | 属性 | /usr/ccs/bin/nm | /usr/xpg4/bin/nm | 関連項目 | 注意事項
nm ユーティリティは、 file オペランドで指定された ELF オブジェクトファイルの各々に対して、 シンボルテーブルを表示します。
正しいファイルが指定されたにもかかわらず、そのファイルの シンボリック情報が存在しないとき、 nm はそのことを報告します。これはエラーとは見なされません。
以下のオプションを使って、 nm の出力内容を制御できます。
各行に、オブジェクトの完全パス名とライブラリ名を出力します。
C++ シンボル名を、表示する前に複合化します。
SHT_DYNSYM シンボル情報を表示します。 これは ld.so.1 によって使用されるシンボルテーブルで、 ストリップされた動的実行可能ファイルにも 存在します。 デフォルトでは SHT_SYMTAB シンボルテーブルが表示されます。
後述の「注意事項」を参照してください。
後述の「注意事項」を参照してください。
外部 ( グローバル ) シンボル情報だけを出力します。
見出しのデータを表示しません。
WEAK と GLOBAL のシンボルを、 WEAK シンボルのキー文字の後に * を付加することにより区別します。
外部シンボルを、名前順にソートして出力します。
シンボルの値とサイズを、10 進数ではなく 8 進数で出力します (-t o と同じ )。
簡単に解析できる、簡易形式の出力を生成します。 各シンボル名の前には、シンボルの値 ( 未定義なら空白 ) と、シンボルの状態を示す文字が表示されます。 その文字とは以下のいずれかです。
絶対シンボル
bss ( 初期化されていないデータスペース ) シンボル
COMMON シンボル
データオブジェクトシンボル
ファイルシンボル
タイプのないシンボル
スレッドローカル記憶領域シンボル
セクションシンボル
テキストシンボル
未定義
シンボルのバインディング属性の意味は次のとおりです。
このキー文字は小文字
このキー文字は大文字。また -l 修飾子が指定されていると、大文字のキー文字の後に * が付加される
このキー文字は大文字
後述の「標準出力」の項で述べるような、 移植性のある出力形式で情報を出力します。
各出力行に、オブジェクトファイルまたは アーカイブ名を付加します。
オブジェクトファイルとシンボル名の前に、 アーカイブ名 (もし存在していれば) を出力します。 -r オプションが同時に指定されている場合には、この -R オプションは無視されます。
セクションインデックスの代わりに セクション名を出力します。
個々の数値を指定された形式で出力します。 出力形式は、オプション引数の format により 1 文字で指定します。
オフセットを 10 進数で出力 ( デフォルト )
オフセットを 8 進数で出力
オフセットを 16 進数で出力
後述の「注意事項」を参照してください。
未定義の各シンボルについての一覧を出力します。 後述の「出力」を参照してください。
外部シンボルを、値の順にソートして出力します。
実行した nm コマンドのバージョンを標準エラー出力に書き出します。
シンボルの値とサイズを、10 進数ではなく 16 進数で出力します (-t x と同じ )。
オプションはいくつでも指定できます。 複数個指定する場合その順序は問いません。 また、 コマンド行上のどこに記述しても構いません。 矛盾する組み合せでオプションを指定すると (たとえば -v と -n または、 -o と -x )、最初のオプションが有効となり、 2 番目は無視されて警告メッセージが出力されます (例外は -R オプションを参照)。
各シンボルに関して次の情報を出力します。
シンボルのインデックスです (インデックスは大括弧[ ] で囲んで表示されます)。
再配置可能ファイル中で定義されている シンボルのセクションオフセット
セクションインデックスが SHN_COMMON であるシンボルの境界合わせ上の制約
実行可能および動的ライブラリファイル中の仮想アドレス
対応するオブジェクトのサイズで、単位はバイトです。
タイプは指定されていない
配列や変数のようなデータオブジェクト
関数あるいは他の実行可能コード
レジスタシンボル (SPARC の場合のみ)
セクションシンボル
ソースファイル名
初期化されていない共通ブロック
スレッドローカル記憶領域に関連する変数
シンボルのバインディング属性で、以下のいずれかです。
このシンボルの有効範囲は、 その定義を含んでいるオブジェクトファイルに限定されている
このシンボルは、結合されている すべてのオブジェクトファイルから見ることができる
このシンボルは、実質的にはグローバルシンボルだが、 GLOBAL よりも優先順位は低い
将来の拡張用に予約されているフィールドで、 現在は 0 を含んでいます。
シンボル定義のもととなる、 セクションヘッダテーブルインデックスです。 ただし例外として、次の 3 つの値のいずれかが 表示されることがあります。
シンボルの値は再配置しても変わらないことを表す
未割付ブロックを表し、値は境界合わせ用の制約を表す
未定義のシンボルを表す
シンボル名です。
-A オプションが指定されているとき、オブジェクトまたはライブラリの 名前を表します。
-P オプションが指定された場合には、上記の情報が以下に説明する 移植性のある形式で出力されます。この形式には 3 種類あり、 -t d 、 -t o 、 -t x のどれが指定されたかによって使い分けられます。
"%s%s %s %d %d\n", <library/object name>, name, type, value, size "%s%s %s %o %o\n", <library/object name>, name, type, value, size "%s%s %s %x %x\n", <library/object name>, name, type, value, size
このうち <library/object name> は次のような形式です。
-A が指定されていなければ <library/object name> は空の文字列です。
-A が指定され、対応する file オペランドがライブラリ名を示していない場合は、次のようになります。
"%s: ", file
-A が指定され、対応する file オペランドがライブラリ名を示している場合には、次のようになります。 なお <object file> は、当該シンボルを含んでいるライブラリのオブジェクトファイル名です。
"%s[%s]: ", file, <object file>
-A が省略されたとき、 file オペランドが複数指定されているか、あるいは 1 つだけ指定された file がライブラリを表していれば、 nm は、後続のシンボルを含むオブジェクトを識別する行を、 そのシンボルを含む行の前に出力します。出力形式は次のとおりです。
対応する file オペランドがライブラリ名を示しているとき ( なお <object file> は、後続のシンボルを含むライブラリ中のファイル名 )
"%s[%s]:\n", file, <object file>
-P が指定され、 -t が省略された場合には、出力形式は -t x が指定された場合と同一になります。
nm の実行に影響を与える環境変数 LC_COLLATE 、 LC_CTYPE 、 LC_MESSAGES 、 NLSPATH についての詳細は、 environ(5) を参照してください。
次の属性については attributes(5) のマニュアルページを参照してください。
以下のオプションは、オブジェクトファイルの形式が 変わってしまったため現在ではあまり使用されていません。 将来のリリースで削除されることになります。
外部シンボルと静的シンボルだけを出力します。 現在、シンボルテーブルには、この 2 つしか含まれていません。 自動シンボルは、シンボルテーブル内には存在しなくなり、 cc -g で生成されるデバッグ情報に出力されます。 この情報は、 dump(1) を使って検査することができます。
完全な出力を生成します。なお .text や .data などの冗長シンボルは、現在はもう存在していません。 したがってこの完全出力の生成は、 デフォルト出力の生成と同じ意味になります。
デフォルトでは、 nm はシンボルの名前全体を出力します。 シンボル名の出力カラムの位置が最終カラムに移動したので、 オーバフローの心配はなく、 シンボル名を途中で切り捨てる必要はなくなりました。
名前 | 形式 | 機能説明 | オプション | オペランド | 出力 | 環境 | 終了ステータス | 属性 | /usr/ccs/bin/nm | /usr/xpg4/bin/nm | 関連項目 | 注意事項