nm コマンド

目的

オブジェクト・ファイル、実行可能ファイル、およびオブジェクト・ファイル・ライブラリーのシンボルの情報を表示します。

構文

NM [ -A ] [ -C ] [ -X (X) {32|64|32_64|D64| 任意}] [ 「-f」 ] [ -h ] [ - ] [ P- ] [ - ] [ -T (T) ] [ -v (V) ] [ -B | -P ] [ -e (E) | - | -ウー ] [ -d 年 | - | -x (X) | T フォーマット ] ファイル ...

説明

nm コマンドは、 オブジェクト・ファイル、実行可能ファイル、またはオブジェクト・ファイル・ライブラリーを示す指定された File 内のシンボルの情報を表示します。 ファイルにシンボル情報がない場合、nm コマンドはその事実を報告しますが、 それをエラー条件としては解釈しません。 デフォルトでは、nm コマンドは数値を 10 進表記で報告します。

nm コマンドは、 次のシンボル情報を標準出力に書き出します。

  • ライブラリー または オブジェクト名

    nm コマンドは、 -A オプションが指定されている場合のみ、 ファイルに関連するライブラリーまたはオブジェクト名のいずれかを報告します。

  • シンボル名
  • シンボル・タイプ

    nm コマンドは、次のいずれかの文字でファイルのシンボル・タイプを表します (弱いシンボルはグローバル・シンボルと同じ文字で表されます)。

    項目 説明
    A グローバル絶対シンボル
    a ローカル絶対シンボル
    B グローバル bss シンボル
    b ローカル bss シンボル
    D グローバル・データ・シンボル
    d ローカル・データ・シンボル
    F ソース・ファイル名シンボル
    L グローバル・スレッド・ローカル・シンボル (TLS)
    l 静的スレッド・ローカル・シンボル (TLS)
    T グローバル・テキスト・シンボル
    t ローカル・テキスト・シンボル
    U 未定義シンボル
  • サイズ

    nm コマンドは、利用可能な場合は、 シンボルに関連するサイズを報告します。

フラグ

項目 説明
-A 各行のオブジェクトの絶対パス名またはライブラリー名のいずれかを表示します。
-B 「Berkeley Software Distribution (BSD)」フォーマットで出力を表示します。
value   type   name
-C C++ 名のデマングリングを抑制します。 デフォルトでは、すべての C++ シンボル名がデマングルされます。
注: C++ オブジェクト・ファイルからのシンボルの名前は、使用される前にデマングルされます。
-d シンボルの値とサイズを 10 進数として表示します。 これはデフォルトです。
-e 静的シンボルと外部 (グローバル) シンボルのみを表示します。
-f 通常は抑制される冗長な .text、.data、および .bss シンボルを含む、全出力を表示します。
-g 外部 (グローバル) シンボルのみを表示します。
-h 出力ヘッダー・データの表示を抑制します。
-l WEAK シンボルのキー文字に * を付加することにより、WEAK シンボルと GLOBAL シンボルを区別します。 -P オプションと一緒に使用した場合、 弱いシンボルのシンボル・タイプは次のように表されます。
V
弱いデータ・シンボル
W
弱いテキスト・シンボル
w
弱い未定義シンボル
Z
弱い bss シンボル
-o シンボルの値とサイズを 10 進数ではなく 8 進数として表示します。
-P 標準ポータブル出力フォーマットで情報を表示します。
library/object name   name   type   value   size

このフォーマットでは、 -t-d、または -o フラグを使って別のフォーマットを指定しない限り、 数値が 16 進表記で表示されます。

-P フラグを付けると、-A フラグが指定されている場合のみ、library/object name フィールドが表示されます。 また、-P フラグを付けると、サイズを適用できるシンボルに対してのみ、 size フィールドが表示されます。

-p ソートしません。 出力データは、記号テーブルの順序で表示されます。
-r 逆順にソートします。
-t フォーマット 指定されたフォーマットで数値を表示します。 Format には、次のいずれかの表記を指定します。
d
10 進表記。 これは、nm コマンドのデフォルトのフォーマットです。
O
8 進表記。
x
16 進表記。
-T 本来は桁からあふれるすべての名前を切り捨て、 名前の最終文字をアスタリスクにします。 デフォルトでは、nm はリストされるシンボル名全体を表示し、 その隣に桁幅よりも長い名前を表示するので、名前のあとのすべての桁の位置がずれます。
-u 未定義シンボルのみを表示します。
-v アルファベットではなく値で出力をソートします。
-x シンボルの値とサイズを 10 進数ではなく 16 進数として表示します。
-X モード nm が調べるオブジェクト・ファイルのタイプを指定します。 mode は次のいずれかでなければなりません。
32
32 ビットのオブジェクト・ファイルのみを処理します。
64
64 ビットのオブジェクト・ファイルのみを処理します。
32_64
32 ビットと 64 ビットのオブジェクト・ファイルを処理します。
d64
不連続 64 ビット XCOFF ファイル (マジック番号 == U803XTOCMAGIC) を検査します。
任意
サポートされるオブジェクト・ファイルをすべて処理します。

デフォルトでは、32 ビットのオブジェクト・ファイルを処理します (64 ビットのオブジェクトは無視します)。 mode は、OBJECT_MODE 環境変数を使用して設定することもできます。 例えば、OBJECT_MODE=64 を指定すると、 nm は 64 ビットのオブジェクトを処理し、32 ビットのオブジェクトを無視します。 -X フラグは OBJECT_MODE 変数をオーバーライドします。

注: nm コマンドは - (二重ハイフン) フラグをサポートします。 このフラグは、ファイル名が誤ってオプションとして解釈される可能性がある場合に、 File オペランドを区別するために使用します。 例えば、ハイフンで始まるファイル名を指定する際は、 フラグを使用します。

終了状況

このコマンドは、以下の終了値を戻します。

項目 説明
0 正常終了。
>0 エラーが発生しました。

  1. オブジェクト・ファイルの静的シンボルと外部シンボルをリストします。a.out次のように入力します。
    nm -e a.out
  2. シンボルのサイズと値を 16 進数で表示し、シンボルを値でソートするには、次のように入力します。
    nm -xv a.out
  3. libc.a 内の 64 ビットのすべてのオブジェクトのシンボルを表示し、 32 ビットのオブジェクトをすべて無視するには、次のように入力します。
    nm -X64 /usr/lib/libc.a

ファイル

項目 説明
/usr/ccs/bin/nm nm コマンドを含みます。