blob: 1efa15e2dfa29a1969162b9a07dd8d1b4c1f248a [file] [log] [blame]
Michael J. Spencer838e5ad2012-06-06 23:34:10 +00001llvm-nm - list LLVM bitcode and object file's symbol table
2==========================================================
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +00003
James Hendersona0566842019-06-27 13:24:46 +00004.. program:: llvm-nm
5
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +00006SYNOPSIS
7--------
8
Michael J. Spencer838e5ad2012-06-06 23:34:10 +00009:program:`llvm-nm` [*options*] [*filenames...*]
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000010
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000011DESCRIPTION
12-----------
13
James Henderson65d75112019-07-09 10:40:50 +000014The :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
Alex Brachet2eacf692019-07-16 15:33:43 +000016information 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.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000019
Michael J. Spencer838e5ad2012-06-06 23:34:10 +000020:program:`llvm-nm`'s default output format is the traditional BSD :program:`nm`
James Henderson65d75112019-07-09 10:40:50 +000021output format. Each such output record consists of an (optional) 8-digit
Michael J. Spencer838e5ad2012-06-06 23:34:10 +000022hexadecimal address, followed by a type code character, followed by a name, for
James Henderson65d75112019-07-09 10:40:50 +000023each symbol. One record is printed per line; fields are separated by spaces.
Michael J. Spencer838e5ad2012-06-06 23:34:10 +000024When the address is omitted, it is replaced by 8 spaces.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000025
James Henderson65d75112019-07-09 10:40:50 +000026The 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:
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000030
James Henderson3519d552019-06-24 09:53:02 +000031a, A
32
33 Absolute symbol.
34
35b, B
36
Nico Weberbb692082019-09-13 14:58:24 +000037 Uninitialized data (bss) object.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000038
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000039C
40
James Henderson3519d552019-06-24 09:53:02 +000041 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
Nico Weberbb692082019-09-13 14:58:24 +000093 regular definitions exist, one of the weak definitions will be used.
James Henderson3519d552019-06-24 09:53:02 +000094
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.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +000099
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000100W
101
James Henderson3519d552019-06-24 09:53:02 +0000102 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
Nico Weberbb692082019-09-13 14:58:24 +0000104 and no regular definitions exist, one of the weak definitions will be used.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000105
James Henderson3519d552019-06-24 09:53:02 +0000106\-
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000107
James Henderson3519d552019-06-24 09:53:02 +0000108 Mach-O: N_STAB symbol.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000109
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000110?
111
James Henderson3519d552019-06-24 09:53:02 +0000112 Something unrecognizable.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000113
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000114Because LLVM bitcode files typically contain objects that are not considered to
115have addresses until they are linked into an executable image or dynamically
Michael J. Spencer838e5ad2012-06-06 23:34:10 +0000116compiled "just-in-time", :program:`llvm-nm` does not print an address for any
Daniel Dunbar06b9f9e2013-08-16 23:30:19 +0000117symbol in an LLVM bitcode file, even symbols which are defined in the bitcode
Michael J. Spencer838e5ad2012-06-06 23:34:10 +0000118file.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000119
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000120OPTIONS
121-------
122
Michael J. Spencer838e5ad2012-06-06 23:34:10 +0000123.. program:: llvm-nm
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000124
James Henderson2c5ff942019-06-24 10:50:49 +0000125.. option:: -B
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000126
James Henderson2c5ff942019-06-24 10:50:49 +0000127 Use BSD output format. Alias for ``--format=bsd``.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000128
Michael J. Spencer838e5ad2012-06-06 23:34:10 +0000129.. option:: --debug-syms, -a
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000130
James Henderson65d75112019-07-09 10:40:50 +0000131 Show all symbols, even those usually suppressed.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000132
James Henderson2c5ff942019-06-24 10:50:49 +0000133.. option:: --defined-only, -U
Michael J. Spencer838e5ad2012-06-06 23:34:10 +0000134
James Henderson2c5ff942019-06-24 10:50:49 +0000135 Print only symbols defined in this file.
136
137.. option:: --demangle, -C
138
139 Demangle symbol names.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000140
Michael J. Spencer838e5ad2012-06-06 23:34:10 +0000141.. option:: --dynamic, -D
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000142
Michael J. Spencer838e5ad2012-06-06 23:34:10 +0000143 Display dynamic symbols instead of normal symbols.
144
Michael J. Spencer838e5ad2012-06-06 23:34:10 +0000145.. option:: --extern-only, -g
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000146
James Henderson2c5ff942019-06-24 10:50:49 +0000147 Print only symbols whose definitions are external; that is, accessible from
148 other files.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000149
James Henderson2c5ff942019-06-24 10:50:49 +0000150.. option:: --format=<format>, -f
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000151
James Henderson5058ae02019-06-11 15:58:10 +0000152 Select an output format; *format* may be *sysv*, *posix*, *darwin*, or *bsd*.
153 The default is *bsd*.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000154
James Henderson224410b2019-06-11 14:55:31 +0000155.. option:: --help, -h
Michael J. Spencer838e5ad2012-06-06 23:34:10 +0000156
157 Print a summary of command-line options and their meanings.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000158
James Henderson2c5ff942019-06-24 10:50:49 +0000159.. option:: --help-list
160
161 Print an uncategorized summary of command-line options and their meanings.
162
163.. option:: --just-symbol-name, -j
164
165 Print just the symbol names.
166
167.. option:: -m
168
169 Use Darwin format. Alias for ``--format=darwin``.
170
171.. option:: --no-demangle
172
173 Don't demangle symbol names. This is the default.
174
175.. option:: --no-llvm-bc
176
177 Disable the LLVM bitcode reader.
178
Michael J. Spencer838e5ad2012-06-06 23:34:10 +0000179.. option:: --no-sort, -p
180
James Henderson73e33362019-07-15 16:40:34 +0000181 Show symbols in the order encountered.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000182
James Henderson2c5ff942019-06-24 10:50:49 +0000183.. option:: --no-weak, -W
184
185 Don't print weak symbols.
186
Michael J. Spencer838e5ad2012-06-06 23:34:10 +0000187.. option:: --numeric-sort, -n, -v
188
189 Sort symbols by address.
190
James Henderson2c5ff942019-06-24 10:50:49 +0000191.. option:: --portability, -P
192
193 Use POSIX.2 output format. Alias for ``--format=posix``.
194
195.. option:: --print-armap, -M
196
197 Print the archive symbol table, in addition to the symbols.
198
Michael J. Spencer838e5ad2012-06-06 23:34:10 +0000199.. option:: --print-file-name, -A, -o
200
201 Precede each symbol with the file it came from.
202
Michael J. Spencer838e5ad2012-06-06 23:34:10 +0000203.. option:: --print-size, -S
204
James Henderson2c16bb82019-06-12 10:44:41 +0000205 Show symbol size as well as address (not applicable for Mach-O).
Michael J. Spencer838e5ad2012-06-06 23:34:10 +0000206
James Henderson2c5ff942019-06-24 10:50:49 +0000207.. option:: --radix=<RADIX>, -t
208
209 Specify the radix of the symbol address(es). Values accepted are *d* (decimal),
210 *x* (hexadecimal) and *o* (octal).
211
212.. option:: --reverse-sort, -r
213
214 Sort symbols in reverse order.
215
Michael J. Spencer838e5ad2012-06-06 23:34:10 +0000216.. option:: --size-sort
217
218 Sort symbols by size.
219
James Henderson2c5ff942019-06-24 10:50:49 +0000220.. option:: --special-syms
221
222 Ignored. For GNU compatibility only.
223
Michael J. Spencer838e5ad2012-06-06 23:34:10 +0000224.. option:: --undefined-only, -u
225
James Henderson2c5ff942019-06-24 10:50:49 +0000226 Print only undefined symbols.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000227
James Henderson2c5ff942019-06-24 10:50:49 +0000228.. option:: --version
Hemant Kulkarni5e005a12016-02-10 17:51:39 +0000229
James Henderson2c5ff942019-06-24 10:50:49 +0000230 Display the version of this program. Does not stack with other commands.
231
232.. option:: --without-aliases
233
234 Exclude aliases from the output.
Hemant Kulkarni5e005a12016-02-10 17:51:39 +0000235
James Henderson9485b262019-06-21 11:49:20 +0000236.. option:: @<FILE>
237
238 Read command-line options from response file `<FILE>`.
239
James Henderson2c5ff942019-06-24 10:50:49 +0000240MACH-O SPECIFIC OPTIONS
241-----------------------
242
243.. option:: --add-dyldinfo
244
245 Add symbols from the dyldinfo, if they are not already in the symbol table.
246 This is the default.
247
248.. option:: --arch=<arch1[,arch2,...]>
249
250 Dump the symbols from the specified architecture(s).
251
252.. option:: --dyldinfo-only
253
254 Dump only symbols from the dyldinfo.
255
256.. option:: --no-dyldinfo
257
258 Do not add any symbols from the dyldinfo.
259
260.. option:: -s=<segment section>
261
262 Dump only symbols from this segment and section name.
263
264.. option:: -x
265
266 Print symbol entry in hex.
267
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000268BUGS
269----
270
Michael J. Spencer838e5ad2012-06-06 23:34:10 +0000271 * :program:`llvm-nm` does not support the full set of arguments that GNU
272 :program:`nm` does.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000273
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000274EXIT STATUS
275-----------
276
Michael J. Spencer838e5ad2012-06-06 23:34:10 +0000277:program:`llvm-nm` exits with an exit code of zero.
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000278
Daniel Dunbar8f4a8a62012-05-08 16:50:35 +0000279SEE ALSO
280--------
281
James Henderson92b32a92019-06-27 15:18:15 +0000282:manpage:`llvm-ar(1)`, :manpage:`llvm-objdump(1)`, :manpage:`llvm-readelf(1)`,
283:manpage:`llvm-readobj(1)`