LLVM-NM(1)
π LLVM-NM(1) π
okay bestie, welcome to the llvm-nm page π this one lives in the LLVM manual, section 1, and it's genuinely one of my faves. let's get into it π«Ά
β¨ 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, periodt. every symbol shows up with a lil bit of simple info about where it came from β¨
- no filename given?
a.outis the input, no cap. - using
-as a filename?llvm-nmwill read a file from its standard input stream π
llvm-nm's default output format is the traditional BSD nm output format. every output record is: an (optional) 8-digit hexadecimal address, then a type code character, then a name, for each symbol. one record per line, fields separated by spaces. when the address is omitted, it gets 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:.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.
- Mach-O: absolute symbol or symbol from a section other than
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.
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. iconic behavior honestly π
β¨ OPTIONS β¨
-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. The 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.
--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.-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 π
--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.
bestie. it's giving "not everything GNU does". just so u know π«Ά
πͺ EXIT STATUS πͺ
llvm-nm exits with an exit code of zero. that's it. flawless. no drama π
π 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-2024, LLVM Project
and that's the whole page, bestie β this was the LLVM-NM(1) manual, page 15 of the LLVM set, dated 2024-04-14, brought to u by the LLVM crew π go read ur symbol tables, u got this πβ¨π¦
π¦ where this page comes from
- ubuntu noble: llvm-16 1:16.0.6-23ubuntu4 Β· APACHE-2-LLVM-EXCEPTIONS
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms