blob: f071e1be1a5c9c9ecb94fda4ae2942e98234701d [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
37 Unitialized 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
93 regular definitons 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.
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
104 and no regular definitons 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)`