.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sh \" Subsection heading
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings.  \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote.  | will give a
.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
.\" expand to `' in nroff, nothing in troff, for use with C<>.
.tr \(*W-|\(bv\*(Tr
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
.    ds -- \(*W-
.    ds PI pi
.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
.    ds L" ""
.    ds R" ""
.    ds C` ""
.    ds C' ""
'br\}
.el\{\
.    ds -- \|\(em\|
.    ds PI \(*p
.    ds L" ``
.    ds R" ''
'br\}
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
.\" entries marked with X<> in POD.  Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.if \nF \{\
.    de IX
.    tm Index:\\$1\t\\n%\t"\\$2"
..
.    nr % 0
.    rr F
.\}
.\"
.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.hy 0
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
.    \" fudge factors for nroff and troff
.if n \{\
.    ds #H 0
.    ds #V .8m
.    ds #F .3m
.    ds #[ \f1
.    ds #] \fP
.\}
.if t \{\
.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
.    ds #V .6m
.    ds #F 0
.    ds #[ \&
.    ds #] \&
.\}
.    \" simple accents for nroff and troff
.if n \{\
.    ds ' \&
.    ds ` \&
.    ds ^ \&
.    ds , \&
.    ds ~ ~
.    ds /
.\}
.if t \{\
.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
.    \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
.    \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
.    \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
.    ds : e
.    ds 8 ss
.    ds o a
.    ds d- d\h'-1'\(ga
.    ds D- D\h'-1'\(hy
.    ds th \o'bp'
.    ds Th \o'LP'
.    ds ae ae
.    ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "OBJDUMP 1"
.TH OBJDUMP 1 "2008-09-10" "binutils-2.18.90" "GNU Development Tools"
.SH "NAME"
objdump \- display information from object files.
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
objdump [\fB\-a\fR|\fB\-\-archive\-headers\fR]
        [\fB\-b\fR \fIbfdname\fR|\fB\-\-target=\fR\fIbfdname\fR]
        [\fB\-C\fR|\fB\-\-demangle\fR[=\fIstyle\fR] ]
        [\fB\-d\fR|\fB\-\-disassemble\fR]
        [\fB\-D\fR|\fB\-\-disassemble\-all\fR]
        [\fB\-z\fR|\fB\-\-disassemble\-zeroes\fR]
        [\fB\-EB\fR|\fB\-EL\fR|\fB\-\-endian=\fR{big | little }]
        [\fB\-f\fR|\fB\-\-file\-headers\fR]
        [\fB\-F\fR|\fB\-\-file\-offsets\fR]
        [\fB\-\-file\-start\-context\fR]
        [\fB\-g\fR|\fB\-\-debugging\fR]
        [\fB\-e\fR|\fB\-\-debugging\-tags\fR]
        [\fB\-h\fR|\fB\-\-section\-headers\fR|\fB\-\-headers\fR]
        [\fB\-i\fR|\fB\-\-info\fR]
        [\fB\-j\fR \fIsection\fR|\fB\-\-section=\fR\fIsection\fR]
        [\fB\-l\fR|\fB\-\-line\-numbers\fR]
        [\fB\-S\fR|\fB\-\-source\fR]
        [\fB\-m\fR \fImachine\fR|\fB\-\-architecture=\fR\fImachine\fR]
        [\fB\-M\fR \fIoptions\fR|\fB\-\-disassembler\-options=\fR\fIoptions\fR]
        [\fB\-p\fR|\fB\-\-private\-headers\fR]
        [\fB\-r\fR|\fB\-\-reloc\fR]
        [\fB\-R\fR|\fB\-\-dynamic\-reloc\fR]
        [\fB\-s\fR|\fB\-\-full\-contents\fR]
        [\fB\-W\fR|\fB\-\-dwarf\fR]
        [\fB\-G\fR|\fB\-\-stabs\fR]
        [\fB\-t\fR|\fB\-\-syms\fR]
        [\fB\-T\fR|\fB\-\-dynamic\-syms\fR]
        [\fB\-x\fR|\fB\-\-all\-headers\fR]
        [\fB\-w\fR|\fB\-\-wide\fR]
        [\fB\-\-start\-address=\fR\fIaddress\fR]
        [\fB\-\-stop\-address=\fR\fIaddress\fR]
        [\fB\-\-prefix\-addresses\fR]
        [\fB\-\-[no\-]show\-raw\-insn\fR]
        [\fB\-\-adjust\-vma=\fR\fIoffset\fR]
        [\fB\-\-special\-syms\fR]
        [\fB\-V\fR|\fB\-\-version\fR]
        [\fB\-H\fR|\fB\-\-help\fR]
        \fIobjfile\fR...
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
\&\fBobjdump\fR displays information about one or more object files.
The options control what particular information to display.  This
information is mostly useful to programmers who are working on the
compilation tools, as opposed to programmers who just want their
program to compile and work.
.PP
\&\fIobjfile\fR... are the object files to be examined.  When you
specify archives, \fBobjdump\fR shows information on each of the member
object files.
.SH "OPTIONS"
.IX Header "OPTIONS"
The long and short forms of options, shown here as alternatives, are
equivalent.  At least one option from the list
\&\fB\-a,\-d,\-D,\-e,\-f,\-g,\-G,\-h,\-H,\-p,\-r,\-R,\-s,\-S,\-t,\-T,\-V,\-x\fR must be given.
.IP "\fB\-a\fR" 4
.IX Item "-a"
.PD 0
.IP "\fB\-\-archive\-header\fR" 4
.IX Item "--archive-header"
.PD
If any of the \fIobjfile\fR files are archives, display the archive
header information (in a format similar to \fBls \-l\fR).  Besides the
information you could list with \fBar tv\fR, \fBobjdump \-a\fR shows
the object file format of each archive member.
.IP "\fB\-\-adjust\-vma=\fR\fIoffset\fR" 4
.IX Item "--adjust-vma=offset"
When dumping information, first add \fIoffset\fR to all the section
addresses.  This is useful if the section addresses do not correspond to
the symbol table, which can happen when putting sections at particular
addresses when using a format which can not represent section addresses,
such as a.out.
.IP "\fB\-b\fR \fIbfdname\fR" 4
.IX Item "-b bfdname"
.PD 0
.IP "\fB\-\-target=\fR\fIbfdname\fR" 4
.IX Item "--target=bfdname"
.PD
Specify that the object-code format for the object files is
\&\fIbfdname\fR.  This option may not be necessary; \fIobjdump\fR can
automatically recognize many formats.
.Sp
For example,
.Sp
.Vb 1
\&        objdump -b oasys -m vax -h fu.o
.Ve
.Sp
displays summary information from the section headers (\fB\-h\fR) of
\&\fIfu.o\fR, which is explicitly identified (\fB\-m\fR) as a \s-1VAX\s0 object
file in the format produced by Oasys compilers.  You can list the
formats available with the \fB\-i\fR option.
.IP "\fB\-C\fR" 4
.IX Item "-C"
.PD 0
.IP "\fB\-\-demangle[=\fR\fIstyle\fR\fB]\fR" 4
.IX Item "--demangle[=style]"
.PD
Decode (\fIdemangle\fR) 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 compiler. 
.IP "\fB\-g\fR" 4
.IX Item "-g"
.PD 0
.IP "\fB\-\-debugging\fR" 4
.IX Item "--debugging"
.PD
Display debugging information.  This attempts to parse \s-1STABS\s0 and \s-1IEEE\s0
debugging format information stored in the file and print it out using
a C like syntax.  If neither of these formats are found this option
falls back on the \fB\-W\fR option to print any \s-1DWARF\s0 information in
the file.
.IP "\fB\-e\fR" 4
.IX Item "-e"
.PD 0
.IP "\fB\-\-debugging\-tags\fR" 4
.IX Item "--debugging-tags"
.PD
Like \fB\-g\fR, but the information is generated in a format compatible
with ctags tool.
.IP "\fB\-d\fR" 4
.IX Item "-d"
.PD 0
.IP "\fB\-\-disassemble\fR" 4
.IX Item "--disassemble"
.PD
Display the assembler mnemonics for the machine instructions from
\&\fIobjfile\fR.  This option only disassembles those sections which are
expected to contain instructions.
.IP "\fB\-D\fR" 4
.IX Item "-D"
.PD 0
.IP "\fB\-\-disassemble\-all\fR" 4
.IX Item "--disassemble-all"
.PD
Like \fB\-d\fR, but disassemble the contents of all sections, not just
those expected to contain instructions.
.IP "\fB\-\-prefix\-addresses\fR" 4
.IX Item "--prefix-addresses"
When disassembling, print the complete address on each line.  This is
the older disassembly format.
.IP "\fB\-EB\fR" 4
.IX Item "-EB"
.PD 0
.IP "\fB\-EL\fR" 4
.IX Item "-EL"
.IP "\fB\-\-endian={big|little}\fR" 4
.IX Item "--endian={big|little}"
.PD
Specify the endianness of the object files.  This only affects
disassembly.  This can be useful when disassembling a file format which
does not describe endianness information, such as S\-records.
.IP "\fB\-f\fR" 4
.IX Item "-f"
.PD 0
.IP "\fB\-\-file\-headers\fR" 4
.IX Item "--file-headers"
.PD
Display summary information from the overall header of
each of the \fIobjfile\fR files.
.IP "\fB\-F\fR" 4
.IX Item "-F"
.PD 0
.IP "\fB\-\-file\-offsets\fR" 4
.IX Item "--file-offsets"
.PD
When disassembling sections, whenever a symbol is displayed, also
display the file offset of the region of data that is about to be
dumped.  If zeroes are being skipped, then when disassembly resumes,
tell the user how many zeroes were skipped and the file offset of the
location from where the disassembly resumes.  When dumping sections,
display the file offset of the location from where the dump starts.
.IP "\fB\-\-file\-start\-context\fR" 4
.IX Item "--file-start-context"
Specify that when displaying interlisted source code/disassembly
(assumes \fB\-S\fR) from a file that has not yet been displayed, extend the
context to the start of the file.
.IP "\fB\-h\fR" 4
.IX Item "-h"
.PD 0
.IP "\fB\-\-section\-headers\fR" 4
.IX Item "--section-headers"
.IP "\fB\-\-headers\fR" 4
.IX Item "--headers"
.PD
Display summary information from the section headers of the
object file.
.Sp
File segments may be relocated to nonstandard addresses, for example by
using the \fB\-Ttext\fR, \fB\-Tdata\fR, or \fB\-Tbss\fR options to
\&\fBld\fR.  However, some object file formats, such as a.out, do not
store the starting address of the file segments.  In those situations,
although \fBld\fR relocates the sections correctly, using \fBobjdump
\&\-h\fR to list the file section headers cannot show the correct addresses.
Instead, it shows the usual addresses, which are implicit for the
target.
.IP "\fB\-H\fR" 4
.IX Item "-H"
.PD 0
.IP "\fB\-\-help\fR" 4
.IX Item "--help"
.PD
Print a summary of the options to \fBobjdump\fR and exit.
.IP "\fB\-i\fR" 4
.IX Item "-i"
.PD 0
.IP "\fB\-\-info\fR" 4
.IX Item "--info"
.PD
Display a list showing all architectures and object formats available
for specification with \fB\-b\fR or \fB\-m\fR.
.IP "\fB\-j\fR \fIname\fR" 4
.IX Item "-j name"
.PD 0
.IP "\fB\-\-section=\fR\fIname\fR" 4
.IX Item "--section=name"
.PD
Display information only for section \fIname\fR.
.IP "\fB\-l\fR" 4
.IX Item "-l"
.PD 0
.IP "\fB\-\-line\-numbers\fR" 4
.IX Item "--line-numbers"
.PD
Label the display (using debugging information) with the filename and
source line numbers corresponding to the object code or relocs shown.
Only useful with \fB\-d\fR, \fB\-D\fR, or \fB\-r\fR.
.IP "\fB\-m\fR \fImachine\fR" 4
.IX Item "-m machine"
.PD 0
.IP "\fB\-\-architecture=\fR\fImachine\fR" 4
.IX Item "--architecture=machine"
.PD
Specify the architecture to use when disassembling object files.  This
can be useful when disassembling object files which do not describe
architecture information, such as S\-records.  You can list the available
architectures with the \fB\-i\fR option.
.IP "\fB\-M\fR \fIoptions\fR" 4
.IX Item "-M options"
.PD 0
.IP "\fB\-\-disassembler\-options=\fR\fIoptions\fR" 4
.IX Item "--disassembler-options=options"
.PD
Pass target specific information to the disassembler.  Only supported on
some targets.  If it is necessary to specify more than one
disassembler option then multiple \fB\-M\fR options can be used or
can be placed together into a comma separated list.
.Sp
If the target is an \s-1ARM\s0 architecture then this switch can be used to
select which register name set is used during disassembler.  Specifying
\&\fB\-M reg-names-std\fR (the default) will select the register names as
used in \s-1ARM\s0's instruction set documentation, but with register 13 called
\&'sp', register 14 called 'lr' and register 15 called 'pc'.  Specifying
\&\fB\-M reg-names-apcs\fR will select the name set used by the \s-1ARM\s0
Procedure Call Standard, whilst specifying \fB\-M reg-names-raw\fR will
just use \fBr\fR followed by the register number.
.Sp
There are also two variants on the \s-1APCS\s0 register naming scheme enabled
by \fB\-M reg-names-atpcs\fR and \fB\-M reg-names-special-atpcs\fR which
use the ARM/Thumb Procedure Call Standard naming conventions.  (Either
with the normal register names or the special register names).
.Sp
This option can also be used for \s-1ARM\s0 architectures to force the
disassembler to interpret all instructions as Thumb instructions by
using the switch \fB\-\-disassembler\-options=force\-thumb\fR.  This can be
useful when attempting to disassemble thumb code produced by other
compilers.
.Sp
For the x86, some of the options duplicate functions of the \fB\-m\fR
switch, but allow finer grained control.  Multiple selections from the
following may be specified as a comma separated string.
\&\fBx86\-64\fR, \fBi386\fR and \fBi8086\fR select disassembly for
the given architecture.  \fBintel\fR and \fBatt\fR select between
intel syntax mode and \s-1AT&T\s0 syntax mode.
\&\fBintel-mnemonic\fR and \fBatt-mnemonic\fR select between
intel mnemonic mode and \s-1AT&T\s0 mnemonic mode. \fBintel-mnemonic\fR
implies \fBintel\fR and \fBatt-mnemonic\fR implies \fBatt\fR.
\&\fBaddr64\fR, \fBaddr32\fR,
\&\fBaddr16\fR, \fBdata32\fR and \fBdata16\fR specify the default
address size and operand size.  These four options will be overridden if
\&\fBx86\-64\fR, \fBi386\fR or \fBi8086\fR appear later in the
option string.  Lastly, \fBsuffix\fR, when in \s-1AT&T\s0 mode,
instructs the disassembler to print a mnemonic suffix even when the
suffix could be inferred by the operands.
.Sp
For \s-1PPC\s0, \fBbooke\fR, \fBbooke32\fR and \fBbooke64\fR select
disassembly of BookE instructions.  \fB32\fR and \fB64\fR select
PowerPC and PowerPC64 disassembly, respectively.  \fBe300\fR
selects disassembly for the e300 family.  \fB440\fR selects
disassembly for the PowerPC 440.  \fBppcps\fR selects disassembly
for the paired single instructions of the \s-1PPC750CL\s0.
.Sp
For \s-1MIPS\s0, this option controls the printing of instruction mnemonic
names and register names in disassembled instructions.  Multiple
selections from the following may be specified as a comma separated
string, and invalid options are ignored:
.RS 4
.ie n .IP """no\-aliases""" 4
.el .IP "\f(CWno\-aliases\fR" 4
.IX Item "no-aliases"
Print the 'raw' instruction mnemonic instead of some pseudo
instruction mnemonic.  I.e., print 'daddu' or 'or' instead of 'move',
\&'sll' instead of 'nop', etc.
.ie n .IP """gpr\-names=\f(CI\s-1ABI\s0\f(CW""" 4
.el .IP "\f(CWgpr\-names=\f(CI\s-1ABI\s0\f(CW\fR" 4
.IX Item "gpr-names=ABI"
Print \s-1GPR\s0 (general\-purpose register) names as appropriate
for the specified \s-1ABI\s0.  By default, \s-1GPR\s0 names are selected according to
the \s-1ABI\s0 of the binary being disassembled.
.ie n .IP """fpr\-names=\f(CI\s-1ABI\s0\f(CW""" 4
.el .IP "\f(CWfpr\-names=\f(CI\s-1ABI\s0\f(CW\fR" 4
.IX Item "fpr-names=ABI"
Print \s-1FPR\s0 (floating\-point register) names as
appropriate for the specified \s-1ABI\s0.  By default, \s-1FPR\s0 numbers are printed
rather than names.
.ie n .IP """cp0\-names=\f(CI\s-1ARCH\s0\f(CW""" 4
.el .IP "\f(CWcp0\-names=\f(CI\s-1ARCH\s0\f(CW\fR" 4
.IX Item "cp0-names=ARCH"
Print \s-1CP0\s0 (system control coprocessor; coprocessor 0) register names
as appropriate for the \s-1CPU\s0 or architecture specified by
\&\fI\s-1ARCH\s0\fR.  By default, \s-1CP0\s0 register names are selected according to
the architecture and \s-1CPU\s0 of the binary being disassembled.
.ie n .IP """hwr\-names=\f(CI\s-1ARCH\s0\f(CW""" 4
.el .IP "\f(CWhwr\-names=\f(CI\s-1ARCH\s0\f(CW\fR" 4
.IX Item "hwr-names=ARCH"
Print \s-1HWR\s0 (hardware register, used by the \f(CW\*(C`rdhwr\*(C'\fR instruction) names
as appropriate for the \s-1CPU\s0 or architecture specified by
\&\fI\s-1ARCH\s0\fR.  By default, \s-1HWR\s0 names are selected according to
the architecture and \s-1CPU\s0 of the binary being disassembled.
.ie n .IP """reg\-names=\f(CI\s-1ABI\s0\f(CW""" 4
.el .IP "\f(CWreg\-names=\f(CI\s-1ABI\s0\f(CW\fR" 4
.IX Item "reg-names=ABI"
Print \s-1GPR\s0 and \s-1FPR\s0 names as appropriate for the selected \s-1ABI\s0.
.ie n .IP """reg\-names=\f(CI\s-1ARCH\s0\f(CW""" 4
.el .IP "\f(CWreg\-names=\f(CI\s-1ARCH\s0\f(CW\fR" 4
.IX Item "reg-names=ARCH"
Print CPU-specific register names (\s-1CP0\s0 register and \s-1HWR\s0 names)
as appropriate for the selected \s-1CPU\s0 or architecture.
.RE
.RS 4
.Sp
For any of the options listed above, \fI\s-1ABI\s0\fR or
\&\fI\s-1ARCH\s0\fR may be specified as \fBnumeric\fR to have numbers printed
rather than names, for the selected types of registers.
You can list the available values of \fI\s-1ABI\s0\fR and \fI\s-1ARCH\s0\fR using
the \fB\-\-help\fR option.
.Sp
For \s-1VAX\s0, you can specify function entry addresses with \fB\-M
entry:0xf00ba\fR.  You can use this multiple times to properly
disassemble \s-1VAX\s0 binary files that don't contain symbol tables (like
\&\s-1ROM\s0 dumps).  In these cases, the function entry mask would otherwise
be decoded as \s-1VAX\s0 instructions, which would probably lead the rest
of the function being wrongly disassembled.
.RE
.IP "\fB\-p\fR" 4
.IX Item "-p"
.PD 0
.IP "\fB\-\-private\-headers\fR" 4
.IX Item "--private-headers"
.PD
Print information that is specific to the object file format.  The exact
information printed depends upon the object file format.  For some
object file formats, no additional information is printed.
.IP "\fB\-r\fR" 4
.IX Item "-r"
.PD 0
.IP "\fB\-\-reloc\fR" 4
.IX Item "--reloc"
.PD
Print the relocation entries of the file.  If used with \fB\-d\fR or
\&\fB\-D\fR, the relocations are printed interspersed with the
disassembly.
.IP "\fB\-R\fR" 4
.IX Item "-R"
.PD 0
.IP "\fB\-\-dynamic\-reloc\fR" 4
.IX Item "--dynamic-reloc"
.PD
Print the dynamic relocation entries of the file.  This is only
meaningful for dynamic objects, such as certain types of shared
libraries.
.IP "\fB\-s\fR" 4
.IX Item "-s"
.PD 0
.IP "\fB\-\-full\-contents\fR" 4
.IX Item "--full-contents"
.PD
Display the full contents of any sections requested.  By default all
non-empty sections are displayed.
.IP "\fB\-S\fR" 4
.IX Item "-S"
.PD 0
.IP "\fB\-\-source\fR" 4
.IX Item "--source"
.PD
Display source code intermixed with disassembly, if possible.  Implies
\&\fB\-d\fR.
.IP "\fB\-\-show\-raw\-insn\fR" 4
.IX Item "--show-raw-insn"
When disassembling instructions, print the instruction in hex as well as
in symbolic form.  This is the default except when
\&\fB\-\-prefix\-addresses\fR is used.
.IP "\fB\-\-no\-show\-raw\-insn\fR" 4
.IX Item "--no-show-raw-insn"
When disassembling instructions, do not print the instruction bytes.
This is the default when \fB\-\-prefix\-addresses\fR is used.
.IP "\fB\-W\fR" 4
.IX Item "-W"
.PD 0
.IP "\fB\-\-dwarf\fR" 4
.IX Item "--dwarf"
.PD
Displays the contents of the \s-1DWARF\s0 debug sections in the file, if any
are present.
.IP "\fB\-G\fR" 4
.IX Item "-G"
.PD 0
.IP "\fB\-\-stabs\fR" 4
.IX Item "--stabs"
.PD
Display the full contents of any sections requested.  Display the
contents of the .stab and .stab.index and .stab.excl sections from an
\&\s-1ELF\s0 file.  This is only useful on systems (such as Solaris 2.0) in which
\&\f(CW\*(C`.stab\*(C'\fR debugging symbol-table entries are carried in an \s-1ELF\s0
section.  In most other file formats, debugging symbol-table entries are
interleaved with linkage symbols, and are visible in the \fB\-\-syms\fR
output.
.IP "\fB\-\-start\-address=\fR\fIaddress\fR" 4
.IX Item "--start-address=address"
Start displaying data at the specified address.  This affects the output
of the \fB\-d\fR, \fB\-r\fR and \fB\-s\fR options.
.IP "\fB\-\-stop\-address=\fR\fIaddress\fR" 4
.IX Item "--stop-address=address"
Stop displaying data at the specified address.  This affects the output
of the \fB\-d\fR, \fB\-r\fR and \fB\-s\fR options.
.IP "\fB\-t\fR" 4
.IX Item "-t"
.PD 0
.IP "\fB\-\-syms\fR" 4
.IX Item "--syms"
.PD
Print the symbol table entries of the file.
This is similar to the information provided by the \fBnm\fR program,
although the display format is different.  The format of the output
depends upon the format of the file being dumped, but there are two main
types.  One looks like this:
.Sp
.Vb 2
\&        [  4](sec  3)(fl 0x00)(ty   0)(scl   3) (nx 1) 0x00000000 .bss
\&        [  6](sec  1)(fl 0x00)(ty   0)(scl   2) (nx 0) 0x00000000 fred
.Ve
.Sp
where the number inside the square brackets is the number of the entry
in the symbol table, the \fIsec\fR number is the section number, the
\&\fIfl\fR value are the symbol's flag bits, the \fIty\fR number is the
symbol's type, the \fIscl\fR number is the symbol's storage class and
the \fInx\fR value is the number of auxilary entries associated with
the symbol.  The last two fields are the symbol's value and its name.
.Sp
The other common output format, usually seen with \s-1ELF\s0 based files,
looks like this:
.Sp
.Vb 2
\&        00000000 l    d  .bss   00000000 .bss
\&        00000000 g       .text  00000000 fred
.Ve
.Sp
Here the first number is the symbol's value (sometimes refered to as
its address).  The next field is actually a set of characters and
spaces indicating the flag bits that are set on the symbol.  These
characters are described below.  Next is the section with which the
symbol is associated or \fI*ABS*\fR if the section is absolute (ie
not connected with any section), or \fI*UND*\fR if the section is
referenced in the file being dumped, but not defined there.
.Sp
After the section name comes another field, a number, which for common
symbols is the alignment and for other symbol is the size.  Finally
the symbol's name is displayed.
.Sp
The flag characters are divided into 7 groups as follows:
.RS 4
.ie n .IP """l""" 4
.el .IP "\f(CWl\fR" 4
.IX Item "l"
.PD 0
.ie n .IP """g""" 4
.el .IP "\f(CWg\fR" 4
.IX Item "g"
.ie n .IP """!""" 4
.el .IP "\f(CW!\fR" 4
.IX Item "!"
.PD
The symbol is local (l), global (g), neither (a space) or both (!).  A
symbol can be neither local or global for a variety of reasons, e.g.,
because it is used for debugging, but it is probably an indication of
a bug if it is ever both local and global.
.ie n .IP """w""" 4
.el .IP "\f(CWw\fR" 4
.IX Item "w"
The symbol is weak (w) or strong (a space).
.ie n .IP """C""" 4
.el .IP "\f(CWC\fR" 4
.IX Item "C"
The symbol denotes a constructor (C) or an ordinary symbol (a space).
.ie n .IP """W""" 4
.el .IP "\f(CWW\fR" 4
.IX Item "W"
The symbol is a warning (W) or a normal symbol (a space).  A warning
symbol's name is a message to be displayed if the symbol following the
warning symbol is ever referenced.
.ie n .IP """I""" 4
.el .IP "\f(CWI\fR" 4
.IX Item "I"
The symbol is an indirect reference to another symbol (I) or a normal
symbol (a space).
.ie n .IP """d""" 4
.el .IP "\f(CWd\fR" 4
.IX Item "d"
.PD 0
.ie n .IP """D""" 4
.el .IP "\f(CWD\fR" 4
.IX Item "D"
.PD
The symbol is a debugging symbol (d) or a dynamic symbol (D) or a
normal symbol (a space).
.ie n .IP """F""" 4
.el .IP "\f(CWF\fR" 4
.IX Item "F"
.PD 0
.ie n .IP """f""" 4
.el .IP "\f(CWf\fR" 4
.IX Item "f"
.ie n .IP """O""" 4
.el .IP "\f(CWO\fR" 4
.IX Item "O"
.PD
The symbol is the name of a function (F) or a file (f) or an object
(O) or just a normal symbol (a space).
.RE
.RS 4
.RE
.IP "\fB\-T\fR" 4
.IX Item "-T"
.PD 0
.IP "\fB\-\-dynamic\-syms\fR" 4
.IX Item "--dynamic-syms"
.PD
Print the dynamic symbol table entries of the file.  This is only
meaningful for dynamic objects, such as certain types of shared
libraries.  This is similar to the information provided by the \fBnm\fR
program when given the \fB\-D\fR (\fB\-\-dynamic\fR) option.
.IP "\fB\-\-special\-syms\fR" 4
.IX Item "--special-syms"
When displaying symbols include those which the target considers to be
special in some way and which would not normally be of interest to the
user.
.IP "\fB\-V\fR" 4
.IX Item "-V"
.PD 0
.IP "\fB\-\-version\fR" 4
.IX Item "--version"
.PD
Print the version number of \fBobjdump\fR and exit.
.IP "\fB\-x\fR" 4
.IX Item "-x"
.PD 0
.IP "\fB\-\-all\-headers\fR" 4
.IX Item "--all-headers"
.PD
Display all available header information, including the symbol table and
relocation entries.  Using \fB\-x\fR is equivalent to specifying all of
\&\fB\-a \-f \-h \-p \-r \-t\fR.
.IP "\fB\-w\fR" 4
.IX Item "-w"
.PD 0
.IP "\fB\-\-wide\fR" 4
.IX Item "--wide"
.PD
Format some lines for output devices that have more than 80 columns.
Also do not truncate symbol names when they are displayed.
.IP "\fB\-z\fR" 4
.IX Item "-z"
.PD 0
.IP "\fB\-\-disassemble\-zeroes\fR" 4
.IX Item "--disassemble-zeroes"
.PD
Normally the disassembly output will skip blocks of zeroes.  This
option directs the disassembler to disassemble those blocks, just like
any other data.
.IP "\fB@\fR\fIfile\fR" 4
.IX Item "@file"
Read command-line options from \fIfile\fR.  The options read are
inserted in place of the original @\fIfile\fR option.  If \fIfile\fR
does not exist, or cannot be read, then the option will be treated
literally, and not removed.  
.Sp
Options in \fIfile\fR 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 \fIfile\fR may itself contain additional
@\fIfile\fR options; any such options will be processed recursively.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
\&\fInm\fR\|(1), \fIreadelf\fR\|(1), and the Info entries for \fIbinutils\fR.
.SH "COPYRIGHT"
.IX Header "COPYRIGHT"
Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
.PP
Permission is granted to copy, distribute and/or modify this document
under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.2
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 \*(L"\s-1GNU\s0 Free Documentation License\*(R".
