ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
マニュアルページセクション 1: ユーザーコマンド Oracle Solaris 11.1 Information Library (日本語) |
- オブジェクトファイルのネームリストを表示
/usr/bin/nm [-ACDhLlnPpRrsTVv] [-efox] [-g | -u] [-t format] file...
/usr/xpg4/bin/nm [-ACDhLlnPpRrsTVv] [-efox] [-g | -u] [-t format] file...
nm ユーティリティーは、file オペランドで指定された ELF オブジェクトファイルのそれぞれに対して、シンボルテーブルを表示します。
正しいファイルが指定されたにもかかわらず、そのファイルのシンボリック情報が存在しないとき、nm ユーティリティーはそのことを報告します。これはエラーとは見なされません。
次のオプションを使って、nm の出力内容を制御できます。
各行に、オブジェクトの完全パス名とライブラリ名を出力します。
C++ シンボル名を、表示する前に複合化します。
SHT_DYNSYM シンボル情報を表示します。これは ld.so.1 によって使用されるシンボルテーブルで、ストリップされた動的実行可能ファイルにも存在します。-D が指定されていない場合、デフォルトの動作では SHT_SYMTAB シンボル情報が表示されます。
(「注意事項」を参照)
(「注意事項」を参照)
外部 (グローバル) シンボル情報だけを出力します。
見出しのデータを表示しません。
SHT_SUNW_LDYNSYM シンボル情報を表示します。このシンボルテーブルには、ローカル関数シンボルが含まれます。SHT_SUNW_LDYNSM シンボルテーブルは、取り除かれた動的実行可能ファイルにも存在します。これらのシンボルによって、 SHT_DYNSYM シンボルテーブルで見つかるグローバルシンボルが増加します。-L が指定されていない場合、デフォルトの動作では 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 オプションを参照)。
次のオペランドを指定できます。
オブジェクトファイル、実行可能ファイル、またはオブジェクトファイルライブラリのパス名
このセクションでは、nm ユーティリティーの出力オプションについて説明します。
各シンボルに関して次の情報を出力します。
シンボルのインデックスです (インデックスは大括弧 [ ] で囲んで表示されます)。
シンボルの値で、次のいずれかです。
再配置可能ファイル中で定義されている シンボルのセクションオフセット
セクションインデックスが SHN_COMMON であるシンボルの境界合わせ上の制約
実行可能および動的ライブラリファイル中の仮想アドレス
対応するオブジェクトのサイズで、単位はバイトです。
シンボルのタイプで、次のいずれかです。
タイプは指定されていない
配列や変数のようなデータオブジェクト
関数あるいはほかの実行可能コード
レジスタシンボル (SPARC の場合のみ)
セクションシンボル
ソースファイル名
初期化されていない共通ブロック
スレッドローカル記憶領域に関連する変数
シンボルのバインディング属性で、次のいずれかです。
このシンボルの有効範囲は、その定義を含んでいるオブジェクトファイルに限定されている
このシンボルは、結合されている すべてのオブジェクトファイルから見ることができる
このシンボルは、実質的にはグローバルシンボルだが、GLOBAL よりも優先順位は低い
<sys/elf.h> で定義されている、いずれかの STV_ シンボル可視性の値に対応する整数。
シンボル定義のもととなる、セクションヘッダーテーブルインデックスです。ただし例外として、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
ここで、type の形式は -p オプションの説明と同じであり、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 オペランドがライブラリ名を示していないとき
"%s:\n", file
対応する file オペランドがライブラリ名を示しているとき (なお <object file> は、後続のシンボルを含むライブラリ中のファイル名)
"%s[%s]:\n", file, object file
-P が指定され、-t が省略された場合には、出力形式は -t x が指定された場合と同一になります。
nm の実行に影響を与える次の環境変数についての詳細は、environ(5) を参照してください。LANG、LC_ALL、LC_COLLATE、LC_CTYPE、LC_MESSAGES、および NLSPATH。
次の終了ステータスが返されます。
正常終了。
エラーが発生した。
属性についての詳細は、マニュアルページの attributes(5) を参照してください。
|
|
ar(1), as(1), dump(1), ld(1), ld.so.1(1), ar.h(3HEAD), a.out(4), attributes(5), environ(5), standards(5)
次のオプションは、オブジェクトファイルの形式が変わってしまったため現在ではあまり使用されていません。将来のリリースで削除されることになります。
外部シンボルと静的シンボルだけを出力します。現在、シンボルテーブルには、この 2 つしか含まれていません。自動シンボルは、シンボルテーブル内には存在しなくなり、cc -g で生成されるデバッグ情報に出力されます。この情報は、dump(1) を使って検査できます。
完全な出力を生成します。なお .text や .data などの冗長シンボルは、現在はもう存在していません。したがってこの完全出力の生成は、デフォルト出力の生成と同じ意味になります。
デフォルトで、nm はシンボルの名前全体を出力します。シンボル名の出力カラムの位置が最終カラムに移動したので、オーバーフローの心配はなく、シンボル名を途中で切り捨てる必要はなくなりました。