[RISCV] Regenerate autogen test to remove spurious diff
[llvm-project.git] / llvm / docs / CommandGuide / llvm-nm.rst
blob7067bb0a29a195ba5f1f2d166b770a0b25f2b246
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:: -X
131  Specify the type of XCOFF object file, ELF object file, or IR object file input
132  from command line or from archive files that llvm-nm should examine. The
133  mode must be one of the following:
135    32
136          Process only 32-bit object files.
137    64
138          Process only 64-bit object files.
139    32_64
140          Process both 32-bit and 64-bit object files.
141    any
142          Process all the supported object files.
144   On AIX OS, the default is to process 32-bit object files only and to ignore
145   64-bit objects. The can be changed by setting the OBJECT_MODE environment
146   variable. For example, OBJECT_MODE=64 causes :program:`llvm-nm` to process
147   64-bit objects and ignore 32-bit objects. The -X flag overrides the OBJECT_MODE
148   variable.
150   On other operating systems, the default is to process all object files: the
151   OBJECT_MODE environment variable is not supported.
153 .. option:: --debug-syms, -a
155  Show all symbols, even those usually suppressed.
157 .. option:: --defined-only, -U
159  Print only symbols defined in this file.
161 .. option:: --demangle, -C
163  Demangle symbol names.
165 .. option:: --dynamic, -D
167  Display dynamic symbols instead of normal symbols.
169 .. option:: --export-symbols
171  Print sorted symbols with their visibility (if applicable), with duplicates
172  removed.
174 .. option:: --extern-only, -g
176  Print only symbols whose definitions are external; that is, accessible from
177  other files.
179 .. option:: --format=<format>, -f
181  Select an output format; *format* may be *sysv*, *posix*, *darwin*, *bsd* or
182  *just-symbols*.
183  The default is *bsd*.
185 .. option:: --help, -h
187  Print a summary of command-line options and their meanings.
189 .. option:: -j
191  Print just the symbol names. Alias for `--format=just-symbols``.
193 .. option:: --line-numbers, -l
195  Use debugging information to print the filenames and line numbers where
196  symbols are defined. Undefined symbols have the location of their first
197  relocation printed instead.
199 .. option:: -m
201  Use Darwin format. Alias for ``--format=darwin``.
203 .. option:: --no-demangle
205  Don't demangle symbol names. This is the default.
207 .. option:: --no-llvm-bc
209  Disable the LLVM bitcode reader.
211 .. option:: --no-sort, -p
213  Show symbols in the order encountered.
215 .. option:: --no-weak, -W
217  Don't print weak symbols.
219 .. option:: --numeric-sort, -n, -v
221  Sort symbols by address.
223 .. option:: --portability, -P
225  Use POSIX.2 output format.  Alias for ``--format=posix``.
227 .. option:: --print-armap
229  Print the archive symbol table, in addition to the symbols.
231 .. option:: --print-file-name, -A, -o
233  Precede each symbol with the file it came from.
235 .. option:: --print-size, -S
237  Show symbol size as well as address (not applicable for Mach-O).
239 .. option:: --quiet
241  Suppress 'no symbols' diagnostic.
243 .. option:: --radix=<RADIX>, -t
245  Specify the radix of the symbol address(es). Values accepted are *d* (decimal),
246  *x* (hexadecimal) and *o* (octal).
248 .. option:: --reverse-sort, -r
250  Sort symbols in reverse order.
252 .. option:: --size-sort
254  Sort symbols by size.
256 .. option:: --special-syms
258  Do not filter special symbols from the output.
260 .. option:: --undefined-only, -u
262  Print only undefined symbols.
264 .. option:: --version, -V
266  Display the version of the :program:`llvm-nm` executable, then exit. Does not
267  stack with other commands.
269 .. option:: @<FILE>
271  Read command-line options from response file `<FILE>`.
273 MACH-O SPECIFIC OPTIONS
274 -----------------------
276 .. option:: --add-dyldinfo
278  Add symbols from the dyldinfo, if they are not already in the symbol table.
279  This is the default.
281 .. option:: --add-inlinedinfo
283  Add symbols from the inlined libraries, TBD file inputs only.
285 .. option:: --arch=<arch1[,arch2,...]>
287  Dump the symbols from the specified architecture(s).
289 .. option:: --dyldinfo-only
291  Dump only symbols from the dyldinfo.
293 .. option:: --no-dyldinfo
295  Do not add any symbols from the dyldinfo.
297 .. option:: -s <segment> <section>
299  Dump only symbols from this segment and section name.
301 .. option:: -x
303  Print symbol entry in hex.
305 XCOFF SPECIFIC OPTIONS
306 ----------------------
308 .. option:: --no-rsrc
310   Exclude resource file symbols (``__rsrc``) from export symbol list.
312 BUGS
313 ----
315  * :program:`llvm-nm` does not support the full set of arguments that GNU
316    :program:`nm` does.
318 EXIT STATUS
319 -----------
321 :program:`llvm-nm` exits with an exit code of zero.
323 SEE ALSO
324 --------
326 :manpage:`llvm-ar(1)`, :manpage:`llvm-objdump(1)`, :manpage:`llvm-readelf(1)`,
327 :manpage:`llvm-readobj(1)`