nm(1) User Commands nm(1)
nm - print name list of an object file
/usr/ccs/bin/nm [-ACDhlnPprRsTuVv] [-efox] [-g | -u] [-t format]
/usr/xpg4/bin/nm [-ACDhlnPprRsTuVv] [-efox] [-g | -u] [-t format]
The nm utility displays the symbol table of each ELF object file that
is specified by file.
If no symbolic information is available for a valid input file, the nm
utility will report that fact, but not consider it an error condition.
The output of nm may be controlled using the following options:
-A Writes the full path name or library name of an object
on each line.
-C Demangles C++ symbol names before printing them out.
-D Displays the SHT_DYNSYM symbol information. This is the
symbol table used by ld.so.1 and is present even in
stripped dynamic executables. By default, the
SHT_SYMTAB symbol table is displayed.
-e See NOTES below.
-f See NOTES below.
-g Writes only external (global) symbol information.
-h Does not display the output heading data.
-l Distinguishes between WEAK and GLOBAL symbols by
appending a * to the key letter for WEAK symbols.
-n Sorts external symbols by name before they are printed.
-o Prints the value and size of a symbol in octal instead
of decimal (equivalent to -t o).
-p Produces easy to parse, terse output. Each symbol name
is preceded by its value (blanks if undefined) and one
of the letters:
A Absolute symbol.
B bss (uninitialized data space) symbol.
C COMMON symbol.
D Data object symbol.
F File symbol.
N Symbol has no type.
L Thread-Local storage symbol.
S Section symbol.
T Text symbol.
If the symbol's binding attribute is:
LOCAL The key letter is lower case.
WEAK The key letter is upper case. If the -l
modifier is specified, the upper case
key letter is followed by a *
GLOBAL The key letter is upper case.
-P Writes information in a portable output format, as
specified in Standard Output.
-r Prepends the name of the object file or archive to each
-R Prints the archive name (if present), followed by the
object file and symbol name. If the -r option is also
specified, this option is ignored.
-s Prints section name instead of section index.
-t format Writes each numeric value in the specified format. The
format is dependent on the single character used as the
d The offset is written in decimal (default).
o The offset is written in octal.
x The offset is written in hexadecimal.
-T See NOTES below.
-u Prints undefined symbols only.
-u Prints long listing for each undefined symbol. See OUT-
-v Sorts external symbols by value before they are
-V Prints the version of the nm command executing on the
standard error output.
-x Prints the value and size of a symbol in hexadecimal
instead of decimal (equivalent to -t x).
Options may be used in any order, either singly or in combination, and
may appear anywhere in the command line. When conflicting options are
specified (such as -v and -n, or -o and -x) the first is taken and the
second ignored with a warning message to the user. (See -R for excep-
The following operand is supported:
file A path name of an object file, executable file or object-file
This section describes the nm utility's output options.
For each symbol, the following information will be printed:
Index The index of the symbol. (The index appears in brack-
Value The value of the symbol is one of the following:
o A section offset for defined symbols in a relocat-
o Alignment constraints for symbols whose section
index is SHN_COMMON.
o A virtual address in executable and dynamic
Size The size in bytes of the associated object.
Type A symbol is of one of the following types:
NOTYPE No type was specified.
OBJECT A data object such as an array or vari-
FUNC A function or other executable code.
REGI A register symbol (SPARC only).
SECTION A section symbol.
FILE Name of the source file.
COMMON An uninitialized common block.
TLS A variable associated with Thread-Local
Bind The symbol's binding attributes.
LOCAL symbols Have a scope limited to the
object file containing their
GLOBAL symbols Are visible to all object files
WEAK symbols Are essentially global symbols
with a lower precedence than
Other A symbol's visibility.
The lower 3 bits of the st_other member of the
Elf32_Sym structure, defined in <<sys/elf.h>>, are cur-
rently used and can be one of:
#define STV_DEFAULT 0
#define STV_INTERNAL 1
#define STV_HIDDEN 2
#define STV_PROTECTED 3
Shndx Except for three special values, this is the section
header table index in relation to which the symbol is
defined. The following special values exist:
ABS Indicates the symbol's value will not
change through relocation.
COMMON Indicates an unallocated block and the
value provides alignment constraints.
UNDEF Indicates an undefined symbol.
Name The name of the symbol.
Object Name The name of the object or library if -A is specified.
If the -P option is specified, the previous information is displayed
using the following portable format. The three versions differ depend-
ing on whether -t d, -t o, or -t x was specified, respectively:
"%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
where library/object name is formatted as follows:
o If -A is not specified, library/object name is an empty string.
o If -A is specified and the corresponding file operand does not
name a library:
"%s: ", file
o If -A is specified and the corresponding file operand names a
library. In this case, object file names the object file in the
library containing the symbol being described:
"%s[%s]: ", file, object file
If -A is not specified, then if more than one file operand is specified
or if only one file operand is specified and it names a library, nm
will write a line identifying the object containing the following sym-
bols before the lines containing those symbols, in the form:
o If the corresponding file operand does not name a library:
o If the corresponding file operand names a library; in this case,
object file is the name of the file in the library containing the
"%s[%s]:\n", file, object file
If -P is specified, but -t is not, the format is as if -t x had been
See environ(5) for descriptions of the following environment variables
that affect the execution of nm: LANG, LC_ALL, LC_COLLATE, LC_CTYPE,
LC_MESSAGES, and NLSPATH.
The following exit values are returned:
0 Successful completion.
>>0 An error occurred.
See attributes(5) for descriptions of the following attributes:
tab() allbox; cw(2.750000i)| cw(2.750000i) lw(2.750000i)|
lw(2.750000i). ATTRIBUTE TYPEATTRIBUTE VALUE AvailabilitySUNWbtool
tab() allbox; cw(2.750000i)| cw(2.750000i) lw(2.750000i)|
lw(2.750000i). ATTRIBUTE TYPEATTRIBUTE VALUE AvailabilitySUNWxcu4
ar(1), as(1), dump(1), ld(1), ld.so.1(1), ar.h(3HEAD), a.out(4),
attributes(5), environ(5), standards(5)
The following options are obsolete because of changes to the object
file format and will be deleted in a future release.
-e Prints only external and static symbols. The symbol table now
contains only static and external symbols. Automatic symbols
no longer appear in the symbol table. They do appear in the
debugging information produced by cc -g, which may be examined
-f Produces full output. Redundant symbols (such as .text, .data,
and so forth), which existed previously, do not exist and pro-
ducing full output will be identical to the default output.
-T By default, nm prints the entire name of the symbols listed.
Since symbol names have been moved to the last column, the
problem of overflow is removed and it is no longer necessary
to truncate the symbol name.
SunOS 5.10 2 Feb 2004 nm(1)