nm - print name list of an object file
/usr/bin/nm [-ACDhilnPprRsTuVv] [-efox] [-g | -u]
[-t format] file...
/usr/xpg4/bin/nm [-ACDhilnPprRsTuVv] [-efox] [-g | -u]
[-t format] file...
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 reports that fact, but not consider it an error
condition.
The output of nm can be controlled using the following
options:
-A
Writes the full path name or library name of an object on
each line.
-C
Demangles 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. If -D is not specified, the default behavior is to
display the SHT_SYMTAB symbol information.
-e
This option has been deprecated. For more information,
see NOTES below.
-f
This option has been deprecated. For more information,
see NOTES below.
-g
Writes only external (global) symbol information.
-h
Does not display the output heading data.
-L
Displays the SHT_SUNW_LDYNSYM symbol information.
This symbol table contains local function symbols. SHT_SUNW_LDYNSM
symbol tables are present even in stripped dynamic executables. These symbols
augment the global symbols that are found in SHT_DYNSYM symbol table.
If -L is not specified, the default behavior is to display the
SHT_SYMTAB symbol information.
-i
Display symbols in the existing symbol table order; do
not sort them.
-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.
U
Undefined.
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
output line.
-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
format
option-argument:
d
The offset is written in decimal (default).
o
The offset is written in octal.
x
The offset is written in hexadecimal.
-T
This option has been deprecated. For more information,
see NOTES below.
-u
Prints undefined symbols only.
-u
Prints long listing for each undefined symbol. See
OUTPUT below.
-v
Sorts external symbols by value before they are
printed.
-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 can be used in any order, either singly or in combination,
and can 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 exception.)
The following operand is supported:
file
A path name of an object file, executable file or
object-file library.
This section describes the nm utility's output options.
For each symbol, the following information is printed:
Index
The index of the symbol. (The index appears in
brackets.)
Value
The value of the symbol is one of the following:
- o
- A section offset for defined symbols in a relocatable file.
- o
- Alignment constraints for symbols whose section index is
SHN_COMMON.
- o
- A virtual address in executable and dynamic library files.
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 variable.
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 storage.
Bind
The symbol's binding attributes.
LOCAL symbols
Have a scope limited to the object file containing their
definition.
GLOBAL symbols
Are visible to all object files being combined.
WEAK symbols
Are essentially global symbols with a lower precedence
than GLOBAL.
Other
A symbol's visibility.
The lower bits of the st_other member of the
Elf32_Sym structure, and the Elf64_Sym structure, defined in
<sys/elf.h>, are currently used and can be one of:
#define STV_DEFAULT 0
#define STV_INTERNAL 1
#define STV_HIDDEN 2
#define STV_PROTECTED 3
#define STV_EXPORTED 4
#define STV_SINGLETON 5
#define STV_ELIMINATE 6
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 does 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
depending 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 writes a line identifying the object containing
the following symbols before the lines containing those symbols, in the
form:
- o
- If the corresponding file operand does not name a library:
"%s:\n", file
- 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
following symbols:
"%s[%s]:\n", file, object file
If -P is specified, but -t is not, the format is as
if -t x had been specified.
See environ(7) 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.
ATTRIBUTE
TYPE |
ATTRIBUTE VALUE |
Interface Stability |
Committed |
The following options are obsolete because of changes to the
object file format and might 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 can be examined using
dump(1).
-f
Produces full output. Redundant symbols (such as
.text, .data, and so forth), which existed previously, do not
exist and producing full output is 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.