\DWLANGlouserMARK{}\DWLANGhiuserMARK{}DW\_LANG,
\DWLNCTlouserMARK{}\DWLNCThiuserMARK{}DW\_LNCT,
\DWLNElouserMARK{}\DWLNEhiuserMARK{}DW\_LNE,
-\DWMACROlouserMARK{}\DWMACROhiuserMARK{}DW\_MACRO,
-\DWOPlouserMARK{}\DWOPhiuserMARK{}DW\_OP or
-\DWTAGlouserMARK{}\DWTAGhiuserMARK{}DW\_TAG)
+\DWMACROlouserMARK{}\DWMACROhiuserMARK{}DW\_MACRO,
+\bb
+\DWOPlouserMARK{}\DWOPhiuserMARK{}DW\_OP,
+\DWTAGlouserMARK{}\DWTAGhiuserMARK{}DW\_TAG,
+\DWUTlouserMARK{}\DWUThiuserMARK{}DW\_UT)
+\eb
followed by \_lo\_user or \_hi\_user.
Values in the range between \textit{prefix}\_lo\_user
and \textit{prefix}\_hi\_user inclusive,
contains all addresses and constants that require
link-time relocation, and items in the table can be
referenced indirectly from the debugging information via
-the \DWFORMaddrx{} form,
+the \DWFORMaddrxXNand{} forms,
by the \DWOPaddrx{} and \DWOPconstx{} operators, and
by certain of the \texttt{DW\_LLE\_*} location list
and \texttt{DW\_RLE\_*} range list entries.
\item
A string table, in the \dotdebugstr{} section. The string
table is necessary only if the skeleton compilation unit
-uses either indirect string form, \DWFORMstrp{} or
-\DWFORMstrx.
+\bb
+uses one of the indirect string forms (\DWFORMstrp{},
+\DWFORMstrxXNor).
+\eb
+\needlines{4}
\item
A string offsets table, in the \dotdebugstroffsets{}
section for strings in the \dotdebugstr{} section.
The string offsets table is necessary only if
-the skeleton compilation unit uses the \DWFORMstrx{} form.
+the skeleton compilation unit uses
+\bb
+one of the indexed string forms
+\eb
+(\DWFORMstrxXN).
\end{itemize}
The attributes contained in the skeleton compilation
unit can be used by a DWARF consumer to find the
The full compilation unit, in the \dotdebuginfodwo{} section.
Attributes contained in the full compilation unit
-may refer to machine addresses indirectly using the \DWFORMaddrx{}
-form, which accesses the table of addresses specified by the
+may refer to machine addresses indirectly using
+\bb
+one of the
+\eb
+\DWFORMaddrxXNor{}
+forms, which access the table of addresses specified by the
\DWATaddrbase{} attribute in the associated skeleton unit.
Location descriptions may similarly do so using the \DWOPaddrx{} and
\DWOPconstx{} operations.
header, a section table, a number of DWARF debug information
sections, and two index sections.
-\needlines{10}
+%\needlines{8}
Each DWARF package file contains no more than one of each of the
following sections, copied from a set of object or DWARF object
files, and combined, section by section:
\end{alltt}
The string table section in \dotdebugstrdwo{} contains all the
-strings referenced from DWARF attributes using the form
-\DWFORMstrx. Any attribute in a compilation unit or a type
+strings referenced from DWARF attributes using
+\bb
+any of the forms
+\eb
+\DWFORMstrxXNor. Any attribute in a compilation unit or a type
unit using this form refers to an entry in that unit's
contribution to the \dotdebugstroffsetsdwo{} section, which in turn
provides the offset of a string in the \dotdebugstrdwo{}
\subsection{Unit Headers}
\label{datarep:unitheaders}
Unit headers contain a field, \addttindex{unit\_type}, whose value indicates the kind of
-compilation unit that follows. The encodings for the unit type
+compilation unit
+\bb
+(see Section \ref{chap:unitentries})
+\eb
+that follows. The encodings for the unit type
enumeration are shown in Table \refersec{tab:unitheaderunitkindencodings}.
\needlines{6}
\end{longtable}
\end{centering}
-\textit{All unit headers in a compilation have the same size.
-Some header types include padding bytes to achieve this.}
+\bb
+All unit headers have the same initial three fields: \HFNinitiallength, \HFNversion{} and \HFNunittype.
+\eb
\needlines{5}
-\subsubsection{Compilation and Partial Unit Headers}
+\bb
+\subsubsection{Full and Partial Compilation Unit Headers}
+\eb
\label{datarep:compilationunitheader}
\begin{enumerate}[1. ]
\addttindexx{unit\_type}
A 1-byte unsigned integer identifying this unit as a compilation unit.
The value of this field is
-\DWUTcompile{} for a full compilation unit or
-\DWUTpartial{} for a partial compilation unit
+\DWUTcompile{} for a
+\bb
+(non-split) full compilation unit or
+\DWUTpartial{} for a (non-split) partial compilation unit
+\eb
(see Section \refersec{chap:fullandpartialcompilationunitentries}).
+\textit{See
+\bb
+Section \ref{datarep:skeletonandfullcompilationunitheaders}
+regarding a split full compilation unit.
+\eb}
+
\textit{This field is new in \DWARFVersionV.}
\needlines{4}
in the \sixtyfourbitdwarfformat, this is an 8-byte unsigned length
(see Section \refersec{datarep:32bitand64bitdwarfformats}).
-\item \HFNunitpaddingONE{} (8 bytes) \\
-Reserved to DWARF (must be zero).
-
-\needlines{4}
-\item \HFNunitpaddingTWO{} (4 or 8 bytes) \\
-Reserved to DWARF (must be zero). In the \thirtytwobitdwarfformat,
-this is 4 bytes in length; in the \sixtyfourbitdwarfformat, this
-is 8 bytes in length.
+\bbpareb
\end{enumerate}
\needlines{8}
A 1-byte unsigned integer identifying this unit as a compilation unit.
The value of this field is
\DWUTskeleton{} for a skeleton compilation unit or
-\DWUTsplitcompile{} for a split compilation unit
+\DWUTsplitcompile{} for a split
+\bb
+(full)
+\eb
+compilation unit
(see Section \refersec{chap:skeletoncompilationunitentries}).
+\textit{There
+\bb
+is no split analog to the partial compilation unit.
+\eb}
+
\textit{This field is new in \DWARFVersionV.}
\needlines{4}
the object file named in the \DWATdwoname{} attribute
of the skeleton compilation.
-\needlines{4}
-\item \HFNunitpaddingTWO{} (4 or 8 bytes) \\
-Reserved to DWARF (must be zero). In the \thirtytwobitdwarfformat,
-this is 4 bytes in length; in the \sixtyfourbitdwarfformat{}, this
-is 8 bytes in length.
+\bbpareb
\end{enumerate}
\needlines{8}
the primary type contained in this
\addtoindex{type unit} uses this value.}
-%\needlines{8}
+\needlines{8}
\item \texttt{type\_offset} (\livelink{datarep:sectionoffsetlength}{section offset}) \\
\addttindexx{type\_offset}
A 4-byte or 8-byte unsigned offset
\subsection{Abbreviations Tables}
\label{datarep:abbreviationstables}
-
The abbreviations tables for all compilation units
are contained in a separate object file section called
\dotdebugabbrev{}.
tag names are given in
Table \refersec{tab:tagencodings}.
-\needlines{6}
+\needlines{10}
\begin{centering}
\setlength{\extrarowheight}{0.1cm}
\begin{longtable}{l|c}
is relocated in an executable file or shared object file.
\item An indirect index into a table of addresses (as
-described in the previous bullet) in the
-\dotdebugaddr{} section (\DWFORMaddrxTARG).
+described in the previous bullet) in the \dotdebugaddr{} section
+\bb
+(\DWFORMaddrxTARG, \DWFORMaddrxoneTARG, \DWFORMaddrxtwoTARG,
+\DWFORMaddrxthreeTARG{} and \DWFORMaddrxfourTARG).
+\eb
The representation of a \DWFORMaddrxNAME{} value is an unsigned
\addtoindex{LEB128} value, which is interpreted as a zero-based
index into an array of addresses in the \dotdebugaddr{} section.
+\bb
+The representation of a \DWFORMaddrxoneNAME, \DWFORMaddrxtwoNAME,
+\DWFORMaddrxthreeNAME{} or \DWFORMaddrxfourNAME{} value is a
+1-, 2-, 3- or 4-byte unsigned integer value, respectively,
+which is similarly interpretated.
+\eb
The index is relative to the value of the \DWATaddrbase{} attribute
of the associated compilation unit.
or location description
(see Section \refersec{chap:locationdescriptions}).
-\needlines{4}
+\needlines{8}
\item \CLASSflag \\
\livetarg{datarep:classflag}{}
A flag \addtoindexx{flag class}
\textit{This class is new in \DWARFVersionV.}
-\needlines{4}
+\needlines{8}
\item \CLASSreference \\
\livetarg{datarep:classreference}{}
There are four types of reference.\addtoindexx{reference class}
A string may be represented:
\begin{itemize}
\setlength{\itemsep}{0em}
-\item immediately in the debugging information entry itself
+\item Immediately in the debugging information entry itself
(\DWFORMstringTARG),
-\item as an
+\item As an
\addtoindexx{section offset!in class string value}
offset into a string table contained in
the \dotdebugstr{} section of the object file (\DWFORMstrpTARG),
(see Section \refersec{datarep:32bitand64bitdwarfformats}).
\needlines{6}
-\item as an indirect offset into the string table using an
+\item As an indirect offset into the string table using an
index into a table of offsets contained in the
-\dotdebugstroffsets{} section of the object file (\DWFORMstrxTARG).
+\dotdebugstroffsets{} section of the object file
+\bb
+(\DWFORMstrxTARG, \DWFORMstrxoneTARG, \DWFORMstrxtwoTARG, \DWFORMstrxthreeTARG{} and \DWFORMstrxfourTARG).
+\eb
The representation of a \DWFORMstrxNAME{} value is an unsigned
\addtoindex{LEB128} value, which is interpreted as a zero-based
-index into an array of offsets in the \dotdebugstroffsets{} section.
+index into an array of offsets in the \dotdebugstroffsets{} section.
+\bb
+The representation of a \DWFORMstrxoneNAME, \DWFORMstrxtwoNAME,
+\DWFORMstrxthreeNAME{} or \DWFORMstrxfourNAME{} value is a
+1-, 2-, 3- or 4-byte unsigned integer value, respectively,
+which is similarly interpretated.
+\eb
The offset entries in the \dotdebugstroffsets{} section have the
same representation as \DWFORMstrp{} values.
\end{itemize}
& & \CLASSmacptr, \CLASSrnglist, \CLASSrnglistsptr, \CLASSstroffsetsptr \\
\DWFORMexprloc{} &0x18&\livelink{chap:classexprloc}{exprloc} \\
\DWFORMflagpresent{} &0x19&\livelink{chap:classflag}{flag} \\
-\DWFORMstrx{} \ddag &0x1a&\livelink{chap:classstring}{string} \\
-\DWFORMaddrx{} \ddag &0x1b&\livelink{chap:classaddress}{address} \\
-\DWFORMrefsupfour{}~\ddag &0x1c &\livelink{chap:classreference}{reference} \\
-\DWFORMstrpsup{}~\ddag &0x1d &\livelink{chap:classstring}{string} \\
-\DWFORMdatasixteen~\ddag &0x1e &\CLASSconstant \\
-\DWFORMlinestrp~\ddag &0x1f &\CLASSstring \\
-\DWFORMrefsigeight &0x20 &\livelink{chap:classreference}{reference} \\
+\DWFORMstrx{} \ddag &0x1a &\CLASSstring \\
+\DWFORMaddrx{} \ddag &0x1b &\CLASSaddress \\
+\DWFORMrefsupfour{}~\ddag &0x1c &\CLASSreference \\
+\DWFORMstrpsup{}~\ddag &0x1d &\CLASSstring \\
+\DWFORMdatasixteen~\ddag &0x1e &\CLASSconstant \\
+\DWFORMlinestrp~\ddag &0x1f &\CLASSstring \\
+\DWFORMrefsigeight &0x20 &\CLASSreference \\
\DWFORMimplicitconst~\ddag &0x21 &\CLASSconstant \\
-\DWFORMloclistx~\ddag &0x22 &\CLASSloclist \\
-\DWFORMrnglistx~\ddag &0x23 &\CLASSrnglist \\
+\DWFORMloclistx~\ddag &0x22 &\CLASSloclist \\
+\DWFORMrnglistx~\ddag &0x23 &\CLASSrnglist \\
\DWFORMrefsupeight{}~\ddag &0x24 &\CLASSreference \\
+\bb
+\DWFORMstrxone{}~\ddag &0x25 &\CLASSstring \\
+\DWFORMstrxtwo{}~\ddag &0x26 &\CLASSstring \\
+\DWFORMstrxthree{}~\ddag &0x27 &\CLASSstring \\
+\DWFORMstrxfour{}~\ddag &0x28 &\CLASSstring \\
+\DWFORMaddrxone{}~\ddag &0x29 &\CLASSaddress \\
+\DWFORMaddrxtwo{}~\ddag &0x2a &\CLASSaddress \\
+\DWFORMaddrxthree{}~\ddag &0x2b &\CLASSaddress \\
+\eb
+\DWFORMaddrxfour{}~\ddag &0x2c &\CLASSaddress \\
\end{longtable}
\end{centering}
\DWLANGCplusplusfourteen{}~\ddag &0x0021 &0 \addtoindexx{C++14 (ISO)} \\
\DWLANGFortranzerothree{}~\ddag &0x0022 &1 \addtoindexx{Fortran:2004 (ISO)} \\
\DWLANGFortranzeroeight{}~\ddag &0x0023 &1 \addtoindexx{Fortran:2010 (ISO)} \\
-\DWLANGRenderScript{}~\ddag &0x0024 &0 \addtoindexx{RenderScript Kernel Language}
+\DWLANGRenderScript{}~\ddag &0x0024 &0 \addtoindexx{RenderScript Kernel Language} \\
+\bb
+\DWLANGBLISS{} \ddag &0x0025 &0 \addtoindexx{BLISS}
+\eb
\\
\DWLANGlouser{} &0x8000 & \\
\DWLANGhiuser{} &\xffff & \\
\end{longtable}
\end{centering}
+\needlines{8}
\section{Calling Convention Encodings}
\label{datarep:callingconventionencodings}
The encodings of the constants used in the
% this clearpage is ugly, but the following table came
% out oddly without it.
+\needlines{10}
\section{Array Ordering}
\label{datarep:arrayordering}
The \addtoindexi{version number}{version number!name index table}
in the name index table header is \versiondotdebugnames{}.
-The name index attributes and their encodings are listed in Table \referfol{datarep:indexattributeencodings}.
+The name index attributes and their encodings are listed in Table \refersec{datarep:indexattributeencodings}.
+\needlines{14}
\begin{centering}
\setlength{\extrarowheight}{0.1cm}
\begin{longtable}{l|c|l}