1llvm-nm - list LLVM bitcode and object file's symbol table
2==========================================================
3
4.. program:: llvm-nm
5
6SYNOPSIS
7--------
8
9:program:`llvm-nm` [*options*] [*filenames...*]
10
11DESCRIPTION
12-----------
13
14The :program:`llvm-nm` utility lists the names of symbols from LLVM bitcode
15files, object files, and archives. Each symbol is listed along with some simple
16information about its provenance. If no filename is specified, *a.out* is used
17as the input. If *-* is used as a filename, :program:`llvm-nm` will read a file
18from its standard input stream.
19
20:program:`llvm-nm`'s default output format is the traditional BSD :program:`nm`
21output format. Each such output record consists of an (optional) 8-digit
22hexadecimal address, followed by a type code character, followed by a name, for
23each symbol. One record is printed per line; fields are separated by spaces.
24When the address is omitted, it is replaced by 8 spaces.
25
26The supported type code characters are as follows. Where both lower and
27upper-case characters are listed for the same meaning, a lower-case character
28represents a local symbol, whilst an upper-case character represents a global
29(external) symbol:
30
31a, A
32
33 Absolute symbol.
34
35b, B
36
37 Uninitialized data (bss) object.
38
39C
40
41 Common symbol. Multiple definitions link together into one definition.
42
43d, D
44
45 Writable data object.
46
47i, I
48
49 COFF: .idata symbol or symbol in a section with IMAGE_SCN_LNK_INFO set.
50
51n
52
53 ELF: local symbol from non-alloc section.
54
55 COFF: debug symbol.
56
57N
58
59 ELF: debug section symbol, or global symbol from non-alloc section.
60
61s, S
62
63 COFF: section symbol.
64
65 Mach-O: absolute symbol or symbol from a section other than __TEXT_EXEC __text,
66 __TEXT __text, __DATA __data, or __DATA __bss.
67
68r, R
69
70 Read-only data object.
71
72t, T
73
74 Code (text) object.
75
76u
77
78 ELF: GNU unique symbol.
79
80U
81
82 Named object is undefined in this file.
83
84v
85
86 ELF: Undefined weak object. It is not a link failure if the object is not
87 defined.
88
89V
90
91 ELF: Defined weak object symbol. This definition will only be used if no
92 regular definitions exist in a link. If multiple weak definitions and no
93 regular definitions exist, one of the weak definitions will be used.
94
95w
96
97 Undefined weak symbol other than an ELF object symbol. It is not a link failure
98 if the symbol is not defined.
99
100W
101
102 Defined weak symbol other than an ELF object symbol. This definition will only
103 be used if no regular definitions exist in a link. If multiple weak definitions
104 and no regular definitions exist, one of the weak definitions will be used.
105
106\-
107
108 Mach-O: N_STAB symbol.
109
110?
111
112 Something unrecognizable.
113
114Because LLVM bitcode files typically contain objects that are not considered to
115have addresses until they are linked into an executable image or dynamically
116compiled "just-in-time", :program:`llvm-nm` does not print an address for any
117symbol in an LLVM bitcode file, even symbols which are defined in the bitcode
118file.
119
120OPTIONS
121-------
122
123.. program:: llvm-nm
124
125.. option:: -B
126
127 Use BSD output format. Alias for ``--format=bsd``.
128
129.. option:: --debug-syms, -a
130
131 Show all symbols, even those usually suppressed.
132
133.. option:: --defined-only, -U
134
135 Print only symbols defined in this file.
136
137.. option:: --demangle, -C
138
139 Demangle symbol names.
140
141.. option:: --dynamic, -D
142
143 Display dynamic symbols instead of normal symbols.
144
145.. option:: --extern-only, -g
146
147 Print only symbols whose definitions are external; that is, accessible from
148 other files.
149
150.. option:: --format=<format>, -f
151
152 Select an output format; *format* may be *sysv*, *posix*, *darwin*, *bsd* or
153 *just-symbols*.
154 The default is *bsd*.
155
156.. option:: --help, -h
157
158 Print a summary of command-line options and their meanings.
159
160.. option:: --help-list
161
162 Print an uncategorized summary of command-line options and their meanings.
163
164.. option:: --just-symbol-name, -j
165
166 Print just the symbol names. Alias for `--format=just-symbols``.
167
168.. option:: -m
169
170 Use Darwin format. Alias for ``--format=darwin``.
171
172.. option:: --no-demangle
173
174 Don't demangle symbol names. This is the default.
175
176.. option:: --no-llvm-bc
177
178 Disable the LLVM bitcode reader.
179
180.. option:: --no-sort, -p
181
182 Show symbols in the order encountered.
183
184.. option:: --no-weak, -W
185
186 Don't print weak symbols.
187
188.. option:: --numeric-sort, -n, -v
189
190 Sort symbols by address.
191
192.. option:: --portability, -P
193
194 Use POSIX.2 output format.  Alias for ``--format=posix``.
195
196.. option:: --print-armap, -M
197
198 Print the archive symbol table, in addition to the symbols.
199
200.. option:: --print-file-name, -A, -o
201
202 Precede each symbol with the file it came from.
203
204.. option:: --print-size, -S
205
206 Show symbol size as well as address (not applicable for Mach-O).
207
208.. option:: --quiet
209
210 Suppress 'no symbols' diagnostic.
211
212.. option:: --radix=<RADIX>, -t
213
214 Specify the radix of the symbol address(es). Values accepted are *d* (decimal),
215 *x* (hexadecimal) and *o* (octal).
216
217.. option:: --reverse-sort, -r
218
219 Sort symbols in reverse order.
220
221.. option:: --size-sort
222
223 Sort symbols by size.
224
225.. option:: --special-syms
226
227 Do not filter special symbols from the output.
228
229.. option:: --undefined-only, -u
230
231 Print only undefined symbols.
232
233.. option:: --version
234
235 Display the version of the :program:`llvm-nm` executable. Does not stack with
236 other commands.
237
238.. option:: --without-aliases
239
240 Exclude aliases from the output.
241
242.. option:: @<FILE>
243
244 Read command-line options from response file `<FILE>`.
245
246MACH-O SPECIFIC OPTIONS
247-----------------------
248
249.. option:: --add-dyldinfo
250
251 Add symbols from the dyldinfo, if they are not already in the symbol table.
252 This is the default.
253
254.. option:: --add-inlinedinfo
255
256 Add symbols from the inlined libraries, TBD file inputs only.
257
258.. option:: --arch=<arch1[,arch2,...]>
259
260 Dump the symbols from the specified architecture(s).
261
262.. option:: --dyldinfo-only
263
264 Dump only symbols from the dyldinfo.
265
266.. option:: --no-dyldinfo
267
268 Do not add any symbols from the dyldinfo.
269
270.. option:: -s=<segment section>
271
272 Dump only symbols from this segment and section name.
273
274.. option:: -x
275
276 Print symbol entry in hex.
277
278BUGS
279----
280
281 * :program:`llvm-nm` does not support the full set of arguments that GNU
282   :program:`nm` does.
283
284EXIT STATUS
285-----------
286
287:program:`llvm-nm` exits with an exit code of zero.
288
289SEE ALSO
290--------
291
292:manpage:`llvm-ar(1)`, :manpage:`llvm-objdump(1)`, :manpage:`llvm-readelf(1)`,
293:manpage:`llvm-readobj(1)`
294