[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / docs / CommandGuide / llvm-nm.rst
blobe2d96c8220df0a011c88951b427dfc02db977c4c
1 llvm-nm - list LLVM bitcode and object file's symbol table
2 ==========================================================
4 .. program:: llvm-nm
6 SYNOPSIS
7 --------
9 :program:`llvm-nm` [*options*] [*filenames...*]
11 DESCRIPTION
12 -----------
14 The :program:`llvm-nm` utility lists the names of symbols from LLVM bitcode
15 files, object files, and archives. Each symbol is listed along with some simple
16 information about its provenance. If no filename is specified, *a.out* is used
17 as the input. If *-* is used as a filename, :program:`llvm-nm` will read a file
18 from its standard input stream.
20 :program:`llvm-nm`'s default output format is the traditional BSD :program:`nm`
21 output format. Each such output record consists of an (optional) 8-digit
22 hexadecimal address, followed by a type code character, followed by a name, for
23 each symbol. One record is printed per line; fields are separated by spaces.
24 When the address is omitted, it is replaced by 8 spaces.
26 The supported type code characters are as follows. Where both lower and
27 upper-case characters are listed for the same meaning, a lower-case character
28 represents a local symbol, whilst an upper-case character represents a global
29 (external) symbol:
31 a, A
33  Absolute symbol.
35 b, B
37  Uninitialized data (bss) object.
41  Common symbol. Multiple definitions link together into one definition.
43 d, D
45  Writable data object.
47 i, I
49  COFF: .idata symbol or symbol in a section with IMAGE_SCN_LNK_INFO set.
53  ELF: local symbol from non-alloc section.
55  COFF: debug symbol.
59  ELF: debug section symbol, or global symbol from non-alloc section.
61 s, S
63  COFF: section symbol.
65  Mach-O: absolute symbol or symbol from a section other than __TEXT_EXEC __text,
66  __TEXT __text, __DATA __data, or __DATA __bss.
68 r, R
70  Read-only data object.
72 t, T
74  Code (text) object.
78  ELF: GNU unique symbol.
82  Named object is undefined in this file.
86  ELF: Undefined weak object. It is not a link failure if the object is not
87  defined.
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.
97  Undefined weak symbol other than an ELF object symbol. It is not a link failure
98  if the symbol is not defined.
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.
108  Mach-O: N_STAB symbol.
112  Something unrecognizable.
114 Because LLVM bitcode files typically contain objects that are not considered to
115 have addresses until they are linked into an executable image or dynamically
116 compiled "just-in-time", :program:`llvm-nm` does not print an address for any
117 symbol in an LLVM bitcode file, even symbols which are defined in the bitcode
118 file.
120 OPTIONS
121 -------
123 .. program:: llvm-nm
125 .. option:: -B
127  Use BSD output format. Alias for ``--format=bsd``.
129 .. option:: --debug-syms, -a
131  Show all symbols, even those usually suppressed.
133 .. option:: --defined-only
135  Print only symbols defined in this file.
137 .. option:: --demangle, -C
139  Demangle symbol names.
141 .. option:: --dynamic, -D
143  Display dynamic symbols instead of normal symbols.
145 .. option:: --extern-only, -g
147  Print only symbols whose definitions are external; that is, accessible from
148  other files.
150 .. option:: --format=<format>, -f
152  Select an output format; *format* may be *sysv*, *posix*, *darwin*, *bsd* or
153  *just-symbols*.
154  The default is *bsd*.
156 .. option:: --help, -h
158  Print a summary of command-line options and their meanings.
160 .. option:: -j
162  Print just the symbol names. Alias for `--format=just-symbols``.
164 .. option:: -m
166  Use Darwin format. Alias for ``--format=darwin``.
168 .. option:: --no-demangle
170  Don't demangle symbol names. This is the default.
172 .. option:: --no-llvm-bc
174  Disable the LLVM bitcode reader.
176 .. option:: --no-sort, -p
178  Show symbols in the order encountered.
180 .. option:: --no-weak
182  Don't print weak symbols.
184 .. option:: --numeric-sort, -n, -v
186  Sort symbols by address.
188 .. option:: --portability, -P
190  Use POSIX.2 output format.  Alias for ``--format=posix``.
192 .. option:: --print-armap
194  Print the archive symbol table, in addition to the symbols.
196 .. option:: --print-file-name, -A, -o
198  Precede each symbol with the file it came from.
200 .. option:: --print-size, -S
202  Show symbol size as well as address (not applicable for Mach-O).
204 .. option:: --quiet
206  Suppress 'no symbols' diagnostic.
208 .. option:: --radix=<RADIX>, -t
210  Specify the radix of the symbol address(es). Values accepted are *d* (decimal),
211  *x* (hexadecimal) and *o* (octal).
213 .. option:: --reverse-sort, -r
215  Sort symbols in reverse order.
217 .. option:: --size-sort
219  Sort symbols by size.
221 .. option:: --special-syms
223  Do not filter special symbols from the output.
225 .. option:: --undefined-only, -u
227  Print only undefined symbols.
229 .. option:: --version, -V
231  Display the version of the :program:`llvm-nm` executable, then exit. Does not
232  stack with other commands.
234 .. option:: @<FILE>
236  Read command-line options from response file `<FILE>`.
238 MACH-O SPECIFIC OPTIONS
239 -----------------------
241 .. option:: --add-dyldinfo
243  Add symbols from the dyldinfo, if they are not already in the symbol table.
244  This is the default.
246 .. option:: --add-inlinedinfo
248  Add symbols from the inlined libraries, TBD file inputs only.
250 .. option:: --arch=<arch1[,arch2,...]>
252  Dump the symbols from the specified architecture(s).
254 .. option:: --dyldinfo-only
256  Dump only symbols from the dyldinfo.
258 .. option:: --no-dyldinfo
260  Do not add any symbols from the dyldinfo.
262 .. option:: -s <segment> <section>
264  Dump only symbols from this segment and section name.
266 .. option:: -x
268  Print symbol entry in hex.
270 BUGS
271 ----
273  * :program:`llvm-nm` does not support the full set of arguments that GNU
274    :program:`nm` does.
276 EXIT STATUS
277 -----------
279 :program:`llvm-nm` exits with an exit code of zero.
281 SEE ALSO
282 --------
284 :manpage:`llvm-ar(1)`, :manpage:`llvm-objdump(1)`, :manpage:`llvm-readelf(1)`,
285 :manpage:`llvm-readobj(1)`