\begin{longtable}{ll}
\textbf{Date} & \textbf{Issue Incorporated or Other Change} \\ \hline \\
\endhead
+1/162017 & Changes from meeting of 1/3/2017 \\
12/18/2016 & Changes from meeting of 12/6/2016 \\
10/10-11/26/2016& Miscellaneous editorial tweaks during public review \\
10/6/2016 & Prepare Public Review Draft, delete bullet 7 in 7.4, other tweaks. \\
\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,
\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.
+\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}
\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 & \\
% If draft is in the document class list, pix are just suggested
% by an outline, the pic does not appear as a picture.
%
-\newcommand{\docdate}{January 1, 2017}
+\newcommand{\docdate}{January 16, 2017}
%
\usepackage{ifthen}
\newcommand{\ifthen}[2]{\ifthenelse{#1}{#2}{}}
%
\newdwfnamecommands{DWLANGAdaeightythree}{DW\_LANG\_Ada83}
\newdwfnamecommands{DWLANGAdaninetyfive}{DW\_LANG\_Ada95}
+\newdwfnamecommands{DWLANGBLISS}{DW\_LANG\_BLISS}
\newdwfnamecommands{DWLANGC}{DW\_LANG\_C}
\newdwfnamecommands{DWLANGCeightynine}{DW\_LANG\_C89}
\newdwfnamecommands{DWLANGCninetynine}{DW\_LANG\_C99}
In the descriptions that follow, these terms are used for operands:
\begin{itemize}
-\item A \definitionx{counted location description} operand consists
-of a two-byte unsigned integer giving the length of the location
+\item A \definitionx{counted location description} operand consists of
+\bb
+an unsigned ULEB
+\eb
+integer giving the length of the location
description (see Section \refersec{chap:singlelocationdescriptions})
that immediately follows.
to always describe the size of the string type.
(Previously it described the size of the optional string length data
field if the \DWATstringlengthNAME{} attribute was also present.)
+\bb
+In addition, the \DWATstringlengthNAME{} attribute may now refer directly
+to an object that contains the length value.
+\eb
\end{itemize}
While not strictly an incompatibility, the macro information
the symbol is entered into a bucket whose index is the hash value
modulo \texttt{bucket\_count}. The buckets array is indexed starting at 0.
+\bb
+For the purposes of the hash computation, each symbol name should be
+folded according to the simple case folding algorithm defined in the
+"Caseless Matching" subsection of Section 5.18 ("Case Mappings") of
+the \addtoindex{Unicode} Standard, Version 9.0.0. The original symbol
+name, as it appears in the source code, should be stored in the name
+table.
+
+\textit{Thus, two symbols that differ only by case will hash to
+the same slot, but the consumer will be able to distinguish the names
+when appropriate.}
+
+\textit{The simple case folding algorithm is further described
+in the CaseFolding.txt file distributed with the \addtoindex{Unicode}
+Character Database. That file defines four classes of mappings:
+Common (C), Simple (S), Full (F), and Turkish (T).
+The hash computation specified here uses the C + S mappings only,
+which do not affect the total length of the string.}
+\eb
+
Each bucket contains the index of an entry in the hashes array. The
hashes array is indexed starting at 1, and an empty bucket is
represented by the value 0.
using an \addtoindex{imported unit entry}
(see Section \refersec{chap:importedunitentries}).}
-\textit{A
-combined split and partial
-compilation unit kind is not defined.}
+\bb
+\textit{A partial compilation unit is not defined for use
+within a split object file.}
+\eb
\textit{In the remainder of this document, the word
\doublequote{compilation} in the phrase \doublequote{compilation unit}
See Appendix \refersec{app:dwarfcompressionandduplicateeliminationinformative}
for discussion of related compression techniques.}
-A compilation unit entry owns debugging information
+\bb
+A full or partial
+\eb
+compilation unit entry owns debugging information
entries that represent all or part of the declarations
made in the corresponding compilation. In the case of a
partial compilation unit, the containing scope of its owned
partial compilation unit (see
Section \refersec{chap:importedunitentries}).
-Compilation unit entries may have the following
-attributes:
+\bb
+A full or partial compilation unit entry
+\eb
+may have the following attributes:
\begin{enumerate}[1. ]
\item Either a \DWATlowpc{} and
\DWAThighpc{} pair of
\addtoindexx{ISO-defined language names}
\DWLANGAdaeightythreeTARG{} \dag & ISO Ada:1983 \addtoindexx{Ada:1983 (ISO)} \\
\DWLANGAdaninetyfiveTARG{} \dag & ISO Ada:1995 \addtoindexx{Ada:1995 (ISO)} \\
+\bb
+\DWLANGBLISSTARG & BLISS \addtoindexx{BLISS}
+\eb
+\\
\DWLANGCTARG & Non-standardized C, such as K\&R \addtoindexx{C!non-standard} \\*
\DWLANGCeightynineTARG & ISO C:1989 \addtoindexx{C:1989 (ISO)} \\*
\DWLANGCninetynineTARG & ISO C:1999 \addtoindexx{C:1999 (ISO)} \\*
\hline
&&&&& \\
-0x00 & \XXLLEsl & [9] & 0x002f & 0x0001 & \DWOPregfive~(rdi) \\
-0x09 & \XXLLEsl & [11] & 0x01b9 & 0x0001 & \DWOPregthree~(rbx) \\
-0x12 & \XXLLEsl & [29] & 0x0003 & 0x0003 & \DWOPbregtwelve~(r12): -8;\\
+0x00 & \XXLLEsl & [9] & 0x002f & \bb 0x01 \eb& \DWOPregfive~(rdi) \\
+0x09 & \XXLLEsl & [11] & 0x01b9 & \bb 0x01 \eb& \DWOPregthree~(rbx) \\
+0x12 & \XXLLEsl & [29] & 0x0003 & \bb 0x03 \eb& \DWOPbregtwelve~(r12): -8;\\
& & & & & \DWOPstackvalue \\
-0x1d & \XXLLEsl & [31] & 0x0001 & 0x0003 & \DWOPentryvalue: \\
+0x1d & \XXLLEsl & [31] & 0x0001 & \bb 0x03 \eb& \DWOPentryvalue: \\
& & & & & (\DWOPregfive~(rdi)); \\
& & & & & \DWOPstackvalue \\
0x29 & \XXLLEeol &&&& \\
------ &&&&& \\
-0x2a & \XXLLEsl & [9] & 0x002f & 0x0001 & \DWOPregfour~(rsi)) \\
-0x33 & \XXLLEsl & [11] & 0x01ba & 0x0003 & \DWOPregsix~(rbp)) \\
-0x3c & \XXLLEsl & [30] & 0x0003 & 0x0003 & \DWOPentryvalue: \\
+0x2a & \XXLLEsl & [9] & 0x002f & \bb 0x01 \eb& \DWOPregfour~(rsi)) \\
+0x33 & \XXLLEsl & [11] & 0x01ba & \bb 0x03 \eb& \DWOPregsix~(rbp)) \\
+0x3c & \XXLLEsl & [30] & 0x0003 & \bb 0x03 \eb& \DWOPentryvalue: \\
& & & & & (\DWOPregfour~(rsi)); \\
& & & & & \DWOPstackvalue \\
0x48 & \XXLLEeol &&&& \\
------ &&&&& \\
-0x49 & \XXLLEsl & [10] & 0x0004 & 0x0001 & \DWOPregeighteen~(xmm1) \\
-0x52 & \XXLLEsl & [11] & 0x01bd & 0x0002 & \DWOPfbreg: -36 \\
+0x49 & \XXLLEsl & [10] & 0x0004 & \bb 0x01 \eb& \DWOPregeighteen~(xmm1) \\
+0x52 & \XXLLEsl & [11] & 0x01bd & \bb 0x02 \eb& \DWOPfbreg: -36 \\
0x5c & \XXLLEeol &&&& \\
&&&& \\
\end{tabular}
The\hypertarget{chap:DWATstringlengthstringlengthofstringtype}{}
string type entry may also have a
-\DWATstringlengthDEFN{} attribute
-whose
-\addtoindexx{string length attribute}
-value is a
-\addtoindex{location description} yielding the location
+\DWATstringlengthDEFN{} attribute\addtoindexx{string length attribute}
+whose value is
+\bb
+either a \livelink{chap:classreference}{reference}
+(see Section \ref{chap:staticanddynamicvaluesofattributes})
+yielding the length of the string
+or a \addtoindex{location description} yielding the location
+\eb
where the length of the string is stored in the program.
If the \DWATstringlengthNAME{} attribute is not present, the size
of the string is assumed to be the amount of storage that is