\hypertarget{chap:DWXXXlohiuser}{}
value range for vendor specific extensions consist of the
appropriate prefix
-(\DWTAGlouserMARK\DWTAGhiuserMARK{} DW\_TAG,
-\DWATlouserMARK\DWAThiuserMARK{} DW\_AT,
-\DWENDlouserMARK\DWENDhiuserMARK{} DW\_END,
-\DWATElouserMARK\DWATEhiuserMARK{} DW\_ATE,
-\DWOPlouserMARK\DWOPhiuserMARK{} DW\_OP,
-\DWLANGlouserMARK\DWLANGhiuserMARK{}DW\_LANG,
-\DWLNElouserMARK\DWLNEhiuserMARK{} DW\_LNE,
-\DWCClouserMARK\DWCChiuserMARK{} DW\_CC or
-\DWCFAlouserMARK\DWCFAhiuserMARK{} DW\_CFA
+(\DWATlouserMARK{}\DWAThiuserMARK{} DW\_AT,
+\DWATElouserMARK{}\DWATEhiuserMARK{} DW\_ATE,
+\DWCClouserMARK{}\DWCChiuserMARK{} DW\_CC,
+\DWCFAlouserMARK{}\DWCFAhiuserMARK{} DW\_CFA
+\DWENDlouserMARK{}\DWENDhiuserMARK{} DW\_END,
+\DWLANGlouserMARK{}\DWLANGhiuserMARK{} DW\_LANG,
+\DWLNElouserMARK{}\DWLNEhiuserMARK{} DW\_LNE,
+\DWMACROlouserMARK{}\DWMACROhiuserMARK{}DW\_MACRO,
+\DWOPlouserMARK{}\DWOPhiuserMARK{} DW\_OP or
+\DWTAGlouserMARK{}\DWTAGhiuserMARK{} DW\_TAG,
respectively) followed by
\_lo\_user or \_hi\_user.
-\textit{For example, for DIE tags, the special
-labels are \DWTAGlouserNAME{} and \DWTAGhiuserNAME.}
Values in the range between \textit{prefix}\_lo\_user
and \textit{prefix}\_hi\_user inclusive,
are reserved for vendor specific extensions. Vendors may
future system\dash defined values. All other values are reserved
for use by the system.
+\textit{For example, for DIE tags, the special
+labels are \DWTAGlouserNAME{} and \DWTAGhiuserNAME.}
+
\textit{There may also be codes for vendor specific extensions
between the number of standard line number opcodes and
the first special line number opcode. However, since the
\dotdebuglinedwo{} section (see
Section \refersec{chap:skeletoncompilationunitentries}).
-\item Macro information, in the \dotdebugmacinfodwo{} section.
+\item Macro information, in the \dotdebugmacrodwo{} section.
\item A string table, in the \dotdebugstrdwo{} section.
\textit{This field is new in \DWARFVersionV.}
+\needlines{4}
\item \addttindex{debug\_abbrev\_offset} (\livelink{datarep:sectionoffsetlength}{section offset}) \\
A
\addtoindexx{section offset!in .debug\_info header}
in the \sixtyfourbitdwarfformat, this is an 8\dash byte unsigned length
(see Section \refersec{datarep:32bitand64bitdwarfformats}).
+\needlines{4}
\item \texttt{address\_size} (ubyte) \\
A 1\dash byte unsigned integer representing the size
\addtoindexx{size of an address}
\subsection{Debugging Information Entry}
\label{datarep:debugginginformationentry}
-Each debugging information entry begins with an unsigned LEB128
+Each debugging information entry begins with an
+unsigned LEB128\addtoindexx{LEB128!unsigned}
number containing the abbreviation code for the entry. This
code represents an entry within the abbreviations table
associated with the compilation unit containing this entry. The
of a series of abbreviation declarations. Each declaration
specifies the tag and attributes for a particular form of
debugging information entry. Each declaration begins with
-an unsigned LEB128 number representing the abbreviation
+an unsigned LEB128\addtoindexx{LEB128!unsigned}
+number representing the abbreviation
code itself. It is this code that appears at the beginning
of a debugging information entry in the
\dotdebuginfo{}
section. As described above, the abbreviation
code 0 is reserved for null debugging information entries. The
-abbreviation code is followed by another unsigned LEB128
+abbreviation code is followed by another unsigned LEB128\addtoindexx{LEB128!unsigned}
number that encodes the entry\textquoteright s tag. The encodings for the
tag names are given in
Table \refersec{tab:tagencodings}.
\DWTAGimportedunit&0x3d \\
\DWTAGcondition&\xiiif \\
\DWTAGsharedtype&0x40 \\
-\DWTAGtypeunit{} &0x41 \\
-\DWTAGrvaluereferencetype{} &0x42 \\
-\DWTAGtemplatealias{} &0x43 \\
-\DWTAGcoarraytype~\ddag &0x44 \\
-\DWTAGgenericsubrange~\ddag &0x45 \\
+\DWTAGtypeunit & 0x41 \\
+\DWTAGrvaluereferencetype & 0x42 \\
+\DWTAGtemplatealias & 0x43 \\
+\DWTAGcoarraytype~\ddag & 0x44 \\
+\DWTAGgenericsubrange~\ddag & 0x45 \\
\DWTAGdynamictype~\ddag & 0x46 \\
\DWTAGatomictype~\ddag & 0x47 \\
+\DWTAGcallsite~\ddag & 0x48 \\
+\DWTAGcallsiteparameter~\ddag & 0x49 \\
\DWTAGlouser&0x4080 \\
\DWTAGhiuser&\xffff \\
\end{longtable}
\needlines{4}
Finally, the child encoding is followed by a series of
attribute specifications. Each attribute specification
-consists of two parts. The first part is an unsigned LEB128
-number representing the attribute\textquoteright s name. The second part
-is an unsigned LEB128 number representing the attribute\textquoteright s
-form. The series of attribute specifications ends with an
+consists of two parts. The first part is an
+unsigned LEB128\addtoindexx{LEB128!unsigned}
+number representing the attribute\textquoteright s name.
+The second part is an
+unsigned LEB128\addtoindexx{LEB128!unsigned}
+number representing the attribute\textquoteright s form.
+The series of attribute specifications ends with an
entry containing 0 for the name and 0 for the form.
The attribute form
of the associated compilation unit.
\end{itemize}
+\needlines{5}
+\item \livelink{chap:classaddrptr}{addrptr} \\
+\livetarg{datarep:classaddrptr}{}
+This is an offset into the \dotdebugaddr{} section (\DWFORMsecoffset). It
+consists of an offset from the beginning of the \dotdebugaddr{} section to the
+beginning of the list of machine addresses information for the
+referencing entity. It is relocatable in
+a relocatable object file, and relocated in an executable or
+shared object. In the \thirtytwobitdwarfformat, this offset
+is a 4\dash byte unsigned value; in the 64\dash bit DWARF
+format, it is an 8\dash byte unsigned value (see Section
+\refersec{datarep:32bitand64bitdwarfformats}).
+
+\textit{This class is new in \DWARFVersionV.}
+
\needlines{4}
\item \livelink{chap:classblock}{block} \\
\livetarg{datarep:classblock}{}
\end{myindentpara}
\begin{myindentpara}{1cm}
-An unsigned LEB128 length followed by the number of bytes
+An unsigned LEB128\addtoindexx{LEB128!unsigned}
+length followed by the number of bytes
specified by the length (\DWFORMblockTARG).
\end{myindentpara}
\needlines{4}
\item \livelinki{chap:classexprloc}{exprloc}{exprloc class} \\
\livetarg{datarep:classexprloc}{}
-This is an unsigned LEB128 length followed by the
+This is an unsigned LEB128\addtoindexx{LEB128!unsigned} length followed by the
number of information bytes specified by the length
(\DWFORMexprlocTARG).
The information bytes contain a DWARF expression
This is an
\addtoindexx{section offset!in class macptr value}
offset into the
-\dotdebugmacinfo{} or \dotdebugmacinfo{} section
+\dotdebugmacro{} or \dotdebugmacrodwo{} section
(\DWFORMsecoffset).
-It consists of an offset from the
-beginning of the \dotdebugmacinfo{}
-section to the first byte of
-the data making up the macro information list for the compilation
-unit.
+It consists of an offset from the beginning of the
+\dotdebugmacro{} or \dotdebugmacrodwo{}
+section to the the header making up the
+macro information list for the compilation unit.
It is relocatable in a relocatable object file, and
relocated in an executable or shared object. In the
\thirtytwobitdwarfformat, this offset is a 4\dash byte unsigned value;
\DWFORMreffourTARG,
and \DWFORMrefeightTARG).
There is also an unsigned variable
-length offset encoded form that uses unsigned LEB128 numbers
+length offset encoded form that uses
+unsigned LEB128\addtoindexx{LEB128!unsigned} numbers
(\DWFORMrefudataTARG).
Because this type of reference is within
the containing compilation unit no relocation of the value
of strings; for compatibility, this version also does
not. However, the UTF\dash 8 representation is strongly recommended.}
+\item \livelinki{chap:classstroffsetsptr}{stroffsetsptr}{stroffsetsptr class} \\
+\livetarg{datarep:classstroffsetsptr}{}
+This is an offset into the \dotdebugstroffsets{} section
+(\DWFORMsecoffset). It consists of an offset from the beginning of the
+\dotdebugstroffsets{} section to the
+beginning of the string offsets information for the
+referencing entity. It is relocatable in
+a relocatable object file, and relocated in an executable or
+shared object. In the \thirtytwobitdwarfformat, this offset
+is a 4\dash byte unsigned value; in the 64\dash bit DWARF
+format, it is an 8\dash byte unsigned value (see Section
+\refersec{datarep:32bitand64bitdwarfformats}).
+
+\textit{This class is new in \DWARFVersionV.}
+
\end{itemize}
In no case does an attribute use
\addtoindexx{friend attribute!encoding} \\
\DWATidentifiercase&0x42&\livelink{chap:classconstant}{constant}
\addtoindexx{identifier case attribute!encoding} \\
-\DWATmacroinfo&0x43&\livelink{chap:classmacptr}{macptr}
- \addtoindexx{macro information attribute!encoding} \\
+\DWATmacroinfo\footnote{\raggedright Not used in \DWARFVersionV.
+ Reserved for compatibility and coexistence
+ with prior DWARF versions.}
+ &0x43&\livelink{chap:classmacptr}{macptr}
+ \addtoindexx{macro information attribute (legacy)!encoding} \\
\DWATnamelistitem&0x44&\livelink{chap:classreference}{reference}
\addtoindexx{name list item attribute!encoding} \\
\DWATpriority&0x45&\livelink{chap:classreference}{reference}
\addtoindexx{enumeration class attribute!encoding} \\
\DWATlinkagename{} &0x6e&\livelink{chap:classstring}{string}
\addtoindexx{linkage name attribute!encoding} \\
-\DWATstringlengthbitsize{} \ddag&0x6f&
+\DWATstringlengthbitsize{}~\ddag&0x6f&
\livelink{chap:classconstant}{constant}
\addtoindexx{string length attribute!size of length} \\
-\DWATstringlengthbytesize{} \ddag&0x70&
+\DWATstringlengthbytesize{}~\ddag&0x70&
\livelink{chap:classconstant}{constant}
\addtoindexx{string length attribute!size of length} \\
\DWATrank~\ddag&0x71&
- \livelink{chap:DWATrank}{constant, exprloc}
+ \livelink{chap:classconstant}{constant},
+ \livelink{chap:classexprloc}{exprloc}
\addtoindexx{rank attribute!encoding} \\
\DWATstroffsetsbase~\ddag&0x72&
- \livelink{chap:classstring}{reference}
+ \livelinki{chap:classstring}{stroffsetsptr}{stroffsetsptr class}
\addtoindexx{string offsets base!encoding} \\
\DWATaddrbase~\ddag &0x73&
- \livelink{chap:DWATaddrbase}{reference}
+ \livelinki{chap:DWATaddrbase}{addrptr}{addrptr class}
\addtoindexx{address table base!encoding} \\
\DWATrangesbase~\ddag&0x74&
- \livelink{chap:DWATrangesbase}{reference}
+ \livelinki{chap:DWATrangesbase}{rangelistptr}{rangelistptr class}
\addtoindexx{ranges base!encoding} \\
\DWATdwoid~\ddag &0x75&
\livelink{chap:DWATdwoid}{constant}
\addtoindexx{split DWARF object id!encoding} \\
\DWATdwoname~\ddag &0x76&
- \livelink{chap:DWATdwname}{string}
+ \livelink{chap:DWATdwoname}{string}
\addtoindexx{split DWARF object file name!encoding} \\
\DWATreference~\ddag &0x77&
\livelink{chap:DWATreference}{flag} \\
\DWATrvaluereference~\ddag &0x78&
\livelink{chap:DWATrvaluereference}{flag} \\
+\DWATmacros~\ddag &0x79&\livelink{chap:classmacptr}{macptr}
+ \addtoindexx{macro information attribute!encoding} \\
+\DWATcallallcalls~\ddag &0x7a&\CLASSflag
+ \addtoindexx{all calls summary attribute!encoding}\\
+\DWATcallallsourcecalls~\ddag &0x7b &\CLASSflag
+ \addtoindexx{all source calls summary attribute!encoding} \\
+\DWATcallalltailcalls~\ddag &0x7c&\CLASSflag
+ \addtoindexx{all tail calls summary attribute!encoding} \\
+\DWATcalldatalocation~\ddag &0x7d&\CLASSexprloc
+ \addtoindexx{call data location attribute!encoding} \\
+\DWATcalldatavalue~\ddag &0x7e&\CLASSexprloc
+ \addtoindexx{call data value attribute!encoding} \\
+\DWATcallorigin~\ddag &0x7f &\CLASSexprloc
+ \addtoindexx{call origin attribute!encoding} \\
+\DWATcallparameter~\ddag &0x80 &\CLASSreference
+ \addtoindexx{call parameter attribute!encoding} \\
+\DWATcallpc~\ddag &0x81 &\CLASSaddress
+ \addtoindexx{call pc attribute!encoding} \\
+\DWATcallreturnpc~\ddag &0x82 &\CLASSaddress
+ \addtoindexx{call return pc attribute!encoding} \\
+\DWATcalltailcall~\ddag &0x83 &\CLASSflag
+ \addtoindexx{call tail call attribute!encoding} \\
+\DWATcalltarget~\ddag &0x84 &\CLASSexprloc
+ \addtoindexx{call target attribute!encoding} \\
+\DWATcalltargetclobbered!\ddag &0x85 &\CLASSexprloc
+ \addtoindexx{call target clobbered attribute!encoding} \\
+\DWATcallvalue~\ddag &0x86 &\CLASSexprloc
+ \addtoindexx{call value attribute!encoding} \\
+
\DWATlouser&0x2000 & --- \addtoindexx{low user attribute encoding} \\
\DWAThiuser&\xiiifff& --- \addtoindexx{high user attribute encoding} \\
\endhead
\hline \emph{Continued on next page}
\endfoot
- \hline
-
+ \hline \ddag\ \textit{New in DWARF Version 5}
\endlastfoot
+
\DWFORMaddr &0x01&\livelink{chap:classaddress}{address} \\
\textit{Reserved} &0x02& \\
\DWFORMblocktwo &0x03&\livelink{chap:classblock}{block} \\
\DWFORMsecoffset{} &0x17&\livelink{chap:classlineptr}{lineptr}, \livelink{chap:classloclistptr}{loclistptr}, \livelink{chap:classmacptr}{macptr}, \livelink{chap:classrangelistptr}{rangelistptr} \\
\DWFORMexprloc{} &0x18&\livelink{chap:classexprloc}{exprloc} \\
\DWFORMflagpresent{} &0x19&\livelink{chap:classflag}{flag} \\
-\DWFORMstrx &0x1a&\livelink{chap:classstring}{string} \\
-\DWFORMaddrx &0x1b&\livelink{chap:classaddess}{address} \\
+\DWFORMstrx{} \ddag &0x1a&\livelink{chap:classstring}{string} \\
+\DWFORMaddrx{} \ddag &0x1b&\livelink{chap:classaddress}{address} \\
\DWFORMrefsigeight &0x20&\livelink{chap:classreference}{reference} \\
-
+
\end{longtable}
\end{centering}
unsigned integer, when the big end is all zeroes or sign
extension bits.}
-Unsigned LEB128 (ULEB128) numbers are encoded as follows:
+Unsigned LEB128\addtoindexx{LEB128!unsigned} (ULEB128) numbers are encoded as follows:
\addtoindexx{LEB128!unsigned, encoding as}
start at the low order end of an unsigned integer and chop
it into 7\dash bit chunks. Place each chunk into the low order 7
zero byte.
Table \refersec{tab:examplesofunsignedleb128encodings}
-gives some examples of unsigned LEB128 numbers. The
+gives some examples of unsigned LEB128\addtoindexx{LEB128!unsigned}
+numbers. The
0x80 in each case is the high order bit of the byte, indicating
that an additional byte follows.
indicates whether an encoded number is signed or unsigned. The
decoder must know what type of number to expect.
Table \refersec{tab:examplesofunsignedleb128encodings}
-gives some examples of unsigned LEB128 numbers and
-Table \refersec{tab:examplesofsignedleb128encodings}
-gives some examples of signed LEB128
+gives some examples of unsigned LEB128\addtoindexx{LEB128!unsigned}
+numbers and Table \refersec{tab:examplesofsignedleb128encodings}
+gives some examples of signed LEB128\addtoindexx{LEB128!signed}
numbers.
\textit{Appendix \refersec{app:variablelengthdataencodingdecodinginformative}
\begin{longtable}{l|l|l}
\caption{Examples of unsigned LEB128 encodings}
\label{tab:examplesofunsignedleb128encodings}
- \addtoindexx{LEB128 encoding!examples} \\
+ \addtoindexx{LEB128 encoding!examples}\addtoindexx{LEB128!unsigned} \\
\hline \bfseries Number&\bfseries First byte &\bfseries Second byte \\ \hline
\endfirsthead
\bfseries Number&\bfseries First Byte &\bfseries Second byte\\ \hline
\begin{centering}
\setlength{\extrarowheight}{0.1cm}
\begin{longtable}{l|l|l}
- \caption{Examples of signed LEB128 encodings} \label{tab:examplesofsignedleb128encodings} \\
+ \caption{Examples of signed LEB128 encodings}
+ \label{tab:examplesofsignedleb128encodings}
+ \addtoindexx{LEB128!signed} \\
\hline \bfseries Number&\bfseries First byte &\bfseries Second byte \\ \hline
\endfirsthead
\bfseries Number&\bfseries First Byte &\bfseries Second byte\\ \hline
&&&SLEB128 constant offset \\
\DWOPaddrx~\ddag&0xa1&1&ULEB128 indirect address \\
\DWOPconstx~\ddag&0xa2&1&ULEB128 indirect constant \\
+\DWOPentryvalue~\ddag&0xa3&2&ULEV128 size, \\*
+ &&&\nolink{block} of that size\\
\DWOPlouser{} &0xe0 && \\
\DWOPhiuser{} &\xff && \\
\hline
\dag \ \textit{See text} \\ \ddag \ \textit{New in \addtoindex{DWARF Version 5}}
\endlastfoot
-
-\DWLANGCeightynine &0x0001 &0 \\
-\DWLANGC{} &0x0002 &0 \\
-\DWLANGAdaeightythree{} \dag &0x0003 &1 \addtoindexx{Ada} \\
-\DWLANGCplusplus{} &0x0004 &0 \\
-\DWLANGCobolseventyfour{} \dag &0x0005 &1 \\
-\DWLANGCoboleightyfive{} \dag &0x0006 &1 \\
-\DWLANGFortranseventyseven &0x0007 &1 \\
-\DWLANGFortranninety &0x0008 &1 \\
-\DWLANGPascaleightythree &0x0009 &1 \\
-\DWLANGModulatwo &0x000a &1 \\
-\DWLANGJava &0x000b &0 \\
-\DWLANGCninetynine &0x000c &0 \\
-\DWLANGAdaninetyfive{} \dag &0x000d &1 \addtoindexx{Ada} \\
-\DWLANGFortranninetyfive &0x000e &1 \\
-\DWLANGPLI{} \dag &0x000f &1 \\
-\DWLANGObjC{} &0x0010 &0 \\
-\DWLANGObjCplusplus{} &0x0011 &0 \\
-\DWLANGUPC{} &0x0012 &0 \\
-\DWLANGD{} &0x0013 &0 \\
-\DWLANGPython{} \dag &0x0014 &0 \\
-\DWLANGOpenCL{} \dag \ddag &0x0015 &0 \\
-\DWLANGGo{} \dag \ddag &0x0016 &0 \\
-\DWLANGModulathree{} \dag \ddag &0x0017 &1 \\
-\DWLANGHaskell{} \dag \ddag &0x0018 &0 \\
-\DWLANGCpluspluszerothree{} \ddag &0x0019 &0 \\
-\DWLANGCpluspluseleven{} \ddag &0x001a &0 \\
-\DWLANGOCaml{} \ddag &0x001b &0 \\
+\addtoindexx{ISO-defined language names}
+
+\DWLANGCeightynine &0x0001 &0 \addtoindexx{C:1989 (ISO)} \\
+\DWLANGC{} &0x0002 &0 \addtoindexx{C!non-standard} \\
+\DWLANGAdaeightythree{} \dag &0x0003 &1 \addtoindexx{Ada:1983 (ISO)} \\
+\DWLANGCplusplus{} &0x0004 &0 \addtoindexx{C++:1998 (ISO)} \\
+\DWLANGCobolseventyfour{} \dag &0x0005 &1 \addtoindexx{COBOL:1974 (ISO)} \\
+\DWLANGCoboleightyfive{} \dag &0x0006 &1 \addtoindexx{COBOL:1985 (ISO)} \\
+\DWLANGFortranseventyseven &0x0007 &1 \addtoindexx{FORTRAN:1977 (ISO)} \\
+\DWLANGFortranninety &0x0008 &1 \addtoindexx{Fortran:1990 (ISO)} \\
+\DWLANGPascaleightythree &0x0009 &1 \addtoindexx{Pascal:1983 (ISO)} \\
+\DWLANGModulatwo &0x000a &1 \addtoindexx{Modula-2:1996 (ISO)} \\
+\DWLANGJava &0x000b &0 \addtoindexx{Java} \\
+\DWLANGCninetynine &0x000c &0 \addtoindexx{C:1999 (ISO)} \\
+\DWLANGAdaninetyfive{} \dag &0x000d &1 \addtoindexx{Ada:1995 (ISO)} \\
+\DWLANGFortranninetyfive &0x000e &1 \addtoindexx{Fortran:1995 (ISO)} \\
+\DWLANGPLI{} \dag &0x000f &1 \addtoindexx{PL/I:1976 (ANSI)}\\
+\DWLANGObjC{} &0x0010 &0 \addtoindexx{Objective C}\\
+\DWLANGObjCplusplus{} &0x0011 &0 \addtoindexx{Objective C++}\\
+\DWLANGUPC{} &0x0012 &0 \addtoindexx{UPC}\\
+\DWLANGD{} &0x0013 &0 \addtoindexx{D language}\\
+\DWLANGPython{} \dag &0x0014 &0 \addtoindexx{Python}\\
+\DWLANGOpenCL{} \dag \ddag &0x0015 &0 \addtoindexx{OpenCL}\\
+\DWLANGGo{} \dag \ddag &0x0016 &0 \addtoindexx{Go}\\
+\DWLANGModulathree{} \dag \ddag &0x0017 &1 \addtoindexx{Modula-3}\\
+\DWLANGHaskell{} \dag \ddag &0x0018 &0 \addtoindexx{Haskell}\\
+\DWLANGCpluspluszerothree{} \ddag &0x0019 &0 \addtoindexx{C++:2003 (ISO)}\\
+\DWLANGCpluspluseleven{} \ddag &0x001a &0 \addtoindexx{C++:2011 (ISO)}\\
+\DWLANGOCaml{} \ddag &0x001b &0 \addtoindexx{OCaml}\\
+\DWLANGRust{} \ddag &0x001c &0 \addtoindexx{Rust}\\
+\DWLANGCeleven{} \ddag &0x001d &0 \addtoindexx{C:2011 (ISO)}\\
\DWLANGlouser{} &0x8000 & \\
\DWLANGhiuser{} &\xffff & \\
\label{datarep:macroinformation}
The source line numbers and source file indices encoded in the
-macro information section are represented as unsigned LEB128
-numbers as are the constants in a
-\DWMACINFOvendorext{} entry.
+macro information section are represented as
+unsigned LEB128\addtoindexx{LEB128!unsigned} numbers.
-The macinfo type is encoded as a single byte.
+The macro information entry type is encoded as a single byte.
The encodings
-\addtoindexx{macinfo types!encoding}
+\addtoindexx{macro information entry types!encoding}
are given in
-Table \refersec{tab:macinfotypeencodings}.
+Table \refersec{tab:macroinfoentrytypeencodings}.
\begin{centering}
\setlength{\extrarowheight}{0.1cm}
\begin{longtable}{l|c}
- \caption{Macinfo type encodings} \label{tab:macinfotypeencodings}\\
- \hline \bfseries Macinfo type name&\bfseries Value \\ \hline
+ \caption{Macro information entry type encodings} \label{tab:macroinfoentrytypeencodings}\\
+ \hline \bfseries Macro information entry type name&\bfseries Value \\ \hline
\endfirsthead
- \bfseries Macinfo type name&\bfseries Value\\ \hline
+ \bfseries Macro information entry type name&\bfseries Value\\ \hline
\endhead
\hline \emph{Continued on next page}
\endfoot
\hline
\endlastfoot
-\DWMACINFOdefine&0x01 \\
-\DWMACINFOundef&0x02 \\
-\DWMACINFOstartfile&0x03 \\
-\DWMACINFOendfile&0x04 \\
-\DWMACINFOvendorext&\xff \\
+\DWMACROdefine &0x01 \\
+\DWMACROundef &0x02 \\
+\DWMACROstartfile &0x03 \\
+\DWMACROendfile &0x04 \\
+\DWMACROdefineindirect &0x05 \\
+\DWMACROundefindirect &0x06 \\
+\DWMACROtransparentinclude &0x07 \\
+% what about 0x08 thru 0x0a??
+\DWMACROdefineindirectx &0x0b \\
+\DWMACROundefindirectx &0x0c \\
+\DWMACROlouser &0xe0 \\
+\DWMACROhiuser &\xff \\
\end{longtable}
\end{centering}
\dotdebuginfo{},
\dotdebugline{},
\dotdebugloc{},
-\dotdebugmacinfo{},
+\dotdebugmacro{},
\dotdebugpubnames{},
\dotdebugpubtypes{},
\dotdebugranges{},
\label{datarep:typesignaturecomputation}
A type signature is computed only by the DWARF producer;
-\addtoindexx{type signature computation}
+\addtoindexx{type signature!computation}
it is used by a DWARF consumer to resolve type references to
the type definitions that are contained in
\addtoindexx{type unit}
An attribute that refers to another type entry T is processed
as follows: (a) If T is in the list V at some V[x], use the
-letter 'R' as the marker and use the unsigned LEB128 encoding
-of x as the attribute value; otherwise, (b) use the letter 'T'
+letter 'R' as the marker and use the unsigned LEB128\addtoindexx{LEB128!unsigned}
+encoding of x as the attribute value; otherwise, (b) use the letter 'T'
as the marker, process the type T recursively by performing
Steps 2 through 7, and use the result as the attribute value.
LEB128 value) followed by the encoding of the value according
to the form code. To ensure reproducibility of the signature,
the set of forms used in the signature computation is limited
-to the following: \DWFORMsdata,
+to the following:
+\DWFORMsdata,
\DWFORMflag,
\DWFORMstring,
+\DWFORMexprloc,
and \DWFORMblock.
\item If the tag in Step 3 is one of \DWTAGpointertype,
one in D is ignored.
DWARF tag and attribute codes are appended to the sequence
-as unsigned LEB128 values, using the values defined earlier
-in this chapter.
+as unsigned LEB128\addtoindexx{LEB128!unsigned} values,
+using the values defined earlier in this chapter.
\textit{A grammar describing this computation may be found in
Appendix \refersec{app:typesignaturecomputationgrammar}.