.\" Modified from readelf.1 man page
.\" Tue 2019-Aug 20 by Ben Woodard <woodard@redhat.com>
.\" Contact elfutils-devel@sourceware.org to correct errors or typos.
.\"
.\" 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 \\$1q
..
.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" ''
.    ds C`
.    ds C'
'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 >0, 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.
.\"
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
.if !\nF .nr F 0
.if \nF>0 \{\
.    de IX
.    tm Index:\\$1\t\\n%\t"\\$2"
..
.    if !\nF==2 \{\
.        nr % 0
.        nr F 2
.    \}
.\}
.\"
.\" 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 "EU-READELF 1"
.TH EU-READELF 1 "2019-Aug-20" "elfutils" 
.\" 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"
eu-readelf \- Displays information about ELF files.
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
eu-readelf [\fB\-a\fR|\fB\-\-all\fR]
        [\fB\-h\fR|\fB\-\-file\-header\fR]
        [\fB\-l\fR|\fB\-\-program\-headers\fR|\fB\-\-segments\fR]
        [\fB\-S\fR|\fB\-\-section\-headers\fR|\fB\-\-sections\fR]
        [\fB\-g\fR|\fB\-\-section\-groups\fR]
        [\fB\-e\fR|\fB\-\-exception\fR]
        [\fB\-s\fR|\fB\-\-symbols\fR] [section name] ]
        [\fB\-\-dyn-syms\fR]
        [\fB\-n\fR|\fB\-\-notes\fR [section name] ]
        [\fB\-r\fR|\fB\-\-relocs\fR]
        [\fB\-d\fR|\fB\-\-dynamic\fR]
        [\fB\-V\fR|\fB\-\-version\-info\fR]
        [\fB\-A\fR|\fB\-\-arch\-specific\fR]
        [\fB\-x\fR <number or name>|\fB\-\-hex\-dump=\fR<number or name>]
        [\fB\-p\fR <number or name>|\fB\-\-string\-dump=\fR<number or name>]
        [\fB\-z\fR|\fB\-\-decompress\fR]
        [\fB\-c\fR|\fB\-\-archive\-index\fR]
        [\fB\-\-dwarf\-skeleton\fR <file> ]
        [\fB\-\-elf\-section\fR [section] ]
        [\fB\-w\fR|
         \fB\-\-debug\-dump\fR[=line,=decodedline,=info,=info+,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=ranges,=gdb_index,=addr]]
        [\fB\-I\fR|\fB\-\-histogram\fR]
        [\fB\-v\fR|\fB\-\-version\fR]
        [\fB\-W\fR|\fB\-\-wide\fR]
        [\fB\-H\fR|\fB\-\-help\fR]
        \fIelffile\fR...
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
\&\fBeu-readelf\fR displays information about one or more \s-1ELF\s0 format object
files.  The options control what particular information to display.
.PP
\&\fIelffile\fR... are the object files to be examined.  32\-bit and
64\-bit \s-1ELF\s0 files are supported, as are archives containing \s-1ELF\s0 files.
.PP
This program performs a similar function to \fBobjdump\fR but it
goes into more detail and it exists independently of the \s-1BFD\s0
library, so if there is a bug in \s-1BFD\s0 then readelf will not be
affected.
.SH "OPTIONS"
.IX Header "OPTIONS"
The long and short forms of options, shown here as alternatives, are
equivalent.  At least one option in addition to \fB\-v\fR or \fB\-H\fR must be
given.
.SS "ELF Input Selection"
.IX Subsection "ELF Input Selection"
.IP "\fB\-\-dwarf\-skeleton <file>\fR" 4
.IX Item "--dwarf-skeleton <file>"
.PD
Used with -w to find the skeleton Compile Units in FILE associated
with the Split Compile units in a .dwo input file.
.IP "\fB\-\-elf\-section [section]\fR" 4
.IX Item "--elf-section [section]"
.PD
Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data
.SS "ELF Output Selection"
.IX Subsection "ELF Output Selection"
.IP "\fB\-a\fR" 4
.IX Item "-a"
.PD 0
.IP "\fB\-\-all\fR" 4
.IX Item "--all"
.PD
Equivalent to specifying \fB\-\-file\-header\fR,
\&\fB\-\-program\-headers\fR, \fB\-\-sections\fR, \fB\-\-symbols\fR,
\&\fB\-\-relocs\fR, \fB\-\-dynamic\fR, \fB\-\-notes\fR,
\&\fB\-\-version\-info\fR, \fB\-\-arch\-specific\fR,
\&\fB\-\-section\-groups\fR and \fB\-\-histogram\fR.
.Sp
.IP "\fB\-h\fR" 4
.IX Item "-h"
.PD 0
.IP "\fB\-\-file\-header\fR" 4
.IX Item "--file-header"
.PD
Displays the information contained in the \s-1ELF\s0 header at the start of the
file.
.IP "\fB\-l\fR" 4
.IX Item "-l"
.PD 0
.IP "\fB\-\-program\-headers\fR" 4
.IX Item "--program-headers"
.IP "\fB\-\-segments\fR" 4
.IX Item "--segments"
.PD
Displays the information contained in the file's segment headers, if it
has any.
.IP "\fB\-S\fR" 4
.IX Item "-S"
.PD 0
.IP "\fB\-\-sections\fR" 4
.IX Item "--sections"
.IP "\fB\-\-section\-headers\fR" 4
.IX Item "--section-headers"
.PD
Displays the information contained in the file's section headers, if it
has any.
.IP "\fB\-g\fR" 4
.IX Item "-g"
.PD 0
.IP "\fB\-\-section\-groups\fR" 4
.IX Item "--section-groups"
.PD
Displays the information contained in the file's section groups, if it
has any.
.IP "\fB\-I\fR" 4
.IX Item "-I"
.PD 0
.IP "\fB\-\-histogram\fR" 4
.IX Item "--histogram"
.PD
Display a histogram of bucket list lengths when displaying the contents
of the symbol tables.
.IP "\fB\-s\fR" 4
.IX Item "-s"
.PD 0
.IP "\fB\-\-symbols\fR [section name]" 4
.IX Item "--symbols"
.PD
Displays the entries in symbol table section of the file, if it has one.
If a symbol has version information associated with it then this is
displayed as well.  The version string is displayed as a suffix to the
symbol name, preceeded by an @ character.  For example
\&\fBfoo@VER_1\fR.  If the version is the default version to be used
when resolving unversioned references to the symbol then it is
displayed as a suffix preceeded by two @ characters.  For example
\&\fBfoo@@VER_2\fR.
.IP "\fB\-\-dyn-syms\fR" 4
.IX Item "--dyn-syms"
.PD
Display (only) the dynamic symbol table.
.IP "\fB\-e\fR" 4
.IX Item "-e"
.PD 0
.IP "\fB\-\-exception\fR" 4
.IX Item "--exception"
.PD
Display sections for exception handling.
.IP "\fB\-n\fR" 4
.IX Item "-n [section name]"
.PD 0
.IP "\fB\-\-notes [section name]\fR" 4
.IX Item "--notes"
.PD
Displays the contents of the \s-1NOTE\s0 segments and/or sections, if any.
.IP "\fB\-r\fR" 4
.IX Item "-r"
.PD 0
.IP "\fB\-\-relocs\fR" 4
.IX Item "--relocs"
.PD
Displays the contents of the file's relocation section, if it has one.
.IP "\fB\-d\fR" 4
.IX Item "-d"
.PD 0
.IP "\fB\-\-dynamic\fR" 4
.IX Item "--dynamic"
.PD
Displays the contents of the file's dynamic section, if it has one.
.IP "\fB\-V\fR" 4
.IX Item "-V"
.PD 0
.IP "\fB\-\-version\-info\fR" 4
.IX Item "--version-info"
.PD
Displays the contents of the version sections in the file, it they
exist.
.IP "\fB\-A\fR" 4
.IX Item "-A"
.PD 0
.IP "\fB\-\-arch\-specific\fR" 4
.IX Item "--arch-specific"
.PD
Displays architecture-specific information in the file, if there
is any.
.SS "Additional output selection"
.IX Subsection "Additional output selection"
.IP "\fB\-x <name>\fR" 4
.IX Item "-x <name>"
.PD 0
.IP "\fB\-\-hex\-dump=<name>\fR" 4
.IX Item "--hex-dump=<name>"
.PD
Displays the contents of the indicated section name as a hexadecimal bytes.
.IP "\fB\-w\fR" 4
.IX Item "-w"
.PD 0
.IP "\fB\-\-debug\-dump[=decodedline,=info,=info+,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=ranges,=gdb_index,=addr]\fR" 4
.IX Item "--debug-dump[=line,=decodedline,=info,=info+,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=ranges,=gdb_index,=addr]"
.PD
Displays the contents of the \s-1DWARF\s0 debug sections in the file, if any
are present.  Compressed debug sections are automatically decompressed
(temporarily) before they are displayed.  If one or more of the
optional letters or words follows the switch then only those type(s)
of data will be dumped.  The letters and words refer to the following
information:
.RS 4
.PD 0
.ie n .IP """=abbrev""" 4
.el .IP "\f(CW=abbrev\fR" 4
.IX Item "=abbrev"
.PD
Displays the contents of the \fB.debug_abbrev\fR section.
.PD 0
.ie n .IP """=addr""" 4
.el .IP "\f(CW=addr\fR" 4
.IX Item "=addr"
.PD
Displays the contents of the \fB.debug_addr\fR section.
.PD 0
.ie n .IP """=frames""" 4
.el .IP "\f(CW=frames\fR" 4
.IX Item "=frames"
.PD
Display the raw contents of a \fB.debug_frame\fR section.
.PD 0
.ie n .IP """=gdb_index""" 4
.el .IP "\f(CW=gdb_index\fR" 4
.IX Item "=gdb_index"
.PD
Displays the contents of the \fB.gdb_index\fR and/or
\&\fB.debug_names\fR sections.
.PD 0
.ie n .IP """=info""" 4
.el .IP "\f(CW=info\fR" 4
.IX Item "=info"
.PD
Displays the contents of the \fB.debug_info\fR section.
.PD 0
.ie n .IP """=info+""" 4
.el .IP "\f(CW=info+\fR" 4
.IX Item "=info+"
.PD
Displays the contents of the \fB.debug_info\fR section, plus any skeleton
unit will be immediately followed by the corresponding split compile unit
(from the .dwo file).  To show the difference between "regular" CUs and
split CUs print offsets and references between { and } instead of [ and ].
.PD 0
.ie n .IP """=decodedline""" 4
.el .IP "\f(CW=decodedline\fR" 4
.IX Item "=decodedline"
.PD
Displays the interpreted contents of the \fB.debug_line\fR section.
.PD 0
.ie n .IP """=macro""" 4
.el .IP "\f(CW=macro\fR" 4
.IX Item "=macro"
.PD
Displays the contents of the \fB.debug_macro\fR and/or
\&\fB.debug_macinfo\fR sections.
.PD 0
.ie n .IP """=loc""" 4
.el .IP "\f(CW=loc\fR" 4
.IX Item "=loc"
.PD
Displays the contents of the \fB.debug_loc\fR and/or
\&\fB.debug_loclists\fR sections.
.PD 0
.ie n .IP """=pubnames""" 4
.el .IP "\f(CW=pubnames\fR" 4
.IX Item "=pubnames"
.PD
Displays the contents of the \fB.debug_pubnames\fR and/or
\&\fB.debug_gnu_pubnames\fR sections.
.PD 0
.ie n .IP """=aranges""" 4
.el .IP "\f(CW=aranges\fR" 4
.IX Item "=aranges"
.PD
Displays the contents of the \fB.debug_aranges\fR section.
.PD 0
.ie n .IP """=ranges""" 4
.el .IP "\f(CW=ranges\fR" 4
.IX Item "=ranges"
.PD
Displays the contents of the \fB.debug_ranges\fR and/or
\&\fB.debug_rnglists\fR sections.
.PD 0
.ie n .IP """=str""" 4
.el .IP "\f(CW=str\fR" 4
.IX Item "=str"
.PD
Displays the contents of the \fB.debug_str\fR, \fB.debug_line_str\fR
and/or \fB.debug_str_offsets\fR sections.
.PD 0
.RS 4
.Sp
Note: displaying the contents of \fB.debug_static_funcs\fR,
\&\fB.debug_static_vars\fR and \fBdebug_weaknames\fR sections is not
currently supported.
.RE
.IP "\fB\-p <number or name>\fR" 4
.IX Item "-p <number or name>"
.PD 0
.IP "\fB\-\-string\-dump=<number or name>\fR" 4
.IX Item "--string-dump=<number or name>"
.PD
Displays the contents of the indicated section as printable strings.
A number identifies a particular section by index in the section table;
any other string identifies all sections with that name in the object file.
.IP "\fB\-c\fR" 4
.IX Item "-c"
.PD 0
.IP "\fB\-\-archive\-index\fR" 4
.IX Item "--archive-index"
.PD
Displays the file symbol index information contained in the header part
of binary archives.  Performs the same function as the \fBt\fR
command to \fBar\fR, but without using the \s-1BFD\s0 library.
.SS "Output control"
.IX Subsection "Output control"
.IP "\fB\-z\fR" 4
.IX Item "-z"
.PD 0
.IP "\fB\-\-decompress\fR" 4
.IX Item "--decompress"
.PD
Requests that the section(s) being dumped by \fBx\fR, \fBR\fR or
\&\fBp\fR options are decompressed before being displayed.  If the
section(s) are not compressed then they are displayed as is.
.IP "\fB\-v\fR" 4
.IX Item "-v"
.PD 0
.IP "\fB\-\-version\fR" 4
.IX Item "--version"
.PD
Display the version number of eu-readelf.
.IP "\fB\-W\fR" 4
.IX Item "-W"
.PD 0
.IP "\fB\-\-wide\fR" 4
.IX Item "--wide"
.PD
Ignored for compatibility (lines always wide).
.IP "\fB\-H\fR" 4
.IX Item "-H"
.PD 0
.IP "\fB\-\-help\fR" 4
.IX Item "--help"
.PD
Display the command line options understood by \fBeu-readelf\fR.
.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"
\&\fIobjdump\fR\|(1), \fIreadelf\fR\|(1) and the Info entries for
\fIbinutils\fR.
.SH "COPYRIGHT"
.IX Header "COPYRIGHT"
Copyright (c) 1991\-2018 Free Software Foundation, Inc.

Copyright (c) 2019 Red Hat 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".
