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

SYNOPSIS
--------

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

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

The :program:`llvm-nm` utility lists the names of symbols from the LLVM bitcode
files, object files, or :program:`ar` archives containing them, named on the
command line.  Each symbol is listed along with some simple information about
its provenance.  If no file name is specified, or *-* is used as a file name,
:program:`llvm-nm` will process a file on 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.

Type code characters currently supported, and their meanings, are as follows:

U

 Named object is referenced but undefined in this bitcode file

C

 Common (multiple definitions link together into one def)

W

 Weak reference (multiple definitions link together into zero or one definitions)

t

 Local function (text) object

T

 Global function (text) object

d

 Local data object

D

 Global data object

?

 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    (default)

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

.. option:: -P

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

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

 Show all symbols, even debugger only.

.. option:: --defined-only

 Print only symbols defined in this file (as opposed to
 symbols which may be referenced by objects in this file, but not
 defined in this file.)

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

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

.. option:: -help

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

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

 Shows symbols in order encountered.

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

 Sort symbols by address.

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

 Precede each symbol with the file it came from.

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

 Show symbol size instead of address.

.. option:: --size-sort

 Sort symbols by size.

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

 Print only symbols referenced but not defined in this file.

BUGS
----

 * :program:`llvm-nm` cannot demangle C++ mangled names, like GNU :program:`nm`
   can.

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

llvm-dis, ar(1), nm(1)
