llvm-nm - list LLVM bitcode and object file's symbol table
==========================================================

.. program:: llvm-nm

SYNOPSIS
--------

:program:`llvm-nm` [*options*] [*filenames...*]

DESCRIPTION
-----------

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
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.

:program:`llvm-nm`'s default output format is the traditional BSD :program:`nm`
output format. Each such output record consists of an (optional) 8-digit
hexadecimal address, followed by a type code character, followed by a name, for
each symbol. One record is printed per line; fields are separated by spaces.
When the address is omitted, it is replaced by 8 spaces.

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:

a, A

 Absolute symbol.

b, B

 Uninitialized data (bss) object.

C

 Common symbol. Multiple definitions link together into one definition.

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

 COFF: section symbol.

 Mach-O: absolute symbol or symbol from a section other than __TEXT_EXEC __text,
 __TEXT __text, __DATA __data, or __DATA __bss.

r, R

 Read-only data object.

t, T

 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
 regular definitions exist, one of the weak definitions will be used.

w

 Undefined weak symbol other than an ELF object symbol. It is not a link failure
 if the symbol is not defined.

W

 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
 and no regular definitions exist, one of the weak definitions will be used.

\-

 Mach-O: N_STAB symbol.

?

 Something unrecognizable.

Because LLVM bitcode files typically contain objects that are not considered to
have addresses until they are linked into an executable image or dynamically
compiled "just-in-time", :program:`llvm-nm` does not print an address for any
symbol in an LLVM bitcode file, even symbols which are defined in the bitcode
file.

OPTIONS
-------

.. program:: llvm-nm

.. option:: -B

 Use BSD output format. Alias for ``--format=bsd``.

.. option:: --debug-syms, -a

 Show all symbols, even those usually suppressed.

.. option:: --defined-only

 Print only symbols defined in this file.

.. option:: --demangle, -C

 Demangle symbol names.

.. option:: --dynamic, -D

 Display dynamic symbols instead of normal symbols.

.. option:: --extern-only, -g

 Print only symbols whose definitions are external; that is, accessible from
 other files.

.. option:: --format=<format>, -f

 Select an output format; *format* may be *sysv*, *posix*, *darwin*, *bsd* or
 *just-symbols*.
 The default is *bsd*.

.. option:: --help, -h

 Print a summary of command-line options and their meanings.

.. option:: -j

 Print just the symbol names. Alias for `--format=just-symbols``.

.. 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.

.. option:: --no-sort, -p

 Show symbols in the order encountered.

.. option:: --no-weak

 Don't print weak symbols.

.. option:: --numeric-sort, -n, -v

 Sort symbols by address.

.. option:: --portability, -P

 Use POSIX.2 output format.  Alias for ``--format=posix``.

.. option:: --print-armap

 Print the archive symbol table, in addition to the symbols.

.. option:: --print-file-name, -A, -o

 Precede each symbol with the file it came from.

.. option:: --print-size, -S

 Show symbol size as well as address (not applicable for Mach-O).

.. option:: --quiet

 Suppress 'no symbols' diagnostic.

.. 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.

.. option:: --size-sort

 Sort symbols by size.

.. option:: --special-syms

 Do not filter special symbols from the output.

.. option:: --undefined-only, -u

 Print only undefined symbols.

.. option:: --version, -V

 Display the version of the :program:`llvm-nm` executable, then exit. Does not
 stack with other commands.

.. option:: @<FILE>

 Read command-line options from response file `<FILE>`.

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.

.. option:: --add-inlinedinfo

 Add symbols from the inlined libraries, TBD file inputs only.

.. 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.

.. option:: -s <segment> <section>

 Dump only symbols from this segment and section name.

.. option:: -x

 Print symbol entry in hex.

BUGS
----

 * :program:`llvm-nm` does not support the full set of arguments that GNU
   :program:`nm` does.

EXIT STATUS
-----------

:program:`llvm-nm` exits with an exit code of zero.

SEE ALSO
--------

:manpage:`llvm-ar(1)`, :manpage:`llvm-objdump(1)`, :manpage:`llvm-readelf(1)`,
:manpage:`llvm-readobj(1)`
