LLVM-NM(1)
π LLVM-NM π
okay bestie, real talk: this is the llvm-nm page from the LLVM manual, and we're gonna make it make sense. it lists symbol tables. that's the whole gig. let's go π
β¨ NAME β¨
llvm-nm β list LLVM bitcode and object file's symbol table
β¨ SYNOPSIS β¨
llvm-nm [options] [filenamesβ¦]
β¨ DESCRIPTION β¨
so the llvm-nm utility lists the names of symbols from LLVM bitcode files, object files, and archives β like, it goes through and tells you every symbol living in there. each symbol gets listed along with some simple info about its provenance, iykyk. π΅οΈ
no filename? no problem β 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. iconic behavior honestly.
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 printed per line, fields separated by spaces. and when the address is omitted, it gets replaced by 8 spaces. yes, spaces. the vibes are preserved. π
here are the supported type code characters, babes. 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:.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. π
okay and this next bit is important: 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. no address. none. periodt. π
β¨ OPTIONS β¨
-Bβ Use BSD output format. Alias for--format=bsd.--debug-syms,-aβ Show all symbols, even those usually suppressed. π--defined-onlyβ Print only symbols defined in this file.--demangle,-Cβ Demangle symbol names. make 'em readable bestie.--dynamic,-Dβ Display dynamic symbols instead of normal symbols.--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.-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β 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 π
these ones are only for the Apple-heads, bestie. π¦
--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.
π BUGS π
llvm-nmdoes not support the full set of arguments that GNUnmdoes. not me finding out the hard way π
π EXIT STATUS π
llvm-nm exits with an exit code of zero. that's it. that's the status. slay. β¨
π SEE ALSO π
llvm-ar(1), llvm-objdump(1), llvm-readelf(1), llvm-readobj(1)
π AUTHOR π
Maintained by the LLVM Team (https://llvm.org/).
π COPYRIGHT π
2003-2023, LLVM Project
okay and that's the whole thing, bestie β this page comes from the LLVM manual, source 13, dated 2023-07-14. go forth and read those symbol tables π
π«ΆπΈ
π¦ where this page comes from
- ubuntu jammy: llvm-13 1:13.0.1-2ubuntu2.2 Β· APACHE-2-LLVM-EXCEPTIONS
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms