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

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

 Show all symbols, even those usually suppressed.

.. option:: --defined-only, -U

 Print only symbols defined in this file.

.. option:: --demangle, -C

 Demangle symbol names.

.. option:: --dynamic, -D

 Display dynamic symbols instead of normal symbols.

.. option:: --export-symbols

 Print sorted symbols with their visibility (if applicable), with duplicates
 removed.

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

 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.

XCOFF SPECIFIC OPTIONS
----------------------

.. option:: --no-rsrc

  Exclude resource file symbols (``__rsrc``) from export symbol list.

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)`
