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]
   [-n|-v|--numeric-sort] [-p|--no-sort]
   [-r|--reverse-sort] [--size-sort] [-u|--undefined-only]
   [-t radix|--radix=radix] [-P|--portability]
   [--target=bfdname] [-fformat|--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" シンボルはコモンです。 コモンシンボルは未初期化データです。 リンク時には、複数のコモンシンボルが同一の名前として見え得ます。 シンボルがどこかで定義されている場合、 コモンシンボルは未定義の参照として扱われます。

    "D" シンボルは初期化済データセクションにあります。

    "G" シンボルは、小さいオブジェクト用の、初期化済データセクションにあります。 オブジェクトフォーマットによっては、 小さいデータオブジェクトへのより効率の良い アクセスを提供しているものがあります。 小さいオブジェクトとは、 例えば、大きなグローバル配列に対する、グローバル int 変数のことを指します。

    "I" シンボルは、他のシンボルに対する間接参照です。 これは、a.out オブジェクトファイルフォーマットに対する GNU 拡張ですが、 ほとんど使われません。

    "N" シンボルはデバッグシンボルです。

    "R" シンボルは読み取り専用セクションにあります。

    "S" シンボルは、小さいオブジェクト用の、未初期化データセクションにあります。

    "T" シンボルは、テキスト (コード) セクションにあります。

    "U" シンボルは未定義です。

    "V" シンボルは弱いオブジェクトです。 弱く定義されたシンボルが通常定義されたシンボルとリンクされるとき、 エラー無しで通常定義されたシンボルが使用されます。 弱い未定義なシンボルがリンクされそのシンボルが未定義なとき、 弱いシンボルの値はエラー無しに 0 になります。

    "W" シンボルは弱いオブジェクトですが、 弱いオブジェクトであるとは特に指定されていませんでした。 弱く定義されたシンボルが通常定義されたシンボルとリンクされるとき、 エラー無しで通常定義されたシンボルが使用されます。 弱い未定義なシンボルがリンクされそのシンボルが未定義なとき、 弱いシンボルの値はエラー無しに 0 になります。

    "-" シンボルは、a.out オブジェクトファイルの stabs シンボルです。 この場合、次に表示される値は、 stabs の他のフィールド、stabs の desc フィールド、stab タイプです。 stabs シンボルはデバッグ情報を保持するために使用されます。

    "?" シンボルの型は未知であり、オブジェクトファイルフォーマット固有です。

•   シンボル名。

オプション
長短形式の選択肢として、ここにあげてあるオプションは等価です。

-A
-o
--print-file-name
    入力ファイルに含まれるすべてのシンボルの前に一度だけ入力ファイルを 表示するのではなく、各シンボルの前に それが含まれる入力ファイル名 (またはアーカイブメンバ) を表示します。

-a
--debug-syms
    デバッガ専用シンボルであっても、全シンボルを表示します。 通常、デバッグ専用シンボルはリストされません。

-B  --format=bsd と同じです (MIPS の nm との互換性のためにあります)。

-C
--demangle[=style]
    低レベルのシンボル名をユーザレベルの名前にデコード (demangle) します。さらにシステムが付加した先頭のアンダスコアもすべて 取り除くので、これによって C++ の関数名がわかりやすくなります。 コンパイラ毎に、マングル方法が異なります。 オプションのデマングルスタイル引数を使用することで、 コンパイラにあったデマングルスタイルを選択可能です。

--no-demangle
    低レベルのシンボル名をデマングルしません。 これがデフォルトです。

-D
--dynamic
    通常のシンボルではなくダイナミックシンボルを表示します。 これは、ある種の共有ライブラリなどの ダイナミックオブジェクトに対してのみ意味を持ちます。

-f format
--format=format
    出力形式として format を使います。 "bsd", "sysv", "posix" が指定できます。 デフォルトは "bsd" です。 format の 1 文字目だけが重要で、大文字でも小文字でも 構いません。

-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
    シンボルをサイズで並べ替えます。サイズはシンボルの値とその次に高位の 値を持つシンボルの値の間の差分から計算されます。シンボルの値の かわりにサイズが表示されます。

-t radix
--radix=radix
    シンボルの値を表示する際に radix を基数として使います。 指定は、10 進の場合は d、8 進の場合は o、16 進の場合は x の いずれかです。

--target=bfdname
    システムのデフォルトの形式ではないオブジェクトコード形式を指定します。

-u
--undefined-only
    未定義シンボル (各オブジェクトファイルの外部シンボル) のみを表示します。

--defined-only
    各オブジェクトファイルに対し、定義されているシンボルのみを表示します。

-V
--version
    nm のバージョン番号を表示して終了します。

-X  AIX の nm との互換性のために、本オプションは無視されます。 パラメータひとつを取り、それは 32_64 であることが必要です。 AIX nm のデフォルトモードは -X 32 に対応しますが、 これは GNU nm はサポートしていません。

--help
    nm のオプションのサマリを表示して終了します。

関連項目
ar(1), objdump(1), ranlib(1), Info の binutils の項。

COPYRIGHT
Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002 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".

日本語訳
野首 寛高(hnokubi@yyy.or.jp): FreeBSD 用に翻訳