NM(1) User Commands NM(1)
NAME
nm - print name list of an object file
SYNOPSIS
/usr/bin/nm [
-ACDhilnPprRsTuVv] [
-efox] [
-g |
-u]
[
-t format]
file...
/usr/xpg4/bin/nm [
-ACDhilnPprRsTuVv] [
-efox] [
-g |
-u]
[
-t format]
file...
DESCRIPTION
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.
OPTIONS
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.
/usr/bin/nm -u Prints undefined symbols only.
/usr/xpg4/bin/nm -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.)
OPERANDS
The following operand is supported:
file A path name of an object file, executable file or object-file
library.
OUTPUT
This section describes the
nm utility's output options.
Standard Output
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.
ENVIRONMENT VARIABLES
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.
EXIT STATUS
The following exit values are returned:
0 Successful completion.
>0 An error occurred.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
/USR/XPG4/BIN/NM +--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Committed |
+--------------------+-----------------+
SEE ALSO
ar(1),
as(1),
dump(1),
ld(1),
ld.so.1(1),
ar.h(3HEAD),
a.out(5),
attributes(7),
environ(7),
standards(7)NOTES
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.
March 26, 2019 NM(1)