Introduce \newdwfnamecommands command that defines multiple
authorRon Brender <ron.brender@gmail.com>
Mon, 30 Sep 2013 16:26:45 +0000 (12:26 -0400)
committerRon Brender <ron.brender@gmail.com>
Mon, 30 Sep 2013 16:26:45 +0000 (12:26 -0400)
commands based corresponding to DWARF symbolic names. Make
the most common case, eg, \DWATname, be the form that results
in both an index entry and a live link (that is, reverse the
LL suffix convention introduced in the previous submision.

Signed-off-by: Ron Brender <ron.brender@gmail.com>
dwarf5/latexdoc/attributesbytag.tex
dwarf5/latexdoc/changesummary.tex
dwarf5/latexdoc/datarepresentation.tex
dwarf5/latexdoc/dwarfnamecmds.tex
dwarf5/latexdoc/examples.tex
dwarf5/latexdoc/generaldescription.tex
dwarf5/latexdoc/typeentries.tex

index 0e929ab..d575a54 100644 (file)
@@ -117,7 +117,7 @@ means include all three of the
 &\livelink{chap:DWATvisibility}{DW\_AT\_visibility} \\
 
 \hline
 &\livelink{chap:DWATvisibility}{DW\_AT\_visibility} \\
 
 \hline
-\DWTAGcoarraytypeLL
+\DWTAGcoarraytype
 &\livelink{chap:DECL}{DECL} \\
 &\livelink{chap:DWATname}{DW\_AT\_name} \\
 &\livelink{chap:DWATsibling}{DW\_AT\_sibling} \\
 &\livelink{chap:DECL}{DECL} \\
 &\livelink{chap:DWATname}{DW\_AT\_name} \\
 &\livelink{chap:DWATsibling}{DW\_AT\_sibling} \\
@@ -283,7 +283,7 @@ means include all three of the
 
 \hline
 % Please keep in synch with DW_TAG_subrange_type.
 
 \hline
 % Please keep in synch with DW_TAG_subrange_type.
-\DWTAGgenericsubrangeLL
+\DWTAGgenericsubrange
 &\livelink{chap:DECL}{DECL}  \\
 &\livelink{chap:DWATabstractorigin}{DW\_AT\_abstract\_origin}  \\
 &\livelink{chap:DWATaccessibility}{DW\_AT\_accessibility}  \\
 &\livelink{chap:DECL}{DECL}  \\
 &\livelink{chap:DWATabstractorigin}{DW\_AT\_abstract\_origin}  \\
 &\livelink{chap:DWATaccessibility}{DW\_AT\_accessibility}  \\
index 7d15602..29b62c7 100644 (file)
@@ -13,7 +13,8 @@ This change summary is included only in draft versions of this document.
 
 \vspace{1cm}
 \begin{tabular}{ll}
 
 \vspace{1cm}
 \begin{tabular}{ll}
-\textbf{Date}  & \textbf{Issue Incorported or Other Change}    \\ \hline \\
+\textbf{Date}  & \textbf{Issue Incorported or Other Change}    \\ \hline       \\
+9/28/2013              & Introduce \newdwfnamecommands and related conventions         \\
 9/27/2013              & Editorial work re assumed-rank arrays, other minor cleanups \\
 9/23/2013       & 130313.5 (Fortran assumed-rank arrays)\\
 6/22/2013      & 100805.1 (value of reference), 100816.1 (remove .debug\_types), \\ 
 9/27/2013              & Editorial work re assumed-rank arrays, other minor cleanups \\
 9/23/2013       & 130313.5 (Fortran assumed-rank arrays)\\
 6/22/2013      & 100805.1 (value of reference), 100816.1 (remove .debug\_types), \\ 
index cb0569d..81dc83e 100644 (file)
@@ -563,8 +563,8 @@ Table \refersec{tab:tagencodings}.
 \livelink{chap:DWTAGtypeunit}{DW\_TAG\_type\_unit} &0x41      \\
 \livelink{chap:DWTAGrvaluereferencetype}{DW\_TAG\_rvalue\_reference\_type} &0x42      \\
 \livelink{chap:DWTAGtemplatealias}{DW\_TAG\_template\_alias} &0x43      \\
 \livelink{chap:DWTAGtypeunit}{DW\_TAG\_type\_unit} &0x41      \\
 \livelink{chap:DWTAGrvaluereferencetype}{DW\_TAG\_rvalue\_reference\_type} &0x42      \\
 \livelink{chap:DWTAGtemplatealias}{DW\_TAG\_template\_alias} &0x43      \\
-\DWTAGcoarraytypeLL &0x44 \\
-\DWTAGgenericsubrangeLL &0x45 \\
+\DWTAGcoarraytype &0x44 \\
+\DWTAGgenericsubrange &0x45 \\
 \livelink{chap:DWXXXlohiuser}{DW\_TAG\_lo\_user}&0x4080      \\
 \livelink{chap:DWXXXlohiuser}{DW\_TAG\_hi\_user}&\xffff      \\
 \end{longtable}
 \livelink{chap:DWXXXlohiuser}{DW\_TAG\_lo\_user}&0x4080      \\
 \livelink{chap:DWXXXlohiuser}{DW\_TAG\_hi\_user}&\xffff      \\
 \end{longtable}
@@ -1216,7 +1216,7 @@ Table \refersec{tab:attributeformencodings}.
                \livelink{chap:classconstant}{constant}\addtoindexx{string length attribute!size of length}  \\
 \livelink{chap:DWATstringlengthbytesize}{DW\_AT\_string\_length\_byte\_size} \ddag&0x70&
                \livelink{chap:classconstant}{constant}\addtoindexx{string length attribute!size of length}  \\
                \livelink{chap:classconstant}{constant}\addtoindexx{string length attribute!size of length}  \\
 \livelink{chap:DWATstringlengthbytesize}{DW\_AT\_string\_length\_byte\_size} \ddag&0x70&
                \livelink{chap:classconstant}{constant}\addtoindexx{string length attribute!size of length}  \\
-\DWATrankLL \ddag&0x71&
+\DWATrank~\ddag&0x71&
                \livelink{chap:DWATrank}{constant, exprloc}\addtoindexx{rank attribute!encoding}  \\
 \livelink{chap:DWXXXlohiuser}{DW\_AT\_lo\_user}&0x2000 & --- \addtoindexx{low user attribute encoding}  \\
 \livelink{chap:DWXXXlohiuser}{DW\_AT\_hi\_user}&\xiiifff& --- \addtoindexx{high user attribute encoding}  \\
                \livelink{chap:DWATrank}{constant, exprloc}\addtoindexx{rank attribute!encoding}  \\
 \livelink{chap:DWXXXlohiuser}{DW\_AT\_lo\_user}&0x2000 & --- \addtoindexx{low user attribute encoding}  \\
 \livelink{chap:DWXXXlohiuser}{DW\_AT\_hi\_user}&\xiiifff& --- \addtoindexx{high user attribute encoding}  \\
index 569d6b6..1105dab 100644 (file)
 % Definitions for each of the DWARF names
 % Definitions for each of the DWARF names
-% These eliminate the need to use escapes for the underscores and
+% These eliminate the need to use escapes for the underscores or
 % add entries for indexing
 %
 
 % add entries for indexing
 %
 
-% A command to define a pair of name commands
-%
-%\newcommand{\newnamecommands}[2]{
-%      \newcommand{\#1}   {\addtoindex{#2}}
-%      \newcommand{\#1 LL}{\livelink{chap:#1}{#2}}
-%      }
+% A command to define multiple helpful DWARF name commands
+%
+\newcommand{\newdwfnamecommands}[2]{
+       \expandafter\def\csname #1LINK\endcsname{\index{#2}\hyperlink{chap:#1}{#2}}
+       \expandafter\def\csname #1TARG\endcsname{\index{#2}\hypertarget{chap:#1}{#2}}
+       \expandafter\def\csname #1INDX\endcsname{\index{#2}#2}
+       \expandafter\def\csname #1NAME\endcsname{#2}
+       % The normal, most common use in running text...
+       \expandafter\def\csname #1\endcsname{\csname #1LINK\endcsname}
+       }
 
 % DW_AT
 %
 
 % DW_AT
 %
-\newcommand{\DWATbitsize}  {\addtoindex                {DW\_AT\_bit\_size}}
-\newcommand{\DWATbitsizeLL}{\livelink{chap:DWATbitsize}{DW\_AT\_bit\_size}}
-\newcommand{\DWATbytesize}  {\addtoindex                 {DW\_AT\_byte\_size}}
-\newcommand{\DWATbytesizeLL}{\livelink{chap:DWATbytesize}{DW\_AT\_byte\_size}}
-\newcommand{\DWATbytestride}  {\addtoindex                   {DW\_AT\_byte\_stride}}
-\newcommand{\DWATbytestrideLL}{\livelink{chap:DWATbytestride}{DW\_AT\_byte\_stride}}
-\newcommand{\DWATdatalocation}  {\addtoindex                     {DW\_AT\_data\_location}}
-\newcommand{\DWATdatalocationLL}{\livelink{chap:DWATdatalocation}{DW\_AT\_data\_location}}
-\newcommand{\DWATlocation}  {\addtoindex                 {DW\_AT\_location}}
-\newcommand{\DWATlocationLL}{\livelink{chap:DWATlocation}{DW\_AT\_location}}
-\newcommand{\DWATlowerbound}  {\addtoindex                   {DW\_AT\_lower\_bound}}
-\newcommand{\DWATlowerboundLL}{\livelink{chap:DWATlowerbound}{DW\_AT\_lower\_bound}}
-\newcommand{\DWATmacroinfo}  {\addtoindex                  {DW\_AT\_macro\_info}}
-\newcommand{\DWATmacroinfoLL}{\livelink{chap:DWATmacroinfo}{DW\_AT\_macro\_info}}
-\newcommand{\DWATname}  {\addtoindex             {DW\_AT\_name}}
-\newcommand{\DWATnameLL}{\livelink{chap:DWATname}{DW\_AT\_name}}
-\newcommand{\DWATordering}  {\addtoindex                 {DW\_AT\_ordering}}
-\newcommand{\DWATorderingLL}{\livelink{chap:DWATordering}{DW\_AT\_ordering}}
-\newcommand{\DWATranges}  {\addtoindex               {DW\_AT\_ranges}}
-\newcommand{\DWATrangesLL}{\livelink{chap:DWATranges}{DW\_AT\_ranges}}
-\newcommand{\DWATrank}{\addtoindex               {DW\_AT\_rank}}
-\newcommand{\DWATrankLL}{\livelink{chap:DWATrank}{DW\_AT\_rank}}
-\newcommand{\DWATsibling}  {\addtoindexx               {DW\_AT\_sibling}}
-\newcommand{\DWATsiblingLL}{\livelink{chap:DWATsibling}{DW\_AT\_sibling}}
-\newcommand{\DWATstmtlist}  {\addtoindex                 {DW\_AT\_stmt\_list}}
-\newcommand{\DWATstmtlistLL}{\livelink{chap:DWATstmtlist}{DW\_AT\_stmt\_list}}
-\newcommand{\DWATstringlength}  {\addtoindex                     {DW\_AT\_string\_length}}
-\newcommand{\DWATstringlengthLL}{\livelink{chap:DWATstringlength}{DW\_AT\_string\_length}}
-\newcommand{\DWATstringlengthbitsize}  {\addtoindex                            {DW\_AT\_string\_length\_bit\_size}}
-\newcommand{\DWATstringlengthbitsizeLL}{\livelink{chap:DWATstringlengthbitsize}{DW\_AT\_string\_length\_bit\_size}}
-\newcommand{\DWATstringlengthbytesize}  {\addtoindex                             {DW\_AT\_string\_length\_byte\_size}}
-\newcommand{\DWATstringlengthbytesizeLL}{\livelink{chap:DWATstringlengthbytesize}{DW\_AT\_string\_length\_byte\_size}}
-\newcommand{\DWATtype}  {\addtoindex             {DW\_AT\_type}}
-\newcommand{\DWATtypeLL}{\livelink{chap:DWATtype}{DW\_AT\_type}}
-\newcommand{\DWATupperbound}  {\addtoindex                   {DW\_AT\_upper\_bound}}
-\newcommand{\DWATupperboundLL}{\livelink{chap:DWATupperbound}{DW\_AT\_upper\_bound}}
+\newdwfnamecommands{DWATbitsize}{DW\_AT\_bit\_size}
+\newdwfnamecommands{DWATbytesize}{DW\_AT\_byte\_size}
+\newdwfnamecommands{DWATbytestride}{DW\_AT\_byte\_stride}
+\newdwfnamecommands{DWATdatalocation}{DW\_AT\_data\_location}
+\newdwfnamecommands{DWATlocation}{DW\_AT\_location}
+\newdwfnamecommands{DWATlowerbound}{DW\_AT\_lower\_bound}
+\newdwfnamecommands{DWATmacroinfo}{DW\_AT\_macro\_info}
+\newdwfnamecommands{DWATname}{DW\_AT\_name}
+\newdwfnamecommands{DWATordering}{DW\_AT\_ordering}
+\newdwfnamecommands{DWATranges}{DW\_AT\_ranges}
+\newdwfnamecommands{DWATrank}{DW\_AT\_rank}
+\newdwfnamecommands{DWATsibling}{DW\_AT\_sibling}
+\newdwfnamecommands{DWATstmtlist}{DW\_AT\_stmt\_list}
+\newdwfnamecommands{DWATstringlength}{DW\_AT\_string\_length}
+\newdwfnamecommands{DWATstringlengthbitsize}{DW\_AT\_string\_length\_bit\_size}
+\newdwfnamecommands{DWATstringlengthbytesize}{DW\_AT\_string\_length\_byte\_size}
+\newdwfnamecommands{DWATtype}{DW\_AT\_type}
+\newdwfnamecommands{DWATupperbound}{DW\_AT\_upper\_bound}
 %
 % DW_FORM
 %
 %
 % DW_FORM
 %
-\newcommand{\DWFORMrefsigeight}{\addtoindex{DW\_FORM\_ref\_sig8}}
-\newcommand{\DWFORMstrp}[1][]{\addtoindex{DW\_FORM\_strp}}
+\newdwfnamecommands{DWFORMrefsigeight}{DW\_FORM\_ref\_sig8}
+\newdwfnamecommands{DWFORMstrp}{DW\_FORM\_strp}
 %
 % DW_LANG
 %
 %
 % DW_LANG
 %
-\newcommand{\DWLANGGo}{\addtoindex{DW\_LANG\_Go}}
-\newcommand{\DWLANGHaskell}{\addtoindex{DW\_LANG\_Haskell}}
-\newcommand{\DWLANGModulaThree}{\addtoindex{DW\_LANG\_Modula3}}
-\newcommand{\DWLANGOpenCL}{\addtoindex{DW\_LANG\_OpenCL}}
+\newdwfnamecommands{DWLANGGo}{DW\_LANG\_Go}
+\newdwfnamecommands{DWLANGHaskell}{DW\_LANG\_Haskell}
+\newdwfnamecommands{DWLANGModulaThree}{DW\_LANG\_Modula3}
+\newdwfnamecommands{DWLANGOpenCL}{DW\_LANG\_OpenCL}
 %
 % DW_OP
 %
 %
 % DW_OP
 %
-\newcommand{\DWOPcallref}  {\addtoindex                {DW\_OP\_call\_ref}}
-\newcommand{\DWOPcallrefLL}{\livelink{chap:DWOPcallref}{DW\_OP\_call\_ref}}
-\newcommand{\DWOPconst}  {\addtoindex              {DW\_OP\_const}}
-\newcommand{\DWOPconstLL}{\livelink{chap:DWOPconst}{DW\_OP\_const}}
-\newcommand{\DWOPderef}  {\addtoindex              {DW\_OP\_deref}}
-\newcommand{\DWOPderefLL}{\livelink{chap:DWOPderef}{DW\_OP\_deref}}
-\newcommand{\DWOPformtlsaddress}  {\addtoindex                       {DW\_OP\_form\_tls\_address}}
-\newcommand{\DWOPformtlsaddressLL}{\livelink{chap:DWOPformtlsaddress}{DW\_OP\_form\_tls\_address}}
-\newcommand{\DWOPlit}  {\addtoindex            {DW\_OP\_lit}}
-\newcommand{\DWOPlitLL}{\livelink{chap:DWOPlit}{DW\_OP\_lit}}
-\newcommand{\DWOPmult}  {\addtoindex             {DW\_OP\_mult}}
-\newcommand{\DWOPmultLL}{\livelink{chap:DWOPmult}{DW\_OP\_mult}}
-\newcommand{\DWOPplus}  {\addtoindex             {DW\_OP\_plus}}
-\newcommand{\DWOPplusLL}{\livelink{chap:DWOPplus}{DW\_OP\_plus}}
-\newcommand{\DWOPpushobjectaddress}  {\addtoindex                          {DW\_OP\_push\_object\_address}}
-\newcommand{\DWOPpushobjectaddressLL}{\livelink{chap:DWOPpushobjectaddress}{DW\_OP\_push\_object\_address}}
+\newdwfnamecommands{DWOPcallref}{DW\_OP\_call\_ref}
+\newdwfnamecommands{DWOPconst}{DW\_OP\_const}
+\newdwfnamecommands{DWOPderef}{DW\_OP\_deref}
+\newdwfnamecommands{DWOPformtlsaddress}{DW\_OP\_form\_tls\_address}
+\newdwfnamecommands{DWOPlit}{DW\_OP\_lit}
+\newdwfnamecommands{DWOPmult}{DW\_OP\_mult}
+\newdwfnamecommands{DWOPplus}{DW\_OP\_plus}
+\newdwfnamecommands{DWOPpushobjectaddress}{DW\_OP\_push\_object\_address}
 %
 % DW_ORD
 %
 %
 % DW_ORD
 %
-\newcommand{\DWORDcolmajor}  {\addtoindex                  {DW\_ORD\_col\_major}}
-\newcommand{\DWORDcolmajorLL}{\livelink{chap:DWORDcolmajor}{DW\_ORD\_col\_major}}
-\newcommand{\DWORDrowmajor}  {\addtoindex                  {DW\_ORD\_row\_major}}
-\newcommand{\DWORDrowmajorLL}{\livelink{chap:DWORDrowmajor}{DW\_ORD\_row\_major}}
+\newdwfnamecommands{DWORDcolmajor}{DW\_ORD\_col\_major}
+\newdwfnamecommands{DWORDrowmajor}{DW\_ORD\_row\_major}
 %
 % DW_TAG
 %
 %
 % DW_TAG
 %
-\newcommand{\DWTAGarraytype}  {\addtoindex                   {DW\_TAG\_array\_type}}
-\newcommand{\DWTAGarraytypeLL}{\livelink{chap:DWTAGarraytype}{DW\_TAG\_array\_type}}
-\newcommand{\DWTAGcoarraytype}  {\addtoindex                     {DW\_TAG\_coarray\_type}}
-\newcommand{\DWTAGcoarraytypeLL}{\livelink{chap:DWTAGcoarraytype}{DW\_TAG\_coarray\_type}}
-\newcommand{\DWTAGgenericsubrange}  {\addtoindex                        {DW\_TAG\_generic\_subrange}}
-\newcommand{\DWTAGgenericsubrangeLL}{\livelink{chap:DWTAGgenericsubtype}{DW\_TAG\_generic\_subrange}}
-\newcommand{\DWTAGmember}  {\addtoindex                {DW\_TAG\_member}}
-\newcommand{\DWTAGmemberLL}{\livelink{chap:DWTAGmember}{DW\_TAG\_member}}
-\newcommand{\DWTAGsubrangetype}  {\addtoindex                      {DW\_TAG\_subrange\_type}}
-\newcommand{\DWTAGsubrangetypeLL}{\livelink{chap:DWTAGsubrangetype}{DW\_TAG\_subrange\_type}}
-\newcommand{\DWTAGvariable}  {\addtoindex                  {DW\_TAG\_variable}}
-\newcommand{\DWTAGvariableLL}{\livelink{chap:DWTAGvariable}{DW\_TAG\_variable}}
+\newdwfnamecommands{DWTAGarraytype}{DW\_TAG\_array\_type}
+\newdwfnamecommands{DWTAGcoarraytype}{DW\_TAG\_coarray\_type}
+\newdwfnamecommands{DWTAGgenericsubrange}{DW\_TAG\_generic\_subrange}
+\newdwfnamecommands{DWTAGmember}{DW\_TAG\_member}
+\newdwfnamecommands{DWTAGsubrangetype}{DW\_TAG\_subrange\_type}
+\newdwfnamecommands{DWTAGvariable}{DW\_TAG\_variable}
 %
 % .debug, et al
 %
 %
 % .debug, et al
 %
index 12ae92d..cc729ce 100644 (file)
@@ -574,14 +574,14 @@ illustrated in Figure \refersec{fig:FortranscalarcoarrayDWARFdescription}.
 \begin{figure}[!h]
 \begin{dwflisting}
 \begin{alltt}
 \begin{figure}[!h]
 \begin{dwflisting}
 \begin{alltt}
-10\$:  \DWTAGcoarraytypeLL
-        \DWATtypeLL(reference to INTEGER)
-        \DWTAGsubrangetypeLL                ! Note omitted upper bound                 
-            \DWATlowerboundLL(constant 1)
-
-11\$:  \DWTAGvariableLL
-        \DWATnameLL("X")
-        \DWATtypeLL(reference to coarray type at 10\$)
+10\$:  \DWTAGcoarraytype
+        \DWATtype(reference to INTEGER)
+        \DWTAGsubrangetype                ! Note omitted upper bound                   
+            \DWATlowerbound(constant 1)
+
+11\$:  \DWTAGvariable
+        \DWATname("X")
+        \DWATtype(reference to coarray type at 10\$)
 \end{alltt}
 \end{dwflisting}
 \caption{Fortran scalar coarray: DWARF description}
 \end{alltt}
 \end{dwflisting}
 \caption{Fortran scalar coarray: DWARF description}
@@ -605,21 +605,21 @@ illustrated in Figure \refersec{fig:FortranarraycoarrayDWARFdescription}.
 \begin{figure}[here]
 \begin{dwflisting}
 \begin{alltt}
 \begin{figure}[here]
 \begin{dwflisting}
 \begin{alltt}
-10\$: \DWTAGarraytypeLL
-        \DWATorderingLL(\DWORDcolmajorLL)
-        \DWATtypeLL(reference to INTEGER)
-11\$:    \DWTAGsubrangetypeLL
-            \DWATlowerboundLL(constant 1)
-            \DWATupperboundLL(constant 10)
-
-12\$: \DWTAGcoarraytypeLL
-        \DWATtypeLL(reference to array type at 10\$)
-13\$:    \DWTAGsubrangetypeLL                ! Note omitted upper bound
-            \DWATlowerboundLL(constant 1)
-
-14$: \DWTAGvariableLL
-        \DWATnameLL("X")
-        \DWATtypeLL(reference to coarray type at 12\$)
+10\$: \DWTAGarraytype
+        \DWATordering(\DWORDcolmajor)
+        \DWATtype(reference to INTEGER)
+11\$:    \DWTAGsubrangetype
+            \DWATlowerbound(constant 1)
+            \DWATupperbound(constant 10)
+
+12\$: \DWTAGcoarraytype
+        \DWATtype(reference to array type at 10\$)
+13\$:    \DWTAGsubrangetype                ! Note omitted upper bound
+            \DWATlowerbound(constant 1)
+
+14$: \DWTAGvariable
+        \DWATname("X")
+        \DWATtype(reference to coarray type at 12\$)
 \end{alltt}
 \end{dwflisting}
 \caption{Fortran array coarray: DWARF description}
 \end{alltt}
 \end{dwflisting}
 \caption{Fortran array coarray: DWARF description}
@@ -643,33 +643,33 @@ illustrated in Figure \refersec{fig:FortranmultidimensionalcoarrayDWARFdescripti
 \begin{figure}[here]
 \begin{dwflisting}
 \begin{alltt}
 \begin{figure}[here]
 \begin{dwflisting}
 \begin{alltt}
-10\$: \DWTAGarraytypeLL
-        \DWATorderingLL(\DWORDcolmajorLL)
-        \DWATtypeLL(reference to INTEGER)
-11\$:    \DWTAGsubrangetypeLL
-            \DWATlowerboundLL(constant 1)
-            \DWATupperboundLL(constant 10)
-12\$:    \DWTAGsubrangetypeLL
-            \DWATlowerboundLL(constant  1)
-            \DWATupperboundLL(constant 11)
-13\$:    \DWTAGsubrangetypeLL
-            \DWATlowerboundLL(constant  1)
-            \DWATupperboundLL(constant 12)
-
-14\$: \DWTAGcoarraytypeLL
-        \DWATtypeLL(reference to array_type at 10\$)
-15\$:    \DWTAGsubrangetypeLL
-            \DWATlowerboundLL(constant 1)
-            \DWATupperboundLL(constant 2)
-16\$:    \DWTAGsubrangetypeLL
-            \DWATlowerboundLL(constant 1)
-            \DWATupperboundLL(constant 3)
-17\$:    \DWTAGsubrangetypeLL                ! Note omitted upper bound
-            \DWATlowerboundLL(constant 1)
-
-18\$: \DWTAGvariableLL
-        \DWATnameLL("X")
-        \DWATtypeLL(reference to coarray type at 14\$)
+10\$: \DWTAGarraytype
+        \DWATordering(\DWORDcolmajor)
+        \DWATtype(reference to INTEGER)
+11\$:    \DWTAGsubrangetype
+            \DWATlowerbound(constant 1)
+            \DWATupperbound(constant 10)
+12\$:    \DWTAGsubrangetype
+            \DWATlowerbound(constant  1)
+            \DWATupperbound(constant 11)
+13\$:    \DWTAGsubrangetype
+            \DWATlowerbound(constant  1)
+            \DWATupperbound(constant 12)
+
+14\$: \DWTAGcoarraytype
+        \DWATtype(reference to array_type at 10\$)
+15\$:    \DWTAGsubrangetype
+            \DWATlowerbound(constant 1)
+            \DWATupperbound(constant 2)
+16\$:    \DWTAGsubrangetype
+            \DWATlowerbound(constant 1)
+            \DWATupperbound(constant 3)
+17\$:    \DWTAGsubrangetype                ! Note omitted upper bound
+            \DWATlowerbound(constant 1)
+
+18\$: \DWTAGvariable
+        \DWATname("X")
+        \DWATtype(reference to coarray type at 14\$)
 \end{alltt}
 \end{dwflisting}
 \caption{Fortran multidimensional coarray: DWARF description}
 \end{alltt}
 \end{dwflisting}
 \caption{Fortran multidimensional coarray: DWARF description}
@@ -728,45 +728,45 @@ Figure~\refersec{fig:assumedrankdwarf}.
 \begin{figure}[!h]
 \begin{dwflisting}
 \begin{alltt}
 \begin{figure}[!h]
 \begin{dwflisting}
 \begin{alltt}
-10\$:  \DWTAGarraytypeLL
-         \DWATtypeLL(reference to real)
-         \DWATrankLL(expression=
-             \DWOPpushobjectaddressLL
-             \DWOPlitLL<offset of rank in descriptor>
-             \DWOPplusLL
-             \DWOPderefLL)
-         \DWATdatalocationLL(expression=
-             \DWOPpushobjectaddressLL
-             \DWOPlitLL<offset of data in descriptor>
-             \DWOPplusLL
-             \DWOPderefLL)
-11\$:    \DWTAGgenericsubrangeLL
-             \DWATtypeLL(reference to integer)
-             \DWATlowerboundLL(expression=
+10\$:  \DWTAGarraytype
+         \DWATtype(reference to real)
+         \DWATrank(expression=
+             \DWOPpushobjectaddress
+             \DWOPlit<offset of rank in descriptor>
+             \DWOPplus
+             \DWOPderef)
+         \DWATdatalocation(expression=
+             \DWOPpushobjectaddress
+             \DWOPlit<offset of data in descriptor>
+             \DWOPplus
+             \DWOPderef)
+11\$:    \DWTAGgenericsubrange
+             \DWATtype(reference to integer)
+             \DWATlowerbound(expression=
              !   Looks up the lower bound of dimension i.
              !   Operation                              ! Stack effect
              !   (implicit)                             ! i                                                                     
              !   Looks up the lower bound of dimension i.
              !   Operation                              ! Stack effect
              !   (implicit)                             ! i                                                                     
-                 \DWOPlitLL<byte size of struct dim>     ! i sizeof(dim)
-                 \DWOPmultLL                             ! dim[i]
-                 \DWOPlitLL<offset of dim in descriptor> ! dim[i] offset
-                 \DWOPplusLL                             ! dim[i]+offset
-                 \DWOPpushobjectaddressLL              ! dim[i]+offset objptr
-                 \DWOPplusLL                             ! objptr.dim[i]
-                 \DWOPlitLL<offset of lowerbound in dim> ! objptr.dim[i] offset
-                 \DWOPplusLL                             ! objptr.dim[i].lowerbound
-                 \DWOPderefLL)                           ! *objptr.dim[i].lowerbound
-             \livelink{chap:DWATupperbound}{DW\_AT\_upper\_bound}(expression=
+                 \DWOPlit<byte size of struct dim>     ! i sizeof(dim)
+                 \DWOPmult                             ! dim[i]
+                 \DWOPlit<offset of dim in descriptor> ! dim[i] offset
+                 \DWOPplus                             ! dim[i]+offset
+                 \DWOPpushobjectaddress              ! dim[i]+offset objptr
+                 \DWOPplus                             ! objptr.dim[i]
+                 \DWOPlit<offset of lowerbound in dim> ! objptr.dim[i] offset
+                 \DWOPplus                             ! objptr.dim[i].lowerbound
+                 \DWOPderef)                           ! *objptr.dim[i].lowerbound
+             \DWATupperbound(expression=
              !   Looks up the upper bound of dimension i.
              !   Looks up the upper bound of dimension i.
-                 \DWOPlitLL<byte size of dim>
-                 \DWOPmultLL
-                 \DWOPlitLL<offset of dim in descriptor>
-                 \DWOPplusLL
-                 \DWOPpushobjectaddressLL
-                 \DWOPplusLL
-                 \DWOPlitLL<offset of upperbound in dim>
-                 \DWOPplusLL
-                 \DWOPderefLL)
-             \DWATbytestrideLL(expression=
+                 \DWOPlit<byte size of dim>
+                 \DWOPmult
+                 \DWOPlit<offset of dim in descriptor>
+                 \DWOPplus
+                 \DWOPpushobjectaddress
+                 \DWOPplus
+                 \DWOPlit<offset of upperbound in dim>
+                 \DWOPplus
+                 \DWOPderef)
+             \DWATbytestride(expression=
              !   Looks up the byte stride of dimension i.
                  ...
              !   (analogous to DW\_AT\_upper\_bound)
              !   Looks up the byte stride of dimension i.
                  ...
              !   (analogous to DW\_AT\_upper\_bound)
@@ -780,9 +780,9 @@ Figure~\refersec{fig:assumedrankdwarf}.
 The layout of the array descriptor is not specified by the Fortran
 standard unless the array is explicitly marked as \addtoindex{C-interoperable}. To
 get the bounds of an assumed-rank array, the expressions in the
 The layout of the array descriptor is not specified by the Fortran
 standard unless the array is explicitly marked as \addtoindex{C-interoperable}. To
 get the bounds of an assumed-rank array, the expressions in the
-\DWTAGgenericsubrangeLL
+\DWTAGgenericsubrange
 entry need to be evaluated for each of the
 entry need to be evaluated for each of the
-\DWATrankLL dimensions as shown by the pseudocode in
+\DWATrank{} dimensions as shown by the pseudocode in
 Figure~\refersec{fig:assumedrankdwarfparser}.
 
 \begin{figure}[!h]
 Figure~\refersec{fig:assumedrankdwarfparser}.
 
 \begin{figure}[!h]
index d1a3000..de00bd0 100644 (file)
@@ -37,7 +37,7 @@ described in Chapters 3, 4 and 5.
 \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type},
 \livelink{chap:DWTAGcatchblock}{DW\_TAG\_catch\_block},
 \livelink{chap:DWTAGclasstype}{DW\_TAG\_class\_type},
 \livelink{chap:DWTAGbasetype}{DW\_TAG\_base\_type},
 \livelink{chap:DWTAGcatchblock}{DW\_TAG\_catch\_block},
 \livelink{chap:DWTAGclasstype}{DW\_TAG\_class\_type},
-\DWTAGcoarraytypeLL,
+\DWTAGcoarraytype,
 \livelink{chap:DWTAGcommonblock}{DW\_TAG\_common\_block},
 \livelink{chap:DWTAGcommoninclusion}{DW\_TAG\_common\_inclusion},
 \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit},
 \livelink{chap:DWTAGcommonblock}{DW\_TAG\_common\_block},
 \livelink{chap:DWTAGcommoninclusion}{DW\_TAG\_common\_inclusion},
 \livelink{chap:DWTAGcompileunit}{DW\_TAG\_compile\_unit},
@@ -51,7 +51,7 @@ described in Chapters 3, 4 and 5.
 \livelink{chap:DWTAGfiletype}{DW\_TAG\_file\_type},
 \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter},
 \livelink{chap:DWTAGfriend}{DW\_TAG\_friend},
 \livelink{chap:DWTAGfiletype}{DW\_TAG\_file\_type},
 \livelink{chap:DWTAGformalparameter}{DW\_TAG\_formal\_parameter},
 \livelink{chap:DWTAGfriend}{DW\_TAG\_friend},
-\DWTAGgenericsubrangeLL,
+\DWTAGgenericsubrange,
 \livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration},
 \livelink{chap:DWTAGimportedmodule}{DW\_TAG\_imported\_module},
 \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit},
 \livelink{chap:DWTAGimporteddeclaration}{DW\_TAG\_imported\_declaration},
 \livelink{chap:DWTAGimportedmodule}{DW\_TAG\_imported\_module},
 \livelink{chap:DWTAGimportedunit}{DW\_TAG\_imported\_unit},
@@ -335,7 +335,7 @@ actually declared in the source}{objects or types that are not actually declared
 &\livelinki{chap:DWATpurepurepropertyofasubroutine}{Pure property of a subroutine}{pure property of a subroutine} \\
 \livetarg{chap:DWATranges}{DW\_AT\_ranges}
 &\livelinki{chap:DWATrangesnoncontiguousrangeofcodeaddresses}{Non-contiguous range of code addresses}{non-contiguous range of code addresses} \\
 &\livelinki{chap:DWATpurepurepropertyofasubroutine}{Pure property of a subroutine}{pure property of a subroutine} \\
 \livetarg{chap:DWATranges}{DW\_AT\_ranges}
 &\livelinki{chap:DWATrangesnoncontiguousrangeofcodeaddresses}{Non-contiguous range of code addresses}{non-contiguous range of code addresses} \\
-\livetarg{chap:DWATrank}{DW\_AT\_rank}
+\DWATrankTARG
 &\livelinki{chap:DWATrankofdynamicarray}{Dynamic number of array dimensions}{dynamic number of array dimensions} \\
 \livetarg{chap:DWATrecursive}{DW\_AT\_recursive}
 &\livelinki{chap:DWATrecursiverecursivepropertyofasubroutine}{Recursive property of a subroutine}{recursive property of a subroutine} \\
 &\livelinki{chap:DWATrankofdynamicarray}{Dynamic number of array dimensions}{dynamic number of array dimensions} \\
 \livetarg{chap:DWATrecursive}{DW\_AT\_recursive}
 &\livelinki{chap:DWATrecursiverecursivepropertyofasubroutine}{Recursive property of a subroutine}{recursive property of a subroutine} \\
@@ -2267,7 +2267,7 @@ rules of the applicable programming language.
 \livelink{chap:DWATbytestride}{DW\_AT\_byte\_stride}, 
 \livelink{chap:DWATcount}{DW\_AT\_count}, 
 \livelink{chap:DWATlowerbound}{DW\_AT\_lower\_bound},
 \livelink{chap:DWATbytestride}{DW\_AT\_byte\_stride}, 
 \livelink{chap:DWATcount}{DW\_AT\_count}, 
 \livelink{chap:DWATlowerbound}{DW\_AT\_lower\_bound},
-\DWATrankLL,
+\DWATrank,
 \livelink{chap:DWATupperbound}{DW\_AT\_upper\_bound},
 (and possibly others).}
 
 \livelink{chap:DWATupperbound}{DW\_AT\_upper\_bound},
 (and possibly others).}
 
index bc93fd2..0b4f047 100644 (file)
@@ -663,14 +663,14 @@ multidimensional array.}
 
 Alternatively, for an array with dynamic rank the array dimensions 
 are described by a debugging information entry with the tag
 
 Alternatively, for an array with dynamic rank the array dimensions 
 are described by a debugging information entry with the tag
-\livetarg{chap:DWTAGgenericsubrange}{DW\_TAG\_generic\_subrange}.
+\DWTAGgenericsubrangeTARG.
 This entry has the same attributes as a
 This entry has the same attributes as a
-\livelink{DWTAGsubrangetype}{DW\_TAG\_subrange\_type} entry; however,
-there is just one \DWTAGgenericsubrange{} entry and it describes all of the
+\DWTAGsubrangetype{} entry; however,
+there is just one \DWTAGgenericsubrangeNAME{} entry and it describes all of the
 dimensions of the array.
 dimensions of the array.
-If \DWTAGgenericsubrange{}
+If \DWTAGgenericsubrangeNAME{}
 is used, the number of dimensions must be specified using a
 is used, the number of dimensions must be specified using a
-\DWATrankLL{} attribute. See also Section
+\DWATrank{} attribute. See also Section
 \refersec{chap:DWATrank}.
 
 
 \refersec{chap:DWATrank}.
 
 
@@ -697,21 +697,21 @@ indexed using a \doublequote{coindex} or multiple \doublequote{coindices}.
 }
 
 A coarray type is represented by a debugging information entry 
 }
 
 A coarray type is represented by a debugging information entry 
-with the tag \DWTAGcoarraytype.
+with the tag \DWTAGcoarraytypeTARG.
 If a name has been given to the 
 coarray type in the source, then the corresponding coarray type 
 If a name has been given to the 
 coarray type in the source, then the corresponding coarray type 
-entry has a \DWATnameLL{} attribute whose value is a null-terminated 
+entry has a \DWATname{} attribute whose value is a null-terminated 
 string containing the array type name as it appears in the source 
 program.
 
 string containing the array type name as it appears in the source 
 program.
 
-A coarray entry has one or more \DWTAGsubrangetypeLL{} child entries,
-one for each codimension. It also has a \DWATtypeLL{} attribute 
+A coarray entry has one or more \DWTAGsubrangetype{} child entries,
+one for each codimension. It also has a \DWATtype{} attribute 
 describing the type of each element of the coarray.
 
 \textit{In a coarray application, the run-time number of processes in the application
 is part of the coindex calculation.  It is represented in the Fortran source by
 a coindex which is declared with a \doublequote{*} as the upper bound.  To express this
 describing the type of each element of the coarray.
 
 \textit{In a coarray application, the run-time number of processes in the application
 is part of the coindex calculation.  It is represented in the Fortran source by
 a coindex which is declared with a \doublequote{*} as the upper bound.  To express this
-concept in DWARF, the \DWTAGsubrangetypeLL{} child entry for that index has 
+concept in DWARF, the \DWTAGsubrangetype{} child entry for that index has 
 only a lower bound and no upper bound.}
 
 \textit{How coarray elements are located and how coindices are 
 only a lower bound and no upper bound.}
 
 \textit{How coarray elements are located and how coindices are 
@@ -1962,7 +1962,7 @@ whose value is a null\dash terminated
 string containing the subrange type name as it appears in
 the source program.
 
 string containing the subrange type name as it appears in
 the source program.
 
-The tag \DWTAGgenericsubrangeLL is
+The tag \DWTAGgenericsubrange{} is
 used to describe arrays with a dynamic rank. See Section
 \refersec{chap:DWTAGgenericsubrange}.
 
 used to describe arrays with a dynamic rank. See Section
 \refersec{chap:DWTAGgenericsubrange}.
 
@@ -2322,10 +2322,10 @@ time. The value of the \DWATrank{} attribute is either an integer constant
 or a location expression whose evaluation yields the dynamic rank.
 
 The bounds of an array with dynamic rank are described using the
 or a location expression whose evaluation yields the dynamic rank.
 
 The bounds of an array with dynamic rank are described using the
-\DWTAGgenericsubrangeLL{} tag, which  
+\DWTAGgenericsubrangeTARG{} tag, which  
 is the dynamic rank array equivalent of
 is the dynamic rank array equivalent of
-\DWTAGsubrangetypeLL. The
-difference is that a \DWTAGgenericsubrangeLL{} contains generic
+\DWTAGsubrangetype. The
+difference is that a \DWTAGgenericsubrange{} contains generic
 lower/upper bound and stride expressions that need to be evaluated for
 each dimension: Before any expression contained in a
 \DWTAGgenericsubrange{} can be evaluated, the dimension for which the
 lower/upper bound and stride expressions that need to be evaluated for
 each dimension: Before any expression contained in a
 \DWTAGgenericsubrange{} can be evaluated, the dimension for which the