---
name: "llvm-nm-2.7"
section: "1"
platform: "linux"
package: "llvm-2.7"
version: "2.7-6"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/llvm-nm-2.7"
---

# llvm-nm-2.7(1)

list LLVM bitcode file's symbol table

## NAME

llvm-nm - list LLVM bitcode file's symbol table

## SYNOPSIS

**llvm-nm** \[*options*\] \[*filenames...*\]

## DESCRIPTION

The **llvm-nm** utility lists the names of symbols from the LLVM bitcode files, or **ar** archives containing LLVM bitcode files, named on the command line. Each symbol is listed along with some simple information about its provenance. If no file name is specified, or *-* is used as a file name, **llvm-nm** will process a bitcode file on its standard input stream.

**llvm-nm**'s default output format is the traditional BSD **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.

Type code characters currently supported, and their meanings, are as follows:

- U

  Named object is referenced but undefined in this bitcode file

- C

  Common (multiple definitions link together into one def)

- W

  Weak reference (multiple definitions link together into zero or one definitions)

- t

  Local function (text) object

- T

  Global function (text) object

- d

  Local data object

- D

  Global data object

- ?

  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, even symbols which are defined in the bitcode file.

## OPTIONS

- **-P**

  Use POSIX.2 output format. Alias for **--format=posix**.

- **-B** (default)

  Use BSD output format. Alias for **--format=bsd**.

- **-help**

  Print a summary of command-line options and their meanings.

- **--defined-only**

  Print only symbols defined in this bitcode file (as opposed to symbols which may be referenced by objects in this file, but not defined in this file.)

- **--extern-only**, **-g**

  Print only symbols whose definitions are external; that is, accessible from other bitcode files.

- **--undefined-only**, **-u**

  Print only symbols referenced but not defined in this bitcode file.

- **--format=***fmt*, **-f**

  Select an output format; *fmt* may be *sysv*, *posix*, or *bsd*. The default is *bsd*.

## BUGS

**llvm-nm** cannot demangle C++ mangled names, like GNU **nm** can.

## EXIT STATUS

**llvm-nm** exits with an exit code of zero.

## SEE ALSO

llvm-dis, [*ar*(1)](/ar/1.md), [*nm*(1)](/nm/1.md)

## AUTHOR

Maintained by the LLVM Team (\<http://llvm.org\>).
