1NM(1)                        GNU Development Tools                       NM(1)
2
3
4

NAME

6       nm - list symbols from object files
7

SYNOPSIS

9       nm [-A|-o|--print-file-name] [-a|--debug-syms]
10          [-B|--format=bsd] [-C|--demangle[=style]]
11          [-D|--dynamic] [-fformat|--format=format]
12          [-g|--extern-only] [-h|--help]
13          [-l|--line-numbers] [-n|-v|--numeric-sort]
14          [-P|--portability] [-p|--no-sort]
15          [-r|--reverse-sort] [-S|--print-size]
16          [-s|--print-armap] [-t radix|--radix=radix]
17          [-u|--undefined-only] [-V|--version]
18          [-X 32_64] [--defined-only] [--no-demangle]
19          [--plugin name] [--size-sort] [--special-syms]
20          [--synthetic] [--target=bfdname]
21          [objfile...]
22

DESCRIPTION

24       GNU nm lists the symbols from object files objfile....  If no object
25       files are listed as arguments, nm assumes the file a.out.
26
27       For each symbol, nm shows:
28
29       ·   The symbol value, in the radix selected by options (see below), or
30           hexadecimal by default.
31
32       ·   The symbol type.  At least the following types are used; others
33           are, as well, depending on the object file format.  If lowercase,
34           the symbol is usually local; if uppercase, the symbol is global
35           (external).  There are however a few lowercase symbols that are
36           shown for special global symbols ("u", "v" and "w").
37
38           "A" The symbol's value is absolute, and will not be changed by
39               further linking.
40
41           "B"
42           "b" The symbol is in the uninitialized data section (known as BSS).
43
44           "C" The symbol is common.  Common symbols are uninitialized data.
45               When linking, multiple common symbols may appear with the same
46               name.  If the symbol is defined anywhere, the common symbols
47               are treated as undefined references.
48
49           "D"
50           "d" The symbol is in the initialized data section.
51
52           "G"
53           "g" The symbol is in an initialized data section for small objects.
54               Some object file formats permit more efficient access to small
55               data objects, such as a global int variable as opposed to a
56               large global array.
57
58           "i" For PE format files this indicates that the symbol is in a
59               section specific to the implementation of DLLs.  For ELF format
60               files this indicates that the symbol is an indirect function.
61               This is a GNU extension to the standard set of ELF symbol
62               types.  It indicates a symbol which if referenced by a
63               relocation does not evaluate to its address, but instead must
64               be invoked at runtime.  The runtime execution will then return
65               the value to be used in the relocation.
66
67           "I" The symbol is an indirect reference to another symbol.
68
69           "N" The symbol is a debugging symbol.
70
71           "p" The symbols is in a stack unwind section.
72
73           "R"
74           "r" The symbol is in a read only data section.
75
76           "S"
77           "s" The symbol is in an uninitialized data section for small
78               objects.
79
80           "T"
81           "t" The symbol is in the text (code) section.
82
83           "U" The symbol is undefined.
84
85           "u" The symbol is a unique global symbol.  This is a GNU extension
86               to the standard set of ELF symbol bindings.  For such a symbol
87               the dynamic linker will make sure that in the entire process
88               there is just one symbol with this name and type in use.
89
90           "V"
91           "v" The symbol is a weak object.  When a weak defined symbol is
92               linked with a normal defined symbol, the normal defined symbol
93               is used with no error.  When a weak undefined symbol is linked
94               and the symbol is not defined, the value of the weak symbol
95               becomes zero with no error.  On some systems, uppercase
96               indicates that a default value has been specified.
97
98           "W"
99           "w" The symbol is a weak symbol that has not been specifically
100               tagged as a weak object symbol.  When a weak defined symbol is
101               linked with a normal defined symbol, the normal defined symbol
102               is used with no error.  When a weak undefined symbol is linked
103               and the symbol is not defined, the value of the symbol is
104               determined in a system-specific manner without error.  On some
105               systems, uppercase indicates that a default value has been
106               specified.
107
108           "-" The symbol is a stabs symbol in an a.out object file.  In this
109               case, the next values printed are the stabs other field, the
110               stabs desc field, and the stab type.  Stabs symbols are used to
111               hold debugging information.
112
113           "?" The symbol type is unknown, or object file format specific.
114
115       ·   The symbol name.
116

OPTIONS

118       The long and short forms of options, shown here as alternatives, are
119       equivalent.
120
121       -A
122       -o
123       --print-file-name
124           Precede each symbol by the name of the input file (or archive
125           member) in which it was found, rather than identifying the input
126           file once only, before all of its symbols.
127
128       -a
129       --debug-syms
130           Display all symbols, even debugger-only symbols; normally these are
131           not listed.
132
133       -B  The same as --format=bsd (for compatibility with the MIPS nm).
134
135       -C
136       --demangle[=style]
137           Decode (demangle) low-level symbol names into user-level names.
138           Besides removing any initial underscore prepended by the system,
139           this makes C++ function names readable. Different compilers have
140           different mangling styles. The optional demangling style argument
141           can be used to choose an appropriate demangling style for your
142           compiler.
143
144       --no-demangle
145           Do not demangle low-level symbol names.  This is the default.
146
147       -D
148       --dynamic
149           Display the dynamic symbols rather than the normal symbols.  This
150           is only meaningful for dynamic objects, such as certain types of
151           shared libraries.
152
153       -f format
154       --format=format
155           Use the output format format, which can be "bsd", "sysv", or
156           "posix".  The default is "bsd".  Only the first character of format
157           is significant; it can be either upper or lower case.
158
159       -g
160       --extern-only
161           Display only external symbols.
162
163       -h
164       --help
165           Show a summary of the options to nm and exit.
166
167       -l
168       --line-numbers
169           For each symbol, use debugging information to try to find a
170           filename and line number.  For a defined symbol, look for the line
171           number of the address of the symbol.  For an undefined symbol, look
172           for the line number of a relocation entry which refers to the
173           symbol.  If line number information can be found, print it after
174           the other symbol information.
175
176       -n
177       -v
178       --numeric-sort
179           Sort symbols numerically by their addresses, rather than
180           alphabetically by their names.
181
182       -p
183       --no-sort
184           Do not bother to sort the symbols in any order; print them in the
185           order encountered.
186
187       -P
188       --portability
189           Use the POSIX.2 standard output format instead of the default
190           format.  Equivalent to -f posix.
191
192       -r
193       --reverse-sort
194           Reverse the order of the sort (whether numeric or alphabetic); let
195           the last come first.
196
197       -S
198       --print-size
199           Print both value and size of defined symbols for the "bsd" output
200           style.  This option has no effect for object formats that do not
201           record symbol sizes, unless --size-sort is also used in which case
202           a calculated size is displayed.
203
204       -s
205       --print-armap
206           When listing symbols from archive members, include the index: a
207           mapping (stored in the archive by ar or ranlib) of which modules
208           contain definitions for which names.
209
210       -t radix
211       --radix=radix
212           Use radix as the radix for printing the symbol values.  It must be
213           d for decimal, o for octal, or x for hexadecimal.
214
215       -u
216       --undefined-only
217           Display only undefined symbols (those external to each object
218           file).
219
220       -V
221       --version
222           Show the version number of nm and exit.
223
224       -X  This option is ignored for compatibility with the AIX version of
225           nm.  It takes one parameter which must be the string 32_64.  The
226           default mode of AIX nm corresponds to -X 32, which is not supported
227           by GNU nm.
228
229       --defined-only
230           Display only defined symbols for each object file.
231
232       --plugin name
233           Load the plugin called name to add support for extra target types.
234           This option is only available if the toolchain has been built with
235           plugin support enabled.
236
237       --size-sort
238           Sort symbols by size.  For ELF objects symbol sizes are read from
239           the ELF, for other object types the symbol sizes are computed as
240           the difference between the value of the symbol and the value of the
241           symbol with the next higher value.  If the "bsd" output format is
242           used the size of the symbol is printed, rather than the value, and
243           -S must be used in order both size and value to be printed.
244
245       --special-syms
246           Display symbols which have a target-specific special meaning.
247           These symbols are usually used by the target for some special
248           processing and are not normally helpful when included in the normal
249           symbol lists.  For example for ARM targets this option would skip
250           the mapping symbols used to mark transitions between ARM code,
251           THUMB code and data.
252
253       --synthetic
254           Include synthetic symbols in the output.  These are special symbols
255           created by the linker for various purposes.  They are not shown by
256           default since they are not part of the binary's original source
257           code.
258
259       --target=bfdname
260           Specify an object code format other than your system's default
261           format.
262
263       @file
264           Read command-line options from file.  The options read are inserted
265           in place of the original @file option.  If file does not exist, or
266           cannot be read, then the option will be treated literally, and not
267           removed.
268
269           Options in file are separated by whitespace.  A whitespace
270           character may be included in an option by surrounding the entire
271           option in either single or double quotes.  Any character (including
272           a backslash) may be included by prefixing the character to be
273           included with a backslash.  The file may itself contain additional
274           @file options; any such options will be processed recursively.
275

SEE ALSO

277       ar(1), objdump(1), ranlib(1), and the Info entries for binutils.
278
280       Copyright (c) 1991-2016 Free Software Foundation, Inc.
281
282       Permission is granted to copy, distribute and/or modify this document
283       under the terms of the GNU Free Documentation License, Version 1.3 or
284       any later version published by the Free Software Foundation; with no
285       Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
286       Texts.  A copy of the license is included in the section entitled "GNU
287       Free Documentation License".
288
289
290
291binutils-2.27                     2016-08-03                             NM(1)
Impressum