Go to main content

マニュアルページ セクション 1: ユーザーコマンド

印刷ビューの終了

更新: 2018年8月8日
 
 

nm(1)

名前

nm - オブジェクトファイルのネームリストを表示

形式

/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 の出力内容を制御できます。

–A

各行に、オブジェクトの完全パス名とライブラリ名を出力します。

–C

C++ シンボル名を、表示する前に複合化します。

–D

SHT_DYNSYM シンボル情報を表示します。これは ld.so.1 によって使用されるシンボルテーブルで、ストリップされた動的実行可能ファイルにも存在します。–D が指定されていない場合、デフォルトの動作では SHT_SYMTAB シンボル情報が表示されます。

–e

(「注意事項」を参照)

–f

(「注意事項」を参照)

–g

外部 (グローバル) シンボル情報だけを出力します。

–h

見出しのデータを表示しません。

–L

SHT_SUNW_LDYNSYM シンボル情報を表示します。このシンボルテーブルには、ローカル関数シンボルが含まれます。SHT_SUNW_LDYNSM シンボルテーブルは、取り除かれた動的実行可能ファイルにも存在します。これらのシンボルによって、 SHT_DYNSYM シンボルテーブルで見つかるグローバルシンボルが増加します。–L が指定されていない場合、デフォルトの動作では SHT_SYMTAB シンボル情報が表示されます。

–l

–p または –P オプションとともに使用すると、WEAKGLOBAL のシンボルを、WEAK シンボルのキー文字に * を付加することにより区別します。

–n

外部シンボルを、名前順にソートして出力します。

–o

シンボルの値とサイズを、10 進数ではなく 8 進数で出力します (–t o と同等)。

–p

簡単に解析できる、簡易形式の出力を生成します。各シンボル名の前には、シンボルの値 (未定義なら空白) と、シンボルの状態を示す文字が表示されます。その文字とは次のいずれかです。

A

絶対シンボル

B

bss (初期化されていないデータスペース) シンボル

C

COMMON シンボル

D

データオブジェクトシンボル

F

ファイルシンボル

N

タイプのないシンボル

L

スレッドローカル記憶領域シンボル

R

レジスタシンボル

S

セクションシンボル

T

テキストシンボル

U

未定義

シンボルのバインディング属性の意味は次のとおりです。

LOCAL

このキー文字は小文字

WEAK

このキー文字は大文字。また –l 修飾子が指定されていると、大文字のキー文字の後に * が付加される

GLOBAL

このキー文字は大文字。

–P

後述の「標準出力」の項で述べるような、移植性のある出力形式で情報を出力します。

–r

各シンボル名の前にオブジェクトファイル名またはアーカイブメンバー名を付加して、object:symbol の形式にします。

–R

アーカイブを処理する場合は、各シンボル名の前にアーカイブ名とアーカイブメンバー名を付加して、archive:member:symbol の形式にします。アーカイブ以外を処理する場合、–R オプションは –r と同等です。–r オプションが同時に指定されている場合には、この R オプションは無視されます。

–s

セクションインデックスの代わりにセクション名を出力します。

–t format

個々の数値を指定された形式で出力します。出力形式は、オプション引数の format により 1 文字で指定します。

d

オフセットを 10 進数で出力 (デフォルト)

o

オフセットを 8 進数で出力

x

オフセットを 16 進数で出力

–T

注意事項」 を参照してください。

–v

外部シンボルを、値の順にソートして出力します。

–V
–-version

バージョン情報を出力します。

–x

シンボルの値とサイズを、10 進数ではなく 16 進数で出力します (–t x と同等)。

–?
–-help

使用法に関するメッセージを出力したあと、すぐに終了します。

/usr/bin/nm

–u

未定義のシンボルだけを出力します。このオプションを指定した場合、–p および –P オプションは無視されます。

/usr/xpg4/bin/nm

–u

未定義の各シンボルについての一覧を出力します。後述の「出力」を参照してください。

オプションは任意の順序で、単独でも組み合わせても使用できます。矛盾する組み合せでオプションを指定すると (たとえば –v–n または、–o–x )、最初のオプションが有効となり、2 番目は無視されて警告メッセージが出力されます例外については、–R、および /usr/bin/nm 形式の –u を参照してください。

オペランド

次のオペランドを指定できます。

file

オブジェクトファイル、実行可能ファイル、またはオブジェクトファイルライブラリのパス名

出力

このセクションでは、nm ユーティリティーの出力オプションについて説明します。

標準出力

各シンボルに関して次の情報を出力します。

Index

シンボルのインデックスです (インデックスは大括弧 [ ] で囲んで表示されます)。

Value

シンボルの値で、次のいずれかです。

  • 再配置可能ファイル中で定義されている シンボルのセクションオフセット

  • セクションインデックスが SHN_COMMON であるシンボルの境界合わせ上の制約

  • 実行可能および動的ライブラリファイル中の仮想アドレス

Size

対応するオブジェクトのサイズで、単位はバイトです。

「タイプ」

シンボルのタイプで、次のいずれかです。

NOTYPE

タイプは指定されていない

OBJECT

配列や変数のようなデータオブジェクト

FUNC

関数あるいはほかの実行可能コード

REGI

レジスタシンボル (SPARC の場合のみ)

SECTION

セクションシンボル

FILE

ソースファイル名

COMMON

初期化されていない共通ブロック

TLS

スレッドローカル記憶領域に関連する変数

Bind

シンボルのバインディング属性で、次のいずれかです。

LOCAL

このシンボルの有効範囲は、その定義を含んでいるオブジェクトファイルに限定されている

GLOBAL

このシンボルは、結合されている すべてのオブジェクトファイルから見ることができる

WEAK

このシンボルは、実質的にはグローバルシンボルだが、GLOBAL よりも優先順位は低い

Other

<sys/elf.h> で定義されている、いずれかの STV_ シンボル可視性の値に対応する整数。

Shndx

シンボル定義のもととなる、セクションヘッダーテーブルインデックスです。ただし例外として、3 つの特殊な値のいずれかが表示されることがあります。次の特殊な値があります。

ABS

シンボルの値は再配置しても変わらないことを表します。

COMMON

未割付ブロックを表し、値は境界合わせ用の制約を表す

UNDEF

未定義のシンボルを表す

Name

シンボル名です。

Object Name

–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(7) を参照してください。LANG、LC_ALL、LC_COLLATE、LC_CTYPE、LC_MESSAGES、および NLSPATH。

終了ステータス

次の終了ステータスが返されます。

0

正常終了。

>0

エラーが発生しました。

属性

属性についての詳細は、マニュアルページの attributes(7) を参照してください。

/usr/bin/nm

属性タイプ
属性値
使用条件
developer/base-developer-utilities

/usr/xpg4/bin/nm

属性タイプ
属性値
使用条件
system/xopen/xcu4
インタフェースの安定性
確実

関連項目

ar(1), as(1), dump(1), ld(1), ld.so.1(1), ar.h(3HEAD), a.out(5), attributes(7), environ(7), standards(7)

次のオプションは、オブジェクトファイルの形式が変わってしまったため廃止されています。将来のリリースで削除される可能性があります。

–e

外部シンボルと静的シンボルだけを出力します。現在、シンボルテーブルには、この 2 つしか含まれていません。自動シンボルは、シンボルテーブル内には存在しなくなり、cc –g で生成されるデバッグ情報に出力されます。この情報は、dump(1) を使って検査できます。

–f

完全な出力を生成します。なお .text.data などの冗長シンボルは、現在はもう存在していません。したがってこの完全出力の生成は、デフォルト出力の生成と同じ意味になります。

–T

デフォルトで、nm はシンボルの名前全体を出力します。シンボル名の出力カラムの位置が最終カラムに移動したので、オーバーフローの心配はなく、シンボル名を途中で切り捨てる必要はなくなりました。