diff options
author | Ron Brender <ron.brender@gmail.com> | 2017-01-24 16:24:46 -0500 |
---|---|---|
committer | Ron Brender <ron.brender@gmail.com> | 2017-01-24 16:24:46 -0500 |
commit | 81170075613021ccd8115b2dece13af4488db9c0 (patch) | |
tree | 4e34bbb82096a1f751b65ee06e39b08d7a865bee | |
parent | Incorporate 161122.1, the fixed sized variants of DW_FORM_strx. (diff) | |
download | dwarf-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.tex | 1 | ||||
-rw-r--r-- | dwarf5/latexdoc/dataobject.tex | 11 | ||||
-rw-r--r-- | dwarf5/latexdoc/datarepresentation.tex | 71 | ||||
-rw-r--r-- | dwarf5/latexdoc/debugsectionrelationships.tex | 6 | ||||
-rw-r--r-- | dwarf5/latexdoc/dwarf5.tex | 4 | ||||
-rw-r--r-- | dwarf5/latexdoc/dwarfnamecmds.tex | 13 | ||||
-rw-r--r-- | dwarf5/latexdoc/introduction.tex | 6 | ||||
-rw-r--r-- | dwarf5/latexdoc/otherdebugginginformation.tex | 25 | ||||
-rw-r--r-- | dwarf5/latexdoc/programscope.tex | 2 | ||||
-rw-r--r-- | dwarf5/latexdoc/splitobjects.tex | 37 | ||||
-rw-r--r-- | dwarf5/latexdoc/typeentries.tex | 163 |
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 |
18 | 1/24/2017 % Changes from meeting of 1/24/2017 \\ | ||
18 | 1/18/2017 % 161122.1 (fixed size variants of \DWFORMstrxNAM) \\ | 19 | 1/18/2017 % 161122.1 (fixed size variants of \DWFORMstrxNAM) \\ |
19 | 1/16/2017 & Changes from meeting of 1/3/2017 \\ | 20 | 1/16/2017 & Changes from meeting of 1/3/2017 \\ |
20 | 12/18/2016 & Changes from meeting of 12/6/2016 \\ | 21 | 12/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 |
92 | for a C++ static data member of a structure, class or union, | 92 | for a C++ static data member of a structure, class or union, |
93 | the entry has a \DWATspecification{} attribute, whose value is a | 93 | the 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 |
95 | declaration of this data member. The referenced entry has the | 95 | entry representing the declaration of this data member. The referenced |
96 | tag \DWTAGmember{} and will be a child of some class, structure | 96 | entry |
97 | or union type entry. | 97 | \bb |
98 | also has the tag \DWTAGvariable{} | ||
99 | \eb | ||
100 | and will be a child of some class, structure or union type entry. | ||
98 | 101 | ||
99 | If the variable entry represents a | 102 | If the variable entry represents a |
100 | non-defining declaration, \DWATspecification{} may be used | 103 | non-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 | |||
261 | contains all addresses and constants that require | 261 | contains all addresses and constants that require |
262 | link-time relocation, and items in the table can be | 262 | link-time relocation, and items in the table can be |
263 | referenced indirectly from the debugging information via | 263 | referenced indirectly from the debugging information via |
264 | the \DWFORMaddrx{} form, | 264 | the \DWFORMaddrxXNand{} forms, |
265 | by the \DWOPaddrx{} and \DWOPconstx{} operators, and | 265 | by the \DWOPaddrx{} and \DWOPconstx{} operators, and |
266 | by certain of the \texttt{DW\_LLE\_*} location list | 266 | by certain of the \texttt{DW\_LLE\_*} location list |
267 | and \texttt{DW\_RLE\_*} range list entries. | 267 | and \texttt{DW\_RLE\_*} range list entries. |
@@ -281,6 +281,7 @@ table is necessary only if the skeleton compilation unit | |||
281 | uses one of the indirect string forms (\DWFORMstrp{}, | 281 | uses one of the indirect string forms (\DWFORMstrp{}, |
282 | \DWFORMstrxXNor). | 282 | \DWFORMstrxXNor). |
283 | \eb | 283 | \eb |
284 | \needlines{4} | ||
284 | \item | 285 | \item |
285 | A string offsets table, in the \dotdebugstroffsets{} | 286 | A string offsets table, in the \dotdebugstroffsets{} |
286 | section for strings in the \dotdebugstr{} section. | 287 | section for strings in the \dotdebugstr{} section. |
@@ -307,8 +308,12 @@ file. This partition includes the following: | |||
307 | The full compilation unit, in the \dotdebuginfodwo{} section. | 308 | The full compilation unit, in the \dotdebuginfodwo{} section. |
308 | 309 | ||
309 | Attributes contained in the full compilation unit | 310 | Attributes contained in the full compilation unit |
310 | may refer to machine addresses indirectly using the \DWFORMaddrx{} | 311 | may refer to machine addresses indirectly using |
311 | form, which accesses the table of addresses specified by the | 312 | \bb |
313 | one of the | ||
314 | \eb | ||
315 | \DWFORMaddrxXNor{} | ||
316 | forms, 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. |
313 | Location descriptions may similarly do so using the \DWOPaddrx{} and | 318 | Location 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 | |||
415 | header, a section table, a number of DWARF debug information | 420 | header, a section table, a number of DWARF debug information |
416 | sections, and two index sections. | 421 | sections, and two index sections. |
417 | 422 | ||
418 | \needlines{10} | 423 | %\needlines{8} |
419 | Each DWARF package file contains no more than one of each of the | 424 | Each DWARF package file contains no more than one of each of the |
420 | following sections, copied from a set of object or DWARF object | 425 | following sections, copied from a set of object or DWARF object |
421 | files, and combined, section by section: | 426 | files, 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 |
982 | All unit headers have the same initial three fields. | 987 | All 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. | |||
1215 | the primary type contained in this | 1219 | the 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} |
1221 | A 4-byte or 8-byte unsigned offset | 1225 | A 4-byte or 8-byte unsigned offset |
@@ -1846,11 +1850,20 @@ This address is relocatable in a relocatable object file and | |||
1846 | is relocated in an executable file or shared object file. | 1850 | is 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 |
1849 | described in the previous bullet) in the | 1853 | described in the previous bullet) in the \dotdebugaddr{} section |
1850 | \dotdebugaddr{} section (\DWFORMaddrxTARG). | 1854 | \bb |
1855 | (\DWFORMaddrxTARG, \DWFORMaddrxoneTARG, \DWFORMaddrxtwoTARG, | ||
1856 | \DWFORMaddrxthreeTARG{} and \DWFORMaddrxfourTARG). | ||
1857 | \eb | ||
1851 | The representation of a \DWFORMaddrxNAME{} value is an unsigned | 1858 | The 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 |
1853 | index into an array of addresses in the \dotdebugaddr{} section. | 1860 | index into an array of addresses in the \dotdebugaddr{} section. |
1861 | \bb | ||
1862 | The representation of a \DWFORMaddrxoneNAME, \DWFORMaddrxtwoNAME, | ||
1863 | \DWFORMaddrxthreeNAME{} or \DWFORMaddrxfourNAME{} value is a | ||
1864 | 1-, 2-, 3- or 4-byte unsigned integer value, respectively, | ||
1865 | which is similarly interpretated. | ||
1866 | \eb | ||
1854 | The index is relative to the value of the \DWATaddrbase{} attribute | 1867 | The index is relative to the value of the \DWATaddrbase{} attribute |
1855 | of the associated compilation unit. | 1868 | of the associated compilation unit. |
1856 | 1869 | ||
@@ -1951,7 +1964,7 @@ The information bytes contain a DWARF expression | |||
1951 | or location description | 1964 | or 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}{} |
1957 | A flag \addtoindexx{flag class} | 1970 | A 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}{} |
2089 | There are four types of reference.\addtoindexx{reference class} | 2102 | There are four types of reference.\addtoindexx{reference class} |
@@ -2189,10 +2202,10 @@ one null byte. | |||
2189 | A string may be represented: | 2202 | A 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} |
2197 | offset into a string table contained in | 2210 | offset into a string table contained in |
2198 | the \dotdebugstr{} section of the object file (\DWFORMstrpTARG), | 2211 | the \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 |
2217 | index into a table of offsets contained in the | 2230 | index 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 |
271 | offset in the \dotdebugaddr{} section of the machine | 271 | offset in the \dotdebugaddr{} section of the machine |
272 | addresses for that unit. | 272 | addresses for that unit. |
273 | \DWFORMaddrx, \DWOPaddrx{} and \DWOPconstx{} contain | 273 | \DWFORMaddrxXN, \DWOPaddrx{} and \DWOPconstx{} contain |
274 | indices relative to that offset. | 274 | indices 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 |
541 | is the offset in the \dotdebugaddr{} section of the machine | 541 | is the offset in the \dotdebugaddr{} section of the machine |
542 | addresses for that unit. | 542 | addresses for that unit. |
543 | \DWFORMaddrx, \DWOPaddrx{} and \DWOPconstx{} contain indices | 543 | \DWFORMaddrxXN, \DWOPaddrx{} and \DWOPconstx{} contain indices |
544 | relative to that offset. | 544 | relative 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 | |||
643 | to list only a single copy of a type declaration contained in a type | 643 | to list only a single copy of a type declaration contained in a type |
644 | unit.} | 644 | unit.} |
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 |
647 | per-CU indexes and produce a per-module index, the per-CU index | 648 | per-CU indexes and produce a per-module index, the per-CU index |
648 | entries provide the tag encoding for the original debugging | 649 | entries provide the tag encoding for the original debugging |
@@ -710,8 +711,13 @@ contents and interpretation are not specified here. The | |||
710 | string is padded with null characters to a multiple of | 711 | string is padded with null characters to a multiple of |
711 | four bytes in length. | 712 | four 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 |
714 | for a consumer to process data in the \dotdebugnames{} section.} | 715 | \bb |
716 | does not make it | ||
717 | impossible for a consumer to process data in the \dotdebugnames{} section. | ||
718 | The augmentation string only provides hints to the consumer regarding | ||
719 | the 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. | |||
776 | the same slot, but the consumer will be able to distinguish the names | 782 | the same slot, but the consumer will be able to distinguish the names |
777 | when appropriate.} | 783 | when appropriate.} |
778 | 784 | ||
779 | \textit{The simple case folding algorithm is further described | 785 | The simple case folding algorithm is further described |
780 | in the CaseFolding.txt file distributed with the \addtoindex{Unicode} | 786 | in the CaseFolding.txt file distributed with the \addtoindex{Unicode} |
781 | Character Database. That file defines four classes of mappings: | 787 | Character Database. That file defines four classes of mappings: |
782 | Common (C), Simple (S), Full (F), and Turkish (T). | 788 | Common (C), Simple (S), Full (F), and Turkish (T). |
783 | The hash computation specified here uses the C + S mappings only, | 789 | The hash computation specified here uses the C + S mappings only, |
784 | which do not affect the total length of the string.} | 790 | which do not affect the total length of the string. |
785 | \eb | 791 | \eb |
786 | 792 | ||
787 | Each bucket contains the index of an entry in the hashes array. The | 793 | Each 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 | |||
854 | 0 for the form. | 860 | 0 for the form. |
855 | 861 | ||
856 | The index attributes and their meanings are listed in | 862 | The index attributes and their meanings are listed in |
857 | Table \referfol{tab:indexattributeencodings}. | 863 | Table \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 | ||
879 | The abbreviations table ends with an entry consisting of a single 0 | 887 | The abbreviations table ends with an entry consisting of a single 0 |
880 | byte for the abbreviation code. The size of the table given by | 888 | byte 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 |
882 | terminating 0 byte. | 890 | terminating 0 byte. |
883 | 891 | ||
892 | \needlines{4} | ||
884 | \subsubsubsection{Entry Pool} | 893 | \subsubsubsection{Entry Pool} |
885 | The entry pool immediately follows the abbreviations table. | 894 | The entry pool immediately follows the abbreviations table. |
886 | Each entry in the entry offsets array in the name table (see | 895 | Each entry in the entry offsets array in the name table (see |
@@ -1233,6 +1242,7 @@ consumers in decoding the line number program instructions for | |||
1233 | a particular compilation unit and also provides information | 1242 | a particular compilation unit and also provides information |
1234 | used throughout the rest of the line number program. | 1243 | used throughout the rest of the line number program. |
1235 | 1244 | ||
1245 | \needlines{4} | ||
1236 | The line number program for each compilation unit begins with | 1246 | The line number program for each compilation unit begins with |
1237 | a header containing the following fields in order: | 1247 | a 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 |
1750 | those given for addresses in \DWARFVersionIII{} and earlier.} | 1760 | those given for addresses in \DWARFVersionIII{} and earlier.} |
1751 | 1761 | ||
1762 | \needlines{4} | ||
1752 | The amount to increment the line register is the | 1763 | The amount to increment the line register is the |
1753 | \addttindex{line\_base} plus | 1764 | \addttindex{line\_base} plus |
1754 | the result of the | 1765 | the result of the |
@@ -1825,6 +1836,7 @@ takes no operands. | |||
1825 | It sets the \addttindex{basic\_block} register of the | 1836 | It sets the \addttindex{basic\_block} register of the |
1826 | state machine to \doublequote{true.} | 1837 | state machine to \doublequote{true.} |
1827 | 1838 | ||
1839 | \needlines{4} | ||
1828 | \item \textbf{\DWLNSconstaddpcTARG} \\ | 1840 | \item \textbf{\DWLNSconstaddpcTARG} \\ |
1829 | The \DWLNSconstaddpcNAME{} opcode takes | 1841 | The \DWLNSconstaddpcNAME{} opcode takes |
1830 | no operands. It advances the \texttt{address} and \addttindex{op\_index} registers | 1842 | no operands. It advances the \texttt{address} and \addttindex{op\_index} registers |
@@ -1885,7 +1897,7 @@ it must be determined in combination with the subroutine | |||
1885 | information entries of the compilation (including inlined | 1897 | information entries of the compilation (including inlined |
1886 | subroutines).} | 1898 | subroutines).} |
1887 | 1899 | ||
1888 | 1900 | \needlines{4} | |
1889 | \item \textbf{\DWLNSsetepiloguebeginTARG} \\ | 1901 | \item \textbf{\DWLNSsetepiloguebeginTARG} \\ |
1890 | The \DWLNSsetepiloguebeginNAME{} opcode takes no operands. It | 1902 | The \DWLNSsetepiloguebeginNAME{} opcode takes no operands. It |
1891 | sets the \addttindex{epilogue\_begin} register to \doublequote{true.} | 1903 | sets the \addttindex{epilogue\_begin} register to \doublequote{true.} |
@@ -1949,6 +1961,7 @@ sets the \addttindex{op\_index} register to 0. | |||
1949 | affect the \texttt{address} register add a delta to it. This instruction | 1961 | affect the \texttt{address} register add a delta to it. This instruction |
1950 | stores a relocatable value into it instead.} | 1962 | stores a relocatable value into it instead.} |
1951 | 1963 | ||
1964 | \needlines{4} | ||
1952 | \item \textbf{\DWLNEsetdiscriminatorTARG} \\ | 1965 | \item \textbf{\DWLNEsetdiscriminatorTARG} \\ |
1953 | The \DWLNEsetdiscriminatorNAME{} | 1966 | The \DWLNEsetdiscriminatorNAME{} |
1954 | opcode takes a single | 1967 | opcode 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} | |||
442 | attribute, whose value is of class \CLASSaddrptr. | 442 | attribute, whose value is of class \CLASSaddrptr. |
443 | This attribute points to the beginning of the compilation | 443 | This attribute points to the beginning of the compilation |
444 | unit's contribution to the \dotdebugaddr{} section. | 444 | unit's contribution to the \dotdebugaddr{} section. |
445 | Indirect references (using \DWFORMaddrx, \DWOPaddrx, | 445 | Indirect 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: | |||
119 | skeleton \dotdebuginfo{} section. | 119 | skeleton \dotdebuginfo{} section. |
120 | \item | 120 | \item |
121 | \dotdebugaddr{} - Contains references to loadable sections, | 121 | \dotdebugaddr{} - Contains references to loadable sections, |
122 | indexed by attributes of form \DWFORMaddrx{} or location | 122 | indexed by attributes of |
123 | expression | 123 | \bb |
124 | \DWOPaddrx{} opcodes. | 124 | one of the forms |
125 | \eb | ||
126 | \DWFORMaddrxXN{}, | ||
127 | or location expression \DWOPaddrx{} opcodes. | ||
125 | \item | 128 | \item |
126 | \dotdebugaranges{} - Contains the accelerated range lookup table | 129 | \dotdebugaranges{} - Contains the accelerated range lookup table |
127 | for the compilation unit. | 130 | for the compilation unit. |
@@ -201,7 +204,11 @@ one \dotdwo{} section to another \dotdwo{} section | |||
201 | in the same compilation unit. | 204 | in 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 |
204 | program address use the \DWFORMaddrx{} form, referencing a relocatable | 207 | program address use |
208 | \bb | ||
209 | one of the \DWFORMaddrxXNor{} forms, | ||
210 | \eb | ||
211 | referencing a relocatable | ||
205 | value in the \dotdebugaddr{} section (which remains in the .o file). | 212 | value 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 | |||
556 | actually begins at offset 40 (for a 64-bit DWARF object, the | 563 | actually begins at offset 40 (for a 64-bit DWARF object, the |
557 | header would be 16 bytes long, and the value for the | 564 | header 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 | ||
570 | would then refer to address | ||
560 | table slots relative to that offset. Likewise, the \dotdebugaddr{} | 571 | table slots relative to that offset. Likewise, the \dotdebugaddr{} |
561 | contribution from \texttt{demo2.dwo} begins at offset 72, and its first | 572 | contribution from \texttt{demo2.dwo} begins at offset 72, and its first |
562 | address slot is at offset 80. Because these contributions have | 573 | address 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 |
606 | use the form code \DWFORMaddrx, referring to slots in the | 617 | \bb |
618 | one 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} |
717 | In the defining declaration for \texttt{Box::contains} at 5\$, the | 731 | In the defining declaration for \texttt{Box::contains} at 5\$, the |
718 | \DWATlowpc{} attribute is represented with \DWFORMaddrx, | 732 | \DWATlowpc{} attribute is represented |
719 | referring to slot 0 in the \dotdebugaddr{} table from \texttt{demo1.o}. | 733 | \bb |
734 | using \DWFORMaddrx, which refers | ||
735 | \eb | ||
736 | to slot 0 in the \dotdebugaddr{} table from \texttt{demo1.o}. | ||
720 | That slot contains the relocated address of the beginning of the | 737 | That slot contains the relocated address of the beginning of the |
721 | function. | 738 | function. |
722 | 739 | ||
@@ -1044,6 +1061,7 @@ is also copied. The type units for class \texttt{Box} and class | |||
1044 | and \texttt{demo2.dwo}, but only one instance of each is copied into | 1061 | and \texttt{demo2.dwo}, but only one instance of each is copied into |
1045 | the package file. | 1062 | the package file. |
1046 | 1063 | ||
1064 | \needlines{4} | ||
1047 | The \dotdebugstrdwo{} sections from each file are merged to | 1065 | The \dotdebugstrdwo{} sections from each file are merged to |
1048 | form a new string table with no duplicates, requiring the | 1066 | form a new string table with no duplicates, requiring the |
1049 | adjustment of all references to those strings. The | 1067 | adjustment of all references to those strings. The |
@@ -1052,7 +1070,6 @@ are copied as individual contributions, but the string table offset | |||
1052 | in each slot of those contributions is adjusted to point to | 1070 | in each slot of those contributions is adjusted to point to |
1053 | the correct offset in the merged string table. | 1071 | the correct offset in the merged string table. |
1054 | 1072 | ||
1055 | \needlines{4} | ||
1056 | The \dotdebugcuindex{} and \dotdebugtuindex{} sections provide a | 1073 | The \dotdebugcuindex{} and \dotdebugtuindex{} sections provide a |
1057 | directory to these contributions. | 1074 | directory to these contributions. |
1058 | Figure \referfol{fig:examplecuindexsection} shows an example CU | 1075 | Figure \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 | |||
313 | null\dash terminated string containing the target\dash dependent picture | 313 | null\dash terminated string containing the target\dash dependent picture |
314 | string associated with the type. | 314 | string associated with the type. |
315 | 315 | ||
316 | \needlines{4} | ||
316 | If the edited base type entry describes an edited numeric | 317 | If the edited base type entry describes an edited numeric |
317 | data type, the edited type entry has a \DWATdigitcount{} and a | 318 | data 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 | |||
395 | DWARF by a debugging information entry with one of the tags | 396 | DWARF by a debugging information entry with one of the tags |
396 | given in Table \refersec{tab:typemodifiertags}. | 397 | given 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 | ||
405 | Name&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 | |||
398 | If a name has been given to the modified type in the source | 451 | If a name has been given to the modified type in the source |
399 | program, then the corresponding modified type entry has | 452 | program, then the corresponding modified type entry has |
400 | a \DWATname{} attribute | 453 | a \DWATname{} attribute\addtoindexx{name attribute} |
401 | \addtoindexx{name attribute} | 454 | whose value is a null-terminated string containing |
402 | whose value is a null\dash terminated | 455 | the name of the modified type. |
403 | string containing the modified type name. | ||
404 | 456 | ||
405 | Each of the type modifier entries has | 457 | Each of the type modifier entries has a |
406 | \addtoindexx{type attribute} | 458 | \DWATtype{} attribute\addtoindexx{type attribute}, |
407 | a | ||
408 | \DWATtype{} attribute, | ||
409 | whose value is a \livelink{chap:classreference}{reference} | 459 | whose value is a \livelink{chap:classreference}{reference} |
410 | to a debugging information entry | 460 | to a debugging information entry |
411 | describing a base type, a user-defined type or another type | 461 | describing 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}} |
457 | presentation. | 507 | presentation. |
458 | 508 | ||
459 | \begin{table}[ht] | 509 | \bb |
460 | \caption{Type modifier tags} | 510 | Examples 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 | ||
465 | Name&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 |
520 | character. It is encoded in DWARF as:} | 522 | character. 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 |
540 | pointer to a volatile character. This is encoded as:} | 540 | pointer 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} |
557 | A named type that is defined in terms of another type | 558 | A named type that is defined in terms of another type |
@@ -573,6 +574,7 @@ the debugging information entry for a typedef represents | |||
573 | a declaration of the type that is not also a definition, | 574 | a declaration of the type that is not also a definition, |
574 | it does not contain a type attribute. | 575 | it 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 |
577 | terms of another type may be called a type alias, a subtype, | 579 | terms of another type may be called a type alias, a subtype, |
578 | a constrained type and other terms. A type name declared with | 580 | a 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. | |||
659 | compile time, this value can usually be computed by multiplying | 661 | compile time, this value can usually be computed by multiplying |
660 | the number of array elements by the size of each element.} | 662 | the number of array elements by the size of each element.} |
661 | 663 | ||
662 | |||
663 | Each array dimension is described by a debugging information | 664 | Each array dimension is described by a debugging information |
664 | entry with either the | 665 | entry 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 | |||
719 | entry has a \DWATname{} attribute whose value is a null-terminated | 720 | entry has a \DWATname{} attribute whose value is a null-terminated |
720 | string containing the array type name. | 721 | string containing the array type name. |
721 | 722 | ||
723 | \needlines{4} | ||
722 | A coarray entry has one or more \DWTAGsubrangetype{} child entries, | 724 | A coarray entry has one or more \DWTAGsubrangetype{} child entries, |
723 | one for each codimension. It also has a \DWATtype{} attribute | 725 | one for each codimension. It also has a \DWATtype{} attribute |
724 | describing the type of each element of the coarray. | 726 | describing 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 |
776 | be understood to apply to \addtoindex{C++} structures as well.} | 778 | be 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} |
780 | Structure, union, and class types are represented by debugging | 783 | Structure, union, and class types are represented by debugging |
@@ -1209,6 +1212,26 @@ of storage needed to hold the value of the data member. | |||
1209 | see Appendix \refersec{app:pascalexample} and | 1212 | see 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 | |||
1219 | A member variable (\doublequote{static data member} in | ||
1220 | \addtoindex{C++}) is represented by a | ||
1221 | debugging information entry with the tag \DWTAGvariable. | ||
1222 | |||
1223 | The member variable entry | ||
1224 | may contain the same attributes and follows the same rules | ||
1225 | as non-member global variable entries | ||
1226 | (see Section \refersec{chap:dataobjectentries}). | ||
1227 | |||
1228 | A member variable entry may have a | ||
1229 | \hyperlink{chap:DWATaccessibilityattribute}{\DWATaccessibilityNAME} | ||
1230 | \addtoindexx{accessibility attribute} | ||
1231 | attribute. If no accessibility attribute is present, private | ||
1232 | access is assumed for an entry of a class and public access | ||
1233 | is 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} |