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.