.\" 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, preceded 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 preceded 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".
