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

FreeBSD Manual Pages

  
 
  

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

NAME
     nm - list symbols from object files

SYNOPSIS
     nm [-a|--debug-syms] [-g|--extern-only]
	[-B] [-C|--demangle[=style]] [-D|--dynamic]
	[-S|--print-size] [-s|--print-armap]
	[-A|-o|--print-file-name][--special-syms]
	[-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...]

DESCRIPTION
     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:

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

     *	 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 used.

	 "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 objects.

	 "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 sym-
	     bol  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-spe-
	     cific  manner  without error.  On some systems, uppercase indicates
	     that a default value has been specified.

	 "-" 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  de-
	     bugging information.

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

     *	 The symbol name.

OPTIONS
     The long and short forms of options, shown here as alternatives, are equiv-
     alent.

     -A
     -o
     --print-file-name
	 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.

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

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

     -C
     --demangle[=style]
	 Decode  (demangle)  low-level	symbol names into user-level names.  Be-
	 sides 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 compiler.

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

     -D
     --dynamic
	 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
     --format=format
	 Use  the  output format format, which can be "bsd", "sysv", or "posix".
	 The default is "bsd".	Only the first character of format  is	signifi-
	 cant; it can be either upper or lower case.

     -g
     --extern-only
	 Display only external symbols.

     -l
     --line-numbers
	 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 num-
	 ber of a relocation entry which refers to the symbol.	If  line  number
	 information can be found, print it after the other symbol information.

     -n
     -v
     --numeric-sort
	 Sort symbols numerically by their addresses, rather than alphabetically
	 by their names.

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

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

     -S
     --print-size
	 Print size, not the value, of defined symbols for the "bsd" output for-
	 mat.

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

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

     --size-sort
	 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 sym-
	 bol is printed, rather than the value, and -S must  be  used  in  order
	 both size and value to be printed.

     --special-syms
	 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  transistions	between ARM code, THUMB code and
	 data.

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

     --target=bfdname
	 Specify an object code format other than your system's default format.

     -u
     --undefined-only
	 Display only undefined symbols (those external to each object file).

     --defined-only
	 Display only defined symbols for each object file.

     -V
     --version
	 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.

     --help
	 Show a summary of the options to nm and exit.

     @file
	 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 removed.

	 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.

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

COPYRIGHT
     Copyright	(c)  1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
     2001, 2002, 2003, 2004, 2005, 2006 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 Sec-
     tions, 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 Li-
     cense".

binutils-2.17			   2006-06-23				   NM(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=i586-pc-msdosdjgpp-nm&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help