The llvm-nm utility lists the names of symbols from the LLVM bytecode files named on the command line, along with some ancillary information about each symbol. If no filename is specified, or - is used as a filename, llvm-nm reads its input from standard input.
llvm-nm's default output format is the traditional BSD nm(1) 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 bytecode file |
| C | Common (multiple defs link together into one def) |
| W | Weak reference (multiple defs link together into zero or one defs) |
| t | Local function (text) object |
| T | Global function (text) object |
| d | Local data object |
| D | Global data object |
| ? | Something unrecognizable |
Because LLVM bytecode 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", llvm-nm does not print an address for any symbol, even symbols which are defined in the bytecode file.