summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRon Brender <ron.brender@gmail.com>2017-01-24 16:24:46 -0500
committerRon Brender <ron.brender@gmail.com>2017-01-24 16:24:46 -0500
commit81170075613021ccd8115b2dece13af4488db9c0 (patch)
tree4e34bbb82096a1f751b65ee06e39b08d7a865bee
parentIncorporate 161122.1, the fixed sized variants of DW_FORM_strx. (diff)
downloaddwarf-doc-81170075613021ccd8115b2dece13af4488db9c0.tar.gz
dwarf-doc-81170075613021ccd8115b2dece13af4488db9c0.tar.bz2
dwarf-doc-81170075613021ccd8115b2dece13af4488db9c0.tar.xz
Backup of today's work. Still awaiting a couple more editorial inputs.
Signed-off-by: Ron Brender <ron.brender@gmail.com>
-rw-r--r--dwarf5/latexdoc/changesummary.tex1
-rw-r--r--dwarf5/latexdoc/dataobject.tex11
-rw-r--r--dwarf5/latexdoc/datarepresentation.tex71
-rw-r--r--dwarf5/latexdoc/debugsectionrelationships.tex6
-rw-r--r--dwarf5/latexdoc/dwarf5.tex4
-rw-r--r--dwarf5/latexdoc/dwarfnamecmds.tex13
-rw-r--r--dwarf5/latexdoc/introduction.tex6
-rw-r--r--dwarf5/latexdoc/otherdebugginginformation.tex25
-rw-r--r--dwarf5/latexdoc/programscope.tex2
-rw-r--r--dwarf5/latexdoc/splitobjects.tex37
-rw-r--r--dwarf5/latexdoc/typeentries.tex163
11 files changed, 214 insertions, 125 deletions
diff --git a/dwarf5/latexdoc/changesummary.tex b/dwarf5/latexdoc/changesummary.tex
index 95b4d23..d1df2a0 100644
--- a/dwarf5/latexdoc/changesummary.tex
+++ b/dwarf5/latexdoc/changesummary.tex
@@ -15,6 +15,7 @@ This change summary is included only in draft versions of this document.
15\begin{longtable}{ll} 15\begin{longtable}{ll}
16\textbf{Date} & \textbf{Issue Incorporated or Other Change} \\ \hline \\ 16\textbf{Date} & \textbf{Issue Incorporated or Other Change} \\ \hline \\
17\endhead 17\endhead
181/24/2017 % Changes from meeting of 1/24/2017 \\
181/18/2017 % 161122.1 (fixed size variants of \DWFORMstrxNAM) \\ 191/18/2017 % 161122.1 (fixed size variants of \DWFORMstrxNAM) \\
191/16/2017 & Changes from meeting of 1/3/2017 \\ 201/16/2017 & Changes from meeting of 1/3/2017 \\
2012/18/2016 & Changes from meeting of 12/6/2016 \\ 2112/18/2016 & Changes from meeting of 12/6/2016 \\
diff --git a/dwarf5/latexdoc/dataobject.tex b/dwarf5/latexdoc/dataobject.tex
index 79d4775..6d69c55 100644
--- a/dwarf5/latexdoc/dataobject.tex
+++ b/dwarf5/latexdoc/dataobject.tex
@@ -91,10 +91,13 @@ constant or formal parameter.
91\item If the variable entry represents the defining declaration 91\item If the variable entry represents the defining declaration
92for a C++ static data member of a structure, class or union, 92for a C++ static data member of a structure, class or union,
93the entry has a \DWATspecification{} attribute, whose value is a 93the entry has a \DWATspecification{} attribute, whose value is a
94\livelink{chap:classreference}{reference} to the debugging information entry representing the 94\livelink{chap:classreference}{reference} to the debugging information
95declaration of this data member. The referenced entry has the 95entry representing the declaration of this data member. The referenced
96tag \DWTAGmember{} and will be a child of some class, structure 96entry
97or union type entry. 97\bb
98also has the tag \DWTAGvariable{}
99\eb
100and will be a child of some class, structure or union type entry.
98 101
99If the variable entry represents a 102If the variable entry represents a
100non-defining declaration, \DWATspecification{} may be used 103non-defining declaration, \DWATspecification{} may be used
diff --git a/dwarf5/latexdoc/datarepresentation.tex b/dwarf5/latexdoc/datarepresentation.tex
index 75c8db1..a37a63a 100644
--- a/dwarf5/latexdoc/datarepresentation.tex
+++ b/dwarf5/latexdoc/datarepresentation.tex
@@ -261,7 +261,7 @@ An address table, in the \dotdebugaddr{} section. This table
261contains all addresses and constants that require 261contains all addresses and constants that require
262link-time relocation, and items in the table can be 262link-time relocation, and items in the table can be
263referenced indirectly from the debugging information via 263referenced indirectly from the debugging information via
264the \DWFORMaddrx{} form, 264the \DWFORMaddrxXNand{} forms,
265by the \DWOPaddrx{} and \DWOPconstx{} operators, and 265by the \DWOPaddrx{} and \DWOPconstx{} operators, and
266by certain of the \texttt{DW\_LLE\_*} location list 266by certain of the \texttt{DW\_LLE\_*} location list
267and \texttt{DW\_RLE\_*} range list entries. 267and \texttt{DW\_RLE\_*} range list entries.
@@ -281,6 +281,7 @@ table is necessary only if the skeleton compilation unit
281uses one of the indirect string forms (\DWFORMstrp{}, 281uses one of the indirect string forms (\DWFORMstrp{},
282\DWFORMstrxXNor). 282\DWFORMstrxXNor).
283\eb 283\eb
284\needlines{4}
284\item 285\item
285A string offsets table, in the \dotdebugstroffsets{} 286A string offsets table, in the \dotdebugstroffsets{}
286section for strings in the \dotdebugstr{} section. 287section for strings in the \dotdebugstr{} section.
@@ -307,8 +308,12 @@ file. This partition includes the following:
307The full compilation unit, in the \dotdebuginfodwo{} section. 308The full compilation unit, in the \dotdebuginfodwo{} section.
308 309
309Attributes contained in the full compilation unit 310Attributes contained in the full compilation unit
310may refer to machine addresses indirectly using the \DWFORMaddrx{} 311may refer to machine addresses indirectly using
311form, which accesses the table of addresses specified by the 312\bb
313one of the
314\eb
315\DWFORMaddrxXNor{}
316forms, which access the table of addresses specified by the
312\DWATaddrbase{} attribute in the associated skeleton unit. 317\DWATaddrbase{} attribute in the associated skeleton unit.
313Location descriptions may similarly do so using the \DWOPaddrx{} and 318Location descriptions may similarly do so using the \DWOPaddrx{} and
314\DWOPconstx{} operations. 319\DWOPconstx{} operations.
@@ -415,7 +420,7 @@ corresponding application binary. It consists only of a file
415header, a section table, a number of DWARF debug information 420header, a section table, a number of DWARF debug information
416sections, and two index sections. 421sections, and two index sections.
417 422
418\needlines{10} 423%\needlines{8}
419Each DWARF package file contains no more than one of each of the 424Each DWARF package file contains no more than one of each of the
420following sections, copied from a set of object or DWARF object 425following sections, copied from a set of object or DWARF object
421files, and combined, section by section: 426files, and combined, section by section:
@@ -979,10 +984,9 @@ enumeration are shown in Table \refersec{tab:unitheaderunitkindencodings}.
979\end{centering} 984\end{centering}
980 985
981\bb 986\bb
982All unit headers have the same initial three fields. 987All unit headers have the same initial three fields: \HFNinitiallength, \HFNversion{} and \HFNunittype.
983\eb 988\eb
984 989
985
986\needlines{5} 990\needlines{5}
987\bb 991\bb
988\subsubsection{Full and Partial Compilation Unit Headers} 992\subsubsection{Full and Partial Compilation Unit Headers}
@@ -1215,7 +1219,7 @@ unit.
1215the primary type contained in this 1219the primary type contained in this
1216\addtoindex{type unit} uses this value.} 1220\addtoindex{type unit} uses this value.}
1217 1221
1218%\needlines{8} 1222\needlines{8}
1219\item \texttt{type\_offset} (\livelink{datarep:sectionoffsetlength}{section offset}) \\ 1223\item \texttt{type\_offset} (\livelink{datarep:sectionoffsetlength}{section offset}) \\
1220\addttindexx{type\_offset} 1224\addttindexx{type\_offset}
1221A 4-byte or 8-byte unsigned offset 1225A 4-byte or 8-byte unsigned offset
@@ -1846,11 +1850,20 @@ This address is relocatable in a relocatable object file and
1846is relocated in an executable file or shared object file. 1850is relocated in an executable file or shared object file.
1847 1851
1848\item An indirect index into a table of addresses (as 1852\item An indirect index into a table of addresses (as
1849described in the previous bullet) in the 1853described in the previous bullet) in the \dotdebugaddr{} section
1850\dotdebugaddr{} section (\DWFORMaddrxTARG). 1854\bb
1855(\DWFORMaddrxTARG, \DWFORMaddrxoneTARG, \DWFORMaddrxtwoTARG,
1856\DWFORMaddrxthreeTARG{} and \DWFORMaddrxfourTARG).
1857\eb
1851The representation of a \DWFORMaddrxNAME{} value is an unsigned 1858The representation of a \DWFORMaddrxNAME{} value is an unsigned
1852\addtoindex{LEB128} value, which is interpreted as a zero-based 1859\addtoindex{LEB128} value, which is interpreted as a zero-based
1853index into an array of addresses in the \dotdebugaddr{} section. 1860index into an array of addresses in the \dotdebugaddr{} section.
1861\bb
1862The representation of a \DWFORMaddrxoneNAME, \DWFORMaddrxtwoNAME,
1863\DWFORMaddrxthreeNAME{} or \DWFORMaddrxfourNAME{} value is a
18641-, 2-, 3- or 4-byte unsigned integer value, respectively,
1865which is similarly interpretated.
1866\eb
1854The index is relative to the value of the \DWATaddrbase{} attribute 1867The index is relative to the value of the \DWATaddrbase{} attribute
1855of the associated compilation unit. 1868of the associated compilation unit.
1856 1869
@@ -1951,7 +1964,7 @@ The information bytes contain a DWARF expression
1951or location description 1964or location description
1952(see Section \refersec{chap:locationdescriptions}). 1965(see Section \refersec{chap:locationdescriptions}).
1953 1966
1954\needlines{4} 1967\needlines{8}
1955\item \CLASSflag \\ 1968\item \CLASSflag \\
1956\livetarg{datarep:classflag}{} 1969\livetarg{datarep:classflag}{}
1957A flag \addtoindexx{flag class} 1970A flag \addtoindexx{flag class}
@@ -2083,7 +2096,7 @@ format, it is an 8-byte unsigned value (see Section
2083 2096
2084\textit{This class is new in \DWARFVersionV.} 2097\textit{This class is new in \DWARFVersionV.}
2085 2098
2086\needlines{4} 2099\needlines{8}
2087\item \CLASSreference \\ 2100\item \CLASSreference \\
2088\livetarg{datarep:classreference}{} 2101\livetarg{datarep:classreference}{}
2089There are four types of reference.\addtoindexx{reference class} 2102There are four types of reference.\addtoindexx{reference class}
@@ -2189,10 +2202,10 @@ one null byte.
2189A string may be represented: 2202A string may be represented:
2190\begin{itemize} 2203\begin{itemize}
2191\setlength{\itemsep}{0em} 2204\setlength{\itemsep}{0em}
2192\item immediately in the debugging information entry itself 2205\item Immediately in the debugging information entry itself
2193(\DWFORMstringTARG), 2206(\DWFORMstringTARG),
2194 2207
2195\item as an 2208\item As an
2196\addtoindexx{section offset!in class string value} 2209\addtoindexx{section offset!in class string value}
2197offset into a string table contained in 2210offset into a string table contained in
2198the \dotdebugstr{} section of the object file (\DWFORMstrpTARG), 2211the \dotdebugstr{} section of the object file (\DWFORMstrpTARG),
@@ -2213,7 +2226,7 @@ it is an 8-byte unsigned offset
2213(see Section \refersec{datarep:32bitand64bitdwarfformats}). 2226(see Section \refersec{datarep:32bitand64bitdwarfformats}).
2214 2227
2215\needlines{6} 2228\needlines{6}
2216\item as an indirect offset into the string table using an 2229\item As an indirect offset into the string table using an
2217index into a table of offsets contained in the 2230index into a table of offsets contained in the
2218\dotdebugstroffsets{} section of the object file 2231\dotdebugstroffsets{} section of the object file
2219\bb 2232\bb
@@ -2326,23 +2339,27 @@ Table \referfol{tab:attributeformencodings}.
2326 & & \CLASSmacptr, \CLASSrnglist, \CLASSrnglistsptr, \CLASSstroffsetsptr \\ 2339 & & \CLASSmacptr, \CLASSrnglist, \CLASSrnglistsptr, \CLASSstroffsetsptr \\
2327\DWFORMexprloc{} &0x18&\livelink{chap:classexprloc}{exprloc} \\ 2340\DWFORMexprloc{} &0x18&\livelink{chap:classexprloc}{exprloc} \\
2328\DWFORMflagpresent{} &0x19&\livelink{chap:classflag}{flag} \\ 2341\DWFORMflagpresent{} &0x19&\livelink{chap:classflag}{flag} \\
2329\DWFORMstrx{} \ddag &0x1a&\livelink{chap:classstring}{string} \\ 2342\DWFORMstrx{} \ddag &0x1a &\CLASSstring \\
2330\DWFORMaddrx{} \ddag &0x1b&\livelink{chap:classaddress}{address} \\ 2343\DWFORMaddrx{} \ddag &0x1b &\CLASSaddress \\
2331\DWFORMrefsupfour{}~\ddag &0x1c &\livelink{chap:classreference}{reference} \\ 2344\DWFORMrefsupfour{}~\ddag &0x1c &\CLASSreference \\
2332\DWFORMstrpsup{}~\ddag &0x1d &\livelink{chap:classstring}{string} \\ 2345\DWFORMstrpsup{}~\ddag &0x1d &\CLASSstring \\
2333\DWFORMdatasixteen~\ddag &0x1e &\CLASSconstant \\ 2346\DWFORMdatasixteen~\ddag &0x1e &\CLASSconstant \\
2334\DWFORMlinestrp~\ddag &0x1f &\CLASSstring \\ 2347\DWFORMlinestrp~\ddag &0x1f &\CLASSstring \\
2335\DWFORMrefsigeight &0x20 &\livelink{chap:classreference}{reference} \\ 2348\DWFORMrefsigeight &0x20 &\CLASSreference \\
2336\DWFORMimplicitconst~\ddag &0x21 &\CLASSconstant \\ 2349\DWFORMimplicitconst~\ddag &0x21 &\CLASSconstant \\
2337\DWFORMloclistx~\ddag &0x22 &\CLASSloclist \\ 2350\DWFORMloclistx~\ddag &0x22 &\CLASSloclist \\
2338\DWFORMrnglistx~\ddag &0x23 &\CLASSrnglist \\ 2351\DWFORMrnglistx~\ddag &0x23 &\CLASSrnglist \\
2339\DWFORMrefsupeight{}~\ddag &0x24 &\CLASSreference \\ 2352\DWFORMrefsupeight{}~\ddag &0x24 &\CLASSreference \\
2340\bb 2353\bb
2341\DWFORMstrxone{}~\ddag &0x25 &\CLASSstring \\ 2354\DWFORMstrxone{}~\ddag &0x25 &\CLASSstring \\
2342\DWFORMstrxtwo{}~\ddag &0x26 &\CLASSstring \\ 2355\DWFORMstrxtwo{}~\ddag &0x26 &\CLASSstring \\
2343\DWFORMstrxthree{}~\ddag &0x27 &\CLASSstring \\ 2356\DWFORMstrxthree{}~\ddag &0x27 &\CLASSstring \\
2357\DWFORMstrxfour{}~\ddag &0x28 &\CLASSstring \\
2358\DWFORMaddrxone{}~\ddag &0x29 &\CLASSaddress \\
2359\DWFORMaddrxtwo{}~\ddag &0x2a &\CLASSaddress \\
2360\DWFORMaddrxthree{}~\ddag &0x2b &\CLASSaddress \\
2344\eb 2361\eb
2345\DWFORMstrxfour{}~\ddag &0x28 &\CLASSstring \\ 2362\DWFORMaddrxfour{}~\ddag &0x2c &\CLASSaddress \\
2346\end{longtable} 2363\end{longtable}
2347\end{centering} 2364\end{centering}
2348 2365
diff --git a/dwarf5/latexdoc/debugsectionrelationships.tex b/dwarf5/latexdoc/debugsectionrelationships.tex
index 4bb607a..058998a 100644
--- a/dwarf5/latexdoc/debugsectionrelationships.tex
+++ b/dwarf5/latexdoc/debugsectionrelationships.tex
@@ -83,7 +83,7 @@ or shareable file and a related \addtoindex{supplementary object file}.
83\node(zlinkg) at (5, 2.4) [link] {\DWATlocation{}, etc.~~(j)}; 83\node(zlinkg) at (5, 2.4) [link] {\DWATlocation{}, etc.~~(j)};
84\node(zlinkk) at (5, 0.5) [link] {\begin{tabular}(c) 84\node(zlinkk) at (5, 0.5) [link] {\begin{tabular}(c)
85 \DWATaddrbase \\ 85 \DWATaddrbase \\
86 \DWFORMaddrx \\ 86 \DWFORMaddrx\textit{[1,2,3,4]}{} \\
87 \DWOPaddrx \\ 87 \DWOPaddrx \\
88 \DWOPconstx 88 \DWOPconstx
89 \end{tabular} (k)}; 89 \end{tabular} (k)};
@@ -270,7 +270,7 @@ The value of the \DWATaddrbase{} attribute in the
270\DWTAGcompileunit{} or \DWTAGpartialunit{} DIE is the 270\DWTAGcompileunit{} or \DWTAGpartialunit{} DIE is the
271offset in the \dotdebugaddr{} section of the machine 271offset in the \dotdebugaddr{} section of the machine
272addresses for that unit. 272addresses for that unit.
273\DWFORMaddrx, \DWOPaddrx{} and \DWOPconstx{} contain 273\DWFORMaddrxXN, \DWOPaddrx{} and \DWOPconstx{} contain
274indices relative to that offset. 274indices relative to that offset.
275 275
276%l 276%l
@@ -540,7 +540,7 @@ The value of the \DWATaddrbase{} attribute in the
540\DWTAGcompileunit, \DWTAGpartialunit{} or \DWTAGtypeunit{} DIE 540\DWTAGcompileunit, \DWTAGpartialunit{} or \DWTAGtypeunit{} DIE
541is the offset in the \dotdebugaddr{} section of the machine 541is the offset in the \dotdebugaddr{} section of the machine
542addresses for that unit. 542addresses for that unit.
543\DWFORMaddrx, \DWOPaddrx{} and \DWOPconstx{} contain indices 543\DWFORMaddrxXN, \DWOPaddrx{} and \DWOPconstx{} contain indices
544relative to that offset. 544relative to that offset.
545 545
546\end{description} \ No newline at end of file 546\end{description} \ No newline at end of file
diff --git a/dwarf5/latexdoc/dwarf5.tex b/dwarf5/latexdoc/dwarf5.tex
index a17b864..d018d5f 100644
--- a/dwarf5/latexdoc/dwarf5.tex
+++ b/dwarf5/latexdoc/dwarf5.tex
@@ -3,7 +3,7 @@
3% If draft is in the document class list, pix are just suggested 3% If draft is in the document class list, pix are just suggested
4% by an outline, the pic does not appear as a picture. 4% by an outline, the pic does not appear as a picture.
5% 5%
6\newcommand{\docdate}{January 18, 2017} 6\newcommand{\docdate}{January 24, 2017}
7% 7%
8\usepackage{ifthen} 8\usepackage{ifthen}
9 \newcommand{\ifthen}[2]{\ifthenelse{#1}{#2}{}} 9 \newcommand{\ifthen}[2]{\ifthenelse{#1}{#2}{}}
@@ -381,7 +381,7 @@ escapeinside={\%*}{*)} % if you want to add a comment within your code
381\condlinenumbers\include{generaldescription} %\emptypage 381\condlinenumbers\include{generaldescription} %\emptypage
382\condlinenumbers\include{programscope} \emptypage 382\condlinenumbers\include{programscope} \emptypage
383\condlinenumbers\include{dataobject} \emptypage 383\condlinenumbers\include{dataobject} \emptypage
384\condlinenumbers\include{typeentries} \emptypage 384\condlinenumbers\include{typeentries} %\emptypage
385\condlinenumbers\include{otherdebugginginformation} %\emptypage 385\condlinenumbers\include{otherdebugginginformation} %\emptypage
386\condlinenumbers\include{datarepresentation} %\emptypage 386\condlinenumbers\include{datarepresentation} %\emptypage
387 387
diff --git a/dwarf5/latexdoc/dwarfnamecmds.tex b/dwarf5/latexdoc/dwarfnamecmds.tex
index 79f0d18..0fa1de8 100644
--- a/dwarf5/latexdoc/dwarfnamecmds.tex
+++ b/dwarf5/latexdoc/dwarfnamecmds.tex
@@ -282,6 +282,10 @@
282% 282%
283\newdwfnamecommands{DWFORMaddr}{DW\_FORM\_addr} 283\newdwfnamecommands{DWFORMaddr}{DW\_FORM\_addr}
284\newdwfnamecommands{DWFORMaddrx}{DW\_FORM\_addrx} 284\newdwfnamecommands{DWFORMaddrx}{DW\_FORM\_addrx}
285\newdwfnamecommands{DWFORMaddrxone}{DW\_FORM\_addrx1}
286\newdwfnamecommands{DWFORMaddrxtwo}{DW\_FORM\_addrx2}
287\newdwfnamecommands{DWFORMaddrxthree}{DW\_FORM\_addrx3}
288\newdwfnamecommands{DWFORMaddrxfour}{DW\_FORM\_addrx4}
285\newdwfnamecommands{DWFORMblock}{DW\_FORM\_block} 289\newdwfnamecommands{DWFORMblock}{DW\_FORM\_block}
286\newdwfnamecommands{DWFORMblockone}{DW\_FORM\_block1} 290\newdwfnamecommands{DWFORMblockone}{DW\_FORM\_block1}
287\newdwfnamecommands{DWFORMblocktwo}{DW\_FORM\_block2} 291\newdwfnamecommands{DWFORMblocktwo}{DW\_FORM\_block2}
@@ -321,11 +325,17 @@
321\newdwfnamecommands{DWFORMstrxthree}{DW\_FORM\_strx3} 325\newdwfnamecommands{DWFORMstrxthree}{DW\_FORM\_strx3}
322\newdwfnamecommands{DWFORMstrxfour}{DW\_FORM\_strx4} 326\newdwfnamecommands{DWFORMstrxfour}{DW\_FORM\_strx4}
323\newdwfnamecommands{DWFORMudata}{DW\_FORM\_udata} 327\newdwfnamecommands{DWFORMudata}{DW\_FORM\_udata}
328% Helpers for lists of addrx forms
329\newcommand{\DWFORMaddrxN} {\bb\DWFORMaddrxone, \DWFORMaddrxtwo, \DWFORMaddrxthree, \DWFORMaddrxfour\eb} % fixed size
330\newcommand{\DWFORMaddrxNor} {\bb\DWFORMaddrxone, \DWFORMaddrxtwo, \DWFORMaddrxthree{} or \DWFORMaddrxfour\eb} % fixed size
331\newcommand{\DWFORMaddrxNand}{\bb\DWFORMaddrxone, \DWFORMaddrxtwo, \DWFORMaddrxthree{} and \DWFORMaddrxfour\eb} % fixed size
332\newcommand{\DWFORMaddrxXN} {\DWFORMaddrx, \DWFORMaddrxN} % all
333\newcommand{\DWFORMaddrxXNor} {\DWFORMaddrx, \DWFORMaddrxNor} % all
334\newcommand{\DWFORMaddrxXNand}{\DWFORMaddrx, \DWFORMaddrxNand} % all
324% Helpers for lists of strx forms 335% Helpers for lists of strx forms
325\newcommand{\DWFORMstrxN} {\bb\DWFORMstrxone, \DWFORMstrxtwo, \DWFORMstrxthree, \DWFORMstrxfour\eb} % fixed size 336\newcommand{\DWFORMstrxN} {\bb\DWFORMstrxone, \DWFORMstrxtwo, \DWFORMstrxthree, \DWFORMstrxfour\eb} % fixed size
326\newcommand{\DWFORMstrxNor} {\bb\DWFORMstrxone, \DWFORMstrxtwo, \DWFORMstrxthree{} or \DWFORMstrxfour\eb} % fixed size 337\newcommand{\DWFORMstrxNor} {\bb\DWFORMstrxone, \DWFORMstrxtwo, \DWFORMstrxthree{} or \DWFORMstrxfour\eb} % fixed size
327\newcommand{\DWFORMstrxNand}{\bb\DWFORMstrxone, \DWFORMstrxtwo, \DWFORMstrxthree{} and \DWFORMstrxfour\eb} % fixed size 338\newcommand{\DWFORMstrxNand}{\bb\DWFORMstrxone, \DWFORMstrxtwo, \DWFORMstrxthree{} and \DWFORMstrxfour\eb} % fixed size
328
329\newcommand{\DWFORMstrxXN} {\DWFORMstrx, \DWFORMstrxN} % all 339\newcommand{\DWFORMstrxXN} {\DWFORMstrx, \DWFORMstrxN} % all
330\newcommand{\DWFORMstrxXNor} {\DWFORMstrx, \DWFORMstrxNor} % all 340\newcommand{\DWFORMstrxXNor} {\DWFORMstrx, \DWFORMstrxNor} % all
331\newcommand{\DWFORMstrxXNand}{\DWFORMstrx, \DWFORMstrxNand} % all 341\newcommand{\DWFORMstrxXNand}{\DWFORMstrx, \DWFORMstrxNand} % all
@@ -840,6 +850,7 @@
840\newcommand{\HFNflags} {\addttindex{flags}} 850\newcommand{\HFNflags} {\addttindex{flags}}
841\newcommand{\HFNheaderlength} {\addttindex{header\_length}} 851\newcommand{\HFNheaderlength} {\addttindex{header\_length}}
842\newcommand{\HFNinitialinstructions} {\addttindex{initial\_instructions}} 852\newcommand{\HFNinitialinstructions} {\addttindex{initial\_instructions}}
853\newcommand{\HFNinitiallength} {\addttindex{initial\_length}}
843\newcommand{\HFNinitiallocation} {\addttindex{initial\_location}} 854\newcommand{\HFNinitiallocation} {\addttindex{initial\_location}}
844\newcommand{\HFNinstructions} {\addttindex{instructions}} 855\newcommand{\HFNinstructions} {\addttindex{instructions}}
845\newcommand{\HFNlength} {\addttindex{length}} 856\newcommand{\HFNlength} {\addttindex{length}}
diff --git a/dwarf5/latexdoc/introduction.tex b/dwarf5/latexdoc/introduction.tex
index 9b0e46d..b212850 100644
--- a/dwarf5/latexdoc/introduction.tex
+++ b/dwarf5/latexdoc/introduction.tex
@@ -410,7 +410,11 @@ In addition, the \HFNdebugabbrevoffset{} and \HFNaddresssize{} fields are reorde
410\eb 410\eb
411\needlines{4} 411\needlines{4}
412\item New operand forms for attribute values are defined 412\item New operand forms for attribute values are defined
413(\DWFORMaddrxNAME, \DWFORMdatasixteenNAME, \DWFORMimplicitconstNAME, 413(\DWFORMaddrxNAME,
414\bb
415\DWFORMaddrxoneNAME, \DWFORMaddrxtwoNAME, \DWFORMaddrxthreeNAME, \DWFORMaddrxfourNAME,
416\eb
417\DWFORMdatasixteenNAME, \DWFORMimplicitconstNAME,
414\DWFORMlinestrpNAME, 418\DWFORMlinestrpNAME,
415\DWFORMloclistxNAME, \DWFORMrnglistxNAME, 419\DWFORMloclistxNAME, \DWFORMrnglistxNAME,
416\bb 420\bb
diff --git a/dwarf5/latexdoc/otherdebugginginformation.tex b/dwarf5/latexdoc/otherdebugginginformation.tex
index a3d5d52..0421a6c 100644
--- a/dwarf5/latexdoc/otherdebugginginformation.tex
+++ b/dwarf5/latexdoc/otherdebugginginformation.tex
@@ -643,6 +643,7 @@ only needs to find one declaration. Likewise, a per-module index needs
643to list only a single copy of a type declaration contained in a type 643to list only a single copy of a type declaration contained in a type
644unit.} 644unit.}
645 645
646\needlines{4}
646\textit{For the benefit of link-time or post-link utilities that consume 647\textit{For the benefit of link-time or post-link utilities that consume
647per-CU indexes and produce a per-module index, the per-CU index 648per-CU indexes and produce a per-module index, the per-CU index
648entries provide the tag encoding for the original debugging 649entries provide the tag encoding for the original debugging
@@ -710,8 +711,13 @@ contents and interpretation are not specified here. The
710string is padded with null characters to a multiple of 711string is padded with null characters to a multiple of
711four bytes in length. 712four bytes in length.
712 713
713\textit{The presence of an unrecognised augmentation string may make it impossible 714\textit{The presence of an unrecognised augmentation string
714for a consumer to process data in the \dotdebugnames{} section.} 715\bb
716does not make it
717impossible for a consumer to process data in the \dotdebugnames{} section.
718The augmentation string only provides hints to the consumer regarding
719the completeness of the set of names in the index.
720\eb}
715 721
716\end{enumerate} 722\end{enumerate}
717 723
@@ -776,12 +782,12 @@ table.
776the same slot, but the consumer will be able to distinguish the names 782the same slot, but the consumer will be able to distinguish the names
777when appropriate.} 783when appropriate.}
778 784
779\textit{The simple case folding algorithm is further described 785The simple case folding algorithm is further described
780in the CaseFolding.txt file distributed with the \addtoindex{Unicode} 786in the CaseFolding.txt file distributed with the \addtoindex{Unicode}
781Character Database. That file defines four classes of mappings: 787Character Database. That file defines four classes of mappings:
782Common (C), Simple (S), Full (F), and Turkish (T). 788Common (C), Simple (S), Full (F), and Turkish (T).
783The hash computation specified here uses the C + S mappings only, 789The hash computation specified here uses the C + S mappings only,
784which do not affect the total length of the string.} 790which do not affect the total length of the string.
785\eb 791\eb
786 792
787Each bucket contains the index of an entry in the hashes array. The 793Each bucket contains the index of an entry in the hashes array. The
@@ -854,8 +860,9 @@ specifications ends with an entry containing 0 for the attribute and
8540 for the form. 8600 for the form.
855 861
856The index attributes and their meanings are listed in 862The index attributes and their meanings are listed in
857Table \referfol{tab:indexattributeencodings}. 863Table \refersec{tab:indexattributeencodings}.
858 864
865\begin{table}
859\begin{centering} 866\begin{centering}
860\setlength{\extrarowheight}{0.1cm} 867\setlength{\extrarowheight}{0.1cm}
861\begin{longtable}{l|l} 868\begin{longtable}{l|l}
@@ -875,12 +882,14 @@ Table \referfol{tab:indexattributeencodings}.
875\DWIDXtypehashTARG & Hash of type \mbox{declaration} \\ 882\DWIDXtypehashTARG & Hash of type \mbox{declaration} \\
876\end{longtable} 883\end{longtable}
877\end{centering} 884\end{centering}
885\end{table}
878 886
879The abbreviations table ends with an entry consisting of a single 0 887The abbreviations table ends with an entry consisting of a single 0
880byte for the abbreviation code. The size of the table given by 888byte for the abbreviation code. The size of the table given by
881\texttt{abbrev\_table\_size} may include optional padding following the 889\texttt{abbrev\_table\_size} may include optional padding following the
882terminating 0 byte. 890terminating 0 byte.
883 891
892\needlines{4}
884\subsubsubsection{Entry Pool} 893\subsubsubsection{Entry Pool}
885The entry pool immediately follows the abbreviations table. 894The entry pool immediately follows the abbreviations table.
886Each entry in the entry offsets array in the name table (see 895Each entry in the entry offsets array in the name table (see
@@ -1233,6 +1242,7 @@ consumers in decoding the line number program instructions for
1233a particular compilation unit and also provides information 1242a particular compilation unit and also provides information
1234used throughout the rest of the line number program. 1243used throughout the rest of the line number program.
1235 1244
1245\needlines{4}
1236The line number program for each compilation unit begins with 1246The line number program for each compilation unit begins with
1237a header containing the following fields in order: 1247a header containing the following fields in order:
1238 1248
@@ -1749,6 +1759,7 @@ field is 1,
1749\texttt{op\_index} is always 0 and these calculations simplify to 1759\texttt{op\_index} is always 0 and these calculations simplify to
1750those given for addresses in \DWARFVersionIII{} and earlier.} 1760those given for addresses in \DWARFVersionIII{} and earlier.}
1751 1761
1762\needlines{4}
1752The amount to increment the line register is the 1763The amount to increment the line register is the
1753\addttindex{line\_base} plus 1764\addttindex{line\_base} plus
1754the result of the 1765the result of the
@@ -1825,6 +1836,7 @@ takes no operands.
1825It sets the \addttindex{basic\_block} register of the 1836It sets the \addttindex{basic\_block} register of the
1826state machine to \doublequote{true.} 1837state machine to \doublequote{true.}
1827 1838
1839\needlines{4}
1828\item \textbf{\DWLNSconstaddpcTARG} \\ 1840\item \textbf{\DWLNSconstaddpcTARG} \\
1829The \DWLNSconstaddpcNAME{} opcode takes 1841The \DWLNSconstaddpcNAME{} opcode takes
1830no operands. It advances the \texttt{address} and \addttindex{op\_index} registers 1842no operands. It advances the \texttt{address} and \addttindex{op\_index} registers
@@ -1885,7 +1897,7 @@ it must be determined in combination with the subroutine
1885information entries of the compilation (including inlined 1897information entries of the compilation (including inlined
1886subroutines).} 1898subroutines).}
1887 1899
1888 1900\needlines{4}
1889\item \textbf{\DWLNSsetepiloguebeginTARG} \\ 1901\item \textbf{\DWLNSsetepiloguebeginTARG} \\
1890The \DWLNSsetepiloguebeginNAME{} opcode takes no operands. It 1902The \DWLNSsetepiloguebeginNAME{} opcode takes no operands. It
1891sets the \addttindex{epilogue\_begin} register to \doublequote{true.} 1903sets the \addttindex{epilogue\_begin} register to \doublequote{true.}
@@ -1949,6 +1961,7 @@ sets the \addttindex{op\_index} register to 0.
1949affect the \texttt{address} register add a delta to it. This instruction 1961affect the \texttt{address} register add a delta to it. This instruction
1950stores a relocatable value into it instead.} 1962stores a relocatable value into it instead.}
1951 1963
1964\needlines{4}
1952\item \textbf{\DWLNEsetdiscriminatorTARG} \\ 1965\item \textbf{\DWLNEsetdiscriminatorTARG} \\
1953The \DWLNEsetdiscriminatorNAME{} 1966The \DWLNEsetdiscriminatorNAME{}
1954opcode takes a single 1967opcode takes a single
diff --git a/dwarf5/latexdoc/programscope.tex b/dwarf5/latexdoc/programscope.tex
index 8f94a13..461c0e2 100644
--- a/dwarf5/latexdoc/programscope.tex
+++ b/dwarf5/latexdoc/programscope.tex
@@ -442,7 +442,7 @@ A \DWATaddrbaseDEFN\addtoindexx{address table base attribute}
442attribute, whose value is of class \CLASSaddrptr. 442attribute, whose value is of class \CLASSaddrptr.
443This attribute points to the beginning of the compilation 443This attribute points to the beginning of the compilation
444unit's contribution to the \dotdebugaddr{} section. 444unit's contribution to the \dotdebugaddr{} section.
445Indirect references (using \DWFORMaddrx, \DWOPaddrx, 445Indirect references (using \DWFORMaddrxXN, \DWOPaddrx,
446\DWOPconstx, 446\DWOPconstx,
447\bb 447\bb
448\DWLLEbaseaddressx{}, \DWLLEstartxendx{}, \DWLLEstartxlength{}, 448\DWLLEbaseaddressx{}, \DWLLEstartxendx{}, \DWLLEstartxlength{},
diff --git a/dwarf5/latexdoc/splitobjects.tex b/dwarf5/latexdoc/splitobjects.tex
index c54a966..ecba136 100644
--- a/dwarf5/latexdoc/splitobjects.tex
+++ b/dwarf5/latexdoc/splitobjects.tex
@@ -119,9 +119,12 @@ output binary include the following:
119skeleton \dotdebuginfo{} section. 119skeleton \dotdebuginfo{} section.
120\item 120\item
121\dotdebugaddr{} - Contains references to loadable sections, 121\dotdebugaddr{} - Contains references to loadable sections,
122indexed by attributes of form \DWFORMaddrx{} or location 122indexed by attributes of
123expression 123\bb
124\DWOPaddrx{} opcodes. 124one of the forms
125\eb
126\DWFORMaddrxXN{},
127or location expression \DWOPaddrx{} opcodes.
125\item 128\item
126\dotdebugaranges{} - Contains the accelerated range lookup table 129\dotdebugaranges{} - Contains the accelerated range lookup table
127for the compilation unit. 130for the compilation unit.
@@ -201,7 +204,11 @@ one \dotdwo{} section to another \dotdwo{} section
201in the same compilation unit. 204in the same compilation unit.
202 205
203\item Some values that need a relocation to refer to a relocatable 206\item Some values that need a relocation to refer to a relocatable
204program address use the \DWFORMaddrx{} form, referencing a relocatable 207program address use
208\bb
209one of the \DWFORMaddrxXNor{} forms,
210\eb
211referencing a relocatable
205value in the \dotdebugaddr{} section (which remains in the .o file). 212value in the \dotdebugaddr{} section (which remains in the .o file).
206 213
207\end{enumerate} 214\end{enumerate}
@@ -556,7 +563,11 @@ begins at offset 48. Because the \dotdebugaddr{} section contains an
556actually begins at offset 40 (for a 64-bit DWARF object, the 563actually begins at offset 40 (for a 64-bit DWARF object, the
557header would be 16 bytes long, and the value for the 564header would be 16 bytes long, and the value for the
558\DWATaddrbase{} attribute would then be 56). All attributes in 565\DWATaddrbase{} attribute would then be 56). All attributes in
559\texttt{demo1.dwo} that use \DWFORMaddrx{} would then refer to address 566\texttt{demo1.dwo} that use
567\bb
568\DWFORMaddrxXNor{}
569\eb
570would then refer to address
560table slots relative to that offset. Likewise, the \dotdebugaddr{} 571table slots relative to that offset. Likewise, the \dotdebugaddr{}
561contribution from \texttt{demo2.dwo} begins at offset 72, and its first 572contribution from \texttt{demo2.dwo} begins at offset 72, and its first
562address slot is at offset 80. Because these contributions have 573address slot is at offset 80. Because these contributions have
@@ -602,8 +613,11 @@ form code \DWFORMstrxXNor, referring to slots in the
602\dotdebugstroffsetsdwo{} section. 613\dotdebugstroffsetsdwo{} section.
603 614
604\needlines{4} 615\needlines{4}
605\item References to relocatable addresses in the object file 616\item References to relocatable addresses in the object file use
606use the form code \DWFORMaddrx, referring to slots in the 617\bb
618one of the form codes
619\eb
620\DWFORMaddrxXNor, referring to slots in the
607\dotdebugaddr{} table, relative to the base offset given by 621\dotdebugaddr{} table, relative to the base offset given by
608\DWATaddrbase{} in the skeleton compilation unit. 622\DWATaddrbase{} in the skeleton compilation unit.
609\end{itemize} 623\end{itemize}
@@ -715,8 +729,11 @@ Figure~\ref{fig:splitobjectexampledemoonedwodwarfexcerpts}: Split object example
715 729
716\needlines{4} 730\needlines{4}
717In the defining declaration for \texttt{Box::contains} at 5\$, the 731In the defining declaration for \texttt{Box::contains} at 5\$, the
718\DWATlowpc{} attribute is represented with \DWFORMaddrx, 732\DWATlowpc{} attribute is represented
719referring to slot 0 in the \dotdebugaddr{} table from \texttt{demo1.o}. 733\bb
734using \DWFORMaddrx, which refers
735\eb
736to slot 0 in the \dotdebugaddr{} table from \texttt{demo1.o}.
720That slot contains the relocated address of the beginning of the 737That slot contains the relocated address of the beginning of the
721function. 738function.
722 739
@@ -1044,6 +1061,7 @@ is also copied. The type units for class \texttt{Box} and class
1044and \texttt{demo2.dwo}, but only one instance of each is copied into 1061and \texttt{demo2.dwo}, but only one instance of each is copied into
1045the package file. 1062the package file.
1046 1063
1064\needlines{4}
1047The \dotdebugstrdwo{} sections from each file are merged to 1065The \dotdebugstrdwo{} sections from each file are merged to
1048form a new string table with no duplicates, requiring the 1066form a new string table with no duplicates, requiring the
1049adjustment of all references to those strings. The 1067adjustment of all references to those strings. The
@@ -1052,7 +1070,6 @@ are copied as individual contributions, but the string table offset
1052in each slot of those contributions is adjusted to point to 1070in each slot of those contributions is adjusted to point to
1053the correct offset in the merged string table. 1071the correct offset in the merged string table.
1054 1072
1055\needlines{4}
1056The \dotdebugcuindex{} and \dotdebugtuindex{} sections provide a 1073The \dotdebugcuindex{} and \dotdebugtuindex{} sections provide a
1057directory to these contributions. 1074directory to these contributions.
1058Figure \referfol{fig:examplecuindexsection} shows an example CU 1075Figure \referfol{fig:examplecuindexsection} shows an example CU
diff --git a/dwarf5/latexdoc/typeentries.tex b/dwarf5/latexdoc/typeentries.tex
index 7b70c13..4cc52a2 100644
--- a/dwarf5/latexdoc/typeentries.tex
+++ b/dwarf5/latexdoc/typeentries.tex
@@ -313,6 +313,7 @@ with a \DWATpicturestringDEFN{} attribute whose value is a
313null\dash terminated string containing the target\dash dependent picture 313null\dash terminated string containing the target\dash dependent picture
314string associated with the type. 314string associated with the type.
315 315
316\needlines{4}
316If the edited base type entry describes an edited numeric 317If the edited base type entry describes an edited numeric
317data type, the edited type entry has a \DWATdigitcount{} and a 318data type, the edited type entry has a \DWATdigitcount{} and a
318\DWATdecimalscale{} attribute.\addtoindexx{decimal scale attribute} 319\DWATdecimalscale{} attribute.\addtoindexx{decimal scale attribute}
@@ -395,17 +396,66 @@ in different languages. A type modifier is represented in
395DWARF by a debugging information entry with one of the tags 396DWARF by a debugging information entry with one of the tags
396given in Table \refersec{tab:typemodifiertags}. 397given in Table \refersec{tab:typemodifiertags}.
397 398
399\begin{table}[h]
400\caption{Type modifier tags}
401\label{tab:typemodifiertags}
402\centering
403\begin{tabular}{l|P{9cm}}
404\hline
405Name&Meaning\\ \hline
406\DWTAGatomictypeTARG{} &
407 atomic qualified type
408 (for example, in C)
409 \addtoindexx{atomic qualified type entry} \addtoindexx{C} \\
410\DWTAGconsttypeTARG{} &
411 const qualified type
412 (for example in C, C++)
413 \addtoindexx{const qualified type entry} \addtoindexx{C} \addtoindexx{C++} \\
414\DWTAGimmutabletypeTARG &
415 immutable type
416 (for example, in \addtoindex{D})
417 \addtoindexx{immutable type} \\
418\DWTAGpackedtypeTARG &
419 packed type\addtoindexx{packed type entry}
420 (for example in Ada, Pascal)
421 \addtoindexx{packed qualified type entry} \addtoindexx{Ada} \addtoindexx{Pascal} \\
422\DWTAGpointertypeTARG{} &
423 pointer to an object of the type being modified
424 \addtoindexx{pointer qualified type entry} \\
425\DWTAGreferencetypeTARG &
426 reference to (lvalue of) an object of the type \mbox{being} modified
427 \addtoindexx{reference type entry}
428 \addtoindexx{reference qualified type entry} \\
429\DWTAGrestricttypeTARG &
430 restrict qualified type
431 \addtoindexx{restricted type entry}
432 \addtoindexx{restrict qualified type} \addtoindexx{C} \\
433\DWTAGrvaluereferencetypeTARG{} &
434 rvalue reference to an object of the type \mbox{being} modified
435 (for example, in \addtoindex{C++})
436 \addtoindexx{rvalue reference type entry}
437 \addtoindexx{restricted type entry}
438 \addtoindexx{rvalue reference qualified type entry} \\
439\DWTAGsharedtypeTARG &
440 shared qualified type
441 (for example, in \addtoindex{UPC})
442 \addtoindexx{shared qualified type entry} \\
443\DWTAGvolatiletypeTARG &
444 volatile qualified type
445 (for example, in \addtoindex{C}, \addtoindex{C++})
446 \addtoindexx{volatile qualified type entry} \\
447\hline
448\end{tabular}
449\end{table}
450
398If a name has been given to the modified type in the source 451If a name has been given to the modified type in the source
399program, then the corresponding modified type entry has 452program, then the corresponding modified type entry has
400a \DWATname{} attribute 453a \DWATname{} attribute\addtoindexx{name attribute}
401\addtoindexx{name attribute} 454whose value is a null-terminated string containing
402whose value is a null\dash terminated 455the name of the modified type.
403string containing the modified type name.
404 456
405Each of the type modifier entries has 457Each of the type modifier entries has a
406\addtoindexx{type attribute} 458\DWATtype{} attribute\addtoindexx{type attribute},
407a
408\DWATtype{} attribute,
409whose value is a \livelink{chap:classreference}{reference} 459whose value is a \livelink{chap:classreference}{reference}
410to a debugging information entry 460to a debugging information entry
411describing a base type, a user-defined type or another type 461describing a base type, a user-defined type or another type
@@ -456,68 +506,20 @@ source
456\addtoindexx{parameter|see{formal parameter entry}} 506\addtoindexx{parameter|see{formal parameter entry}}
457presentation. 507presentation.
458 508
459\begin{table}[ht] 509\bb
460\caption{Type modifier tags} 510Examples of modified types are shown in Figure \refersec{fig:typemidifierexamples}.
461\label{tab:typemodifiertags} 511\eb
462\centering
463\begin{tabular}{l|P{9cm}}
464\hline
465Name&Meaning\\ \hline
466\DWTAGatomictypeTARG{} &
467 atomic qualified type
468 (for example, in C)
469 \addtoindexx{atomic qualified type entry} \addtoindexx{C} \\
470\DWTAGconsttypeTARG{} &
471 const qualified type
472 (for example in C, C++)
473 \addtoindexx{const qualified type entry} \addtoindexx{C} \addtoindexx{C++} \\
474\DWTAGimmutabletypeTARG &
475 immutable type
476 (for example, in \addtoindex{D})
477 \addtoindexx{immutable type} \\
478\DWTAGpackedtypeTARG &
479 packed type\addtoindexx{packed type entry}
480 (for example in Ada, Pascal)
481 \addtoindexx{packed qualified type entry} \addtoindexx{Ada} \addtoindexx{Pascal} \\
482\DWTAGpointertypeTARG{} &
483 pointer to an object of the type being modified
484 \addtoindexx{pointer qualified type entry} \\
485\DWTAGreferencetypeTARG &
486 reference to (lvalue of) an object of the type \mbox{being} modified
487 \addtoindexx{reference type entry}
488 \addtoindexx{reference qualified type entry} \\
489\DWTAGrestricttypeTARG &
490 restrict qualified type
491 \addtoindexx{restricted type entry}
492 \addtoindexx{restrict qualified type} \addtoindexx{C} \\
493\DWTAGrvaluereferencetypeTARG{} &
494 rvalue reference to an object of the type \mbox{being} modified
495 (for example, in \addtoindex{C++})
496 \addtoindexx{rvalue reference type entry}
497 \addtoindexx{restricted type entry}
498 \addtoindexx{rvalue reference qualified type entry} \\
499\DWTAGsharedtypeTARG &
500 shared qualified type
501 (for example, in \addtoindex{UPC})
502 \addtoindexx{shared qualified type entry} \\
503\DWTAGvolatiletypeTARG &
504 volatile qualified type
505 (for example, in \addtoindex{C}, \addtoindex{C++})
506 \addtoindexx{volatile qualified type entry} \\
507\hline
508\end{tabular}
509\end{table}
510 512
511\needlines{6} 513\begin{figure}[t]
512\textit{As examples of how type modifiers are ordered, consider the following 514\textit{As examples of how type modifiers are ordered, consider the following
513\addtoindex{C} declarations:} 515\addtoindex{C} declarations:}
514\par % Needed to end paragraph before listing so that it gets a line number 516\par % Needed to end paragraph before listing so that it gets a line number
515\begin{nlnlisting} 517\begin{nlnlisting}
516 const unsigned char * volatile p; 518 const unsigned char * volatile p;
517\end{nlnlisting} 519\end{nlnlisting}
518 520
519\textit{This represents a volatile pointer to a constant 521\textit{This represents a volatile pointer to a constant
520character. It is encoded in DWARF as:} 522character. It is encoded in DWARF as}
521\par % Needed to end paragraph before listing so that it gets a line number 523\par % Needed to end paragraph before listing so that it gets a line number
522\nolinenumbers 524\nolinenumbers
523\begin{dwflisting} 525\begin{dwflisting}
@@ -530,16 +532,12 @@ character. It is encoded in DWARF as:}
530\end{alltt} 532\end{alltt}
531\end{dwflisting} 533\end{dwflisting}
532 534
533\condlinenumbers
534\textit{On the other hand} 535\textit{On the other hand}
535\par % Needed to end paragraph before listing so that it gets a line number
536\begin{nlnlisting} 536\begin{nlnlisting}
537 volatile unsigned char * const restrict p; 537 volatile unsigned char * const restrict p;
538\end{nlnlisting} 538\end{nlnlisting}
539\textit{represents a restricted constant 539\textit{represents a restricted constant
540pointer to a volatile character. This is encoded as:} 540pointer to a volatile character. This is encoded as}
541\par % Needed to end paragraph before listing so that it gets a line number
542\nolinenumbers
543\begin{dwflisting} 541\begin{dwflisting}
544\begin{alltt} 542\begin{alltt}
545 \DWTAGvariable(p) --> 543 \DWTAGvariable(p) -->
@@ -551,7 +549,10 @@ pointer to a volatile character. This is encoded as:}
551\end{alltt} 549\end{alltt}
552\end{dwflisting} 550\end{dwflisting}
553 551
554\condlinenumbers 552\caption{Type modifier examples}
553\label{fig:typemidifierexamples}
554\end{figure}
555
555\section{Typedef Entries} 556\section{Typedef Entries}
556\label{chap:typedefentries} 557\label{chap:typedefentries}
557A named type that is defined in terms of another type 558A named type that is defined in terms of another type
@@ -573,6 +574,7 @@ the debugging information entry for a typedef represents
573a declaration of the type that is not also a definition, 574a declaration of the type that is not also a definition,
574it does not contain a type attribute. 575it does not contain a type attribute.
575 576
577\needlines{4}
576\textit{Depending on the language, a named type that is defined in 578\textit{Depending on the language, a named type that is defined in
577terms of another type may be called a type alias, a subtype, 579terms of another type may be called a type alias, a subtype,
578a constrained type and other terms. A type name declared with 580a constrained type and other terms. A type name declared with
@@ -659,7 +661,6 @@ amount of storage needed to hold an instance of the array type.
659compile time, this value can usually be computed by multiplying 661compile time, this value can usually be computed by multiplying
660the number of array elements by the size of each element.} 662the number of array elements by the size of each element.}
661 663
662
663Each array dimension is described by a debugging information 664Each array dimension is described by a debugging information
664entry with either the 665entry with either the
665\addtoindexx{subrange type entry!as array dimension} 666\addtoindexx{subrange type entry!as array dimension}
@@ -719,6 +720,7 @@ coarray type in the source, then the corresponding coarray type
719entry has a \DWATname{} attribute whose value is a null-terminated 720entry has a \DWATname{} attribute whose value is a null-terminated
720string containing the array type name. 721string containing the array type name.
721 722
723\needlines{4}
722A coarray entry has one or more \DWTAGsubrangetype{} child entries, 724A coarray entry has one or more \DWTAGsubrangetype{} child entries,
723one for each codimension. It also has a \DWATtype{} attribute 725one for each codimension. It also has a \DWATtype{} attribute
724describing the type of each element of the coarray. 726describing the type of each element of the coarray.
@@ -775,6 +777,7 @@ in the following discussion, statements about
775\addtoindex{C++} classes may 777\addtoindex{C++} classes may
776be understood to apply to \addtoindex{C++} structures as well.} 778be understood to apply to \addtoindex{C++} structures as well.}
777 779
780\needlines{6}
778\subsection{Structure, Union and Class Type Entries} 781\subsection{Structure, Union and Class Type Entries}
779\label{chap:structureunionandclasstypeentries} 782\label{chap:structureunionandclasstypeentries}
780Structure, union, and class types are represented by debugging 783Structure, union, and class types are represented by debugging
@@ -1209,6 +1212,26 @@ of storage needed to hold the value of the data member.
1209see Appendix \refersec{app:pascalexample} and 1212see Appendix \refersec{app:pascalexample} and
1210\refersec{app:ccppbitfieldexamples}.} 1213\refersec{app:ccppbitfieldexamples}.}
1211 1214
1215\bb
1216\subsection{Member Variable Entries}
1217\label{chap:membervariableentries}
1218
1219A member variable (\doublequote{static data member} in
1220\addtoindex{C++}) is represented by a
1221debugging information entry with the tag \DWTAGvariable.
1222
1223The member variable entry
1224may contain the same attributes and follows the same rules
1225as non-member global variable entries
1226(see Section \refersec{chap:dataobjectentries}).
1227
1228A member variable entry may have a
1229\hyperlink{chap:DWATaccessibilityattribute}{\DWATaccessibilityNAME}
1230\addtoindexx{accessibility attribute}
1231attribute. If no accessibility attribute is present, private
1232access is assumed for an entry of a class and public access
1233is assumed for an entry of a structure, union or interface.
1234\eb
1212 1235
1213\subsection{Member Function Entries} 1236\subsection{Member Function Entries}
1214\label{chap:memberfunctionentries} 1237\label{chap:memberfunctionentries}