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.

  On AIX OS, the default is to process 32-bit object files only and to ignore
  64-bit objects. The can be changed by setting the OBJECT_MODE environment
  variable. For example, OBJECT_MODE=64 causes :program:`llvm-nm` to process
  64-bit objects and ignore 32-bit objects. The -X flag overrides the OBJECT_MODE
  variable.

  On other operating systems, the default is to process all object files: the
  OBJECT_MODE environment variable is not supported.

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