LLVM-NM(1)
π LLVM-NM(1) β the LLVM girlies' edition β¨
okay so bestie, this is llvm-nm, and it lives in the LLVM manual family (section 1, if you're keeping track π). Pull up a chair, grab a strawberry drink π, and let's get into it.
πΈ NAME πΈ
llvm-nm β lists the symbol table of LLVM bitcode files and object files. that's it, that's the vibe, no cap.
β¨ SYNOPSIS β¨
llvm-nm [options] [filenames...]
π¦ DESCRIPTION π¦
okay so the llvm-nm utility lists the names of symbols from LLVM bitcode files, object files, and archives. Every symbol gets listed with a little bit of simple info about where it came from β it's giving provenance, it's giving receipts π
.
if you don't specify a filename, a.out is used as the input. and if you use - as a filename, llvm-nm will read a file from its standard input stream. cute!
llvm-nm's default output format is the traditional BSD nm output format. each one of those output records is made of an (optional) 8-digit hexadecimal address, then a type code character, then a name, for each symbol. one record per line bestie, fields separated by spaces. and when the address is omitted? it gets replaced by 8 spaces. iconic spacing behaviour, honestly.
so here are the supported type code characters. 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. iykyk π§
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:.idatasymbol or symbol in a section withIMAGE_SCN_LNK_INFOset.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_STABsymbol.?β Something unrecognizable. it's giving mystery, it's giving "who is she" π
and here's the tea about bitcode files β 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", llvm-nm does not print an address for any symbol in an LLVM bitcode file β even symbols which are defined in the bitcode file. so don't come for her about missing addresses, she's literally built different.
π OPTIONS π
okay this is the big one, hydrate before reading bestie π«Ά
-Bβ Use BSD output format. Alias for--format=bsd.-Xβ Specify the type of XCOFF object file, ELF object file, or IR object file input from command line or from archive files thatllvm-nmshould 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. That can be changed by setting the OBJECT_MODE environment variable. For example, OBJECT_MODE=64 causes 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. (she said "not on my watch" π)
--debug-syms,-aβ Show all symbols, even those usually suppressed.--defined-only,-Uβ Print only symbols defined in this file.--demangle,-Cβ Demangle symbol names.--dynamic,-Dβ Display dynamic symbols instead of normal symbols.--export-symbolsβ Print sorted symbols with their visibility (if applicable), with duplicates removed.--extern-only,-gβ Print only symbols whose definitions are external; that is, accessible from other files.--format=<format>,-fβ Select an output format; format may besysv,posix,darwin,bsdorjust-symbols. The default isbsd.--help,-hβ Print a summary of command-line options and their meanings.-jβ Print just the symbol names. Alias for--format=just-symbols.--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.-mβ Use Darwin format. Alias for--format=darwin.--no-demangleβ Don't demangle symbol names. This is the default.--no-llvm-bcβ Disable the LLVM bitcode reader.--no-sort,-pβ Show symbols in the order encountered.--no-weak,-Wβ Don't print weak symbols.--numeric-sort,-n,-vβ Sort symbols by address.--portability,-Pβ Use POSIX.2 output format. Alias for--format=posix.--print-armapβ Print the archive symbol table, in addition to the symbols.--print-file-name,-A,-oβ Precede each symbol with the file it came from.--print-size,-Sβ Show symbol size as well as address (not applicable for Mach-O).--quietβ Suppress'no symbols'diagnostic.--radix=<RADIX>,-tβ Specify the radix of the symbol address(es). Values accepted ared(decimal),x(hexadecimal) ando(octal).--reverse-sort,-rβ Sort symbols in reverse order.--size-sortβ Sort symbols by size.--special-symsβ Do not filter special symbols from the output.--undefined-only,-uβ Print only undefined symbols.--version,-Vβ Display the version of thellvm-nmexecutable, then exit. Does not stack with other commands.@<FILE>β Read command-line options from response file FILE.
π MACH-O SPECIFIC OPTIONS π
apple girlies this section is for you π
--add-dyldinfoβ Add symbols from the dyldinfo, if they are not already in the symbol table. This is the default.--add-inlinedinfoβ Add symbols from the inlined libraries, TBD file inputs only.--arch=<arch1[,arch2,...]>β Dump the symbols from the specified architecture(s).--dyldinfo-onlyβ Dump only symbols from the dyldinfo.--no-dyldinfoβ Do not add any symbols from the dyldinfo.-s <segment> <section>β Dump only symbols from this segment and section name.-xβ Print symbol entry in hex.
π§ XCOFF SPECIFIC OPTIONS π§
--no-rsrcβ Exclude resource file symbols (__rsrc) from export symbol list.
π BUGS π
llvm-nmdoes not support the full set of arguments that GNUnmdoes. so if your GNU-era tutorial isn't working, that's why bestie, not you π
β EXIT STATUS β
llvm-nm exits with an exit code of zero. always slaying, always succeeding, no drama π
π SEE ALSO π
llvm-ar(1), llvm-objdump(1), llvm-readelf(1), llvm-readobj(1) β go read those next, they're the friend group π«Ά
π AUTHOR π
Maintained by the LLVM Team (https://llvm.org/).
π COPYRIGHT π
2003-2026, LLVM Project
and that's the whole page bestie! π this edition you just read is from source 23, dated 2026-10-06, straight outta the LLVM crew β mwah, go list some symbols, you're gonna ate πβ¨π₯
π¦ where this page comes from
- centos-stream 9: llvm 23.1.3-1.el9 Β· Apache-2.0 WITH LLVM-exception OR NCSA
- centos-stream 9: llvm 23.1.3-1.el9 Β· Apache-2.0 WITH LLVM-exception OR NCSA
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms