DW.myf90.CommonStuff.fh.654321.3: ! linker global symbol
\livelink{chap:DWTAGcommonblock}{DW\-\_TAG\-\_common\-\_block}
\livelink{chap:DWATname}{DW\-\_AT\-\_name}("Common1")
- \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(Address of common block Common1)
+ \livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(Address of common \nolink{block} Common1)
\livelink{chap:DWTAGvariable}{DW\-\_TAG\-\_variable}
\livelink{chap:DWATname}{DW\-\_AT\-\_name}("C")
\livelink{chap:DWATtype}{DW\-\_AT\-\_type}(reference to 3\$)
: \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} value
: \livelink{chap:DWFORMflag}{DW\-\_FORM\-\_flag} value
: \livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string} string
- : \livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block} block
+ : \livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block} \nolink{block}
\livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string}
: '\\x08'
\livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block}
: '\\x0d'
value
: <SLEB128>
-block
+\nolink{block}
: <ULEB128> <fixed-length-block>
- // The ULEB128 gives the length of the block
+ // The ULEB128 gives the length of the \nolink{block}
back-ref
: <ULEB128>
string
This section presents the debugging information entries that
describe individual data objects: variables, parameters and
constants, and lists of those objects that may be grouped in
-a single declaration, such as a common block.
+a single declaration, such as a common \nolink{block}.
\section{Data Object Entries}
\label{chap:dataobjectentries}
or an entry describing a named constant. (Note that such
an entry does not have a location attribute.) The value of
this attribute may be a string or any of the constant data
-or data block forms, as appropriate for the representation
+or data \livelink{chap:block}{block} forms,
+as appropriate for the representation
of the variable’s value. The value is the actual constant
value of the variable, represented as it would be on the
target architecture. One way in which a formal parameter
\textit{The scope of a variable may begin somewhere in the middle of
-a lexical block in a language that allows executable code in a
-block before a variable declaration, or where one declaration
+a lexical \nolink{block} in a language that allows executable code in a
+\nolink{block} before a variable declaration, or where one declaration
containing initialization code may change the scope of a
subsequent declaration. For example, in the following C code:}
\section{Common Block Entries}
\label{chap:commonblockentries}
-A Fortran common block may be described by a debugging
+A Fortran common \nolink{block} may be described by a debugging
information entry with the
tag \livetarg{chap:DWTAGcommonblock}{DW\-\_TAG\-\_common\-\_block}.
The
-common block entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute whose value
-is a null-terminated string containing the common block
+common \nolink{block}
+entry has a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute whose value
+is a null-terminated string containing the common \nolink{block}
name as it appears in the source program. It may also have a
\livelink{chap:DWATlinkagename}{DW\-\_AT\-\_linkage\-\_name} attribute as described in
Section \refersec{chap:linkagenames}.
It
also has a \livelink{chap:DWATlocation}{DW\-\_AT\-\_location} attribute whose value describes the
-location of the beginning of the common block. The common
-block entry owns debugging information entries describing
-the variables contained within the common block.
+location of the beginning of the common \nolink{block}. The common
+\nolink{block} entry owns debugging information entries describing
+the variables contained within the common \nolink{block}.
\section{Namelist Entries}
\label{chap:namelistentries}
This address is relocatable in a relocatable object file and
is relocated in an executable file or shared object.
-\item block \\
+\item \livelink{chap:block}{block} \\
Blocks come in four forms:
\begin{myindentpara}{1cm}
\livelink{chap:DWATstringlength}{DW\-\_AT\-\_string\-\_length}&0x19&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
\livelink{chap:DWATcommonreference}{DW\-\_AT\-\_common\-\_reference}&0x1a&reference \\
\livelink{chap:DWATcompdir}{DW\-\_AT\-\_comp\-\_dir}&0x1b&string \\
-\livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}&0x1c&block, constant, string \\
+\livelink{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}&0x1c&\livelink{chap:block}{block}, constant, string \\
\livelink{chap:DWATcontainingtype}{DW\-\_AT\-\_containing\-\_type}&0x1d&reference \\
\livelink{chap:DWATdefaultvalue}{DW\-\_AT\-\_default\-\_value}&0x1e&reference \\
\livelink{chap:DWATinline}{DW\-\_AT\-\_inline}&0x20&constant \\
\livelink{chap:DWATdeclfile}{DW\-\_AT\-\_decl\-\_file}&0x3a&constant \\
\livelink{chap:DWATdeclline}{DW\-\_AT\-\_decl\-\_line}&0x3b&constant \\
\livelink{chap:DWATdeclaration}{DW\-\_AT\-\_declaration}&0x3c&\livelink{chap:flag}{flag} \\
-\livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list}&0x3d&block \\
+\livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list}&0x3d&\livelink{chap:block}{block} \\
\livelink{chap:DWATencoding}{DW\-\_AT\-\_encoding}&0x3e&constant \\
\livelink{chap:DWATexternal}{DW\-\_AT\-\_external}&0x3f&\livelink{chap:flag}{flag} \\
\livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base}&0x40&\livelink{chap:exprloc}{exprloc}, \livelink{chap:loclistptr}{loclistptr} \\
\hline
\endlastfoot
\livelink{chap:DWFORMaddr}{DW\-\_FORM\-\_addr}&0x01&address \\
-\livelink{chap:DWFORMblock2}{DW\-\_FORM\-\_block2}&0x03&block \\
-\livelink{chap:DWFORMblock4}{DW\-\_FORM\-\_block4}&0x04&block \\
+\livelink{chap:DWFORMblock2}{DW\-\_FORM\-\_block2}&0x03&\livelink{chap:block}{block} \\
+\livelink{chap:DWFORMblock4}{DW\-\_FORM\-\_block4}&0x04&\livelink{chap:block}{block} \\
\livelink{chap:DWFORMdata2}{DW\-\_FORM\-\_data2}&0x05&constant \\
\livelink{chap:DWFORMdata4}{DW\-\_FORM\-\_data4}&0x06&constant \\
\livelink{chap:DWFORMdata8}{DW\-\_FORM\-\_data8}&0x07&constant \\
\livelink{chap:DWFORMstring}{DW\-\_FORM\-\_string}&0x08&string \\
-\livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block}&0x09&block \\
-\livelink{chap:DWFORMblock1}{DW\-\_FORM\-\_block1}&0x0a&block \\
+\livelink{chap:DWFORMblock}{DW\-\_FORM\-\_block}&0x09&\livelink{chap:block}{block} \\
+\livelink{chap:DWFORMblock1}{DW\-\_FORM\-\_block1}&0x0a&\livelink{chap:block}{block} \\
\livelink{chap:DWFORMdata1}{DW\-\_FORM\-\_data1}&0x0b&constant \\
\livelink{chap:DWFORMflag}{DW\-\_FORM\-\_flag}&0x0c&\livelink{chap:flag}{flag} \\
\livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata}&0x0d&constant \\
\subsection{DWARF Expressions}
\label{datarep:dwarfexpressions}
-A DWARF expression is stored in a block of contiguous
+A DWARF expression is stored in a \nolink{block} of contiguous
bytes. The bytes form a sequence of operations. Each operation
is a 1\dash byte code that identifies that operation, followed by
zero or more bytes of additional data. The encodings for the
\livelink{chap:DWOPbitpiece}{DW\-\_OP\-\_bit\-\_piece}&0x9d &2&ULEB128 size followed by \\
&&&ULEB128 offset\\
\livelink{chap:DWOPimplicitvalue}{DW\-\_OP\-\_implicit\-\_value}&0x9e &2&ULEB128 size followed by \\
-&&&block of that size\\
+&&&\nolink{block} of that size\\
\livelink{chap:DWOPstackvalue}{DW\-\_OP\-\_stack\-\_value} &0x9f &0& \\
\livetarg{chap:DWOPlouser}{DW\-\_OP\-\_lo\-\_user} &0xe0 && \\
\livetarg{chap:DWOPhiuser}{DW\-\_OP\-\_hi\-\_user} &0xff && \\
a base address selection entry, or an end of list entry.
A location list entry consists of two address offsets followed
-by a 2\dash byte length, followed by a block of contiguous bytes
+by a 2\dash byte length, followed by a \nolink{block} of contiguous bytes
that contains a DWARF location description. The length
-specifies the number of bytes in that block. The two offsets
+specifies the number of bytes in that \nolink{block}. The two offsets
are the same size as an address on the target machine.
A base address selection entry and an end of list entry each
\livetarg{chap:DWATcallingconvention}{DW\-\_AT\-\_calling\-\_convention}
&Subprogram calling convention \\
&\livetarg{chap:DWATcommonreference}{DW\-\_AT\-\_common\-\_reference} \\
-&Common block usage \\
+&Common \nolink{block} usage \\
\livetarg{chap:DWATcompdir}{DW\-\_AT\-\_comp\-\_dir}
&Compilation directory \\
\livetarg{chap:DWATconstvalue}{DW\-\_AT\-\_const\-\_value}
information entry to be one of many owned by another debugging
information entry.
This makes it possible, for example, to
-describe the static block structure within a source file,
+describe the static \nolink{block} structure within a source file,
to show the members of a structure, union, or class, and to
associate declarations with source files or source files
with shared objects.
\item \livetarg{chap:DWOPformtlsaddress}{DW\-\_OP\-\_form\-\_tls\-\_address} \\
The \livelink{chap:DWOPformtlsaddress}{DW\-\_OP\-\_form\-\_tls\-\_address} operation pops a value from the
stack, translates it into an address in the current thread's
-thread\dash local storage block, and pushes the address. If the
+thread\dash local storage \nolink{block}, and pushes the address. If the
DWARF expression containing the \livelink{chap:DWOPformtlsaddress}{DW\-\_OP\-\_form\-\_tls\-\_address}
operation belongs to the main executable's DWARF info, the
operation uses the main executable's thread\dash local storage
-block; if the expression belongs to a shared library's
+\nolink{block}; if the expression belongs to a shared library's
DWARF info, then it uses that shared library's thread\dash local
-storage block. Some implementations of C and C++ support a
+storage \nolink{block}. Some implementations of C and C++ support a
\_\_thread storage class. Variables with this storage class
have distinct values and addresses in distinct threads, much
as automatic variables have distinct values and addresses in
-each function invocation. Typically, there is a single block
+each function invocation. Typically, there is a single \nolink{block}
of storage containing all \_\_thread variables declared in
-the main executable, and a separate block for the variables
+the main executable, and a separate \nolink{block} for the variables
declared in each shared library. Computing the address of
-the appropriate block can be complex (in some cases, the
+the appropriate \nolink{block} can be complex (in some cases, the
compiler emits a function call to do it), and difficult
to describe using ordinary DWARF location descriptions.
\livelink{chap:DWOPformtlsaddress}{DW\-\_OP\-\_form\-\_tls\-\_address} leaves the computation to the
DWARF operations specific to describing locations. They are
sufficient for describing the location of any object as long
as its lifetime is either static or the same as the lexical
-block that owns it, and it does not move during its lifetime.
+\nolink{block} that owns it, and it does not move during its lifetime.
Single location descriptions are of two kinds:
\begin{enumerate}[a]
\item \livetarg{chap:DWOPimplicitvalue}{DW\-\_OP\-\_implicit\-\_value} \\
The \livelink{chap:DWOPimplicitvalue}{DW\-\_OP\-\_implicit\-\_value} operation specifies an immediate value
using two operands: an unsigned LEB128 length, followed by
-a block representing the value in the memory representation
+a \nolink{block} representing the value in the memory representation
of the target machine. The length operand gives the length
-in bytes of the block.
+in bytes of the \nolink{block}.
\item \livetarg{chap:DWOPstackvalue}{DW\-\_OP\-\_stack\-\_value} \\
The \livelink{chap:DWOPstackvalue}{DW\-\_OP\-\_stack\-\_value} operation specifies that the object
\section{Data Locations and DWARF Procedures}
Any debugging information entry describing a data object (which
-includes variables and parameters) or common block may have a
+includes variables and parameters) or common \nolink{block} may have a
\livelink{chap:DWATlocation}{DW\-\_AT\-\_location} attribute, whose value is a location description
(see Section 2.6).
Any debugging information entry describing an entity that has
a machine code address or range of machine code addresses,
which includes compilation units, module initialization,
-subroutines, ordinary blocks, try/catch blocks, labels and
+subroutines, ordinary \nolink{block}, try/catch \nolink{blocks}, labels and
the like, may have
\begin{itemize}
Any debugging information entry describing an entity that has
a range of code addresses, which includes compilation units,
-module initialization, subroutines, ordinary blocks, try/catch
-blocks, and the like, may have a \livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc} attribute to
+module initialization, subroutines, ordinary \nolink{block}, try/catch
+\nolink{blocks}, and the like, may have a \livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc} attribute to
indicate the first executable instruction within that range
of addresses. The value of the \livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc} attribute is a
relocated address. If no \livelink{chap:DWATentrypc}{DW\-\_AT\-\_entry\-\_pc} attribute is present,
independent debugging information whenever possible.
Aspects
of individual languages, such as C++ virtual functions or
-Fortran common blocks, are accommodated by creating attributes
+Fortran common \nolink{blocks}, are accommodated by creating attributes
that are used only for those languages.
This document is
believed to cover most debugging information needs of Ada,
\item \textit{the source file name}
\item \textit{the source line number}
\item \textit{the source column number}
-\item \textit{whether this insruction is the beginning of a basic block}
+\item \textit{whether this insruction is the beginning of a basic \nolink{block}}
\item \textit{and so on}
\end{itemize}
line number information instructions representing
one compilation unit. \\
-basic block &
+basic \nolink{block} &
A sequence of instructions where only the first instruction may be a
branch target and only the last instruction may transfer control. A
-procedure invocation is defined to be an exit from a basic block.
+procedure invocation is defined to be an exit from a basic \nolink{block}.
-\textit{A basic block does not necessarily correspond to a specific source code
+\textit{A basic \nolink{block} does not necessarily correspond to a specific source code
construct.} \\
sequence &
basic\_block &
A boolean indicating that the current instruction is the beginning of a basic
-block. \\
+\nolink{block}. \\
end\_sequence &
A boolean indicating that the current address is that of the first byte after
architecture. \\
discriminator &
-An unsigned integer identifying the block to which the
+An unsigned integer identifying the \nolink{block} to which the
current instruction belongs. Discriminator values are assigned
arbitrarily by the DWARF producer and serve to distinguish
-among multiple blocks that may all be associated with the
-same source file, line, and column. Where only one block
+among multiple \nolink{block} that may all be associated with the
+same source file, line, and column. Where only one \nolink{block}
exists for a given source position, the discriminator value
should be zero. \\
\end{longtable}
\begin{itemize} % bullet list
-\item \textit{Prologue and epilogue code is not always in distinct blocks
+\item \textit{Prologue and epilogue code is not always in
+distinct \nolink{block}
at the beginning and end of a subroutine. It is common
to duplicate the epilogue code at the site of each return
from the code. Sometimes a compiler breaks up the register
calling address, but that need not be the case, especially if
the producer knows in some way the call never will return. The
context of the 'return address' might be on a different line,
-in a different lexical block, or past the end of the calling
+in a different lexical \nolink{block}, or past the end of the calling
subroutine. If a consumer were to assume that it was in the
same context as the calling address, the unwind might fail.}
represented by a debugging information entry with the tag
\livetarg{chap:DWTAGunspecifiedparameters}{DW\-\_TAG\-\_unspecified\-\_parameters}.
-The entry for a subroutine that includes a Fortran common block
+The entry for a subroutine that includes a Fortran common \nolink{block}
has a child entry with the
tag \livetarg{chap:DWTAGcommoninclusion}{DW\-\_TAG\-\_common\-\_inclusion}.
The
common inclusion entry has a
\livelink{chap:DWATcommonreference}{DW\-\_AT\-\_common\-\_reference} attribute
whose value is a reference to the debugging information entry
-for the common block being included
+for the common \nolink{block} being included
(see Section \refersec{chap:commonblockentries}).
\subsection{Low-Level Information}
\section{Lexical Block Entries}
\label{chap:lexicalblockentries}
-\textit{A lexical block is a bracketed sequence of source statements
+\textit{A lexical \nolink{block} is a bracketed sequence of source statements
that may contain any number of declarations. In some languages
-(including C and C++), blocks can be nested within other
-blocks to any depth.}
+(including C and C++), \nolink{blocks} can be nested within other
+\nolink{blocks} to any depth.}
-A lexical block is represented by a debugging information
+A lexical \nolink{block} is represented by a debugging information
entry with the
tag \livetarg{chap:DWTAGlexicalblock}{DW\-\_TAG\-\_lexical\-\_block}.
-The lexical block entry may have either a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and
-\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of attributes or a \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute
+The lexical \nolink{block} entry may have
+either a \livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and
+\livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of
+attributes or a \livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute
whose values encode the contiguous or non-contiguous address
ranges, respectively, of the machine instructions generated
-for the lexical block
+for the lexical \nolink{block}
(see Section \refersec{chap:codeaddressesandranges}).
-If a name has been given to the lexical block in the source
-program, then the corresponding lexical block entry has a
+If a name has been given to the lexical \nolink{block} in the source
+program, then the corresponding lexical \nolink{block} entry has a
\livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute whose value is a null-terminated string
-containing the name of the lexical block as it appears in
+containing the name of the lexical \nolink{block} as it appears in
the source program.
\textit{This is not the same as a C or C++ label (see below).}
-The lexical block entry owns debugging information entries that
-describe the declarations within that lexical block. There is
+The lexical \nolink{block} entry owns debugging information entries that
+describe the declarations within that lexical \nolink{block}. There is
one such debugging information entry for each local declaration
-of an identifier or inner lexical block.
+of an identifier or inner lexical \nolink{block}.
\section{Label Entries}
\label{chap:labelentries}
\section{Try and Catch Block Entries}
\label{chap:tryandcatchblockentries}
-\textit{In C++ a lexical block may be designated as a ``catch
-block.'' A catch block is an exception handler that handles
-exceptions thrown by an immediately preceding ``try block.''
-A catch block designates the type of the exception that it
+\textit{In C++ a lexical \nolink{block} may be designated as a ``catch
+\nolink{block}.'' A catch \nolink{block} is an exception handler that handles
+exceptions thrown by an immediately preceding ``try \nolink{block}.''
+A catch \nolink{block} designates the type of the exception that it
can handle.}
-A try block is represented by a debugging information entry
+A try \nolink{block} is represented by a debugging information entry
with the tag \livetarg{chap:DWTAGtryblock}{DW\-\_TAG\-\_try\-\_block}.
-A catch block is represented by
+A catch \nolink{block} is represented by
a debugging information entry with
the tag \livetarg{chap:DWTAGcatchblock}{DW\-\_TAG\-\_catch\-\_block}.
-Both try and catch block entries may have either a
+Both try and catch \nolink{block} entries may have either a
\livelink{chap:DWATlowpc}{DW\-\_AT\-\_low\-\_pc} and \livelink{chap:DWAThighpc}{DW\-\_AT\-\_high\-\_pc} pair of attributes or a
\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} attribute whose values encode the contiguous
or non- contiguous address ranges, respectively, of the
-machine instructions generated for the block (see Section
+machine instructions generated for the \nolink{block} (see Section
\refersec{chap:codeaddressesandranges}).
-Catch block entries have at least one child entry, an
+Catch \nolink{block} entries have at least one child entry, an
entry representing the type of exception accepted by
-that catch block. This child entry has one of the tags
+that catch \nolink{block}. This child entry has one of the tags
\livelink{chap:DWTAGformalparameter}{DW\-\_TAG\-\_formal\-\_parameter} or \livelink{chap:DWTAGunspecifiedparameters}{DW\-\_TAG\-\_unspecified\-\_parameters},
and will have the same form as other parameter entries.
-The siblings immediately following a try block entry are its
-corresponding catch block entries.
+The siblings immediately following a try \nolink{block} entry are its
+corresponding catch \nolink{block} entries.
Alternatively, the variant entry may contain a \livelink{chap:DWATdiscrlist}{DW\-\_AT\-\_discr\-\_list}
attribute, whose value represents a list of discriminant
-values. This list is represented by any of the block forms and
+values. This list is represented by any of the
+\livelink{chap:block}{block} forms and
may contain a mixture of case labels and label ranges. Each
item on the list is prefixed with a discriminant value
descriptor that determines whether the list item represents