6140acd9bdd5cb33a0b6d81bb18e3c4d24ab2ba5
[dwarf-doc.git] / dwarf5 / latexdoc / debugsectionrelationships.tex
1 \chapter{Debug Section Relationships (Informative)}
2 \label{app:debugsectionrelationshipsinformative}
3 %
4 DWARF information is organized into multiple program sections, 
5 each of which holds a particular kind of information. In some 
6 cases, information in one section refers to information in one 
7 or more of the others. These relationships are illustrated by 
8 the diagram and associated notes on the following pages.
9 \vspace{0.3in}
10
11 \setlength\maxovaldiam{80pt}
12 \thicklines
13 \begin{picture}(0,0)
14 \footnotesize
15   \put(10,0) { \addtoindex{.debug\_aranges} }
16   \put(40,0) { \circle{80}}
17   \put(180,0) { \addtoindex{.debug\_frame} }
18   \put(210,0) { \circle{80}}
19   \put(350,0) { \addtoindex{.debug\_abbrev} }
20   \put(380,0) { \circle{80}}
21
22   \put(40,-40){\line(0,-1){30}}
23   \put(-10,-90){\framebox(110,20){To compilation unit (a)} }
24   \put(40,-90){\vector(0,-1){35}}
25
26   \put(350,-90) { \addtoindex{.debug\_str} }
27   \put(380,-90) {\circle{80}}
28
29   \put(10,-180) { \addtoindex{.debug\_info} }
30   \put(40,-180) {\circle{100}}
31   \put(10,-195) { \addtoindex{.debug\_types} }
32
33
34   \put(350,-180) { \addtoindex{.debug\_loc} }
35   \put(380,-180) {\circle{80}}
36
37   \put(350,-270) { \addtoindex{.debug\_ranges} }
38   \put(380,-270) {\circle{80}}
39
40   \put(80,-140){\line(3, 2){90}}
41   \put(170,-90){\framebox(110,20){To abbreviations (c)} }
42   \put(280,-70){\vector( 2, 1){70}}
43
44   \put(90,-150){\line(2, 1){100}}
45   \put(190,-120){\framebox(110,20){\livelink{chap:DWFORMstrp}{DW\-\_FORM\-\_strp} (d)} }
46   \put(300,-100){\vector( 4, 1){35}}
47
48   \put(190,-140){\vector(-2, -1){100}}
49   \put(190,-150){\framebox(110,20){\livelink{chap:DWOPcallref}{DW\-\_OP\-\_call\-\_ref}(e)} }
50   \put(300,-150){\line(4,-1){40}}
51
52   \put(90,-195){\line(7,2){95}}
53   \put(190,-180){\framebox(110,20){\livelink{chap:DWATlocation}{DW\-\_AT\-\_location}(f)} }
54   \put(300,-180){\vector(1,0){40}}
55
56   \put(90,-195){\line(7,-2){95}}
57   \put(190,-230){\framebox(110,20){\livelink{chap:DWATranges}{DW\-\_AT\-\_ranges} (g)} }
58   \put(300,-230){\vector(4,-3){40}}
59
60   \put(85,-200){\line(3,-2){95}}
61   \put(180,-270){\framebox(110,20){\livelink{chap:DWATmacroinfo}{DW\-\_AT\-\_macro\-\_info} (h)} }
62   \put(230,-270){\vector(3,-2){110}}
63
64   \put(85,-200){\line(1,-1){80}}
65   \put(120,-300){\framebox(110,20){\livelink{chap:DWATstmtlist}{DW\-\_AT\-\_stmt\-\_list} (i)} }
66   \put(180,-300){\vector(1,-2){10}}
67
68   \put(40,-250){\vector(0,1){15}}
69   \put(-10,-270){\framebox(110,20){To compilation unit (b)} }
70   \put(40,-320){\line(0,1){50}}
71
72   \put(0,-360) { \addtoindex{.debug\_pubnames} }
73   \put(0,-375) { \addtoindex{.debug\_pubtypes} } 
74   \put(40, -360) { \circle{80}}
75   \put(175,-360) { \addtoindex{.debug\_line} }
76   \put(210,-360) { \circle{80}}
77   \put(350,-360) { \addtoindex{.debug\_macinfo} }
78   \put(380,-360) { \circle{80}}
79
80 \end{picture}
81
82 \clearpage
83 \begin{centering}
84    \textbf{Notes}
85 \end{centering}
86 \begin{enumerate}[(a)]  
87 \item  \addtoindex{.debug\_aranges}  \\
88 The debug\_info\_offset value in
89 the header is
90 the offset in the \addtoindex{.debug\_info} section of the
91 corresponding compilation unit header (not the compilation
92 unit entry).
93
94 %b
95 \item \addtoindex{.debug\_pubnames} and \addtoindex{.debug\_pubtypes} \\
96 The debug\_info\_offset value in the header is the offset in the
97 \addtoindex{.debug\_info} section of the 
98 corresponding compilation unit header (not
99 the compilation unit entry). Each pubname/pubtype has the offset (within
100 the corresponding compilation unit) of the applicable debugging
101 information entry.
102
103 %c
104 \item \addtoindex{.debug\_info} and \addtoindex{.debug\_types} \\
105 The debug\_abbrev\_offset value in the header is the offset in the
106 \addtoindex{.debug\_abbrev} 
107 section of the abbreviations for that compilation unit.
108
109 %d
110 \item  \addtoindex{.debug\_info} and \addtoindex{.debug\_types} \\
111 Attribute values of class string may have form 
112 \livelink{chap:DWFORMstrp}{DW\-\_FORM\-\_strp}, whose
113 value is the offset in the \addtoindex{.debug\_str}
114 section of the corresponding string.
115
116 %e
117 \item \addtoindex{.debug\_loc} \\
118 The operand of the \livelink{chap:DWOPcallref}{DW\-\_OP\-\_call\-\_ref} 
119 DWARF expression operator is the
120 offset of a debugging information entry in the 
121 \addtoindex{.debug\_info} section.
122
123 %f
124 \item \addtoindex{.debug\_info} \\
125 An attribute value of class \livelink{chap:loclistptr}{loclistptr} 
126 (specifically form
127 \livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}) 
128 is an offset within the \addtoindex{.debug\_loc} 
129 section of a
130 \addtoindex{location list}.
131
132 %g
133 \item \addtoindex{.debug\_info} \\
134 An attribute value of class \livelink{chap:rangelistptr}{rangelistptr} 
135 (specifically form
136 \livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}) 
137 is an offset within the \addtoindex{.debug\_ranges} section of
138 a range list.
139
140 %h
141 \item \addtoindex{.debug\_info} \\
142 An attribute value of class 
143 \livelink{chap:macptr}{macptr} (specifically form
144 \livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}) is an 
145 offset within the 
146 \addtoindex{.debug\_macinfo} section
147 of the beginning of the macro information for the referencing unit.
148
149 %i
150 \item \addtoindex{.debug\_info} \\
151 An attribute value of class 
152 \livelink{chap:lineptr}{lineptr} (specifically form
153 \livelink{chap:DWFORMsecoffset}{DW\-\_FORM\-\_sec\-\_offset}) 
154 is an offset in the 
155 \addtoindex{.debug\_line} section of the
156 beginning of the line number information for the referencing unit.
157 \end{enumerate}