Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
NM(1)			     GNU Development Tools			 NM(1)

       nm - list symbols from object files

       nm [-a|--debug-syms] [-g|--extern-only]
	  [-B] [-C|--demangle[=style]] [-D|--dynamic]
	  [-S|--print-size] [-s|--print-armap]
	  [-n|-v|--numeric-sort] [-p|--no-sort]
	  [-r|--reverse-sort] [--size-sort] [-u|--undefined-only]
	  [-t radix|--radix=radix] [-P|--portability]
	  [--target=bfdname] [-fformat|--format=format]
	  [--defined-only] [-l|--line-numbers] [--no-demangle]
	  [-V|--version] [-X 32_64] [--help]  [objfile...]

       GNU nm lists the	symbols	from object files objfile....  If no object
       files are listed	as arguments, nm assumes the file a.out.

       For each	symbol,	nm shows:

       o   The symbol value, in	the radix selected by options (see below), or
	   hexadecimal by default.

       o   The symbol type.  At	least the following types are used; others
	   are,	as well, depending on the object file format.  If lowercase,
	   the symbol is local;	if uppercase, the symbol is global (external).

	   "A" The symbol's value is absolute, and will	not be changed by
	       further linking.

	   "B" The symbol is in	the uninitialized data section (known as BSS).

	   "C" The symbol is common.  Common symbols are uninitialized data.
	       When linking, multiple common symbols may appear	with the same
	       name.  If the symbol is defined anywhere, the common symbols
	       are treated as undefined	references.

	   "D" The symbol is in	the initialized	data section.

	   "G" The symbol is in	an initialized data section for	small objects.
	       Some object file	formats	permit more efficient access to	small
	       data objects, such as a global int variable as opposed to a
	       large global array.

	   "I" The symbol is an	indirect reference to another symbol.  This is
	       a GNU extension to the a.out object file	format which is	rarely

	   "N" The symbol is a debugging symbol.

	   "R" The symbol is in	a read only data section.

	   "S" The symbol is in	an uninitialized data section for small

	   "T" The symbol is in	the text (code)	section.

	   "U" The symbol is undefined.

	   "V" The symbol is a weak object.  When a weak defined symbol	is
	       linked with a normal defined symbol, the	normal defined symbol
	       is used with no error.  When a weak undefined symbol is linked
	       and the symbol is not defined, the value	of the weak symbol
	       becomes zero with no error.

	   "W" The symbol is a weak symbol that	has not	been specifically
	       tagged as a weak	object symbol.	When a weak defined symbol is
	       linked with a normal defined symbol, the	normal defined symbol
	       is used with no error.  When a weak undefined symbol is linked
	       and the symbol is not defined, the value	of the symbol is
	       determined in a system-specific manner without error.  On some
	       systems,	uppercase indicates that a default value has been

	   "-" The symbol is a stabs symbol in an a.out	object file.  In this
	       case, the next values printed are the stabs other field,	the
	       stabs desc field, and the stab type.  Stabs symbols are used to
	       hold debugging information.

	   "?" The symbol type is unknown, or object file format specific.

       o   The symbol name.

       The long	and short forms	of options, shown here as alternatives,	are

	   Precede each	symbol by the name of the input	file (or archive
	   member) in which it was found, rather than identifying the input
	   file	once only, before all of its symbols.

	   Display all symbols,	even debugger-only symbols; normally these are
	   not listed.

       -B  The same as --format=bsd (for compatibility with the	MIPS nm).

	   Decode (demangle) low-level symbol names into user-level names.
	   Besides removing any	initial	underscore prepended by	the system,
	   this	makes C++ function names readable. Different compilers have
	   different mangling styles. The optional demangling style argument
	   can be used to choose an appropriate	demangling style for your

	   Do not demangle low-level symbol names.  This is the	default.

	   Display the dynamic symbols rather than the normal symbols.	This
	   is only meaningful for dynamic objects, such	as certain types of
	   shared libraries.

       -f format
	   Use the output format format, which can be "bsd", "sysv", or
	   "posix".  The default is "bsd".  Only the first character of	format
	   is significant; it can be either upper or lower case.

	   Display only	external symbols.

	   For each symbol, use	debugging information to try to	find a
	   filename and	line number.  For a defined symbol, look for the line
	   number of the address of the	symbol.	 For an	undefined symbol, look
	   for the line	number of a relocation entry which refers to the
	   symbol.  If line number information can be found, print it after
	   the other symbol information.

	   Sort	symbols	numerically by their addresses,	rather than
	   alphabetically by their names.

	   Do not bother to sort the symbols in	any order; print them in the
	   order encountered.

	   Use the POSIX.2 standard output format instead of the default
	   format.  Equivalent to -f posix.

	   Print size, not the value, of defined symbols for the "bsd" output

	   When	listing	symbols	from archive members, include the index: a
	   mapping (stored in the archive by ar	or ranlib) of which modules
	   contain definitions for which names.

	   Reverse the order of	the sort (whether numeric or alphabetic); let
	   the last come first.

	   Sort	symbols	by size.  The size is computed as the difference
	   between the value of	the symbol and the value of the	symbol with
	   the next higher value.  If the "bsd"	output format is used the size
	   of the symbol is printed, rather than the value, and	-S must	be
	   used	in order both size and value to	be printed.

	   Display symbols which have a	target-specific	special	meaning.
	   These symbols are usually used by the target	for some special
	   processing and are not normally helpful when	included included in
	   the normal symbol lists.  For example for ARM targets this option
	   would skip the mapping symbols used to mark transitions between ARM
	   code, THUMB code and	data.

       -t radix
	   Use radix as	the radix for printing the symbol values.  It must be
	   d for decimal, o for	octal, or x for	hexadecimal.

	   Specify an object code format other than your system's default

	   Display only	undefined symbols (those external to each object

	   Display only	defined	symbols	for each object	file.

	   Show	the version number of nm and exit.

       -X  This	option is ignored for compatibility with the AIX version of
	   nm.	It takes one parameter which must be the string	32_64.	The
	   default mode	of AIX nm corresponds to -X 32,	which is not supported
	   by GNU nm.

	   Show	a summary of the options to nm and exit.

	   Read	command-line options from file.	 The options read are inserted
	   in place of the original @file option.  If file does	not exist, or
	   cannot be read, then	the option will	be treated literally, and not

	   Options in file are separated by whitespace.	 A whitespace
	   character may be included in	an option by surrounding the entire
	   option in either single or double quotes.  Any character (including
	   a backslash)	may be included	by prefixing the character to be
	   included with a backslash.  The file	may itself contain additional
	   @file options; any such options will	be processed recursively.

       ar(1), objdump(1), ranlib(1), and the Info entries for binutils.

       Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
       2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software
       Foundation, Inc.

       Permission is granted to	copy, distribute and/or	modify this document
       under the terms of the GNU Free Documentation License, Version 1.1 or
       any later version published by the Free Software	Foundation; with no
       Invariant Sections, with	no Front-Cover Texts, and with no Back-Cover
       Texts.  A copy of the license is	included in the	section	entitled "GNU
       Free Documentation License".

binutils-2.17.50		  2010-10-30				 NM(1)


Want to link to this manual page? Use this URL:

home | help