| # 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)` |