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 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. Type code characters currently supported, and their meanings, 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 Unitialized 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 definitons 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 definitons 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 debugger only. .. 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:: --extern-only, -g Print only symbols whose definitions are external; that is, accessible from other files. .. option:: --format=, -f Select an output format; *format* may be *sysv*, *posix*, *darwin*, or *bsd*. The default is *bsd*. .. option:: --help, -h Print a summary of command-line options and their meanings. .. option:: --help-list Print an uncategorized summary of command-line options and their meanings. .. option:: --just-symbol-name, -j Print just the symbol names. .. 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 Shows symbols in 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, -M 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:: --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 Ignored. For GNU compatibility only. .. option:: --undefined-only, -u Print only undefined symbols. .. option:: --version Display the version of this program. Does not stack with other commands. .. option:: --without-aliases Exclude aliases from the output. .. option:: @ Read command-line options from response 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:: --arch= 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= 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 -------- llvm-dis, ar(1), nm(1)