.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07)
.\"
.\" Standard preamble:
.\" ========================================================================
.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.  \*(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-
.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\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD.  Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.ie \nF \{\
.    de IX
.    tm Index:\\$1\t\\n%\t"\\$2"
..
.    nr % 0
.    rr F
.\}
.el \{\
.    de IX
..
.\}
.\"
.\" 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 "2014-10-15" "binutils-2.22.0" "GNU Development Tools"
.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.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\-P\fR \fIoptions\fR|\fB\-\-private=\fR\fIoptions\fR]
        [\fB\-r\fR|\fB\-\-reloc\fR]
        [\fB\-R\fR|\fB\-\-dynamic\-reloc\fR]
        [\fB\-s\fR|\fB\-\-full\-contents\fR]
        [\fB\-W[lLiaprmfFsoRt]\fR|
         \fB\-\-dwarf\fR[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames\-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]]
        [\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\-\-prefix=\fR\fIprefix\fR]
        [\fB\-\-prefix\-strip=\fR\fIlevel\fR]
        [\fB\-\-insn\-width=\fR\fIwidth\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,\-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.
.Sp
If the target is an \s-1ARM\s0 architecture this switch also has the effect
of forcing the disassembler to decode pieces of data found in code
sections as if they were 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.
.Sp
If the target is an \s-1ARM\s0 architecture then this switch has an
additional effect.  It restricts the disassembly to only those
instructions supported by the architecture specified by \fImachine\fR.
If it is necessary to use this switch because the input file does not
contain any architecture information, but it is also desired to
disassemble all the instructions use \fB\-marm\fR.
.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 PowerPC, \fBbooke\fR controls the 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(CIABI\f(CW""" 4
.el .IP "\f(CWgpr\-names=\f(CIABI\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(CIABI\f(CW""" 4
.el .IP "\f(CWfpr\-names=\f(CIABI\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(CIARCH\f(CW""" 4
.el .IP "\f(CWcp0\-names=\f(CIARCH\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(CIARCH\f(CW""" 4
.el .IP "\f(CWhwr\-names=\f(CIARCH\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(CIABI\f(CW""" 4
.el .IP "\f(CWreg\-names=\f(CIABI\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(CIARCH\f(CW""" 4
.el .IP "\f(CWreg\-names=\f(CIARCH\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\-P\fR \fIoptions\fR" 4
.IX Item "-P options"
.PD 0
.IP "\fB\-\-private=\fR\fIoptions\fR" 4
.IX Item "--private=options"
.PD
Print information that is specific to the object file format.  The
argument \fIoptions\fR is a comma separated list that depends on the
format (the lists of options is displayed with the help).
.Sp
For \s-1XCOFF\s0, the available options are: \fBheader\fR, \fBaout\fR,
\&\fBsections\fR, \fBsyms\fR, \fBrelocs\fR, \fBlineno\fR,
\&\fBloader\fR, \fBexcept\fR, \fBtypchk\fR, \fBtraceback\fR
and \fBtoc\fR.
.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.  As for \fB\-r\fR, if used with \fB\-d\fR or
\&\fB\-D\fR, the relocations are printed interspersed with the
disassembly.
.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\-\-prefix=\fR\fIprefix\fR" 4
.IX Item "--prefix=prefix"
Specify \fIprefix\fR to add to the absolute paths when used with
\&\fB\-S\fR.
.IP "\fB\-\-prefix\-strip=\fR\fIlevel\fR" 4
.IX Item "--prefix-strip=level"
Indicate how many initial directory names to strip off the hardwired
absolute paths. It has no effect without \fB\-\-prefix=\fR\fIprefix\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\-\-insn\-width=\fR\fIwidth\fR" 4
.IX Item "--insn-width=width"
Display \fIwidth\fR bytes on a single line when disassembling
instructions.
.IP "\fB\-W[lLiaprmfFsoRt]\fR" 4
.IX Item "-W[lLiaprmfFsoRt]"
.PD 0
.IP "\fB\-\-dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames\-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]\fR" 4
.IX Item "--dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]"
.PD
Displays the contents of the debug sections in the file, if any are
present.  If one of the optional letters or words follows the switch
then only data found in those specific sections will be dumped.
.Sp
Note that there is no single letter option to display the content of
trace sections or .gdb_index.
.Sp
Note: the output from the \fB=info\fR option can also be affected
by the options \fB\-\-dwarf\-depth\fR and \fB\-\-dwarf\-start\fR.
.IP "\fB\-\-dwarf\-depth=\fR\fIn\fR" 4
.IX Item "--dwarf-depth=n"
Limit the dump of the \f(CW\*(C`.debug_info\*(C'\fR section to \fIn\fR children.
This is only useful with \fB\-\-dwarf=info\fR.  The default is
to print all DIEs; the special value 0 for \fIn\fR will also have this
effect.
.Sp
With a non-zero value for \fIn\fR, DIEs at or deeper than \fIn\fR
levels will not be printed.  The range for \fIn\fR is zero-based.
.IP "\fB\-\-dwarf\-start=\fR\fIn\fR" 4
.IX Item "--dwarf-start=n"
Print only DIEs beginning with the \s-1DIE\s0 numbered \fIn\fR.  This is only
useful with \fB\-\-dwarf=info\fR.
.Sp
If specified, this option will suppress printing of any header
information and all DIEs before the \s-1DIE\s0 numbered \fIn\fR.  Only
siblings and children of the specified \s-1DIE\s0 will be printed.
.Sp
This can be used in conjunction with \fB\-\-dwarf\-depth\fR.
.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 """u""" 4
.el .IP "\f(CWu\fR" 4
.IX Item "u"
.ie n .IP """!""" 4
.el .IP "\f(CW!\fR" 4
.IX Item "!"
.PD
The symbol is a local (l), global (g), unique global (u), neither
global nor local (a space) or both global and local (!).  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.  Unique global symbols are
a \s-1GNU\s0 extension to the standard set of \s-1ELF\s0 symbol bindings.  For such
a symbol the dynamic linker will make sure that in the entire process
there is just one symbol with this name and type in use.
.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"
.PD 0
.ie n .IP """i""" 4
.el .IP "\f(CWi\fR" 4
.IX Item "i"
.PD
The symbol is an indirect reference to another symbol (I), a function
to be evaluated during reloc processing (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, 2009, 2010, 2011
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.3
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".
