where each \addtoindex{section group} might or might not contain executable
code (\textit{.text} sections) or data (\textit{.data} sections).
+\needlines{6}
A \textit{\addtoindex{section group}} is a named set
of section contributions
within an object file with the property that the entire set
Figure \refersec{fig:duplicateeliminationexample2fortransource}.
\begin{figure}
-\textbf{File CommonStuff.fh}
+\textit{File CommonStuff.fh}
\addtoindexx{Fortran}
\begin{lstlisting}[numbers=none]
IMPLICIT INTEGER(A-Z)
PARAMETER(SEVEN = 7)
\end{lstlisting}
-\textbf{File Func.f}
+\textit{File Func.f}
\begin{lstlisting}[numbers=none]
FUNCTION FOO (N)
INCLUDE 'CommonStuff.fh'
Figure \refersec{fig:duplicateeliminationexample2companionsource}
\begin{figure}
-\textbf{File Main.f:}
+\textit{File Main.f}
\begin{lstlisting}[numbers=none]
INCLUDE 'CommonStuff.fh'
C(50) = 8
\label{fig:duplicateeliminationexample2companionsource}
\end{figure}
+\needlines{3}
That main program results in an object file that
contained a duplicate of the \addtoindex{section group} named
my.f90.company.f90.CommonStuff.fh.654321
visible as global entities.
+\needlines{6}
\subsubsection{C Example}
The \addtoindex{C} example
\label{fig:typesignaturecomputation1dwarfrepresentation}
\end{figure}
+\needlines{3}
In computing a signature for the type N::C, flatten the type
\addtoindexx{type signature}
description into a byte stream according to the procedure
\addtoindex{.debug\_info} or
\addtoindex{.debug\_types} section.
+\needlines{4}
Multiple debugging information entries may share the same
abbreviation table entry. Each compilation unit is associated
with a particular abbreviation table, but multiple compilation
unsigned integers respectively, rather than
\livelink{chap:DWFORMdata}{DW\-\_FORM\-\_data}\textless n\textgreater.}
-
+\needlines{4}
\item \livelink{chap:exprloc}{exprloc} \\
This is an unsigned LEB128 length followed by the
number of information bytes specified by the length
in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
(see Section \refersec{datarep:32bitand64bitdwarfformats}).
+\needlines{4}
\item \livelink{chap:rangelistptr}{rangelistptr} \\
This is an
\addtoindexx{section offset!in class rangelistptr value}
\end{longtable}
\end{centering}
+
+\needlines{6}
\section{Variable Length Data}
\label{datarep:variablelengthdata}
\addtoindexx{variable length data|see {LEB128}}
\addtoindexx{LEB128!examples}
gives algorithms for encoding and decoding these forms.}
-
+\needlines{8}
\begin{centering}
\setlength{\extrarowheight}{0.1cm}
\begin{longtable}{l|l|l}
\livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute are given in
Table \refersec{tab:inlineencodings}.
+\needlines{8}
\begin{centering}
\setlength{\extrarowheight}{0.1cm}
\begin{longtable}{l|c}
% this clearpage is ugly, but the following table came
% out oddly without it.
-\clearpage
+
\section{Array Ordering}
\label{datarep:arrayordering}
\end{longtable}
\end{centering}
+\needlines{6}
\section{Name Lookup Tables}
\label{datarep:namelookuptables}
offset containing the value 0.
+\needlines{6}
\section{Address Range Table}
\label{datarep:addrssrangetable}
\end{centering}
+\needspace{10cm}
The encodings for the extended opcodes are given in
\addtoindexx{line number opcodes!extended opcode encoding}
Table \refersec{tab:linenumberextendedopcodeencodings}.
are given in
Table \refersec{tab:macinfotypeencodings}.
-\clearpage
\begin{centering}
\setlength{\extrarowheight}{0.1cm}
\end{longtable}
\end{centering}
+\needlines{7}
\section{Call Frame Information}
\label{datarep:callframeinformation}
\end{longtable}
\end{centering}
+\needlines{6}
\section{Type Signature Computation}
\label{datarep:typesignaturecomputation}
\item Append to S the letter 'D', followed by the DWARF tag of
the debugging information entry.
-\item For each of the following attributes that are present in
-the debugging information entry, in the order listed below,
+\item For each of the attributes in
+Table \refersec{tab:attributesusedintypesignaturecomputation}
+that are present in
+the debugging information entry, in the order listed,
append to S a marker letter (see below), the DWARF attribute
code, and the attribute value.
+
+\begin{table}[ht]
+\caption{Attributes used in type signature computation}
+\label{tab:attributesusedintypesignaturecomputation}
+\simplerule[\textwidth]
\begin{center}
\autocols[0pt]{c}{2}{l}{
\livelink{chap:DWATname}{DW\-\_AT\-\_name},
\livelink{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location}
}
\end{center}
+\simplerule[\textwidth]
+\end{table}
Note that except for the initial
\livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute,
\end{itemize}
+\needlines{4}
\textit{Certain attributes are not included in the type signature:}
\begin{itemize}
\renewcommand{\familydefault}{phv} % font family helvetica
-\newcommand{\docdate}{31 January 2013}
+\newcommand{\docdate}{3 February 2013}
\newcommand{\dwf}{DWARF Debugging Information Format}
\include{programscope} \emptypage
\include{dataobject} \emptypage
\include{typeentries} \emptypage
-\include{otherdebugginginformation}
-\include{datarepresentation} \emptypage
+\include{otherdebugginginformation} \emptypage
+\include{datarepresentation} %\emptypage
% The \appendix toggles us into appendix chapters
\appendix
\include{attributesbytag}
\include{debugsectionrelationships} \emptypage
\include{encodingdecoding} \emptypage
-\include{examples} \emptypage
-\include{compression} \emptypage
+\include{examples} %\emptypage
+\include{compression} %\emptypage
\include{sectionversionnumbers}
\include{gnulicense}
\printindex
\caption{Constant expressions: C++ source} \label{fig:constantexpressionscsource}
\end{figure}
-\begin{figure}[h]
+
+\begin{figure}[!h]
\begin{dwflisting}
\begin{alltt}
! For variable mass
can be described in DWARF as illustrated in
Figure \refersec{fig:unicodecharacterexampledwarfdescription}.
-\begin{figure}[h]
+\begin{figure}[!h]
\begin{lstlisting}[numbers=none]
// C++ source
//
\end{figure}
+\clearpage
\section{Template Examples}
\label{app:templateexample}
not possible for the DWARF to imply anything about the nature
of the original template.
+\needlines{10}
Consider the C++ template source in
Figure \refersec{fig:ctemplateexample2source}
and the DWARF that can describe it in
Figure \refersec{fig:ctemplateexample2dwarf}.
-\begin{figure}[h]
+\begin{figure}[!h]
\begin{lstlisting}
// C++ source
//
consume(obj);
\end{lstlisting}
\caption{C++ template example \#2: source}
-\label{ctemplateexample2source}
+\label{fig:ctemplateexample2source}
\end{figure}
\begin{figure}[h]
Codes for vendor specific extensions, if any, are described
just like standard opcodes.
+\needlines{3}
\item include\_directories (sequence of path names) \\
Entries
\addtoindexx{include\_directories}
operand and adds that value to the line register of the
state machine.
+\needlines{4}
\item \textbf{DW\-\_LNS\-\_set\-\_file} \\
The \livetarg{chap:DWLNSsetfile}{DW\-\_LNS\-\_set\-\_file} opcode takes a single
unsigned LEB128\addtoindexx{LEB128!unsigned}
affect the address register add a delta to it. This instruction
stores a relocatable value into it instead.}
-
+\needlines{4}
\item \textbf{DW\-\_LNE\-\_define\-\_file} \\
The \livetarg{chap:DWLNEdefinefile}{DW\-\_LNE\-\_define\-\_file} opcode takes four operands:
saved and the rule to find the value for the register in the
previous frame.
-\clearpage
+\needlines{4}
The register rules are:
\begin{tabular}{lp{8cm}}
regarding restrictions on the DWARF
expression operators that can be used.}
+\needlines{7}
\item \textbf{DW\-\_CFA\-\_val\-\_expression} \\
The \livetarg{chap:DWCFAvalexpression}{DW\-\_CFA\-\_val\-\_expression} instruction takes two operands:
an unsigned LEB128\addtoindexx{LEB128!unsigned}
identifying character sequence that should avoid confusion
with other producer values.
-
+\needlines{4}
\item A \livelink{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case}
attribute
\addtoindexx{identifier case attribute}
need only be attached directly to the original
\livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace} entry.)
+\needlines{4}
Namespace and namespace extension entries may own
\addtoindexx{namespace extension entry}
other
but more
compact. However, these are not equivalent in general.}
+\needlines{5}
\textit{The frame base for a procedure is typically an address fixed
relative to the first unit of storage allocated for the
procedure\textquoteright s stack frame. The \livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} attribute
order bit of the storage unit used to contain that value.}
\end{myindentpara}
+\needlines{5}
\textit{In comparing
DWARF Versions 3
\addtoindexx{DWARF Version 3}
\end{alltt}
\end{dwflisting}
+\needlines{3}
\textit{On the other hand}
\begin{lstlisting}[numbers=none]
volatile unsigned char * const restrict p;
the beginning of the containing entity then neither attribute
is required.
+\needlines{4}
For a \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} attribute
\addtoindexx{data member location attribute}
there are two cases:
-
\begin{enumerate}[1.]
-
\item If the value is an integer constant, it is the offset
in bytes from the beginning of the containing entity. If
the beginning of the containing entity has a non-zero bit
a
\livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute
whose value is a reference to the type
-named by the template alias. The template alias entry has
-the following child entries:
+named by the template alias.
+\needlines{4}
+The template alias entry has the following child entries:
\begin{enumerate}[1.]
\item Each formal parameterized type declaration appearing
in the template alias declaration is represented