| # 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} --line-numbers, -l | |
| Use debugging information to print the filenames and line numbers where | |
| symbols are defined. Undefined symbols have the location of their first | |
| relocation printed instead. | |
| ::: | |
| :::{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)` |