2012-06-07 07:34:10 +08:00
|
|
|
llvm-nm - list LLVM bitcode and object file's symbol table
|
|
|
|
==========================================================
|
2012-05-09 00:50:35 +08:00
|
|
|
|
[docs][tools] Add missing "program" tags to rst files
Sphinx allows for definitions of command-line options using
`.. option <name>` and references to those options via `:option:<name>`.
However, it looks like there is no scoping of these options by default,
meaning that links can end up pointing to incorrect documents. See for
example the llvm-mca document, which contains references to -o that,
prior to this patch, pointed to a different document. What's worse is
that these links appear to be non-deterministic in which one is picked
(on my machine, some references end up pointing to opt, whereas on the
live docs, they point to llvm-dwarfdump, for example).
The fix is to add the .. program <name> tag. This essentially namespaces
the options (definitions and references) to the named program, ensuring
that the links are kept correct.
Reviwed by: andreadb
Differential Revision: https://reviews.llvm.org/D63873
llvm-svn: 364538
2019-06-27 21:24:46 +08:00
|
|
|
.. program:: llvm-nm
|
|
|
|
|
2012-05-09 00:50:35 +08:00
|
|
|
SYNOPSIS
|
|
|
|
--------
|
|
|
|
|
2012-06-07 07:34:10 +08:00
|
|
|
:program:`llvm-nm` [*options*] [*filenames...*]
|
2012-05-09 00:50:35 +08:00
|
|
|
|
|
|
|
DESCRIPTION
|
|
|
|
-----------
|
|
|
|
|
2019-07-09 18:40:50 +08:00
|
|
|
The :program:`llvm-nm` utility lists the names of symbols from LLVM bitcode
|
|
|
|
files, object files, and archives. Each symbol is listed along with some simple
|
2019-07-16 23:33:43 +08:00
|
|
|
information about its provenance. If no filename is specified, *a.out* is used
|
|
|
|
as the input. If *-* is used as a filename, :program:`llvm-nm` will read a file
|
|
|
|
from its standard input stream.
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2012-06-07 07:34:10 +08:00
|
|
|
:program:`llvm-nm`'s default output format is the traditional BSD :program:`nm`
|
2019-07-09 18:40:50 +08:00
|
|
|
output format. Each such output record consists of an (optional) 8-digit
|
2012-06-07 07:34:10 +08:00
|
|
|
hexadecimal address, followed by a type code character, followed by a name, for
|
2019-07-09 18:40:50 +08:00
|
|
|
each symbol. One record is printed per line; fields are separated by spaces.
|
2012-06-07 07:34:10 +08:00
|
|
|
When the address is omitted, it is replaced by 8 spaces.
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2019-07-09 18:40:50 +08:00
|
|
|
The supported type code characters are as follows. Where both lower and
|
|
|
|
upper-case characters are listed for the same meaning, a lower-case character
|
|
|
|
represents a local symbol, whilst an upper-case character represents a global
|
|
|
|
(external) symbol:
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2019-06-24 17:53:02 +08:00
|
|
|
a, A
|
|
|
|
|
|
|
|
Absolute symbol.
|
|
|
|
|
|
|
|
b, B
|
|
|
|
|
2019-09-13 22:58:24 +08:00
|
|
|
Uninitialized data (bss) object.
|
2012-05-09 00:50:35 +08:00
|
|
|
|
|
|
|
C
|
|
|
|
|
2019-06-24 17:53:02 +08:00
|
|
|
Common symbol. Multiple definitions link together into one definition.
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2019-06-24 17:53:02 +08:00
|
|
|
d, D
|
|
|
|
|
|
|
|
Writable data object.
|
|
|
|
|
|
|
|
i, I
|
|
|
|
|
|
|
|
COFF: .idata symbol or symbol in a section with IMAGE_SCN_LNK_INFO set.
|
|
|
|
|
|
|
|
n
|
|
|
|
|
|
|
|
ELF: local symbol from non-alloc section.
|
|
|
|
|
|
|
|
COFF: debug symbol.
|
|
|
|
|
|
|
|
N
|
|
|
|
|
|
|
|
ELF: debug section symbol, or global symbol from non-alloc section.
|
|
|
|
|
|
|
|
s, S
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2019-06-24 17:53:02 +08:00
|
|
|
COFF: section symbol.
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2019-06-24 17:53:02 +08:00
|
|
|
Mach-O: absolute symbol or symbol from a section other than __TEXT_EXEC __text,
|
|
|
|
__TEXT __text, __DATA __data, or __DATA __bss.
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2019-06-24 17:53:02 +08:00
|
|
|
r, R
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2019-06-24 17:53:02 +08:00
|
|
|
Read-only data object.
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2019-06-24 17:53:02 +08:00
|
|
|
t, T
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2019-06-24 17:53:02 +08:00
|
|
|
Code (text) object.
|
|
|
|
|
|
|
|
u
|
|
|
|
|
|
|
|
ELF: GNU unique symbol.
|
|
|
|
|
|
|
|
U
|
|
|
|
|
|
|
|
Named object is undefined in this file.
|
|
|
|
|
|
|
|
v
|
|
|
|
|
|
|
|
ELF: Undefined weak object. It is not a link failure if the object is not
|
|
|
|
defined.
|
|
|
|
|
|
|
|
V
|
|
|
|
|
|
|
|
ELF: Defined weak object symbol. This definition will only be used if no
|
|
|
|
regular definitions exist in a link. If multiple weak definitions and no
|
2019-09-13 22:58:24 +08:00
|
|
|
regular definitions exist, one of the weak definitions will be used.
|
2019-06-24 17:53:02 +08:00
|
|
|
|
|
|
|
w
|
|
|
|
|
|
|
|
Undefined weak symbol other than an ELF object symbol. It is not a link failure
|
|
|
|
if the symbol is not defined.
|
|
|
|
|
|
|
|
W
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2019-06-24 17:53:02 +08:00
|
|
|
Defined weak symbol other than an ELF object symbol. This definition will only
|
|
|
|
be used if no regular definitions exist in a link. If multiple weak definitions
|
2019-09-13 22:58:24 +08:00
|
|
|
and no regular definitions exist, one of the weak definitions will be used.
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2019-06-24 17:53:02 +08:00
|
|
|
\-
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2019-06-24 17:53:02 +08:00
|
|
|
Mach-O: N_STAB symbol.
|
2012-05-09 00:50:35 +08:00
|
|
|
|
|
|
|
?
|
|
|
|
|
2019-06-24 17:53:02 +08:00
|
|
|
Something unrecognizable.
|
2012-05-09 00:50:35 +08:00
|
|
|
|
|
|
|
Because LLVM bitcode files typically contain objects that are not considered to
|
|
|
|
have addresses until they are linked into an executable image or dynamically
|
2012-06-07 07:34:10 +08:00
|
|
|
compiled "just-in-time", :program:`llvm-nm` does not print an address for any
|
2013-08-17 07:30:19 +08:00
|
|
|
symbol in an LLVM bitcode file, even symbols which are defined in the bitcode
|
2012-06-07 07:34:10 +08:00
|
|
|
file.
|
2012-05-09 00:50:35 +08:00
|
|
|
|
|
|
|
OPTIONS
|
|
|
|
-------
|
|
|
|
|
2012-06-07 07:34:10 +08:00
|
|
|
.. program:: llvm-nm
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2019-06-24 18:50:49 +08:00
|
|
|
.. option:: -B
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2019-06-24 18:50:49 +08:00
|
|
|
Use BSD output format. Alias for ``--format=bsd``.
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2022-02-15 22:43:31 +08:00
|
|
|
.. option:: -X
|
|
|
|
|
|
|
|
Specify the type of XCOFF object file, ELF object file, or IR object file input
|
|
|
|
from command line or from archive files that llvm-nm should examine. The
|
|
|
|
mode must be one of the following:
|
2022-02-16 21:15:04 +08:00
|
|
|
|
2022-02-15 22:43:31 +08:00
|
|
|
32
|
|
|
|
Process only 32-bit object files.
|
|
|
|
64
|
|
|
|
Process only 64-bit object files.
|
|
|
|
32_64
|
|
|
|
Process both 32-bit and 64-bit object files.
|
|
|
|
any
|
|
|
|
Process all the supported object files.
|
|
|
|
|
2012-06-07 07:34:10 +08:00
|
|
|
.. option:: --debug-syms, -a
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2019-07-09 18:40:50 +08:00
|
|
|
Show all symbols, even those usually suppressed.
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2021-07-08 04:34:33 +08:00
|
|
|
.. option:: --defined-only
|
2019-06-24 18:50:49 +08:00
|
|
|
|
|
|
|
Print only symbols defined in this file.
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2019-06-24 18:50:49 +08:00
|
|
|
.. option:: --demangle, -C
|
|
|
|
|
|
|
|
Demangle symbol names.
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2012-06-07 07:34:10 +08:00
|
|
|
.. option:: --dynamic, -D
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2012-06-07 07:34:10 +08:00
|
|
|
Display dynamic symbols instead of normal symbols.
|
|
|
|
|
|
|
|
.. option:: --extern-only, -g
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2019-06-24 18:50:49 +08:00
|
|
|
Print only symbols whose definitions are external; that is, accessible from
|
|
|
|
other files.
|
2018-07-03 01:24:37 +08:00
|
|
|
|
2019-06-24 18:50:49 +08:00
|
|
|
.. option:: --format=<format>, -f
|
2012-06-07 07:34:10 +08:00
|
|
|
|
2021-03-17 01:07:01 +08:00
|
|
|
Select an output format; *format* may be *sysv*, *posix*, *darwin*, *bsd* or
|
|
|
|
*just-symbols*.
|
2019-06-11 23:58:10 +08:00
|
|
|
The default is *bsd*.
|
2012-06-07 07:34:10 +08:00
|
|
|
|
2019-06-11 22:55:31 +08:00
|
|
|
.. option:: --help, -h
|
2012-06-07 07:34:10 +08:00
|
|
|
|
|
|
|
Print a summary of command-line options and their meanings.
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2021-07-08 04:34:33 +08:00
|
|
|
.. option:: -j
|
2019-06-24 18:50:49 +08:00
|
|
|
|
2021-03-17 01:07:01 +08:00
|
|
|
Print just the symbol names. Alias for `--format=just-symbols``.
|
2019-06-24 18:50:49 +08:00
|
|
|
|
|
|
|
.. option:: -m
|
|
|
|
|
|
|
|
Use Darwin format. Alias for ``--format=darwin``.
|
|
|
|
|
|
|
|
.. option:: --no-demangle
|
|
|
|
|
|
|
|
Don't demangle symbol names. This is the default.
|
|
|
|
|
|
|
|
.. option:: --no-llvm-bc
|
|
|
|
|
|
|
|
Disable the LLVM bitcode reader.
|
|
|
|
|
2012-06-07 07:34:10 +08:00
|
|
|
.. option:: --no-sort, -p
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2019-07-16 00:40:34 +08:00
|
|
|
Show symbols in the order encountered.
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2021-07-08 04:34:33 +08:00
|
|
|
.. option:: --no-weak
|
2019-06-24 18:50:49 +08:00
|
|
|
|
|
|
|
Don't print weak symbols.
|
|
|
|
|
2012-06-07 07:34:10 +08:00
|
|
|
.. option:: --numeric-sort, -n, -v
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2012-06-07 07:34:10 +08:00
|
|
|
Sort symbols by address.
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2019-06-24 18:50:49 +08:00
|
|
|
.. option:: --portability, -P
|
|
|
|
|
|
|
|
Use POSIX.2 output format. Alias for ``--format=posix``.
|
|
|
|
|
2021-07-08 04:34:33 +08:00
|
|
|
.. option:: --print-armap
|
2019-06-24 18:50:49 +08:00
|
|
|
|
|
|
|
Print the archive symbol table, in addition to the symbols.
|
|
|
|
|
2012-06-07 07:34:10 +08:00
|
|
|
.. option:: --print-file-name, -A, -o
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2012-06-07 07:34:10 +08:00
|
|
|
Precede each symbol with the file it came from.
|
|
|
|
|
|
|
|
.. option:: --print-size, -S
|
|
|
|
|
2019-06-12 18:44:41 +08:00
|
|
|
Show symbol size as well as address (not applicable for Mach-O).
|
2012-06-07 07:34:10 +08:00
|
|
|
|
2021-02-10 00:35:25 +08:00
|
|
|
.. option:: --quiet
|
|
|
|
|
|
|
|
Suppress 'no symbols' diagnostic.
|
|
|
|
|
2019-06-24 18:50:49 +08:00
|
|
|
.. option:: --radix=<RADIX>, -t
|
|
|
|
|
|
|
|
Specify the radix of the symbol address(es). Values accepted are *d* (decimal),
|
|
|
|
*x* (hexadecimal) and *o* (octal).
|
|
|
|
|
|
|
|
.. option:: --reverse-sort, -r
|
|
|
|
|
|
|
|
Sort symbols in reverse order.
|
|
|
|
|
2012-06-07 07:34:10 +08:00
|
|
|
.. option:: --size-sort
|
|
|
|
|
|
|
|
Sort symbols by size.
|
|
|
|
|
2019-06-24 18:50:49 +08:00
|
|
|
.. option:: --special-syms
|
|
|
|
|
2020-06-20 10:06:14 +08:00
|
|
|
Do not filter special symbols from the output.
|
2019-06-24 18:50:49 +08:00
|
|
|
|
2012-06-07 07:34:10 +08:00
|
|
|
.. option:: --undefined-only, -u
|
|
|
|
|
2019-06-24 18:50:49 +08:00
|
|
|
Print only undefined symbols.
|
|
|
|
|
2021-05-11 14:19:52 +08:00
|
|
|
.. option:: --version, -V
|
2019-06-24 18:50:49 +08:00
|
|
|
|
2021-05-11 14:19:52 +08:00
|
|
|
Display the version of the :program:`llvm-nm` executable, then exit. Does not
|
|
|
|
stack with other commands.
|
2012-05-09 00:50:35 +08:00
|
|
|
|
2019-06-21 19:49:20 +08:00
|
|
|
.. option:: @<FILE>
|
|
|
|
|
|
|
|
Read command-line options from response file `<FILE>`.
|
|
|
|
|
2019-06-24 18:50:49 +08:00
|
|
|
MACH-O SPECIFIC OPTIONS
|
|
|
|
-----------------------
|
|
|
|
|
|
|
|
.. option:: --add-dyldinfo
|
|
|
|
|
|
|
|
Add symbols from the dyldinfo, if they are not already in the symbol table.
|
|
|
|
This is the default.
|
|
|
|
|
2020-06-12 09:32:45 +08:00
|
|
|
.. option:: --add-inlinedinfo
|
|
|
|
|
|
|
|
Add symbols from the inlined libraries, TBD file inputs only.
|
|
|
|
|
2019-06-24 18:50:49 +08:00
|
|
|
.. option:: --arch=<arch1[,arch2,...]>
|
|
|
|
|
|
|
|
Dump the symbols from the specified architecture(s).
|
|
|
|
|
|
|
|
.. option:: --dyldinfo-only
|
|
|
|
|
|
|
|
Dump only symbols from the dyldinfo.
|
|
|
|
|
|
|
|
.. option:: --no-dyldinfo
|
|
|
|
|
|
|
|
Do not add any symbols from the dyldinfo.
|
|
|
|
|
2021-07-08 04:34:33 +08:00
|
|
|
.. option:: -s <segment> <section>
|
2019-06-24 18:50:49 +08:00
|
|
|
|
|
|
|
Dump only symbols from this segment and section name.
|
|
|
|
|
|
|
|
.. option:: -x
|
|
|
|
|
|
|
|
Print symbol entry in hex.
|
|
|
|
|
2012-05-09 00:50:35 +08:00
|
|
|
BUGS
|
|
|
|
----
|
|
|
|
|
2012-06-07 07:34:10 +08:00
|
|
|
* :program:`llvm-nm` does not support the full set of arguments that GNU
|
|
|
|
:program:`nm` does.
|
2012-05-09 00:50:35 +08:00
|
|
|
|
|
|
|
EXIT STATUS
|
|
|
|
-----------
|
|
|
|
|
2012-06-07 07:34:10 +08:00
|
|
|
:program:`llvm-nm` exits with an exit code of zero.
|
2012-05-09 00:50:35 +08:00
|
|
|
|
|
|
|
SEE ALSO
|
|
|
|
--------
|
|
|
|
|
2019-06-27 23:18:15 +08:00
|
|
|
:manpage:`llvm-ar(1)`, :manpage:`llvm-objdump(1)`, :manpage:`llvm-readelf(1)`,
|
|
|
|
:manpage:`llvm-readobj(1)`
|