Go to main content

man pages section 1: User Commands

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

llvm-nm (1)

Name

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

Synopsis

llvm-nm [options] [filenames...]

Description

LLVM-NM(1)                           LLVM                           LLVM-NM(1)



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

SYNOPSIS
       llvm-nm [options] [filenames...]

DESCRIPTION
       The llvm-nm utility lists the names of symbols from LLVM bitcode files,
       object files, and archives. Each symbol is listed along with some  sim-
       ple  information  about  its  provenance.  If no filename is specified,
       a.out is used as the input. If - is used as a  filename,  llvm-nm  will
       read a file from its standard input stream.

       llvm-nm's  default  output format is the traditional BSD nm output for-
       mat. Each such output record consists of an (optional) 8-digit hexadec-
       imal  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  defini-
          tion.

       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 defini-
          tions 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 mul-
          tiple 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 con-
       sidered to have addresses until they  are  linked  into  an  executable
       image or dynamically compiled "just-in-time", 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
       -B     Use BSD output format. Alias for --format=bsd.

       --debug-syms, -a
              Show all symbols, even those usually suppressed.

       --defined-only, -U
              Print only symbols defined in this file.

       --demangle, -C
              Demangle symbol names.

       --dynamic, -D
              Display dynamic symbols instead of normal symbols.

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

       --format=<format>, -f
              Select an output format; format may be sysv, posix,  darwin,  or
              bsd.  The default is bsd.

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

       --help-list
              Print an uncategorized summary of command-line options and their
              meanings.

       --just-symbol-name, -j
              Print just the symbol names.

       -m     Use Darwin format. Alias for --format=darwin.

       --no-demangle
              Don't demangle symbol names. This is the default.

       --no-llvm-bc
              Disable the LLVM bitcode reader.

       --no-sort, -p
              Show symbols in the order encountered.

       --no-weak, -W
              Don't print weak symbols.

       --numeric-sort, -n, -v
              Sort symbols by address.

       --portability, -P
              Use POSIX.2 output format.  Alias for --format=posix.

       --print-armap, -M
              Print the archive symbol table, in addition to the symbols.

       --print-file-name, -A, -o
              Precede each symbol with the file it came from.

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

       --radix=<RADIX>, -t
              Specify the radix of the symbol address(es). Values accepted are
              d (decimal), x (hexadecimal) and o (octal).

       --reverse-sort, -r
              Sort symbols in reverse order.

       --size-sort
              Sort symbols by size.

       --special-syms
              Do not filter special symbols from the output.

       --undefined-only, -u
              Print only undefined symbols.

       --version
              Display  the  version  of the llvm-nm executable. Does not stack
              with other commands.

       --without-aliases
              Exclude aliases from the output.

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

MACH-O SPECIFIC OPTIONS
       --add-dyldinfo
              Add symbols from the dyldinfo, if they are not  already  in  the
              symbol table.  This is the default.

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

       --arch=<arch1[,arch2,...]>
              Dump the symbols from the specified architecture(s).

       --dyldinfo-only
              Dump only symbols from the dyldinfo.

       --no-dyldinfo
              Do not add any symbols from the dyldinfo.

       -s=<segment section>
              Dump only symbols from this segment and section name.

       -x     Print symbol entry in hex.

BUGS
          o llvm-nm  does  not  support  the full set of arguments that GNU nm
            does.

EXIT STATUS
       llvm-nm exits with an exit code of zero.


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+---------------------+
       |ATTRIBUTE TYPE |  ATTRIBUTE VALUE    |
       +---------------+---------------------+
       |Availability   | developer/llvm/llvm |
       +---------------+---------------------+
       |Stability      | Uncommitted         |
       +---------------+---------------------+

SEE ALSO
       llvm-ar(1), llvm-objdump(1), llvm-readelf(1), llvm-readobj(1)

AUTHOR
       Maintained by the LLVM Team (https://llvm.org/).

COPYRIGHT
       2003-2022, LLVM Project



NOTES
       Source code for open source software components in Oracle  Solaris  can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This    software    was    built    from    source     available     at
       https://github.com/oracle/solaris-userland.    The  original  community
       source    was    downloaded     from      https://github.com/llvm/llvm-
       project/releases/download/llvmorg-11.0.0/llvm-11.0.0.src.tar.xz.

       Further information about this software can be found on the open source
       community website at https://llvm.org/.



11                                2022-06-28                        LLVM-NM(1)