ࡱ> 'wyPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvM L bjbj== q3WW lnnnnF F F AxfJ A@"T$i 5kmmmmmm$ >EF ;H ; ;Cnn6ֽ.CCC ;n F kC ;kCCF4MozF 7g! wAּ>\67g4V<@]^ A>7gC!3t nnnn DWARF Debugging Information Format Version 4   HYPERLINK "http://www.dwarfstd.org/" DWARF Debugging Information Format Committee  HYPERLINK "http://www.dwarfstd.org" http://www.dwarfstd.org June 10, 2010 DWARF Debugging Information Format, Version 4 Copyright 2010 DWARF Debugging Information Format Committee Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled GNU Free Documentation License. This document is based in part on the DWARF Debugging Information Format, Version 2, which contained the following notice: UNIX International Programming Languages SIG Revision: 2.0.0 (July 27, 1993) Copyright 1992, 1993 UNIX International, Inc. Permission to use, copy, modify, and distribute this documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appears in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name UNIX International not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. UNIX International makes no representations about the suitability of this documentation for any purpose. It is provided as is without express or implied warranty. This document is further based on the DWARF Debugging Information Format, Version 3, which is subject to the GNU Free Documentation License. Trademarks: Intel386 is a trademark of Intel Corporation. Java is a trademark of Sun Microsystems, Inc. All other trademarks found herein are property of their respective owners. Table of Contents  TOC \o "1-3" \h \z  HYPERLINK \l "_Toc263955183" DWARF Debugging Information Format Version 4  PAGEREF _Toc263955183 \h i  HYPERLINK \l "_Toc263955184" 1 INTRODUCTION  PAGEREF _Toc263955184 \h 1  HYPERLINK \l "_Toc263955185" 1.1 Purpose and Scope  PAGEREF _Toc263955185 \h 1  HYPERLINK \l "_Toc263955186" 1.2 Overview  PAGEREF _Toc263955186 \h 1  HYPERLINK \l "_Toc263955187" 1.3 Vendor Extensibility  PAGEREF _Toc263955187 \h 2  HYPERLINK \l "_Toc263955188" 1.4 Changes from Version 3 to Version 4  PAGEREF _Toc263955188 \h 3  HYPERLINK \l "_Toc263955189" 1.5 Changes from Version 2 to Version 3  PAGEREF _Toc263955189 \h 4  HYPERLINK \l "_Toc263955190" 1.6 Changes from Version 1 to Version 2  PAGEREF _Toc263955190 \h 5  HYPERLINK \l "_Toc263955191" 2 GENERAL DESCRIPTION  PAGEREF _Toc263955191 \h 7  HYPERLINK \l "_Toc263955192" 2.1 The Debugging Information Entry (DIE)  PAGEREF _Toc263955192 \h 7  HYPERLINK \l "_Toc263955193" 2.2 Attribute Types  PAGEREF _Toc263955193 \h 7  HYPERLINK \l "_Toc263955194" 2.3 Relationship of Debugging Information Entries  PAGEREF _Toc263955194 \h 16  HYPERLINK \l "_Toc263955195" 2.4 Target Addresses  PAGEREF _Toc263955195 \h 16  HYPERLINK \l "_Toc263955196" 2.5 DWARF Expressions  PAGEREF _Toc263955196 \h 17  HYPERLINK \l "_Toc263955197" 2.5.1 General Operations  PAGEREF _Toc263955197 \h 17  HYPERLINK \l "_Toc263955198" 2.5.2 Example Stack Operations  PAGEREF _Toc263955198 \h 25  HYPERLINK \l "_Toc263955199" 2.6 Location Descriptions  PAGEREF _Toc263955199 \h 25  HYPERLINK \l "_Toc263955200" 2.6.1 Single Location Descriptions  PAGEREF _Toc263955200 \h 26  HYPERLINK \l "_Toc263955201" 2.6.2 Location Lists  PAGEREF _Toc263955201 \h 30  HYPERLINK \l "_Toc263955202" 2.7 Types of Program Entities  PAGEREF _Toc263955202 \h 32  HYPERLINK \l "_Toc263955203" 2.8 Accessibility of Declarations  PAGEREF _Toc263955203 \h 32  HYPERLINK \l "_Toc263955204" 2.9 Visibility of Declarations  PAGEREF _Toc263955204 \h 33  HYPERLINK \l "_Toc263955205" 2.10 Virtuality of Declarations  PAGEREF _Toc263955205 \h 33  HYPERLINK \l "_Toc263955206" 2.11 Artificial Entries  PAGEREF _Toc263955206 \h 34  HYPERLINK \l "_Toc263955207" 2.12 Segmented Addresses  PAGEREF _Toc263955207 \h 34  HYPERLINK \l "_Toc263955208" 2.13 Non-Defining Declarations and Completions  PAGEREF _Toc263955208 \h 35  HYPERLINK \l "_Toc263955209" 2.13.1 Non-Defining Declarations  PAGEREF _Toc263955209 \h 35  HYPERLINK \l "_Toc263955210" 2.13.2 Declarations Completing Non-Defining Declarations  PAGEREF _Toc263955210 \h 36  HYPERLINK \l "_Toc263955211" 2.14 Declaration Coordinates  PAGEREF _Toc263955211 \h 36  HYPERLINK \l "_Toc263955212" 2.15 Identifier Names  PAGEREF _Toc263955212 \h 36  HYPERLINK \l "_Toc263955213" 2.16 Data Locations and DWARF Procedures  PAGEREF _Toc263955213 \h 37  HYPERLINK \l "_Toc263955214" 2.17 Code Addresses and Ranges  PAGEREF _Toc263955214 \h 37  HYPERLINK \l "_Toc263955215" 2.17.1 Single Address  PAGEREF _Toc263955215 \h 38  HYPERLINK \l "_Toc263955216" 2.17.2 Contiguous Address Range  PAGEREF _Toc263955216 \h 38  HYPERLINK \l "_Toc263955217" 2.17.3 Non-Contiguous Address Ranges  PAGEREF _Toc263955217 \h 38  HYPERLINK \l "_Toc263955218" 2.18 Entry Address  PAGEREF _Toc263955218 \h 40  HYPERLINK \l "_Toc263955219" 2.19 Static and Dynamic Values of Attributes  PAGEREF _Toc263955219 \h 40  HYPERLINK \l "_Toc263955220" 2.20 Entity Descriptions  PAGEREF _Toc263955220 \h 41  HYPERLINK \l "_Toc263955221" 2.21 Byte and Bit Sizes  PAGEREF _Toc263955221 \h 41  HYPERLINK \l "_Toc263955222" 2.22 Linkage Names  PAGEREF _Toc263955222 \h 41  HYPERLINK \l "_Toc263955223" 3 PROGRAM SCOPE ENTRIES  PAGEREF _Toc263955223 \h 43  HYPERLINK \l "_Toc263955224" 3.1 Unit Entries  PAGEREF _Toc263955224 \h 43  HYPERLINK \l "_Toc263955225" 3.1.1 Normal and Partial Compilation Unit Entries  PAGEREF _Toc263955225 \h 43  HYPERLINK \l "_Toc263955226" 3.1.2 Imported Unit Entries  PAGEREF _Toc263955226 \h 47  HYPERLINK \l "_Toc263955227" 3.1.3 Separate Type Unit Entries  PAGEREF _Toc263955227 \h 48  HYPERLINK \l "_Toc263955228" 3.2 Module, Namespace and Importing Entries  PAGEREF _Toc263955228 \h 48  HYPERLINK \l "_Toc263955229" 3.2.1 Module Entries  PAGEREF _Toc263955229 \h 49  HYPERLINK \l "_Toc263955230" 3.2.2 Namespace Entries  PAGEREF _Toc263955230 \h 49  HYPERLINK \l "_Toc263955231" 3.2.3 Imported (or Renamed) Declaration Entries  PAGEREF _Toc263955231 \h 50  HYPERLINK \l "_Toc263955232" 3.2.4 Imported Module Entries  PAGEREF _Toc263955232 \h 51  HYPERLINK \l "_Toc263955233" 3.3 Subroutine and Entry Point Entries  PAGEREF _Toc263955233 \h 53  HYPERLINK \l "_Toc263955234" 3.3.1 General Subroutine and Entry Point Information  PAGEREF _Toc263955234 \h 53  HYPERLINK \l "_Toc263955235" 3.3.2 Subroutine and Entry Point Return Types  PAGEREF _Toc263955235 \h 55  HYPERLINK \l "_Toc263955236" 3.3.3 Subroutine and Entry Point Locations  PAGEREF _Toc263955236 \h 55  HYPERLINK \l "_Toc263955237" 3.3.4 Declarations Owned by Subroutines and Entry Points  PAGEREF _Toc263955237 \h 55  HYPERLINK \l "_Toc263955238" 3.3.5 Low-Level Information  PAGEREF _Toc263955238 \h 56  HYPERLINK \l "_Toc263955239" 3.3.6 Types Thrown by Exceptions  PAGEREF _Toc263955239 \h 57  HYPERLINK \l "_Toc263955240" 3.3.7 Function Template Instantiations  PAGEREF _Toc263955240 \h 57  HYPERLINK \l "_Toc263955241" 3.3.8 Inlinable and Inlined Subroutines  PAGEREF _Toc263955241 \h 58  HYPERLINK \l "_Toc263955242" 3.3.9 Trampolines  PAGEREF _Toc263955242 \h 64  HYPERLINK \l "_Toc263955243" 3.4 Lexical Block Entries  PAGEREF _Toc263955243 \h 65  HYPERLINK \l "_Toc263955244" 3.5 Label Entries  PAGEREF _Toc263955244 \h 65  HYPERLINK \l "_Toc263955245" 3.6 With Statement Entries  PAGEREF _Toc263955245 \h 66  HYPERLINK \l "_Toc263955246" 3.7 Try and Catch Block Entries  PAGEREF _Toc263955246 \h 66  HYPERLINK \l "_Toc263955247" 4 DATA OBJECT AND OBJECT LIST ENTRIES  PAGEREF _Toc263955247 \h 69  HYPERLINK \l "_Toc263955248" 4.1 Data Object Entries  PAGEREF _Toc263955248 \h 69  HYPERLINK \l "_Toc263955249" 4.2 Common Block Entries  PAGEREF _Toc263955249 \h 73  HYPERLINK \l "_Toc263955250" 4.3 Namelist Entries  PAGEREF _Toc263955250 \h 73  HYPERLINK \l "_Toc263955251" 5 TYPE ENTRIES  PAGEREF _Toc263955251 \h 75  HYPERLINK \l "_Toc263955252" 5.1 Base Type Entries  PAGEREF _Toc263955252 \h 75  HYPERLINK \l "_Toc263955253" 5.2 Unspecified Type Entries  PAGEREF _Toc263955253 \h 80  HYPERLINK \l "_Toc263955254" 5.3 Typedef Entries  PAGEREF _Toc263955254 \h 82  HYPERLINK \l "_Toc263955255" 5.4 Array Type Entries  PAGEREF _Toc263955255 \h 83  HYPERLINK \l "_Toc263955256" 5.5 Structure, Union, Class and Interface Type Entries  PAGEREF _Toc263955256 \h 84  HYPERLINK \l "_Toc263955257" 5.5.1 Structure, Union and Class Type Entries  PAGEREF _Toc263955257 \h 84  HYPERLINK \l "_Toc263955258" 5.5.2 Interface Type Entries  PAGEREF _Toc263955258 \h 86  HYPERLINK \l "_Toc263955259" 5.5.3 Derived or Extended Structs, Classes and Interfaces  PAGEREF _Toc263955259 \h 86  HYPERLINK \l "_Toc263955260" 5.5.4 Access Declarations  PAGEREF _Toc263955260 \h 87  HYPERLINK \l "_Toc263955261" 5.5.5 Friends  PAGEREF _Toc263955261 \h 87  HYPERLINK \l "_Toc263955262" 5.5.6 Data Member Entries  PAGEREF _Toc263955262 \h 88  HYPERLINK \l "_Toc263955263" 5.5.7 Member Function Entries  PAGEREF _Toc263955263 \h 92  HYPERLINK \l "_Toc263955264" 5.5.8 Class Template Instantiations  PAGEREF _Toc263955264 \h 93  HYPERLINK \l "_Toc263955265" 5.5.9 Variant Entries  PAGEREF _Toc263955265 \h 94  HYPERLINK \l "_Toc263955266" 5.6 Condition Entries  PAGEREF _Toc263955266 \h 95  HYPERLINK \l "_Toc263955267" 5.7 Enumeration Type Entries  PAGEREF _Toc263955267 \h 96  HYPERLINK \l "_Toc263955268" 5.8 Subroutine Type Entries  PAGEREF _Toc263955268 \h 97  HYPERLINK \l "_Toc263955269" 5.9 String Type Entries  PAGEREF _Toc263955269 \h 98  HYPERLINK \l "_Toc263955270" 5.10 Set Type Entries  PAGEREF _Toc263955270 \h 98  HYPERLINK \l "_Toc263955271" 5.11 Subrange Type Entries  PAGEREF _Toc263955271 \h 99  HYPERLINK \l "_Toc263955272" 5.12 Pointer to Member Type Entries  PAGEREF _Toc263955272 \h 100  HYPERLINK \l "_Toc263955273" 5.13 File Type Entries  PAGEREF _Toc263955273 \h 101  HYPERLINK \l "_Toc263955274" 5.14 Dynamic Type Properties  PAGEREF _Toc263955274 \h 102  HYPERLINK \l "_Toc263955275" 5.14.1 Data Location  PAGEREF _Toc263955275 \h 102  HYPERLINK \l "_Toc263955276" 5.14.2 Allocation and Association Status  PAGEREF _Toc263955276 \h 102  HYPERLINK \l "_Toc263955277" 5.15 Template Alias Entries  PAGEREF _Toc263955277 \h 103  HYPERLINK \l "_Toc263955278" 6 OTHER DEBUGGING INFORMATION  PAGEREF _Toc263955278 \h 105  HYPERLINK \l "_Toc263955279" 6.1 Accelerated Access  PAGEREF _Toc263955279 \h 105  HYPERLINK \l "_Toc263955280" 6.1.1 Lookup by Name  PAGEREF _Toc263955280 \h 106  HYPERLINK \l "_Toc263955281" 6.1.2 Lookup by Address  PAGEREF _Toc263955281 \h 107  HYPERLINK \l "_Toc263955282" 6.2 Line Number Information  PAGEREF _Toc263955282 \h 108  HYPERLINK \l "_Toc263955283" 6.2.1 Definitions  PAGEREF _Toc263955283 \h 109  HYPERLINK \l "_Toc263955284" 6.2.2 State Machine Registers  PAGEREF _Toc263955284 \h 109  HYPERLINK \l "_Toc263955285" 6.2.3 Line Number Program Instructions  PAGEREF _Toc263955285 \h 111  HYPERLINK \l "_Toc263955286" 6.2.4 The Line Number Program Header  PAGEREF _Toc263955286 \h 112  HYPERLINK \l "_Toc263955287" 6.2.5 The Line Number Program  PAGEREF _Toc263955287 \h 115  HYPERLINK \l "_Toc263955288" 6.3 Macro Information  PAGEREF _Toc263955288 \h 123  HYPERLINK \l "_Toc263955289" 6.3.1 Macinfo Types  PAGEREF _Toc263955289 \h 123  HYPERLINK \l "_Toc263955290" 6.3.2 Base Source Entries  PAGEREF _Toc263955290 \h 125  HYPERLINK \l "_Toc263955291" 6.3.3 Macinfo Entries for Command Line Options  PAGEREF _Toc263955291 \h 125  HYPERLINK \l "_Toc263955292" 6.3.4 General Rules and Restrictions  PAGEREF _Toc263955292 \h 125  HYPERLINK \l "_Toc263955293" 6.4 Call Frame Information  PAGEREF _Toc263955293 \h 126  HYPERLINK \l "_Toc263955294" 6.4.1 Structure of Call Frame Information  PAGEREF _Toc263955294 \h 127  HYPERLINK \l "_Toc263955295" 6.4.2 Call Frame Instructions  PAGEREF _Toc263955295 \h 131  HYPERLINK \l "_Toc263955296" 6.4.3 Call Frame Instruction Usage  PAGEREF _Toc263955296 \h 136  HYPERLINK \l "_Toc263955297" 6.4.4 Call Frame Calling Address  PAGEREF _Toc263955297 \h 137  HYPERLINK \l "_Toc263955298" 7 DATA REPRESENTATION  PAGEREF _Toc263955298 \h 139  HYPERLINK \l "_Toc263955299" 7.1 Vendor Extensibility  PAGEREF _Toc263955299 \h 139  HYPERLINK \l "_Toc263955300" 7.2 Reserved Values  PAGEREF _Toc263955300 \h 140  HYPERLINK \l "_Toc263955301" 7.2.1 Error Values  PAGEREF _Toc263955301 \h 140  HYPERLINK \l "_Toc263955302" 7.2.2 Initial Length Values  PAGEREF _Toc263955302 \h 140  HYPERLINK \l "_Toc263955303" 7.3 Executable Objects and Shared Objects  PAGEREF _Toc263955303 \h 140  HYPERLINK \l "_Toc263955304" 7.4 32-Bit and 64-Bit DWARF Formats  PAGEREF _Toc263955304 \h 140  HYPERLINK \l "_Toc263955305" 7.5 Format of Debugging Information  PAGEREF _Toc263955305 \h 143  HYPERLINK \l "_Toc263955306" 7.5.1 Unit Headers  PAGEREF _Toc263955306 \h 143  HYPERLINK \l "_Toc263955307" 7.5.2 Debugging Information Entry  PAGEREF _Toc263955307 \h 145  HYPERLINK \l "_Toc263955308" 7.5.3 Abbreviations Tables  PAGEREF _Toc263955308 \h 145  HYPERLINK \l "_Toc263955309" 7.5.4 Attribute Encodings  PAGEREF _Toc263955309 \h 146  HYPERLINK \l "_Toc263955310" 7.6 Variable Length Data  PAGEREF _Toc263955310 \h 161  HYPERLINK \l "_Toc263955311" 7.7 DWARF Expressions and Location Descriptions  PAGEREF _Toc263955311 \h 163  HYPERLINK \l "_Toc263955312" 7.7.1 DWARF Expressions  PAGEREF _Toc263955312 \h 163  HYPERLINK \l "_Toc263955313" 7.7.2 Location Descriptions  PAGEREF _Toc263955313 \h 167  HYPERLINK \l "_Toc263955314" 7.7.3 Location Lists  PAGEREF _Toc263955314 \h 167  HYPERLINK \l "_Toc263955315" 7.8 Base Type Attribute Encodings  PAGEREF _Toc263955315 \h 168  HYPERLINK \l "_Toc263955316" 7.9 Accessibility Codes  PAGEREF _Toc263955316 \h 170  HYPERLINK \l "_Toc263955317" 7.10 Visibility Codes  PAGEREF _Toc263955317 \h 171  HYPERLINK \l "_Toc263955318" 7.11 Virtuality Codes  PAGEREF _Toc263955318 \h 171  HYPERLINK \l "_Toc263955319" 7.12 Source Languages  PAGEREF _Toc263955319 \h 171  HYPERLINK \l "_Toc263955320" 7.13 Address Class Encodings  PAGEREF _Toc263955320 \h 173  HYPERLINK \l "_Toc263955321" 7.14 Identifier Case  PAGEREF _Toc263955321 \h 174  HYPERLINK \l "_Toc263955322" 7.15 Calling Convention Encodings  PAGEREF _Toc263955322 \h 174  HYPERLINK \l "_Toc263955323" 7.16 Inline Codes  PAGEREF _Toc263955323 \h 175  HYPERLINK \l "_Toc263955324" 7.17 Array Ordering  PAGEREF _Toc263955324 \h 175  HYPERLINK \l "_Toc263955325" 7.18 Discriminant Lists  PAGEREF _Toc263955325 \h 176  HYPERLINK \l "_Toc263955326" 7.19 Name Lookup Tables  PAGEREF _Toc263955326 \h 176  HYPERLINK \l "_Toc263955327" 7.20 Address Range Table  PAGEREF _Toc263955327 \h 177  HYPERLINK \l "_Toc263955328" 7.21 Line Number Information  PAGEREF _Toc263955328 \h 178  HYPERLINK \l "_Toc263955329" 7.22 Macro Information  PAGEREF _Toc263955329 \h 180  HYPERLINK \l "_Toc263955330" 7.23 Call Frame Information  PAGEREF _Toc263955330 \h 180  HYPERLINK \l "_Toc263955331" 7.24 Non-contiguous Address Ranges  PAGEREF _Toc263955331 \h 182  HYPERLINK \l "_Toc263955332" 7.25 Dependencies and Constraints  PAGEREF _Toc263955332 \h 183  HYPERLINK \l "_Toc263955333" 7.26 Integer Representation Names  PAGEREF _Toc263955333 \h 184  HYPERLINK \l "_Toc263955334" 7.27 Type Signature Computation  PAGEREF _Toc263955334 \h 184  HYPERLINK \l "_Toc263955335" Appendix A -- Attributes by Tag Value (informative)  PAGEREF _Toc263955335 \h 191  HYPERLINK \l "_Toc263955336" Appendix B -- Debug Section Relationships (informative)  PAGEREF _Toc263955336 \h 213  HYPERLINK \l "_Toc263955337" Appendix C -- Variable Length Data: Encoding/Decoding (informative)  PAGEREF _Toc263955337 \h 217  HYPERLINK \l "_Toc263955338" Appendix D -- Examples (informative)  PAGEREF _Toc263955338 \h 219  HYPERLINK \l "_Toc263955339" D.1 Compilation Units and Abbreviations Table Example  PAGEREF _Toc263955339 \h 219  HYPERLINK \l "_Toc263955340" D.2 Aggregate Examples  PAGEREF _Toc263955340 \h 221  HYPERLINK \l "_Toc263955341" D.2.1 Fortran 90 Example  PAGEREF _Toc263955341 \h 221  HYPERLINK \l "_Toc263955342" D.2.2 Ada Example  PAGEREF _Toc263955342 \h 227  HYPERLINK \l "_Toc263955343" D.2.3 Pascal Example  PAGEREF _Toc263955343 \h 230  HYPERLINK \l "_Toc263955344" D.3 Namespace Example  PAGEREF _Toc263955344 \h 232  HYPERLINK \l "_Toc263955345" D.4 Member Function Example  PAGEREF _Toc263955345 \h 235  HYPERLINK \l "_Toc263955346" D.5 Line Number Program Example  PAGEREF _Toc263955346 \h 237  HYPERLINK \l "_Toc263955347" D.6 Call Frame Information Example  PAGEREF _Toc263955347 \h 239  HYPERLINK \l "_Toc263955348" D.7 Inlining Examples  PAGEREF _Toc263955348 \h 244  HYPERLINK \l "_Toc263955349" D.7.1 Alternative #1: inline both OUTER and INNER  PAGEREF _Toc263955349 \h 245  HYPERLINK \l "_Toc263955350" D.7.2 Alternative #2: Inline OUTER, multiple INNERs  PAGEREF _Toc263955350 \h 248  HYPERLINK \l "_Toc263955351" D.7.3 Alternative #3: inline OUTER, one normal INNER  PAGEREF _Toc263955351 \h 251  HYPERLINK \l "_Toc263955352" D.8 Constant Expression Example  PAGEREF _Toc263955352 \h 253  HYPERLINK \l "_Toc263955353" D.9 Unicode Character Example  PAGEREF _Toc263955353 \h 255  HYPERLINK \l "_Toc263955354" D.10 Type-Safe Enumeration Example  PAGEREF _Toc263955354 \h 256  HYPERLINK \l "_Toc263955355" D.11 Template Example  PAGEREF _Toc263955355 \h 257  HYPERLINK \l "_Toc263955356" D.12 Template Alias Examples  PAGEREF _Toc263955356 \h 260  HYPERLINK \l "_Toc263955357" Appendix E -- DWARF Compression and Duplicate Elimination (informative)  PAGEREF _Toc263955357 \h 263  HYPERLINK \l "_Toc263955358" E.1 Using Compilation Units  PAGEREF _Toc263955358 \h 263  HYPERLINK \l "_Toc263955359" E.1.1 Overview  PAGEREF _Toc263955359 \h 263  HYPERLINK \l "_Toc263955360" E.1.2 Naming and Usage Considerations  PAGEREF _Toc263955360 \h 265  HYPERLINK \l "_Toc263955361" E.1.3 Examples  PAGEREF _Toc263955361 \h 269  HYPERLINK \l "_Toc263955362" E.2 Using Type Units  PAGEREF _Toc263955362 \h 276  HYPERLINK \l "_Toc263955363" E.2.1 Signature Computation Example  PAGEREF _Toc263955363 \h 277  HYPERLINK \l "_Toc263955364" E.2.2 Type Signature Computation Grammar  PAGEREF _Toc263955364 \h 285  HYPERLINK \l "_Toc263955365" E.3 Summary of Compression Techniques  PAGEREF _Toc263955365 \h 287  HYPERLINK \l "_Toc263955366" E.3.1 #include compression  PAGEREF _Toc263955366 \h 287  HYPERLINK \l "_Toc263955367" E.3.2 Eliminating function duplication  PAGEREF _Toc263955367 \h 287  HYPERLINK \l "_Toc263955368" E.3.3 Single-function-per-DWARF-compilation-unit  PAGEREF _Toc263955368 \h 287  HYPERLINK \l "_Toc263955369" E.3.4 Inlining and out-of-line-instances  PAGEREF _Toc263955369 \h 288  HYPERLINK \l "_Toc263955370" E.3.5 Separate Type Units  PAGEREF _Toc263955370 \h 288  HYPERLINK \l "_Toc263955371" Appendix F DWARF Section Version Numbers (informative)  PAGEREF _Toc263955371 \h 289  List of Figures  TOC \t "Caption" \c Figure 1. Tag names  PAGEREF _Toc263955372 \h 8 Figure 2. Attribute names  PAGEREF _Toc263955373 \h 14 Figure 3. Classes of attribute value  PAGEREF _Toc263955374 \h 15 Figure 4. Accessibility codes  PAGEREF _Toc263955375 \h 32 Figure 5. Visibility codes  PAGEREF _Toc263955376 \h 33 Figure 6. Virtuality codes  PAGEREF _Toc263955377 \h 33 Figure 7. Example address class codes  PAGEREF _Toc263955378 \h 35 Figure 8. Language names  PAGEREF _Toc263955379 \h 45 Figure 9. Identifier case codes  PAGEREF _Toc263955380 \h 46 Figure 10. Calling convention codes  PAGEREF _Toc263955381 \h 54 Figure 11. Inline codes  PAGEREF _Toc263955382 \h 59 Figure 12. Endianity attribute values  PAGEREF _Toc263955383 \h 72 Figure 13. Encoding attribute values  PAGEREF _Toc263955384 \h 77 Figure 14. Decimal sign attribute values  PAGEREF _Toc263955385 \h 80 Figure 15. Type modifier tags  PAGEREF _Toc263955386 \h 82 Figure 16. Array ordering  PAGEREF _Toc263955387 \h 83 Figure 17. Discriminant descriptor values  PAGEREF _Toc263955388 \h 95 Figure 18. Tag encodings  PAGEREF _Toc263955389 \h 154 Figure 19. Child determination encodings  PAGEREF _Toc263955390 \h 154 Figure 20. Attribute encodings  PAGEREF _Toc263955391 \h 159 Figure 21. Attribute form encodings  PAGEREF _Toc263955392 \h 161 Figure 22. Examples of unsigned LEB128 encodings  PAGEREF _Toc263955393 \h 162 Figure 23. Examples of signed LEB128 encodings  PAGEREF _Toc263955394 \h 163 Figure 24. DWARF operation encodings  PAGEREF _Toc263955395 \h 167 Figure 25. Base type encoding values  PAGEREF _Toc263955396 \h 169 Figure 26. Decimal sign encodings  PAGEREF _Toc263955397 \h 169 Figure 27. Endianity encodings  PAGEREF _Toc263955398 \h 170 Figure 28. Accessibility encodings  PAGEREF _Toc263955399 \h 170 Figure 29. Visibility encodings  PAGEREF _Toc263955400 \h 171 Figure 30. Virtuality encodings  PAGEREF _Toc263955401 \h 171 Figure 31. Language encodings  PAGEREF _Toc263955402 \h 173 Figure 32. Identifier case encodings  PAGEREF _Toc263955403 \h 174 Figure 33. Calling convention encodings  PAGEREF _Toc263955404 \h 174 Figure 34. Inline encodings  PAGEREF _Toc263955405 \h 175 Figure 35. Ordering encodings  PAGEREF _Toc263955406 \h 175 Figure 36. Discriminant descriptor encodings  PAGEREF _Toc263955407 \h 176 Figure 37. Line Number Standard Opcode Encodings  PAGEREF _Toc263955408 \h 179 Figure 38. Line Number Extended Opcode Encodings  PAGEREF _Toc263955409 \h 179 Figure 39. Macinfo Type Encodings  PAGEREF _Toc263955410 \h 180 Figure 40. Call frame instruction encodings  PAGEREF _Toc263955411 \h 182 Figure 41. Integer Representation Names  PAGEREF _Toc263955412 \h 184 Figure 42. Attributes by TAG value  PAGEREF _Toc263955413 \h 211 Figure 43. Debug section relationships  PAGEREF _Toc263955428 \h 214 Figure 44. Algorithm to encode an unsigned integer  PAGEREF _Toc263955429 \h 217 Figure 45. Algorithm to encode a signed integer  PAGEREF _Toc263955430 \h 217 Figure 46. Algorithm to decode an unsigned LEB128 number  PAGEREF _Toc263955431 \h 218 Figure 47. Algorithm to decode a signed LEB128 number  PAGEREF _Toc263955432 \h 218 Figure 48. Compilation units and abbreviations table  PAGEREF _Toc263955433 \h 220 Figure 49. Fortran 90 example: source fragment  PAGEREF _Toc263955434 \h 221 Figure 50. Fortran 90 example: descriptor representation  PAGEREF _Toc263955435 \h 222 Figure 51. Fortran 90 example: DWARF description  PAGEREF _Toc263955436 \h 225 Figure 52. Ada example: source fragment  PAGEREF _Toc263955437 \h 227 Figure 53. Ada example: DWARF description  PAGEREF _Toc263955438 \h 229 Figure 54. Packed record example: source fragment  PAGEREF _Toc263955439 \h 230 Figure 55. Packed record example: DWARF description  PAGEREF _Toc263955440 \h 231 Figure 56. Namespace example: source fragment  PAGEREF _Toc263955441 \h 232 Figure 57. Namespace example: DWARF description  PAGEREF _Toc263955442 \h 234 Figure 58. Member function example: source fragment  PAGEREF _Toc263955443 \h 235 Figure 59. Member function example: DWARF description  PAGEREF _Toc263955444 \h 236 Figure 60. Line number program example: machine code  PAGEREF _Toc263955445 \h 237 Figure 61. Line number program example: one encoding  PAGEREF _Toc263955446 \h 238 Figure 62. Line number program example: alternate encoding  PAGEREF _Toc263955447 \h 238 Figure 63. Call frame information example: machine code fragments  PAGEREF _Toc263955448 \h 240 Figure 64. Call frame information example: conceptual matrix  PAGEREF _Toc263955449 \h 241 Figure 65. Call frame information example: common information entry encoding  PAGEREF _Toc263955450 \h 242 Figure 66. Call frame information example: frame description entry encoding  PAGEREF _Toc263955451 \h 243 Figure 67. Inlining examples: pseudo-source fragment  PAGEREF _Toc263955452 \h 244 Figure 68. Inlining example #1: abstract instance  PAGEREF _Toc263955453 \h 246 Figure 69. Inlining example #1: concrete instance  PAGEREF _Toc263955454 \h 247 Figure 70. Inlining example #2: abstract instance  PAGEREF _Toc263955455 \h 249 Figure 71. Inlining example #2: concrete instance  PAGEREF _Toc263955456 \h 250 Figure 72. Inlining example #3: abstract instance  PAGEREF _Toc263955457 \h 252 Figure 73. Inlining example #3: concrete instance  PAGEREF _Toc263955458 \h 253 Figure 74. Constant expressions: C++ source  PAGEREF _Toc263955459 \h 253 Figure 75. Constant expressions: DWARF description  PAGEREF _Toc263955460 \h 255 Figure 76. Unicode character type examples  PAGEREF _Toc263955461 \h 255 Figure 77. C++ type-safe enumeration example  PAGEREF _Toc263955462 \h 256 Figure 78. C++ template example #1  PAGEREF _Toc263955463 \h 257 Figure 79. C++ template example #2  PAGEREF _Toc263955464 \h 258 Figure 80. Template alias example #1  PAGEREF _Toc263955465 \h 260 Figure 81. Template alias example #2  PAGEREF _Toc263955466 \h 261 Figure 82. Duplicate elimination example #1: C++ source  PAGEREF _Toc263955467 \h 269 Figure 83. Duplicate elimination example #1: DWARF section group  PAGEREF _Toc263955468 \h 270 Figure 84. Duplicate elimination example #1: primary compilation unit  PAGEREF _Toc263955469 \h 271 Figure 85. Duplicate elimination example #2: Fortran source  PAGEREF _Toc263955470 \h 272 Figure 86. Duplicate elimination example #2: DWARF section group  PAGEREF _Toc263955471 \h 273 Figure 87. Duplicate elimination example #2: primary unit  PAGEREF _Toc263955472 \h 274 Figure 88. Duplicate elimination example #2: companion source  PAGEREF _Toc263955473 \h 274 Figure 89. Duplicate elimination example #2: companion DWARF  PAGEREF _Toc263955474 \h 275 Figure 90. Type signature examples: C++ source  PAGEREF _Toc263955475 \h 277 Figure 91. Type signature computation #1: DWARF representation  PAGEREF _Toc263955476 \h 278 Figure 92. Type signature computation #1: flattened byte stream  PAGEREF _Toc263955477 \h 279 Figure 93. Type signature computation #2: DWARF representation  PAGEREF _Toc263955478 \h 281 Figure 94. Type signature example #2: flattened byte stream  PAGEREF _Toc263955479 \h 284 Figure 95. Type signature example usage  PAGEREF _Toc263955480 \h 285 Figure 96. Type signature computation grammar  PAGEREF _Toc263955481 \h 286 Figure 97. Section version numbers  PAGEREF _Toc263955482 \h 289  FOREWORD The DWARF Debugging Information Format Committee was originally organized in 1988 as the Programming Languages Special Interest Group (PLSIG) of Unix International, Inc., a trade group organized to promote Unix System V Release 4 (SVR4). PLSIG drafted a standard for DWARF Version 1, compatible with the DWARF debugging format used at the time by SVR4 compilers and debuggers from AT&T. This was published as Revision 1.1.0 on October 6,1992. PLSIG also designed the DWARF Version 2 format, which followed the same general philosophy as Version 1, but with significant new functionality and a more compact, though incompatible, encoding. An industry review draft of DWARF Version 2 was published as Revision 2.0.0 on July 27, 1993. Unix International dissolved shortly after the draft of Version 2 was released; no industry comments were received or addressed, and no final standard was released. The committee mailing list was hosted by OpenGroup (formerly XOpen). The Committee reorganized in October, 1999, and met for the next several years to address issues that had been noted with DWARF Version 2 as well as to add a number of new features. In mid-2003, the Committee became a workgroup under the Free Standards Group (FSG), a industry consortium chartered to promote open standards. DWARF Version 3 was published on December 20, 2005, following industry review and comment. The DWARF Committee withdrew from the Free Standards Group in February, 2007, when FSG merged with the Open Source Development Labs to form The Linux Foundation, more narrowly focused on promoting Linux. The DWARF Committee has been independent since that time. It is the intention of the DWARF Committee that migrating from DWARF Version 2 or Version 3 to later versions should be straightforward and easily accomplished. Almost all DWARF Version 2 and Version 3 constructs have been retained unchanged in DWARF Version 4. The DWARF Debugging Information Format Committee is open to compiler and debugger developers who have experience with source language debugging and debugging formats, and have an interest in promoting or extending the DWARF debugging format. DWARF Committee members contributing to Version 4 are: Todd Allen Concurrent Computer David Anderson John Bishop Intel Jim Blandy CodeSourcery Ron Brender, Editor Andrew Cagney Siu Chi Chan IBM Cary Coutant Google John DelSignore TotalView Michael Eager, Chair Eager Consulting Ben Elliston IBM Mike Gleeson Hewlett-Packard Matthew Gretton-Dann ARM David Gross Hewlett-Packard Tommy Hoffner IBM Jason Molenda Apple David Moore Intel Jeff Nelson Hewlett-Packard Chris Quenelle Sun Microsystems Paul Robinson Hewlett-Packard Bill White TotalView Kendrick Wong IBM For further information about DWARF or the DWARF Committee, see  HYPERLINK "http://www.dwarfstd.org/" http://www.dwarfstd.org. This document is intended to be usable in online as well as traditional paper forms. In the online form, blue text is used to indicate hyperlinks which facilitate moving around in the document in a manner like that typically found in web browsers. Most hyperlinks link to the definition of a term or construct, or to a cited Section or Figure. However, attributes in particular are often used in more than one way or context so that there is no single definition; for attributes, hyperlinks link to the introductory list of all attributes which in turn contains hyperlinks for the multiple usages. The Table of Contents also provides hyperlinks to the respective sections. In the traditional paper form, the appearance of the hyperlinks on a page of paper does not distract the eye because the blue hyperlinks are typically imaged by black and white printers in a manner nearly indistinguishable from other text. (Hyperlinks are not underlined for this same reason.) Page numbers, a Table of Contents, a List of Figures and an Index are included in both online and paper forms. INTRODUCTION This document defines a format for describing programs to facilitate user source level debugging. This description can be generated by compilers, assemblers and linkage editors. It can be used by debuggers and other tools. The debugging information format does not favor the design of any compiler or debugger. Instead, the goal is to create a method of communicating an accurate picture of the source program to any debugger in a form that is extensible to different languages while retaining compatibility. The design of the debugging information format is open-ended, allowing for the addition of new debugging information to accommodate new languages or debugger capabilities while remaining compatible with other languages or different debuggers. Purpose and Scope The debugging information format described in this document is designed to meet the symbolic, source-level debugging needs of different languages in a unified fashion by requiring language independent debugging information whenever possible. Aspects of individual languages, such as C++ virtual functions or Fortran common blocks, are accommodated by creating attributes that are used only for those languages. This document is believed to cover most debugging information needs of Adaxe "Ada", Cxe "C", C++xe "C++", COBOLxe "COBOL", and Fortranxe "Fortran"; it also covers the basic needs of various other languages. This document describes DWARF Version 4, the fourth generation of debugging information based on the DWARF format. DWARF Version 4 extends DWARF Version 3xe "DWARF Version 3" in a compatible manner. The intended audience for this document is the developers of both producers and consumers of debugging information, typically compilers, debuggers and other tools that need to interpret a binary program in terms of its original source. Overview There are two major pieces to the description of the DWARF format in this document. The first piece is the informational content of the debugging entries. The second piece is the way the debugging information is encoded and represented in an object file. The informational content is described in Sections 2 through 6. Section 2 describes the overall structure of the information and attributes that is common to many or all of the different debugging information entries. Sections 3, 4 and 5 describe the specific debugging information entries and how they communicate the necessary information about the source program to a debugger. Section 6 describes debugging information contained outside of the debugging information entries. The encoding of the DWARF information is presented in Section 7. This organization closely follows that used in the DWARF Version 3xe "DWARF Version 3" document. Except where needed to incorporate new material or to correct errors, the DWARF Version 3 text is generally reused in this document with little or no modification. In the following sections, text in normal font describes required aspects of the DWARF format. Text in italics is explanatory or supplementary material, and not part of the format definition itself. The several appendices consist only of explanatory or supplementary material, and are not part of the formal definition. Vendor Extensibility This document does not attempt to cover all interesting languages or even to cover all of the interesting debugging information needs for its primary target languages. Therefore, the document provides vendors a way to define their own debugging information tags, attributes, base type encodings, location operations, language names, calling conventions and call frame instructions by reserving a subset of the valid values for these constructs for vendor specific additions and defining related naming conventions.xe "extensibility" \t "See vendor extensibility "xe "vendor extensibility"xe "vendor extension" \t "See also vendor extensibility"xe "vendor specifc extensions" \t "See vendor extensibility" Vendors may also use debugging information entries and attributes defined here in new situations. Future versions of this document will not use names or values reserved for vendor specific additions. All names and values not reserved for vendor additions, however, are reserved for future versions of this document. DWARF Version 4 is intended to be permissive rather than prescriptive. Where this specification provides a means for describing the source language, implementors are expected to adhere to that specification. For language features that are not supported, implementors may use existing attributes in novel ways or add vendor-defined attributes. Implementors who make extensions are strongly encouraged to design them to be compatible with this specification in the absence of those extensions. The DWARF format is organized so that a consumer can skip over data which it does not recognize. This may allow a consumer to read and process files generated according to a later version of this standard or which contain vendor extensions, albeit possibly in a degraded manner. Changes from Version 3 to Version 4 The following is a list of the major changes made to the DWARF Debugging Information Format since Version 3 was published. The list is not meant to be exhaustive. Reformulate Section 2.6 to better distinguish DWARF location descriptions, which compute the location where a value is found (such as an address in memory or a register name) from DWARF expressions, which compute a final value (such as an array bound). Add support for bundled instructions on machine architectures where instructions do not occupy a whole number of bytes. Add a new attribute form for section offsets, DW_FORM_sec_offsetxe "DW_FORM_sec_offset", to replace the use of DW_FORM_data4xe "DW_FORM_data4" and DW_FORM_data8xe "DW_FORM_data8" for section offsets. Add an attribute, DW_AT_main_subprogramxe "DW_AT_main_subprogram", to identify the main subprogram of a program. Define default array lower bound values for each supported language. Add a new technique using separate type units, type signatures and COMDAT sections to improve compression and duplicate elimination of DWARF information. Add support for new C++ language constructs, including rvalue references, generalized constant expressions, Unicode character types and template aliases. Clarify and generalize support for packed arrays and structures. Add new line number table support to facilitate profile based compiler optimization. Add additional support for template parameters in instantiations. Add support for strongly typed enumerations in languages (such as C++) that have two kinds of enumeration declarations. DWARF Version 4 is compatible with DWARF Version 3xe "DWARF Version 3" except as follows: DWARF attributes that use any of the new forms of attribute value representation (for section offsets, flag compression, type signature references, and so on) cannot be read by DWARF Version 3 consumers because the consumer will not know how to skip over the unexpected form of data. DWARF frame and line table sections include a additional fields that affect the location and interpretation of other data in the section. Changes from Version 2 to Version 3 The following is a list of the major differences between Version 2 and Version 3 of the DWARF Debugging Information Format. The list is not meant to be exhaustive. Make provision for DWARF information files that are larger than 4 GBytes. Allow attributes to refer to debugging information entries in other shared libraries. Add support for Fortranxe "Fortran" 90 modules as well as allocatable array and pointer types. Add additional base types for Cxe "C" (as revised for 1999). Add support for Javaxe "Java" and COBOLxe "COBOL". Add namespace support for C++xe "C++". Add an optional section for global type names (similar to the global section for objects and functions). Adopt UTF-8xe "UTF-8" as the preferred representation of program name strings. Add improved support for optimized code (discontiguous scopes, end of prologuexe "prologue" determination, multiple section code generation). Improve the ability to eliminate duplicate DWARF information during linking. DWARF Version 3xe "DWARF Version 3" is compatible with DWARF Version 2xe "DWARF Version 2" except as follows: Certain very large values of the initial length fields that begin DWARF sections as well as certain structures are reserved to act as escape codes for future extension; one such extension is defined to increase the possible size of DWARF descriptions (see Section  REF BM7_4_File_Constraints \r \h  \* MERGEFORMAT 7.4). References that use the attribute form DW_FORM_ref_addr are specified to be four bytes in the DWARF 32-bit format and eight bytes in the DWARF 64-bit format, while DWARF Version 2 specifies that such references have the same size as an address on the target system (see Sections  REF BM7_4_File_Constraints \r \h  \* MERGEFORMAT 7.4 and  REF BM7_5_4_Attribute_Encodings \r \h  \* MERGEFORMAT 7.5.4). The return_address_register field in a Common Information Entry record for call frame information is changed to unsigned LEB representation (see Section  REF BM6_4_1_Structure_of_Call_Frame_Informat \r \h  \* MERGEFORMAT 6.4.1). Changes from Version 1 to Version 2 DWARF Version 2xe "DWARF Version 2" describes the second generation of debugging information based on the DWARF format. While DWARF Version 2 provides new debugging information not available in Version 1, the primary focus of the changes for Version 2 is the representation of the information, rather than the information content itself. The basic structure of the Version 2 format remains as in Version 1: the debugging information is represented as a series of debugging information entries, each containing one or more attributes (name/value pairs). The Version 2 representation, however, is much more compact than the Version 1 representation. In some cases, this greater density has been achieved at the expense of additional complexity or greater difficulty in producing and processing the DWARF information. The definers believe that the reduction in I/O and in memory paging should more than make up for any increase in processing time. The representation of information changed from Version 1 to Version 2, so that Version 2 DWARF information is not binary compatible with Version 1 information. To make it easier for consumers to support both Version 1 and Version 2 DWARF information, the Version 2 information has been moved to a different object file section, .debug_info. A summary of the major changes made in DWARF Version 2xe "DWARF Version 2" compared to the DWARF Version 1 may be found in the DWARF Version 2 document. GENERAL DESCRIPTION The Debugging Information Entry (DIE) DWARF uses a series of debugging information entries (DIEsxe "DIE" \t "See debugging information entry") to define a low-level representation of a source program. Each debugging information entryxe "debugging information entry" consists of an identifying tagxe "tag" and a series of attributes. An entry, or group of entries together, provide a description of a corresponding entityxe "entity" in the source program. The tag specifies the class to which an entry belongs and the attributes define the specific characteristics of the entry. The set of tag namesxe "tag names:list of" is listed in  REF _Ref114556188 \h  \* MERGEFORMAT Figure 1. The debugging information entries they identify are described in Sections 3, 4 and 5. The debugging information entry descriptions in Sections 3, 4 and 5 generally include mention of most, but not necessarily all, of the attributes that are normally or possibly used with the entry. Some attributes, whose applicability tends to be pervasive and invariant across many kinds of debugging information entries, are described in this section and not necessarily mentioned in all contexts where they may be appropriate. Examples include  HYPERLINK \l "DW_AT_artificial" DW_AT_artificialxe "DW_AT_artificial", the  HYPERLINK \l "BM2_12_Declaration_Coordinates" declaration coordinates, and  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description", among others. The debugging information entries are contained in the .debug_infoxe ".debug_info" and .debug_typesxe ".debug_types" sections of an object file. Attribute Types xe "attributes"Each attribute value is characterized by an attribute name. No more than one attributexe "attribute duplication" with a given name may appear in any debugging information entry. There are no limitations on the ordering of attributesxe "attribute ordering" within a debugging information entry. The attributes are listed in  REF _Ref241122105 \h  \* MERGEFORMAT Figure 2. The permissible values for an attribute belong to one or more classes of attribute value forms. Each form class may be represented in one or more ways. For example, some attribute values consist of a single piece of constant data. Constant data is the class of attribute value that those attributes may have. There are several representations of constant data, however (one, two, four, or eight bytes, and variable length data). The particular representation for any given instance of an attribute is encoded along with the attribute name as part of the information that guides the interpretation of a debugging information entry. Attribute value forms belong to one of the classes shown in  REF _Ref479512005 \h  \* MERGEFORMAT Figure 3. xe "attribute value classes"xe "classes of attribute value"xe "classes of attribute value" \t "See also attribute encodings" HYPERLINK \l "DW_TAG_access_declaration"DW_TAG_access_declarationxe "DW_TAG_access_declaration" HYPERLINK \l "DW_TAG_array_type"DW_TAG_array_typexe "DW_TAG_array_type" HYPERLINK \l "DW_TAG_base_type"DW_TAG_base_typexe "DW_TAG_base_type" HYPERLINK \l "DW_TAG_catch_block"DW_TAG_catch_blockxe "DW_TAG_catch_block" HYPERLINK \l "DW_TAG_class_type"DW_TAG_class_typexe "DW_TAG_class_type" HYPERLINK \l "DW_TAG_common_block"DW_TAG_common_blockxe "DW_TAG_common_block" HYPERLINK \l "DW_TAG_common_inclusion"DW_TAG_common_inclusionxe "DW_TAG_common_inclusion" HYPERLINK \l "DW_TAG_compile_unit"DW_TAG_compile_unitxe "DW_TAG_compile_unit" HYPERLINK \l "DW_TAG_condition"DW_TAG_conditionxe "DW_TAG_condition"HYPERLINK \l "DW_TAG_const_type"DW_TAG_const_typexe "DW_TAG_const_type" HYPERLINK \l "DW_TAG_constant"DW_TAG_constantxe "DW_TAG_constant" HYPERLINK \l "DW_TAG_dwarf_procedure"DW_TAG_dwarf_procedurexe "DW_TAG_dwarf_procedure"HYPERLINK \l "DW_TAG_entry_point"DW_TAG_entry_pointxe "DW_TAG_entry_point" HYPERLINK \l "DW_TAG_enumeration_type"DW_TAG_enumeration_typexe "DW_TAG_enumeration_type" HYPERLINK \l "DW_TAG_enumerator"DW_TAG_enumeratorxe "DW_TAG_enumerator" HYPERLINK \l "DW_TAG_file_type"DW_TAG_file_typexe "DW_TAG_file_type" HYPERLINK \l "DW_TAG_formal_parameter"DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" HYPERLINK \l "DW_TAG_friend"DW_TAG_friendxe "DW_TAG_friend" HYPERLINK \l "DW_TAG_imported_declaration"DW_TAG_imported_declarationxe "DW_TAG_imported_declaration" HYPERLINK \l "DW_TAG_imported_module"DW_TAG_imported_modulexe "DW_TAG_imported_module"  HYPERLINK \l "DW_TAG_imported_unit" DW_TAG_imported_unitxe "DW_TAG_imported_unit"HYPERLINK \l "DW_TAG_inheritance"DW_TAG_inheritancexe "DW_TAG_inheritance" HYPERLINK \l "DW_TAG_inlined_subroutine"DW_TAG_inlined_subroutinexe "DW_TAG_inlined_subroutine"  HYPERLINK \l "DW_TAG_interface" DW_TAG_interface_typexe "DW_TAG_interface_type" HYPERLINK \l "DW_TAG_label"DW_TAG_labelxe "DW_TAG_label" HYPERLINK \l "DW_TAG_lexical_block"DW_TAG_lexical_blockxe "DW_TAG_lexical_block" HYPERLINK \l "DW_TAG_member"DW_TAG_memberxe "DW_TAG_member" HYPERLINK \l "DW_TAG_module"DW_TAG_modulexe "DW_TAG_module" HYPERLINK \l "DW_TAG_namelist"DW_TAG_namelistxe "DW_TAG_namelist" HYPERLINK \l "DW_TAG_namelist_item"DW_TAG_namelist_itemxe "DW_TAG_namelist_item"  HYPERLINK \l "DW_TAG_namespace" DW_TAG_namespacexe "DW_TAG_namespace"HYPERLINK \l "DW_TAG_packed_type"DW_TAG_packed_typexe "DW_TAG_packed_type"  HYPERLINK \l "DW_TAG_partial_unit" DW_TAG_partial_unitxe "DW_TAG_partial_unit"HYPERLINK \l "DW_TAG_pointer_type"DW_TAG_pointer_typexe "DW_TAG_pointer_type" HYPERLINK \l "DW_TAG_ptr_to_member_type"DW_TAG_ptr_to_member_typexe "DW_TAG_ptr_to_member_type" HYPERLINK \l "DW_TAG_reference_type"DW_TAG_reference_typexe "DW_TAG_reference_type"  HYPERLINK \l "DW_TAG_restrict_type" DW_TAG_restrict_typexe "DW_TAG_restrict_type" HYPERLINK \l "DW_TAG_rvalue_reference_type" DW_TAG_rvalue_reference_typexe "DW_TAG_rvalue_reference_type"HYPERLINK \l "DW_TAG_set_type"DW_TAG_set_typexe "DW_TAG_set_type"  HYPERLINK \l "DW_TAG_shared_type" DW_TAG_shared_typexe "DW_TAG_shared_type"HYPERLINK \l "DW_TAG_string_type"DW_TAG_string_typexe "DW_TAG_string_type" HYPERLINK \l "DW_TAG_structure_type"DW_TAG_structure_typexe "DW_TAG_structure_type" HYPERLINK \l "DW_TAG_subprogram"DW_TAG_subprogramxe "DW_TAG_subprogram" HYPERLINK \l "DW_TAG_subrange_type"DW_TAG_subrange_typexe "DW_TAG_subrange_type" HYPERLINK \l "DW_TAG_subroutine_type"DW_TAG_subroutine_typexe "DW_TAG_subroutine_type"  HYPERLINK \l "DW_TAG_template_alias" DW_TAG_template_aliasxe "DW_TAG_template_alias" DW_HYPERLINK \l "DW_TAG_template_type_parameter"DW_TAG_template_type_parameterxe "DW_TAG_template_type_parameter"  HYPERLINK \l "DW_TAG_template_type_parameter" DW_TAG_template_type_parameterxe "DW_TAG_template_type_parameter"HYPERLINK \l "DW_TAG_template_value_parameter"DW_TAG_template_value_parameterxe "DW_TAG_template_value_parameter" HYPERLINK \l "DW_TAG_thrown_type"DW_TAG_thrown_typexe "DW_TAG_thrown_type" HYPERLINK \l "DW_TAG_try_block"DW_TAG_try_blockxe "DW_TAG_try_block" HYPERLINK \l "DW_TAG_typedef"DW_TAG_typedefxe "DW_TAG_typedef"  HYPERLINK \l "DW_TAG_type_unit_def" DW_TAG_type_unitxe "DW_TAG_type_unit"HYPERLINK \l "DW_TAG_union_type"DW_TAG_union_typexe "DW_TAG_union_type" HYPERLINK \l "DW_TAG_unspecified_parameters"DW_TAG_unspecified_parametersxe "DW_TAG_unspecified_parameters"  HYPERLINK \l "DW_TAG_unspecified_type" DW_TAG_unspecified_typexe "DW_TAG_unspecified_type" HYPERLINK \l "DW_TAG_variable"DW_TAG_variablexe "DW_TAG_variable" HYPERLINK \l "DW_TAG_variant"DW_TAG_variantxe "DW_TAG_variant" HYPERLINK \l "DW_TAG_variant_part"DW_TAG_variant_partxe "DW_TAG_variant_part" HYPERLINK \l "DW_TAG_volatile_type"DW_TAG_volatile_typexe "DW_TAG_volatile_type" HYPERLINK \l "DW_TAG_with_stmt"DW_TAG_with_stmtxe "DW_TAG_with_stmt"  Figure  SEQ Figure \* ARABIC 1. Tag names Figure 2, Attribute names, begins here. xe "tag names" \t "See also debugging information entry"xe "attributes:list of" AttributeIdentifies or SpecifiesDW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_abstract_origin_inline" Inline instances of inline subprograms  HYPERLINK \l "DW_AT_abstract_origin_outline" Out-of-line instances of inline subprogramsDW_AT_accessibilityxe "DW_AT_accessibility" HYPERLINK \l "DW_AT_accessibility_decl" C++ and Adaxe "Ada" declarations  HYPERLINK \l "DW_AT_accessibility_base_class" C++ base classes  HYPERLINK \l "DW_AT_accessibility_inherited_member" C++ inherited membersDW_AT_address_classxe "DW_AT_address_class" HYPERLINK \l "DW_AT_address_class_ptr" Pointer or reference types  HYPERLINK \l "DW_AT_address_class_subr" Subroutine or subroutine typeDW_AT_allocatedxe "DW_AT_allocated" HYPERLINK \l "DW_AT_allocated_type" Allocation status of typesDW_AT_artificialxe "DW_AT_artificial" HYPERLINK \l "DW_AT_artificial_decl" Objects or types that are not actually declared in the sourceDW_AT_associatedxe "DW_AT_associated" HYPERLINK \l "DW_AT_associated_type" Association status of typesDW_AT_base_typesxe "DW_AT_base_types" HYPERLINK \l "DW_AT_base_types_usage" Primitive data types of compilation unitDW_AT_binary_scalexe "DW_AT_binary_scale" HYPERLINK \l "DW_AT_binary_scale_usage" Binary scale factor for fixed-point typeDW_AT_bit_offsetxe "DW_AT_bit_offset" HYPERLINK \l "DW_AT_bit_offset_base_type" Base type bit location  HYPERLINK \l "DW_AT_bit_offset_member" Data member bit locationDW_AT_bit_sizexe "DW_AT_bit_size" HYPERLINK \l "DW_AT_bit_size_base_type" Base type bit size  HYPERLINK \l "DW_AT_bit_size_member" Data member bit sizeDW_AT_bit_stridexe "DW_AT_bit_stride"HYPERLINK \l "DW_AT_bit_stride_array_usage"Array element stride (of array type)  HYPERLINK \l "DW_AT_bit_stride_array_subrange_usage" Subrange stride (dimension of array type)  HYPERLINK \l "DW_AT_bit_stride_array_enum_usage" Enumeration stride (dimension of array type)DW_AT_byte_sizexe "DW_AT_byte_size"HYPERLINK \l "DW_AT_byte_size_base_type"Data object or data type size DW_AT_byte_stridexe "DW_AT_byte_stride" HYPERLINK \l "DW_AT_byte_stride_array_usage" Array element stride (of array type)  HYPERLINK \l "DW_AT_byte_stride_array_subrange_usage" Subrange stride (dimension of array type)  HYPERLINK \l "DW_AT_byte_stride_array_enum_usage" Enumeration stride (dimension of array type)DW_AT_call_columnxe "DW_AT_call_column" HYPERLINK \l "DW_AT_call_column_def" Column position of inlined subroutine callDW_AT_call_filexe "DW_AT_call_file" HYPERLINK \l "DW_AT_call_file_def" File containing inlined subroutine callDW_AT_call_linexe "DW_AT_call_line" HYPERLINK \l "DW_AT_call_line_def" Line number of inlined subroutine callDW_AT_calling_conventionxe "DW_AT_calling_convention" HYPERLINK \l "DW_AT_calling_convention_subr" Subprogram calling conventionDW_AT_common_referencexe "DW_AT_common_reference" HYPERLINK \l "DW_AT_common_reference_usage" Common block usageDW_AT_comp_dirxe "DW_AT_comp_dir" HYPERLINK \l "DW_AT_comp_dir_unit" Compilation directoryDW_AT_const_valuexe "DW_AT_const_value" HYPERLINK \l "DW_AT_const_value_object" Constant object  HYPERLINK \l "DW_AT_const_value_enum" Enumeration literal value  HYPERLINK \l "DW_AT_const_value_templ_param" Template value parameterDW_AT_const_exprxe "DW_AT_const_expr" HYPERLINK \l "DW_AT_const_expr_object" Compile-time constant object  HYPERLINK \l "DW_AT_const_expr_inline" Compile-time constant functionDW_AT_containing_typexe "DW_AT_containing_type" HYPERLINK \l "DW_AT_containing_type_usage" Containing type of pointer to member typeDW_AT_countxe "DW_AT_count" HYPERLINK \l "DW_AT_count_subrange" Elements of subrange typeDW_AT_data_bit_offsetxe "DW_AT_data_bit_offset" HYPERLINK \l "DW_AT_bit_offset_base_type" Base type bit location HYPERLINK \l "DW_AT_data_bit_offset_member"Data member bit locationDW_AT_data_locationxe "DW_AT_data_location" HYPERLINK \l "DW_AT_data_location_type" Indirection to actual dataDW_AT_data_member_locationxe "DW_AT_data_member_location" HYPERLINK \l "DW_AT_data_member_location_normal" Data member location  HYPERLINK \l "DW_AT_data_member_location_derived" Inherited member locationDW_AT_decimal_scalexe "DW_AT_decimal_scale" HYPERLINK \l "DW_AT_decimal_scale_usage" Decimal scale factorDW_AT_decimal_signxe "DW_AT_decimal_sign"HYPERLINK \l "DW_AT_decimal_sign_usage"Decimal sign representationDW_AT_decl_columnxe "DW_AT_decl_column" HYPERLINK \l "DW_AT_decl_column_usage" Column position of source declarationDW_AT_decl_filexe "DW_AT_decl_file" HYPERLINK \l "DW_AT_decl_file_usage" File containing source declarationDW_AT_decl_linexe "DW_AT_decl_line" HYPERLINK \l "DW_AT_decl_line_usage" Line number of source declarationDW_AT_declarationxe "DW_AT_declaration" HYPERLINK \l "DW_AT_declaration_non_def" Incomplete, non-defining, or separate entity declarationDW_AT_default_valuexe "DW_AT_default_value" HYPERLINK \l "DW_AT_default_value_param" Default value of parameterDW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_description_usage" Artificial name or descriptionDW_AT_digit_countxe "DW_AT_digit_count"HYPERLINK \l "DW_AT_digit_count_usage"Digit count for packed decimal or numeric string typeDW_AT_discrxe "DW_AT_discr" HYPERLINK \l "DW_AT_discr_variant" Discriminant of variant partDW_AT_discr_xe "DW_AT_discr"listxe "DW_AT_discr_list" HYPERLINK \l "DW_AT_discr_list_usage" List of discriminant valuesDW_AT_discr_xe "DW_AT_discr"valuexe "DW_AT_discr_value" HYPERLINK \l "DW_AT_discr_value_usage" Discriminant valueDW_AT_elementalxe "DW_AT_elemental" HYPERLINK \l "DW_AT_elemental_usage" Elemental property of a subroutineDW_AT_encodingxe "DW_AT_encoding" HYPERLINK \l "BM7_8_Base_Type_Encodings" Encoding of base typeDW_AT_endianityxe "DW_AT_endianity" HYPERLINK \l "DW_AT_endianity_usage" Endianity of dataDW_AT_entry_pcxe "DW_AT_entry_pc" HYPERLINK \l "DW_AT_entry_pc_mod_init" Entry address of module initialization  HYPERLINK \l "DW_AT_entry_pc_subr" Entry address of subprogram  HYPERLINK \l "DW_AT_entry_pc_inl_subr" Entry address of inlined subprogramDW_AT_enum_classxe "DW_AT_enum_class" HYPERLINK \l "DW_AT_enum_class_usage" Type safe enumeration definitionDW_AT_explicitxe "DW_AT_explicit" HYPERLINK \l "DW_AT_explicit_usage" Explicit property of member functionDW_AT_extensionxe "DW_AT_extension" HYPERLINK \l "DW_AT_extension" Previous namespace extension or original namespaceDW_AT_externalxe "DW_AT_external" HYPERLINK \l "DW_AT_external_subr" External subroutine  HYPERLINK \l "DW_AT_external_obj" External variableDW_AT_frame_basexe "DW_AT_frame_base" HYPERLINK \l "DW_AT_frame_base_subr" Subroutine frame base addressDW_AT_friendxe "DW_AT_friend" HYPERLINK \l "DW_AT_friend_usage" Friend relationshipDW_AT_high_pcxe "DW_AT_high_pc" HYPERLINK \l "code_address_or_range" Contiguous range of code addresses DW_AT_identifier_casexe "DW_AT_identifier_case" HYPERLINK \l "DW_AT_identifier_case_usage" Identifier case ruleDW_AT_importxe "DW_AT_import" HYPERLINK \l "DW_AT_import_usage" Imported declaration  HYPERLINK \l "DW_AT_import_unit" Imported unit HYPERLINK \l "DW_AT_import_namespace"Namespace alias  HYPERLINK \l "DW_AT_import_using" Namespace using declaration  HYPERLINK \l "DW_AT_import_using_directive" Namespace using directiveDW_AT_inlinexe "DW_AT_inline" HYPERLINK \l "DW_AT_inline_abstract" Abstract instance  HYPERLINK \l "DW_AT_inline_subr" Inlined subroutineDW_AT_is_optionalxe "DW_AT_is_optional" HYPERLINK \l "DW_AT_is_optional_param" Optional parameterDW_AT_languagexe "DW_AT_language" HYPERLINK \l "DW_AT_language_usage" Programming languageDW_AT_linkage_namexe "DW_AT_linkage_name" HYPERLINK \l "DW_AT_linkage_name_usage" Object file linkage name of an entityDW_AT_locationxe "DW_AT_location" HYPERLINK \l "data_object_location" Data object location DW_AT_low_pcxe "DW_AT_low_pc" HYPERLINK \l "code_address_or_range" Code address or range of addresses DW_AT_lower_boundxe "DW_AT_lower_bound" HYPERLINK \l "DW_AT_lower_bound_subrange" Lower bound of subrangeDW_AT_macro_infoxe "DW_AT_macro_info" HYPERLINK \l "DW_AT_macro_info_usage" Macro information (#define, #undef)DW_AT_main_subprogramxe "DW_AT_main_subprogram" HYPERLINK \l "DW_AT_main_subprogram_subp_usage" Main or starting subprogram  HYPERLINK \l "DW_AT_main_subprogram_unit_usage" Unit containing main or starting subprogramDW_AT_mutablexe "DW_AT_mutable" HYPERLINK \l "DW_AT_mutable_usage" Mutable property of member dataDW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_name_decl" Name of declaration  HYPERLINK \l "DW_AT_name_path" Path name of compilation sourceDW_AT_namelist_itemxe "DW_AT_namelist_item" HYPERLINK \l "DW_AT_namelist_item_usage" Namelist itemDW_AT_object_pointerxe "DW_AT_object_pointer" \b HYPERLINK \l "DW_AT_object_pointer_usage" Object (this, self) pointer of member functionDW_AT_orderingxe "DW_AT_ordering" HYPERLINK \l "DW_AT_ordering_usage" Array row/column orderingDW_AT_picture_stringxe "DW_AT_picture_string"HYPERLINK \l "DW_AT_picture_string_usage"Picture string for numeric string typeDW_AT_priorityxe "DW_AT_priority" HYPERLINK \l "DW_AT_priority_module" Module priorityDW_AT_producerxe "DW_AT_producer" HYPERLINK \l "DW_AT_producer_usage" Compiler identificationDW_AT_prototypedxe "DW_AT_prototyped" HYPERLINK \l "DW_AT_prototyped_entry" Subroutine prototypeDW_AT_purexe "DW_AT_pure" HYPERLINK \l "DW_AT_pure_usage" Pure property of a subroutineDW_AT_rangesxe "DW_AT_ranges" HYPERLINK \l "code_address_or_range" Non-contiguous range of code addressesDW_AT_recursivexe "DW_AT_recursive" HYPERLINK \l "DW_AT_recursive_usage" Recursive property of a subroutineDW_AT_return_addrxe "DW_AT_return_addr" HYPERLINK \l "DW_AT_return_addr_subr" Subroutine return address save locationDW_AT_segmentxe "DW_AT_segment" HYPERLINK \l "DW_AT_segment_addr" Addressing informationDW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_sibling_relation" Debugging information entry relationshipDW_AT_smallxe "DW_AT_small"HYPERLINK \l "DW_AT_small_usage"Scale factor for fixed-point typeDW_AT_signaturexe "DW_AT_signature"Type signaturexe "type signature"DW_AT_specificationxe "DW_AT_specification" HYPERLINK \l "DW_AT_specification_def" Incomplete, non-defining, or separate declaration corresponding to a declarationDW_AT_start_scopexe "DW_AT_start_scope" HYPERLINK \l "DW_AT_start_scope_object" Object declaration  HYPERLINK \l "DW_AT_start_scope_type" Type declarationDW_AT_static_linkxe "DW_AT_static_link" HYPERLINK \l "DW_AT_static_link_usage" Location of uplevel frameDW_AT_stmt_listxe "DW_AT_stmt_list" HYPERLINK \l "DW_AT_stmt_list_usage" Line number information for unitDW_AT_string_lengthxe "DW_AT_string_length" HYPERLINK \l "DW_AT_string_length_type" String length of string typeDW_AT_threads_scaledxe "DW_AT_threads_scaled"HYPERLINK \l "DW_AT_threads_scaled"UPC array bound THREADS scale factorDW_AT_trampolinexe "DW_AT_trampoline" HYPERLINK \l "trampoline_attribute" Target subroutineDW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_AT_type_of_decl" Type of declaration  HYPERLINK \l "DW_AT_type_of_return" Type of subroutine returnDW_AT_upper_boundxe "DW_AT_upper_bound" HYPERLINK \l "DW_AT_upper_bound_subrange" Upper bound of subrangeDW_AT_use_locationxe "DW_AT_use_location" HYPERLINK \l "DW_AT_use_location_ptr_mem" Member location for pointer to member typeDW_AT_use_UTF8xe "DW_AT_use_UTF8" HYPERLINK \l "DW_AT_use_utf8_comp_unit" Compilation unit uses UTF-8xe "UTF-8" stringsDW_AT_variable_parameterxe "DW_AT_variable_parameter" HYPERLINK \l "DW_AT_variable_parameter_usage" Non-constant parameter flagDW_AT_virtualityxe "DW_AT_virtuality" HYPERLINK \l "DW_AT_virtuality_usage" Virtuality indication  HYPERLINK \l "DW_AT_virtuality_inherited" Virtuality of base class   HYPERLINK \l "DW_AT_virtuality_subr" Virtuality of functionDW_AT_visibilityxe "DW_AT_visibility" HYPERLINK \l "DW_AT_visibility_usage" Visibility of declarationDW_AT_vtable_elem_locationxe "DW_AT_vtable_elem_location" HYPERLINK \l "DW_AT_vtable_elem_location_usage" Virtual function vtable slotFigure  SEQ Figure \* ARABIC 2. Attribute names Attribute ClassGeneral Use and Encoding HYPERLINK \l "address_forms" addressxe "address class"Refers to some location in the address space of the described program.  HYPERLINK \l "block_forms" blockxe "block class"An arbitrary number of uninterpreted bytes of data.  HYPERLINK \l "constant_forms" constantxe "constant class"One, two, four or eight bytes of uninterpreted data, or data encoded in the variable length format known as LEB128 (see Section  REF _Ref478434289 \w \h  \* MERGEFORMAT 7.6.). Most constant values are integers of one kind or another (codes, offsets, counts, and so on); these are sometimes called integer constants for emphasis. HYPERLINK \l "exprloc_forms" exprlocxe "exprloc class"A DWARF expression or location description. HYPERLINK \l "flag_forms" flagxe "flag class"A small constant that indicates the presence or absence of an attribute.  HYPERLINK \l "lineptr_forms" lineptrxe "lineptr class"Refers to a location in the DWARF section that holds line number information. HYPERLINK \l "loclist_forms" loclistptrxe "loclistptr class"Refers to a location in the DWARF section that holds location lists, which describe objects whose location can change during their lifetime. HYPERLINK \l "macptr_forms" macptrxe "macptr class"Refers to a location in the DWARF section that holds macro definition information. HYPERLINK \l "rangelist_forms" rangelistptrxe "rangelistptr class"Refers to a location in the DWARF section that holds non-contiguous address ranges.HYPERLINK \l "reference_forms"referencexe "reference class"Refers to one of the debugging information entries that describe the program. There are three types of reference. The first is an offset relative to the beginning of the compilation unit in which the reference occurs and must refer to an entry within that same compilation unit. The second type of reference is the offset of a debugging information entry in any compilation unit, including one different from the unit containing the reference. The third type of reference is an indirect reference to a type definition using a 64-bit signature for that type. HYPERLINK \l "string_forms" stringxe "string class"A null-terminated sequence of zero or more (non-null) bytes. Data in this class are generally printable strings. Strings may be represented directly in the debugging information entry or as an offset in a separate string table.Figure  SEQ Figure \* ARABIC 3. Classes of attribute value Relationship of Debugging Information Entries A variety of needs can be met by permitting a single debugging information entry to own an arbitrary number of other debugging entries and by permitting the same debugging 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, to show the members of a structure, union, or class, and to associate declarations with source files or source files with shared objects. The ownership relation of debugging information entriesxe "debugging information entry:ownership relation" is achieved naturally because the debugging information is represented as a tree. The nodes of the tree are the debugging information entries themselves. The child entries of any node are exactly those debugging information entries owned by that node. While the ownership relation of the debugging information entries is represented as a tree, other relations among the entries exist, for example, a reference from an entry representing a variable to another entry representing the type of that variable. If all such relations are taken into account, the debugging entries form a graph, not a tree. The tree itself is represented by flattening it in prefix order. Each debugging information entry is defined either to have child entries or not to have child entries (see Section  REF BM7_5_3_Abbreviation_Tables \w \h  \* MERGEFORMAT 7.5.3). If an entry is defined not to have children, the next physically succeeding entry is a sibling. If an entry is defined to have children, the next physically succeeding entry is its first child. Additional children are represented as siblings of the first child. A chain of sibling entries is terminated by a null entry. In cases where a producer of debugging information feels that it will be important for consumers of that information to quickly scan chains of sibling entries, while ignoring the children of individual siblings, that producer may attach a  HYPERLINK \l "DW_AT_sibling" DW_AT_siblingxe "DW_AT_sibling" attributexe "sibling attribute" to any debugging information entry. The value of this attribute is a reference to the sibling entry of the entry to which the attribute is attached. Target Addresses Many places in this document refer to the size of an addressxe "address size" \t "See size of an address"xe "size of an address" on the target architecture (or equivalently, target machine) to which a DWARF description applies. For processors which can be configured to have different address sizes or different instruction sets, the intent is to refer to the configuration which is either the default for that processor or which is specified by the object file or executable file which contains the DWARF information. For example, if a particular target architecture supports both 32-bit and 64-bit addresses, the compiler will generate an object file which specifies that it contains executable code generated for one or the other of these address sizes. In that case, the DWARF debugging information contained in this object file will use the same address size. Architectures which have multiple instruction sets are supported by the isaxe "isa" entry in the line number information (see Section  REF BM6_2_2_State_Machine_Registers \r \h  \* MERGEFORMAT 6.2.2). DWARF Expressions DWARF expressionsxe "DWARF expression" describe how to compute a value or name a location during debugging of a program. They are expressed in terms of DWARF operations that operate on a stack of values. All DWARF operations are encoded as a stream of opcodes that are each followed by zero or more literal operands. The number of operands is determined by the opcode. In addition to the general operations that are defined here, operations that are specific to  HYPERLINK \l "location_expression" location descriptionsxe "DWARF expression" \t "See also location description" are defined in Section  REF BM2_4_Location_Descriptions \r \h 2.6. General Operations Each general operation represents a postfix operation on a simple stack machine. Each element of the stack is the size of an addressxe "size of an address"xe "address:size of an" \t "See size of an address" on the target machine. The value on the top of the stack after executing the DWARF expression is taken to be the result (the address of the object, the value of the array bound, the length of a dynamic string, the desired value itself, and so on). Literal Encodings xe "DWARF expression:literal encodings"xe "DWARF expression:stack operations"The following operations all push a value onto the DWARF stack. If the value of a constant in one of these operations is larger than can be stored in a single stack element, the value is truncated to the element size and the low-order bits are pushed on the stack. DW_OP_lit0xe "DW_OP_lit0", DW_OP_lit1xe "DW_OP_lit1"xe "DW_OP_lit2", ..., DW_OP_lit31xe "DW_OP_lit31" The DW_OP_litnxe "DW_OP_litn" operations encode the unsigned literal values from 0 through 31, inclusive. DW_OP_addrxe "DW_OP_addr" The DW_OP_addr operation has a single operand that encodes a machine address and whose size is the size of an addressxe "size of an address" on the target machine. DW_OP_const1uxe "DW_OP_const1u", DW_OP_const2uxe "DW_OP_const2u", DW_OP_const4uxe "DW_OP_const4u", DW_OP_const8uxe "DW_OP_const8u" The single operand of a DW_OP_constnu operation provides a 1, 2, 4, or 8-byte unsigned integer constant, respectively. DW_OP_const1s ,xe "DW_OP_const1s" DW_OP_const2sxe "DW_OP_const2s", DW_OP_const4s, DW_OP_const8sxe "DW_OP_const8s" xe "DW_OP_const4s" The single operand of a DW_OP_constns operation provides a 1, 2, 4, or 8-byte signed integer constant, respectively. DW_OP_constuxe "DW_OP_constu" The single operand of the DW_OP_constu operation provides an unsigned LEB128 integer constant. DW_OP_constsxe "DW_OP_consts" The single operand of the DW_OP_consts operation provides a signed LEB128 integer constant. Register Based Addressing The following operations push a value onto the stack that is the result of adding the contents of a register to a given signed offset. DW_OP_fbregxe "DW_OP_fbreg" The HYPERLINK \l "DW_OP_fbreg"DW_OP_fbreg operation provides a signed LEB128 offset from the address specified by the location description in the HYPERLINK \l "DW_AT_frame_base"DW_AT_frame_basexe "DW_AT_frame_base" attribute of the current function. (This is typically a stack pointer register plus or minus some offset. On more sophisticated systems it might be a location list that adjusts the offset according to changes in the stack pointer as the PC changes.) DW_OP_breg0xe "DW_OP_breg0", DW_OP_breg1xe "DW_OP_breg1", ..., DW_OP_breg31xe "DW_OP_breg31" The single operand of the DW_OP_bregn operations provides a signed LEB128 offset from the specified register. DW_OP_bregxxe "DW_OP_bregx" The HYPERLINK \l "DW_OP_bregx"DW_OP_bregx operation has two operands: a register which is specified by an unsigned LEB128 number, followed by a signed LEB128 offset. Stack Operations The following operations manipulate the DWARF stack. Operations that index the stack assume that the top of the stack (most recently added entry) has index 0. DW_OP_dupxe "DW_OP_dup" The DW_OP_dup operation duplicates the value at the top of the stack. DW_OP_dropxe "DW_OP_drop" The DW_OP_drop operation pops the value at the top of the stack. DW_OP_pickxe "DW_OP_pick" The single operand of the DW_OP_pick operation provides a 1-byte index. A copy of the stack entry with the specified index (0 through 255, inclusive) is pushed onto the stack. DW_OP_overxe "DW_OP_over" The DW_OP_over operation duplicates the entry currently second in the stack at the top of the stack. This is equivalent to a DW_OP_pickxe "DW_OP_pick" operation, with index 1. DW_OP_swapxe "DW_OP_swap" The DW_OP_swap operation swaps the top two stack entries. The entry at the top of the stack becomes the second stack entry, and the second entry becomes the top of the stack. DW_OP_rotxe "DW_OP_rot" The DW_OP_rot operation rotates the first three stack entries. The entry at the top of the stack becomes the third stack entry, the second entry becomes the top of the stack, and the third entry becomes the second entry. DW_OP_derefxe "DW_OP_deref" The DW_OP_deref operation pops the top stack entry and treats it as an addressxe "address:dereference operator". The value retrieved from that address is pushed. The size of the data retrieved from the dereferenced address is the size of an addressxe "size of an address" on the target machine. DW_OP_deref_sizexe "DW_OP_deref_size" The DW_OP_deref_size operation behaves like the HYPERLINK \l "DW_OP_deref"DW_OP_deref operation: it pops the top stack entry and treats it as an address. The value retrieved from that address is pushed. In the DW_OP_deref_size operation, however, the size in bytes of the data retrieved from the dereferenced address is specified by the single operand. This operand is a 1-byte unsigned integral constant whose value may not be larger than the size of an addressxe "size of an address" on the target machine. The data retrieved is zero extended to the size of an address on the target machine before being pushed onto the expression stack. DW_OP_xderefxe "DW_OP_xderef" The DW_OP_xderef operation provides an extended dereference mechanism. The entry at the top of the stack is treated as an addressxe "address:dereference operator". The second stack entry is treated as an address space identifier for those architectures that support multiple address spacesxe "address space:multiple". The top two stack elements are popped, and a data item is retrieved through an implementation-defined address calculation and pushed as the new stack top. The size of the data retrieved from the dereferenced address is the size of an addressxe "size of an address" on the target machine. DW_OP_xderef_sizexe "DW_OP_xderef_size" The DW_OP_xderef_size operation behaves like the HYPERLINK \l "DW_OP_xderef"DW_OP_xderef operation.The entry at the top of the stack is treated as an addressxe "address:dereference operator". The second stack entry is treated as an address space identifier for those architectures that support multiple address spacesxe "address space:multiple". The top two stack elements are popped, and a data item is retrieved through an implementation-defined address calculation and pushed as the new stack top. In the DW_OP_xderef_size operation, however, the size in bytes of the data retrieved from the dereferenced address is specified by the single operand. This operand is a 1-byte unsigned integral constant whose value may not be larger than the size of an addressxe "size of an address" on the target machine. The data retrieved is zero extended to the size of an address on the target machine before being pushed onto the expression stack. DW_OP_push_object_addressxe "DW_OP_push_object_address" The DW_OP_push_object_address operation pushes the address of the object currently being evaluated as part of evaluation of a user presented expression. This object may correspond to an independent variable described by its own debugging information entry or it may be a component of an array, structure, or class whose address has been dynamically determined by an earlier step during user expression evaluation. This operator provides explicit functionality (especially for arrays involving descriptors) that is analogous to the implicit push of the base addressxe "address:implicit push of base" of a structure prior to evaluation of a  HYPERLINK \l "DW_AT_data_member_location" DW_AT_data_member_locationxe "DW_AT_data_member_location" to access a data member of a structure. For an example, see Appendix  REF _Ref513880569 \r \h  \* MERGEFORMAT D.2. DW_OP_form_tls_addressxe "DW_OP_form_tls_address" The DW_OP_form_tls_address operation pops a value from the stack, translates it into an address in the current thread's thread-local storagexe "thread-local storage" block, and pushes the address. If the DWARF expression containing the DW_OP_form_tls_address operation belongs to the main executable's DWARF info, the operation uses the main executable's thread-local storage block; if the expression belongs to a shared library's DWARF info, then it uses that shared library's thread-local storage 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 of storage containing all __thread variables declared in the main executable, and a separate block for the variables declared in each shared library. Computing the address of the appropriate 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. DW_OP_form_tls_address leaves the computation to the consumer. DW_OP_call_frame_cfaxe "DW_OP_call_frame_cfa" The DW_OP_call_frame_cfa operation pushes the value of the CFA, obtained from the Call Frame Information (see Section  REF BM6_4_Call_Frame_Information \n \h  \* MERGEFORMAT 6.4). Although the value of  HYPERLINK \l "DW_AT_frame_base" DW_AT_frame_base can be computed using other DWARF expression operators, in some cases this would require an extensive location list because the values of the registers used in computing the CFA change during a subroutine. If the Call Frame Information is present, then it already encodes such changes, and it is space efficient to reference that. Arithmetic and Logical Operations xe "DWARF expression:arithmetic operations"xe "DWARF expression:logical operations"The following provide arithmetic and logical operations. Except as otherwise specified, the arithmetic operations perfom addressing arithmetic, that is, unsigned arithmetic that is performed modulo one plus the largest representable address (for example, 0x100000000 when the size of an address is 32 bits). Such operations do not cause an exception on overflow. DW_OP_absxe "DW_OP_abs" The DW_OP_abs operation pops the top stack entry, interprets it as a signed value and pushes its absolute value. If the absolute value cannot be represented, the result is undefined. DW_OP_andxe "DW_OP_and" The DW_OP_and operation pops the top two stack values, performs a bitwise and operation on the two, and pushes the result. DW_OP_divxe "DW_OP_div" The DW_OP_div operation pops the top two stack values, divides the former second entry by the former top of the stack using signed division, and pushes the result. DW_OP_minusxe "DW_OP_minus" The DW_OP_minus operation pops the top two stack values, subtracts the former top of the stack from the former second entry, and pushes the result. DW_OP_modxe "DW_OP_mod" The DW_OP_mod operation pops the top two stack values and pushes the result of the calculation: former second stack entry modulo the former top of the stack. DW_OP_mulxe "DW_OP_mul" The DW_OP_mul operation pops the top two stack entries, multiplies them together, and pushes the result. DW_OP_negxe "DW_OP_neg" The DW_OP_neg operation pops the top stack entry, interprets it as a signed value and pushes its negation. If the negation cannot be represented, the result is undefined. DW_OP_notxe "DW_OP_not" The DW_OP_not operation pops the top stack entry, and pushes its bitwise complement. DW_OP_orxe "DW_OP_or" The DW_OP_or operation pops the top two stack entries, performs a bitwise or operation on the two, and pushes the result. DW_OP_plusxe "DW_OP_plus" The DW_OP_plus operation pops the top two stack entries, adds them together, and pushes the result. DW_OP_plus_uconstxe "DW_OP_plus_uconst" The DW_OP_plus_uconst operation pops the top stack entry, adds it to the unsigned LEB128 constant operand and pushes the result. This operation is supplied specifically to be able to encode more field offsets in two bytes than can be done with  HYPERLINK \l "DW_OP_litN" DW_OP_litnxe "DW_OP_litn" HYPERLINK \l "DW_OP_plus"DW_OP_plusxe "DW_OP_plus". DW_OP_shlxe "DW_OP_shl" The DW_OP_shl operation pops the top two stack entries, shifts the former second entry left (filling with zero bits) by the number of bits specified by the former top of the stack, and pushes the result. DW_OP_shrxe "DW_OP_shr" The DW_OP_shr operation pops the top two stack entries, shifts the former second entry right logically (filling with zero bits) by the number of bits specified by the former top of the stack, and pushes the result. DW_OP_shraxe "DW_OP_shra" The DW_OP_shra operation pops the top two stack entries, shifts the former second entry right arithmetically (divide the magnitude by 2, keep the same sign for the result) by the number of bits specified by the former top of the stack, and pushes the result. DW_OP_xorxe "DW_OP_xor" The DW_OP_xor operation pops the top two stack entries, performs a bitwise exclusive-or operation on the two, and pushes the result. Control Flow Operations xe "DWARF expression:control flow operations"The following operations provide simple control of the flow of a DWARF expression. DW_OP_lexe "DW_OP_le", DW_OP_gexe "DW_OP_ge", DW_OP_eqxe "DW_OP_eq", DW_OP_ltxe "DW_OP_lt", DW_OP_gtxe "DW_OP_gt", DW_OP_nexe "DW_OP_ne" The six relational operators each: pop the top two stack values, compare the operands: push the constant value 1 onto the stack if the result of the operation is true or the constant value 0 if the result of the operation is false. Comparisons are performed as signed operations. The six operators are DW_OP_lexe "DW_OP_le" (less than or equal to), DW_OP_gexe "DW_OP_ge" (greater than or equal to), DW_OP_eqxe "DW_OP_eq" (equal to), DW_OP_ltxe "DW_OP_lt" (less than), DW_OP_gtxe "DW_OP_gt" (greater than) and DW_OP_nexe "DW_OP_ne" (not equal to). DW_OP_skipxe "DW_OP_skip" DW_OP_skip is an unconditional branch. Its single operand is a 2-byte signed integer constant. The 2-byte constant is the number of bytes of the DWARF expression to skip forward or backward from the current operation, beginning after the 2-byte constant. DW_OP_braxe "DW_OP_bra" DW_OP_bra is a conditional branch. Its single operand is a 2-byte signed integer constant. This operation pops the top of stack. If the value popped is not the constant 0, the 2-byte constant operand is the number of bytes of the DWARF expression to skip forward or backward from the current operation, beginning after the 2-byte constant. DW_OP_call2xe "DW_OP_call2", DW_OP_call4xe "DW_OP_call4", DW_OP_call_refxe "DW_OP_call_ref" DW_OP_call2, DW_OP_call4, and DW_OP_call_ref perform subroutine calls during evaluation of a DWARF expression or location description. For DW_OP_call2 and DW_OP_call4, the operand is the 2- or 4-byte unsigned offset, respectively, of a debugging information entry in the current compilation unit. The DW_OP_call_ref operator has a single operand. In the 32-bit DWARF format, the operand is a 4-byte unsigned value; in the 64-bit DWARF format, it is an 8-byte unsigned value (see Section  REF BM7_4_File_Constraints \r \h  \* MERGEFORMAT 7.4). The operand is used as the offset of a debugging information entry in a .debug_infoxe ".debug_info" or .debug_typesxe ".debug_types" section which may be contained in a shared object or executable other than that containing the operator. For references from one shared object or executable to another, the relocation must be performed by the consumer. Operand interpretation of DW_OP_call2, DW_OP_call4 and DW_OP_call_ref is exactly like that for  HYPERLINK \l "DW_FORM_ref2" DW_FORM_ref2xe "DW_FORM_ref2",  HYPERLINK \l "DW_FORM_ref4" DW_FORM_ref4xe "DW_FORM_ref4" and  HYPERLINK \l "DW_FORM_ref_addr" DW_FORM_ref_addrxe "DW_FORM_ref_addr", respectively (see Section  REF BM7_5_4_Attribute_Encodings \r \h  \* MERGEFORMAT 7.5.4). These operations transfer control of DWARF expression evaluation to the  HYPERLINK \l "DW_AT_location" DW_AT_locationxe "DW_AT_location" attribute of the referenced debugging information entry. If there is no such attribute, then there is no effect. Execution of the DWARF expression of a  HYPERLINK \l "DW_AT_location" DW_AT_location attribute may add to and/or remove from values on the stack. Execution returns to the point following the call when the end of the attribute is reached. Values on the stack at the time of the call may be used as parameters by the called expression and values left on the stack by the called expression may be used as return values by prior agreement between the calling and called expressions. Special Operations xe "DWARF expression:special operations"There is one special operation currently defined: DW_OP_nopxe "DW_OP_nop" The DW_OP_nop operation is a place holder. It has no effect on the location stack or any of its values. Example Stack Operations xe "DWARF expression:examples"The stack operations defined in Section  REF BM2_4_3_3_Stack_Operations \w \h  \* MERGEFORMAT 2.5.1.3 are fairly conventional, but the following examples illustrate their behavior graphically. Before Operation After 0 17 HYPERLINK \l "DW_OP_dup"DW_OP_dupxe "DW_OP_dup" 0 17 1 29 1 17 2 1000 2 29 3 1000 0 17 HYPERLINK \l "DW_OP_drop"DW_OP_dropxe "DW_OP_drop" 0 29 1 29 1 1000 2 1000 0 17 HYPERLINK \l "DW_OP_pick"DW_OP_pickxe "DW_OP_pick" 2 0 1000 1 29 1 17 2 1000 2 29 3 1000 0 17 HYPERLINK \l "DW_OP_over"DW_OP_overxe "DW_OP_over" 0 29 1 29 1 17 2 1000 2 29 3 1000 0 17 HYPERLINK \l "DW_OP_swap"DW_OP_swapxe "DW_OP_swap" 0 29 1 29 1 17 2 1000 2 1000 0 17 HYPERLINK \l "DW_OP_rot"DW_OP_rotxe "DW_OP_rot" 0 29 1 29 1 1000 2 1000 2 17 Location Descriptions Debugging information must provide consumers a way to find the location of program variables, determine the bounds of dynamic arrays and strings, and possibly to find the base address of a subroutines stack frame or the return address of a subroutine. Furthermore, to meet the needs of recent computer architectures and optimization techniques, debugging information must be able to describe the location of an object whose location changes over the objects lifetime. Information about the location of program objects is provided by location descriptions. Location descriptionsxe "location description" can be either of two forms: Single location descriptionsxe "location description" \t "See also DWARF expression", which are a language independent representation of addressing rules of arbitrary complexity built from  HYPERLINK \l "DWARF_expression" DWARF expressions and/or other 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. Single location descriptions are of two kinds: Simple location descriptions, which describe the location of one contiguous piece (usually all) of an object. A simple location description may describe a location in addressable memory, or in a register, or the lack of a location (with or without a known value). Composite location descriptions, which describe an object in terms of pieces each of which may be contained in part of a register or stored in a memory location unrelated to other pieces. Location listsxe "location list", which are used to describe objects that have a limited lifetime or change their location during their lifetime. Location lists are more completely described below. The two forms are distinguished in a context sensitive manner. As the value of an attribute, a location description is encoded using class  HYPERLINK \l "exprloc" exprlocxe "exprloc class" and a location list is encoded using class  HYPERLINK \l "loclist" loclistptrxe "loclistptr class" (which serves as an offset into a separate location list table). Single Location Descriptions A single location descriptionxe "single location description"xe "location description:single" is either: A simple location description, representing an object which exists in one contiguous piece at the given location, or A composite location description consisting of one or more simple location descriptions, each of which is followed by one composition operation. Each simple location description describes the location of one piece of the object; each composition operation describes which part of the object is located there. Each simple location description that is a DWARF expression is evaluated independently of any others (as though on its own separate stack, if any). Simple Location Descriptions A simple location descriptionxe "simple location description"xe "location description:simple" consists of one contiguous piece or all of an object or value. Memory Location Descriptions A memory location descriptionxe "memory location description"xe "location description:memory" consists of a non-empty DWARF expression (see Section  REF DWARF_expression \r \h  \* MERGEFORMAT 2.5), whose value is the address of a piece or all of an object or other entity in memory. Register Location Descriptions A register location description consists of a register name operation, which represents a piece or all of an object located in a given register. Register location descriptions describe an object (or a piece of an object) that resides in a register, while the opcodes listed in Section 2.5.1.2 ("Register Based Addressing") are used to describe an object (or a piece of an object) that is located in memory at an address that is contained in a register (possibly offset by some constant). A register location description must stand alone as the entire description of an object or a piece of an object. The following DWARF operations can be used to name a register. Note that the register number represents a DWARF specific mapping of numbers onto the actual registers of a given architecture. The mapping should be chosen to gain optimal density and should be shared by all users of a given architecture. It is recommended that this mapping be defined by the ABI authoring committee for each architecture. DW_OP_reg0xe "DW_OP_reg0", DW_OP_reg1xe "DW_OP_reg1", ..., DW_OP_reg31xe "DW_OP_reg31" The DW_OP_regn operations encode the names of up to 32 registers, numbered from 0 through 31, inclusive. The object addressed is in register n. DW_OP_regxxe "DW_OP_regx" The DW_OP_regx operation has a single unsigned LEB128 literal operand that encodes the name of a register. These operations name a register location. To fetch the contents of a register, it is necessary to use one of the register based addressing operations, such as DW_OP_bregxxe "DW_OP_bregx" (see Section  REF BM2_4_3_2_Register_Based_Addressing \r \h  \* MERGEFORMAT 2.5.1.2). Implicit Location Descriptions An implicit location descriptionxe "implicit location description"xe "location description:implicit" represents a piece or all of an object which has no actual location but whose contents are nonetheless either known or known to be undefined. The following DWARF operations may be used to specify a value that has no location in the program but is a known constant or is computed from other locations and values in the program. DW_OP_implicit_valuexe "DW_OP_implicit_value" The 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 of the target machine. The length operand gives the length in bytes of the block. DW_OP_stack_value The DW_OP_stack_valuexe "DW_OP_stack_value" operation specifies that the object does not exist in memory but its value is nonetheless known and is at the top of the DWARF expression stack. In this form of location description, the DWARF expression represents the actual value of the object, rather than its location. The DW_OP_stack_value operation terminates the expression. Empty Location Descriptions An empty location descriptionxe "empty location description"xe "location description:empty" consists of a DWARF expression containing no operations. It represents a piece or all of an object that is present in the source but not in the object code (perhaps due to optimization). Composite Location Descriptions A composite location descriptionxe "composite location description"xe "location description:composite" describes an object or value which may be contained in part of a register or stored in more than one location. Each piece is described by a composition operation, which does not compute a value nor store any result on the DWARF stack. There may be one or more composition operations in a single composite location description. A series of such operations describes the parts of a value in memory address order. Each composition operation is immediately preceded by a simple location description which describes the location where part of the resultant value is contained. DW_OP_piecexe "DW_OP_piece" The DW_OP_piece operation takes a single operand, which is an unsigned LEB128 number. The number describes the size in bytes of the piece of the object referenced by the preceding simple location description. If the piece is located in a register, but does not occupy the entire register, the placement of the piece within that register is defined by the ABI. Many compilers store a single variable in sets of registers, or store a variable partially in memory and partially in registers. DW_OP_piece provides a way of describing how large a part of a variable a particular DWARF location description refers to. DW_OP_bit_piece The DW_OP_bit_piecexe "DW_OP_bit_piece" operation takes two operands. The first is an unsigned LEB128 number that gives the size in bits of the piece. The second is an unsigned LEB128 number that gives the offset in bits from the location defined by the preceding DWARF location description. Interpretation of the offset depends on the kind of location description. If the location description is empty, the offset doesnt matter and the DW_OP_bit_piece operation describes a piece consisting of the given number of bits whose values are undefined. If the location is a register, the offset is from the least significant bit end of the register. If the location is a memory address, the DW_OP_bit_piece operation describes a sequence of bits relative to the location whose address is on the top of the DWARF stack using the bit numbering and direction conventions that are appropriate to the current language on the target system. If the location is any implicit value or stack value, the DW_OP_bit_piece operation describes a sequence of bits using the least significant bits of that value. DW_OP_bit_piece is used instead of  HYPERLINK \l "DW_OP_piece" DW_OP_piece when the piece to be assembled into a value or assigned to is not byte-sized or is not at the start of a register or addressable unit of memory. Example Single Location Descriptions Here are some examples of how DWARF operations are used to form location descriptions: HYPERLINK \l "DW_OP_regN"DW_OP_reg3xe "DW_OP_reg3" The value is in register 3. HYPERLINK \l "DW_OP_regx"DW_OP_regxxe "DW_OP_regx" 54 The value is in register 54. HYPERLINK \l "DW_OP_addr"DW_OP_addrxe "DW_OP_addr" 0x80d0045c The value of a static variable is at machine address 0x80d0045c. HYPERLINK \l "DW_OP_bregN"DW_OP_breg11xe "DW_OP_breg11" 44 Add 44 to the value in register 11 to get the address of an automatic variable instance. HYPERLINK \l "DW_OP_fbreg"DW_OP_fbregxe "DW_OP_fbreg" -50 Given a HYPERLINK \l "DW_AT_frame_base"DW_AT_frame_basexe "DW_AT_frame_base" value of DW_OP_breg31 64, this example computes the address of a local variable that is -50 bytes from a logical frame pointer that is computed by adding 64 to the current stack pointer (register 31). HYPERLINK \l "DW_OP_bregx"DW_OP_bregxxe "DW_OP_bregx" 54 32 HYPERLINK \l "DW_OP_deref"DW_OP_derefxe "DW_OP_deref" A call-by-reference parameter whose address is in the word 32 bytes from where register 54 points. HYPERLINK \l "DW_OP_plus_uconst"DW_OP_plus_uconstxe "DW_OP_plus_uconst" 4 A structure member is four bytes from the start of the structure instance. The base address is assumed to be already on the stack. HYPERLINK \l "DW_OP_regN"DW_OP_reg3xe "DW_OP_reg3" HYPERLINK \l "DW_OP_piece"DW_OP_piecexe "DW_OP_piece" 4 HYPERLINK \l "DW_OP_regN"DW_OP_reg10xe "DW_OP_reg10" HYPERLINK \l "DW_OP_piece"DW_OP_piece 2 A variable whose first four bytes reside in register 3 and whose next two bytes reside in register 10.  HYPERLINK \l "DW_OP_reg0" DW_OP_reg0xe "DW_OP_reg0"  HYPERLINK \l "DW_OP_piece" DW_OP_piecexe "DW_OP_piece" 4  HYPERLINK \l "DW_OP_piece" DW_OP_piecexe "DW_OP_piece" 4  HYPERLINK \l "DW_OP_fbreg" DW_OP_fbregxe "DW_OP_fbreg" -12  HYPERLINK \l "DW_OP_piece" DW_OP_piecexe "DW_OP_piece" 4 A twelve byte value whose first four bytes reside in register zero, whose middle four bytes are unavailable (perhaps due to optimization), and whose last four bytes are in memory, 12 bytes before the frame base.  HYPERLINK \l "DW_OP_breg1" DW_OP_breg1xe "DW_OP_breg1" 0  HYPERLINK \l "DW_OP_breg1" DW_OP_breg2xe "DW_OP_breg2" 0  HYPERLINK \l "DW_OP_plus" DW_OP_plus xe "DW_OP_plus"HYPERLINK \l "DW_OP_stack_value"DW_OP_stack_valuexe "DW_OP_stack_value" Add the contents of r1 and r2 to compute a value. This value is the contents of an otherwise anonymous locationxe " location description".  HYPERLINK \l "DW_OP_lit1" DW_OP_lit1 xe "DW_OP_lit1" HYPERLINK \l "DW_OP_stack_value" DW_OP_stack_value xe "DW_OP_stack_value" HYPERLINK \l "DW_OP_piece" DW_OP_piecexe "DW_OP_piece" 4  HYPERLINK \l "DW_OP_breg1" DW_OP_breg3xe "DW_OP_breg3" 0  HYPERLINK \l "DW_OP_breg1" DW_OP_breg4xe "DW_OP_breg4" 0  HYPERLINK \l "DW_OP_plus" DW_OP_plus xe "DW_OP_plus" HYPERLINK \l "DW_OP_stack_value" DW_OP_stack_value xe "DW_OP_stack_value" HYPERLINK \l "DW_OP_piece" DW_OP_piecexe "DW_OP_piece" 4 The object value is found in an anonymous (virtual) location whose value consists of two parts, given in memory address order: the 4 byte value 1 followed by the four byte value computed from the sum of the contents of r3 and r4. Location Lists Location listsxe "location list" are used in place of location expressions whenever the object whose location is being described can change location during its lifetime. Location lists are contained in a separate object file section called .debug_locxe ".debug_loc". A location list is indicated by a location attribute whose value is an offset from the beginning of the .debug_loc section to the first byte of the list for the object in question. Each entry in a location list is either a location list entry, a base address selection entryxe "base address selection entry:in location list"xe "address selection" \t "See base address selection", or an end of list entry. A location list entryxe "location list:entry" consists of: A beginning address offset. This address offset has the size of an addressxe "size of an address" and is relative to the applicable base address of the compilation unit referencing this location list. It marks the beginning of the address range over which the location is valid. An ending address offset. This address offset again has the size of an addressxe "size of an address" and is relative to the applicable base address of the compilation unit referencing this location list. It marks the first address past the end of the address range over which the location is valid. The ending address must be greater than or equal to the beginning address. A location list entry (but not a base address selection or end of list entry) whose beginning and ending addresses are equal has no effect because the size of the range covered by such an entry is zero. A single location descriptionxe "location description:use in location list" describing the location of the object over the range specified by the beginning and end addresses. The applicable base address of a location list entry is determined by the closest preceding base address selection entry (see below) in the same location list. If there is no such selection entry, then the applicable base address defaults to the base address of the compilation unit (see Section REF _Ref516902159 \r \h  \* MERGEFORMAT 3.1.1). In the case of a compilation unit where all of the machine code is contained in a single contiguous section, no base address selection entry is needed. Address rangesxe "address range:in location list" may overlap. When they do, they describe a situation in which an object exists simultaneously in more than one place. If all of the address ranges in a given location list do not collectively cover the entire range over which the object in question is defined, it is assumed that the object is not available for the portion of the range that is not covered. A base address selection entryxe "base address selection entry:in location list"xe "location list:base address selection entry" consists of: The value of the largest representable address offset (for example, 0xffffffff when the size of an addressxe "size of an address" is 32 bits). An address, which defines the appropriate base address for use in interpreting the beginning and ending address offsets of subsequent entries of the location list. A base address selection entry affects only the list in which it is contained. The end of any given location list is marked by an end of list entryxe "end of list entry:in location list"xe "location list:end of list entry", which consists of a 0 for the beginning address offset and a 0 for the ending address offset. A location list containing only an end of list entry describes an object that exists in the source code but not in the executable program. Neither a base address selection entry nor an end of list entry includes a location description. A base address selection entry and an end of list entry for a location list are identical to a base address selection entry and end of list entry, respectively, for a range list (see Section  REF _Ref495310701 \r \h  \* MERGEFORMAT 2.17.3) in interpretation and representation. Types of Program Entities Any debugging information entry describing a declaration that has a type has a HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" attributexe "type attribute", whose value is a reference to another debugging information entry. The entry referenced may describe a base type, that is, a type that is not defined in terms of other data types, or it may describe a user-defined type, such as an array, structure or enumeration. Alternatively, the entry referenced may describe a type modifier, such as constant, packed, pointer, reference or volatile, which in turn will reference another entry describing a type or type modifier (using a HYPERLINK \l "DW_AT_type"DW_AT_type attribute of its own). See Section  REF BM5__TYPE_ENTRIES \r \h  \* MERGEFORMAT 5 for descriptions of the entries describing base types, user-defined types and type modifiers. Accessibility of Declarations Some languages, notably C++xe "C++" and Adaxe "Ada", have the concept of the accessibility of an object or of some other program entity. The accessibility specifies which classes of other program objects are permitted access to the object in question. The accessibility of a declaration is represented by a HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility" attributexe "accessibility attribute", whose value is a constant drawn from the set of codes listed in  REF _Ref477604457 \h  \* MERGEFORMAT Figure 4. DW_ACCESS_publicxe "DW_ACCESS_public"DW_ACCESS_privatexe "DW_ACCESS_private"DW_ACCESS_protectedxe "DW_ACCESS_protected"Figure  SEQ Figure \* ARABIC 4. Accessibility codes Visibility of Declarations Several languages (such as Modula-2xe "Modula-2") have the concept of the visibility of a declaration. The visibility specifies which declarations are to be visible outside of the entity in which they are declared. The visibility of a declaration is represented by a HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility" attributexe "visibility attribute", whose value is a constant drawn from the set of codes listed in  REF _Ref488719756 \h  \* MERGEFORMAT Figure 5. DW_VIS_localxe "DW_VIS_local"DW_VIS_exportedxe "DW_VIS_exported"DW_VIS_qualifiedxe "DW_VIS_qualified"Figure  SEQ Figure \* ARABIC 5. Visibility codes Virtuality of Declarations C++xe "C++" provides for virtual and pure virtual structure or class member functions and for virtual base classes. The virtuality of a declaration is represented by a HYPERLINK \l "DW_AT_virtuality"DW_AT_virtualityxe "DW_AT_virtuality" attributexe "virtuality attribute", whose value is a constant drawn from the set of codes listed in  REF _Ref477604545 \h  \* MERGEFORMAT Figure 6. DW_VIRTUALITY_nonexe "DW_VIRTUALITY_none" DW_VIRTUALITY_virtualxe "DW_VIRTUALITY_virtual" DW_VIRTUALITY_pure_virtualxe "DW_VIRTUALITY_pure_virtual" Figure  SEQ Figure \* ARABIC 6. Virtuality codes Artificial Entries A compiler may wish to generate debugging information entries for objects or types that were not actually declared in the source of the application. An example is a formal parameter entry to represent the hidden this parameterxe "this parameter" that most C++xe "C++" implementations pass as the first argument to non-static member functions. Any debugging information entry representing the declaration of an object or type artificially generated by a compiler and not explicitly declared by the source program may have a HYPERLINK \l "DW_AT_artificial"DW_AT_artificialxe "DW_AT_artificial" attributexe "artificial attribute", which is a HYPERLINK \l "flag"flag. Segmented Addresses In some systems, addresses are specified as offsets within a given segment rather than as locations within a single flat address space. Any debugging information entry that contains a description of the location of an object or subroutine may have a HYPERLINK \l "DW_AT_segment"DW_AT_segmentxe "DW_AT_segment" attributexe "segment attribute"xe "address space:segmented", whose value is a location description. The description evaluates to the segment selector of the item being described. If the entry containing the HYPERLINK \l "DW_AT_segment"DW_AT_segment attribute has a HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "low PC attribute"xe "DW_AT_low_pc", HYPERLINK \l "DW_AT_high_pc"DW_AT_high_pcxe "high PC attribute"xe "DW_AT_high_pc",  HYPERLINK \l "DW_AT_ranges" DW_AT_rangesxe "ranges attribute"xe "DW_AT_ranges" or  HYPERLINK \l "DW_AT_entry_pc" DW_AT_entry_pcxe "entry PC attribute"xe "DW_AT_entry_pc" attribute, or a location description that evaluates to an address, then those address values represent the offset portion of the address within the segment specified by HYPERLINK \l "DW_AT_segment"DW_AT_segment.xe "segment attribute" If an entry has no HYPERLINK \l "DW_AT_segment"DW_AT_segmentxe "DW_AT_segment" attribute, it inherits the segment value from its parent entry. If none of the entries in the chain of parents for this entry back to its containing compilation unit entry have HYPERLINK \l "DW_AT_segment"DW_AT_segment attributes, then the entry is assumed to exist within a flat address spacexe "address space:flat". Similarly, if the entry has a HYPERLINK \l "DW_AT_segment"DW_AT_segment attribute containing an empty location description, that entry is assumed to exist within a flat address space. Some systems support different classes of addresses. The address class may affect the way a pointer is dereferenced or the way a subroutine is called. Any debugging information entry representing a pointer or reference type or a subroutine or subroutine type may have a HYPERLINK \l "DW_AT_address_class"DW_AT_address_classxe "DW_AT_address_class" attributexe "address class attribute", whose value is an HYPERLINK \l "constant"integer constant. The set of permissible values is specific to each target architecture. The value HYPERLINK \l "DW_ADDR_none"DW_ADDR_nonexe "DW_ADDR_none", however, is common to all encodings, and means that no address class has been specified. For example, the Intel386 "! processor might use the following values: NameValueMeaning DW_ADDR_nonexe "DW_ADDR_none" DW_ADDR_near16xe "DW_ADDR_near16" DW_ADDR_far16xe "DW_ADDR_far16" DW_ADDR_huge16xe "DW_ADDR_huge16" DW_ADDR_near32xe "DW_ADDR_near32" DW_ADDR_far32xe "DW_ADDR_far32"0 1 2 3 4 5no class specified 16-bit offset, no segment 16-bit offset, 16-bit segment 16-bit offset, 16-bit segment 32-bit offset, no segment 32-bit offset, 16-bit segment Figure  SEQ Figure \* ARABIC 7. Example address class codes Non-Defining Declarations and Completions A debugging information entry representing a program entity typically represents the defining declaration of that entity. In certain contexts, however, a debugger might need information about a declaration of an entity that is not also a definition, or is otherwise incomplete, to evaluate an expression correctly. As an example, consider the following fragment of Cxe "C" code: void myfunc() { int x; { extern float x; g(x); } } C scoping rules require that the value of the variable x passed to the function g is the value of the global variable x rather than of the local version. Non-Defining Declarations A debugging information entry that represents a non-definingxe "non-defining declaration" or otherwise incompletexe "incomplete declaration" \i declaration of a program entity has a HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration" attributexe "declaration attribute", which is a HYPERLINK \l "flag"flag. Declarations Completing Non-Defining Declarations A debugging information entry that represents a declaration that completes another (earlier) non-defining declaration may have a  HYPERLINK \l "DW_AT_specification" DW_AT_specification attributexe "specification attribute" whose value is a reference to the debugging information entry representing the non-defining declaration. A debugging information entry with a DW_AT_specification attribute does not need to duplicate information provided by the debugging information entry referenced by that specification attribute. It is not the case that all attributes of the debugging information entry referenced by a  HYPERLINK \l "DW_AT_specification" DW_AT_specificationxe "DW_AT_specification" attribute apply to the referring debugging information entry. For example, DW_AT_siblingxe "DW_AT_sibling" and DW_AT_declarationxe "DW_AT_declaration" clearly cannot apply to a referring entry. Declaration Coordinates It is sometimes useful in a debugger to be able to associate a declaration with its occurrence in the program source. xe "declaration coordinates"xe "declaration coordinates" \t "See also DW_AT_decl_file, DW_AT_decl_line, DW_AT_decl_column"Any debugging information entry representing the declaration of an object, module, subprogram or type may have HYPERLINK \l "DW_AT_decl_file"DW_AT_decl_filexe "DW_AT_decl_file"xe "DW_AT_decl_file" \t "See also declaration coordinates", HYPERLINK \l "DW_AT_decl_line"DW_AT_decl_linexe "DW_AT_decl_line"xe "DW_AT_decl_line" \t "See also declaration coordinates" and HYPERLINK \l "DW_AT_decl_column"DW_AT_decl_columnxe "DW_AT_decl_column"xe "DW_AT_decl_column" \t "See also declaration coordinates" attributes each of whose value is an unsigned integer HYPERLINK \l "constant"constant. The value of the HYPERLINK \l "DW_AT_decl_file"DW_AT_decl_filexe "DW_AT_decl_file" attributexe "declaration file attribute"xe "file containing declaration" corresponds to a file number from the line number information table for the compilation unit containing the debugging information entry and represents the source file in which the declaration appeared (see Section  REF BM6_2_Line_Number_Information \w \h  \* MERGEFORMAT 6.2). The value 0 indicates that no source file has been specified. The value of the HYPERLINK \l "DW_AT_decl_line"DW_AT_decl_linexe "DW_AT_decl_line" attributexe "declaration line attribute"xe "line number of declaration" represents the source line number at which the first character of the identifier of the declared object appears. The value 0 indicates that no source line has been specified. The value of the HYPERLINK \l "DW_AT_decl_column"DW_AT_decl_columnxe "DW_AT_decl_column" attributexe "declaration column attribute"xe "column position of declaration" represents the source column number at which the first character of the identifier of the declared object appears. The value 0 indicates that no column has been specified. Identifier Names Any debugging information entry representing a program entity that has been given a namexe "names:identifier"xe "identifier names" may have a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute", whose value is a string representing the name as it appears in the source program. A debugging information entry containing no name attribute, or containing a name attribute whose value consists of a name containing a single null byte, represents a program entity for which no name was given in the source. Because the names of program objects described by DWARF are the names as they appear in the source program, implementations of language translators that use some form of mangled name (as do many implementations of C++xe "C++") should use the unmangled form of the name in the DWARF HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attribute, including the keyword operator (in names such as operator +), if present. See also Section  REF _Ref237860526 \r \h  \* MERGEFORMAT 2.22 regarding the use of DW_AT_linkage_namexe "DW_AT_linkage_name" for mangled names. Sequences of multiple whitespace characters may be compressed. Data Locations and DWARF Procedures Any debugging information entry describing a data object (which includes variables and parameters) or common block may have a  HYPERLINK \l "DW_AT_location" DW_AT_locationxe "DW_AT_location" attribute, whose value is a location description (see Section  REF BM2_4_Location_Descriptions \n \h  \* MERGEFORMAT 2.6). A DWARF procedurexe "DWARF procedure" is represented by any kind of debugging information entry that has a  HYPERLINK \l "DW_AT_location" DW_AT_locationxe "DW_AT_location" attributexe "location attribute". If a suitable entry is not otherwise available, a DWARF procedure can be represented using a debugging information entry with the tag DW_TAG_dwarf_procedure together with a DW_AT_location attributexe "DWARF procedure entry"xe "DW_TAG_dwarf_procedure". A DWARF procedure is called by a  HYPERLINK \l "DW_OP_call2" DW_OP_call2xe "DW_OP_call2",  HYPERLINK \l "DW_OP_call4" DW_OP_call4xe "DW_OP_call4" or  HYPERLINK \l "DW_OP_call_ref" DW_OP_call_refxe "DW_OP_call_ref" DWARF expression operator (see Section  REF BM2_4_3_5_Control_Flow_Operations \r \h  \* MERGEFORMAT 2.5.1.5). Code Addresses and Ranges 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 the like, may have A  HYPERLINK \l "DW_AT_low_pc" DW_AT_low_pcxe "DW_AT_low_pc" attributexe "low PC attribute" for a single address, A  HYPERLINK \l "DW_AT_low_pc" DW_AT_low_pcxe "DW_AT_low_pc" and  HYPERLINK \l "DW_AT_high_pc" DW_AT_high_pcxe "high PC attribute"xe "DW_AT_high_pc" pair of attributes for a single contiguous range of addresses, or A  HYPERLINK \l "DW_AT_ranges" DW_AT_rangesxe "DW_AT_ranges" attribute for a non-contiguous range of addresses. In addition, a non-contiguous range of addresses may also be specified for the  HYPERLINK \l "DW_AT_start_scope" DW_AT_start_scopexe "DW_AT_start_scope" attribute. If an entity has no associated machine code, none of these attributes are specified. Single Address When there is a single address associated with an entity, such as a label or alternate entry point of a subprogram, the entry has a  HYPERLINK \l "DW_AT_low_pc" DW_AT_low_pcxe "DW_AT_low_pc" attribute whose value is the relocated address for the entity. While the  HYPERLINK \l "DW_AT_entry_pc" DW_AT_entry_pcxe "DW_AT_entry_pc" attribute might also seem appropriate for this purpose, historically the DW_AT_low_pcxe "DW_AT_low_pc" attribute was used before the DW_AT_entry_pc was introduced (in DWARF Version 3xe "DWARF Version 3"). There is insufficient reason to change this. Contiguous Address Range When the set of addresses of a debugging information entry can be described as a single continguous rangexe "contiguous address range", the entry may have a DW_AT_low_pcxe "DW_AT_low_pc" and DW_AT_high_pcxe "DW_AT_high_pc" pair of attributesxe "low PC attribute"xe "high PC attribute". The value of the DW_AT_low_pc attribute is the relocated address of the first instruction associated with the entity. If the value of the DW_AT_high_pc is of class address, it is the relocated address of the first location past the last instruction associated with the entity; if it is of class constant, the value is an unsigned integer offset which when added to the low PC gives the address of the first location past the last instruction associated with the entity. The high PC value may be beyond the last valid instruction in the executable. The presence of low and high PC attributes for an entity implies that the code generated for the entity is contiguous and exists totally within the boundaries specified by those two attributes. If that is not the case, no low and high PC attributes should be produced. Non-Contiguous Address Ranges When the set of addresses of a debugging information entry cannot be described as a single contiguous rangexe "non-contiguous address ranges"xe "discontiguous address ranges" \t "See non-contiguous address ranges", the entry has a  HYPERLINK \l "DW_AT_ranges" DW_AT_rangesxe "DW_AT_ranges" attributexe "ranges attribute" whose value is of class rangelistptr and indicates the beginning of a range listxe "range list". Similarly, a  HYPERLINK \l "DW_AT_start_scope" DW_AT_start_scopexe "DW_AT_start_scope" attribute may have a value of class rangelistptr for the same reason. Range lists are contained in a separate object file section called .debug_rangesxe ".debug_ranges". A range list is indicated by a DW_AT_rangesxe "DW_AT_ranges" attribute whose value is represented as an offset from the beginning of the .debug_ranges section to the beginning of the range list. Each entry in a range list is either a range list entry, a base address selection entryxe "base address selection entry:in range list", or an end of list entryxe "end of list entry:in range list". A range list entry consists of: A beginning address offset. This address offset has the size of an addressxe "size of an address" and is relative to the applicable base address of the compilation unit referencing this range list. It marks the beginning of an address range. An ending address offset. This address offset again has the size of an addressxe "size of an address" and is relative to the applicable base address of the compilation unit referencing this range list. It marks the first address past the end of the address range.The ending address must be greater than or equal to the beginning address. A range list entry (but not a base address selection or end of list entry) whose beginning and ending addresses are equal has no effect because the size of the range covered by such an entry is zero. The applicable base address of a range list entry is determined by the closest preceding base address selection entry (see below) in the same range list. If there is no such selection entry, then the applicable base address defaults to the base address of the compilation unit (see Section  REF _Ref516902159 \r \h  \* MERGEFORMAT 3.1.1). In the case of a compilation unit where all of the machine code is contained in a single contiguous section, no base address selection entry is needed. Address rangexe "address range:in range list" entries in a range list may not overlap. There is no requirement that the entries be ordered in any particular way. A base address selection entryxe "base address selection entry:in range list" consists of: The value of the largest representable address offset (for example, 0xffffffff when the size of an addressxe "size of an address" is 32 bits). An address, which defines the appropriate base address for use in interpreting the beginning and ending address offsets of subsequent entries of the location list. A base address selection entry affects only the list in which it is contained. The end of any given range list is marked by an end of list entry, which consists of a 0 for the beginning address offset and a 0 for the ending address offset. A range list containing only an end of list entry describes an empty scope (which contains no instructions). A base address selection entry and an end of list entry for a range list are identical to a base address selection entry and end of list entry, respectively, for a location list (see Section  REF BM2_4_6_Location_Lists \r \h  \* MERGEFORMAT 2.6.2) in interpretation and representation. Entry Address The entry or first executable instruction generated for an entity, if applicable, is often the lowest addressed instruction of a contiguous range of instructions. In other cases, the entry address needs to be specified explicitly. 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 DW_AT_entry_pc attribute to indicate the first executable instruction within that range of addresses. The value of the DW_AT_entry_pcxe "DW_AT_entry_pc" attribute is a relocated address. If no DW_AT_entry_pc attribute is present, then the entry address is assumed to be the same as the value of the DW_AT_low_pcxe "DW_AT_low_pc" attribute, if present; otherwise, the entry address is unknown. Static and Dynamic Values of Attributes Some attributes that apply to types specify a property (such as the lower bound of an array) that is an integer value, where the value may be known during compilation or may be computed dynamically during execution. The value of these attributes is determined based on the class as follows: For a  HYPERLINK \l "constant" constant, the value of the constant is the value of the attribute. For a  HYPERLINK \l "reference" reference, the value is a reference to another entity which specifies the value of the attribute. For an HYPERLINK \l "exprloc"exprloc, the value is interpreted as a  HYPERLINK \l "DWARF_expression" DWARF expression; evaluation of the expression yields the value of the attribute. Whether an attribute value can be dynamic depends on the rules of the applicable programming language. The applicable attributes include:  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated",  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated",  HYPERLINK \l "DW_AT_bit_offset" DW_AT_bit_offsetxe "DW_AT_bit_offset",  HYPERLINK \l "DW_AT_bit_size" DW_AT_bit_sizexe "DW_AT_bit_size",  HYPERLINK \l "DW_AT_byte_size" DW_AT_byte_sizexe "DW_AT_byte_size",  HYPERLINK \l "DW_AT_count" DW_AT_countxe "DW_AT_count",  HYPERLINK \l "DW_AT_lower_bound" DW_AT_lower_boundxe "DW_AT_lower_bound",  HYPERLINK \l "DW_AT_byte_stride" DW_AT_byte_stridexe "DW_AT_byte_stride",  HYPERLINK \l "DW_AT_bit_stride" DW_AT_bit_stridexe "DW_AT_bit_stride",  HYPERLINK \l "DW_AT_upper_bound" DW_AT_upper_boundxe "DW_AT_upper_bound" (and possibly others). Entity Descriptions Some debugging information entries may describe entities in the program that are artificial, or which otherwise are named in ways which are not valid identifiers in the programming language. For example, several languages may capture or freeze the value of a variable at a particular point in the program. Adaxe "Ada" 95 has package elaboration routines, type descriptions of the form typenameClass, and access typename parameters. Generally, any debugging information entry that has, or may have, a  HYPERLINK \l "DW_AT_name" DW_AT_namexe "DW_AT_name" attributexe "name attribute", may also have a  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" attributexe "description attribute" whose value is a null-terminated string providing a description of the entity. It is expected that a debugger will only display these descriptions as part of the description of other entities. It should not accept them in expressions, nor allow them to be assigned, or the like. Byte and Bit Sizes Many debugging information entries allow either a DW_AT_byte_sizexe "DW_AT_byte_size" attribute or a DW_AT_bit_sizexe "DW_AT_bit_size" attribute, whose integer constant value (see Section  REF _Ref519589220 \w \h  \* MERGEFORMAT 2.19) specifies an amount of storage. The value of the DW_AT_byte_size attribute is interpreted in bytes and the value of the DW_AT_bit_size attribute is interpreted in bits. Similarly, the integer constant value of a  HYPERLINK \l "DW_AT_byte_stride" DW_AT_byte_stridexe "DW_AT_byte_stride" attribute is interpreted in bytes and the integer constant value of a  HYPERLINK \l "DW_AT_bit_stride" DW_AT_bit_stridexe "DW_AT_bit_stride" attribute is interpreted in bits. Linkage Names Some language implementations, notably C++xe "C++" and similar languages, make use of implementation defined names within object files that are different from the identifier names (see Section  REF BM2_13_Identifier_Names \r \h  \* MERGEFORMAT 2.15) of entities as they appear in the source. Such names, sometimes known as mangled namesxe "names:mangled"xe "mangled names", are used in various ways, such as: to encode additional information about an entity, to distinguish multiple entities that have the same name, and so on. When an entity has an associated distinct linkage name it may sometimes be useful for a producer to include this name in the DWARF description of the program to facilitate consumer access to and use of object file information about an entity and/or information that is encoded in the linkage name itself. A debugging information entry may have a DW_AT_linkage_namexe "DW_AT_linkage_name" attributexe "linkage name attribute" whose value is a null-terminated string describing the object file linkage name associated with the corresponding entity. Debugging information entries to which DW_AT_linkage_name may apply include:  HYPERLINK \l "DW_TAG_common_block" DW_TAG_common_block XE "DW_TAG_common_block" ,  HYPERLINK \l "DW_TAG_constant" DW_TAG_constantxe "DW_TAG_constant",  HYPERLINK \l "DW_TAG_entry_point" DW_TAG_entry_pointxe "DW_TAG_entry_point",  HYPERLINK \l "DW_TAG_subprogram" DW_TAG_subprogramxe "DW_TAG_subprogram" and  HYPERLINK \l "DW_TAG_variable" DW_TAG_variablexe "DW_TAG_variable". PROGRAM SCOPE ENTRIES This section describes debugging information entries that relate to different levels of program scope: compilation, module, subprogram, and so on. Except for separate type entries (see Section  REF _Ref235444914 \r \h  \* MERGEFORMAT 3.1.3), these entries may be thought of as bounded by ranges of text addresses within the program.xe "unit" \t "See compilation unit" Unit Entries An object file may contain one or more compilation unitsxe "compilation unit", of which there are three kinds: normal compilation units, partial compilation units and type unitsxe "type unit". A partial compilation unit is related to one or more other compilation units that import it. A type unit represents a single complete type in a separate unit. Either a normal compilation unit or a partial compilation unit may be logically incorporated into another compilation unit using an imported unit entryxe "imported unit entry". Normal and Partial Compilation Unit Entries A normal compilation unitxe "normal compilation unit"xe "compilation unit:normal" is represented by a debugging information entry with the tag DW_TAG_compile_unitxe "DW_TAG_compile_unit". A partial compilation unitxe "partial compilation unit"xe "compilation unit:partial" is represented by a debugging information entry with the tag DW_TAG_partial_unitxe "DW_TAG_partial_unit". In a simple normal compilation, a single compilation unit with the tag DW_TAG_compile_unit represents a complete object file and the tag DW_TAG_partial_unit is not used. In a compilation employing the DWARF space compression and duplicate elimination techniques from HYPERLINK \l "Appendix E"Appendix  REF _Ref230762311 \r \h  \* MERGEFORMAT E.1, multiple compilation units using the tags DW_TAG_compile_unit and/or DW_TAG_partial_unit are used to represent portions of an object file. A normal compilation unit typically represents the text and data contributed to an executable by a single relocatable object file. It may be derived from several source files, including pre-processed include files. A partial compilation unit typically represents a part of the text and data of a relocatable object file, in a manner that can potentially be shared with the results of other compilations to save space. It may be derived from an include file, template instantiation, or other implementation-dependent portion of a compilation. A normal compilation unit can also function in a manner similar to a partial compilation unit in some cases. A compilation unit entry owns debugging information entries that represent all or part of the declarations made in the corresponding compilation. In the case of a partial compilation unit, the containing scope of its owned declarations is indicated by imported unit entries in one or more other compilation unit entries that refer to that partial compilation unit (see Section  REF _Ref510511675 \r \h 3.1.2). Compilation unit entries may have the following attributes: Either a HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "low PC attribute"xe "DW_AT_low_pc" and HYPERLINK \l "DW_AT_high_pc"DW_AT_high_pcxe "high PC attribute"xe "DW_AT_high_pc" pair of attributes or a  HYPERLINK \l "DW_AT_ranges" DW_AT_rangesxe "ranges attribute"xe "DW_AT_ranges" attribute whose values encode the contiguous or non-contiguous address ranges, respectively, of the machine instructions generated for the compilation unit (see Section  REF _Ref495373534 \r \h  \* MERGEFORMAT 2.17). A DW_AT_low_pc attribute may also be specified in combination with DW_AT_ranges to specify the default base address for use in location lists (see Section  REF BM2_4_6_Location_Lists \r \h  \* MERGEFORMAT 2.6.2) and range lists (see Section  REF _Ref495310701 \r \h  \* MERGEFORMAT 2.17.3). A HYPERLINK \l "DW_AT_name"DW_AT_namexe "name attribute"xe "DW_AT_name" attributexe "name attribute" whose value is a null-terminated string containing the full or relative path name of the primary source file from which the compilation unit was derived. A HYPERLINK \l "DW_AT_language"DW_AT_languagexe "language attribute"xe "DW_AT_language" attribute whose HYPERLINK \l "constant"constant value is an integer code indicating the source language of the compilation unit. The set of language names and their meanings are given in  REF _Ref249157670 \h  \* MERGEFORMAT Figure 8. Language NameMeaningDW_LANG_Ada83 xe "DW_LANG_Ada83"ISO Adaxe "Ada":1983DW_LANG_Ada95 xe "DW_LANG_Ada95"ISO Adaxe "Ada":1995DW_LANG_Cxe "DW_LANG_C"Non-standardized Cxe "C", such as K&RDW_LANG_C8xe "DW_LANG_C"9xe "DW_LANG_C89"ISO C:1989DW_LANG_C9xe "DW_LANG_C"9xe "DW_LANG_C99"ISO C:1999DW_LANG_C_xe "DW_LANG_C"plus_plusxe "DW_LANG_C_plus_plus"ISO C++xe "C++":1998DW_LANG_Cobol74 xe "DW_LANG_Cobol74"ISO Cobol:1974DW_LANG_Cobol85 xe "DW_LANG_Cobol85"ISO Cobol:1985DW_LANG_D DDW_LANG_Fortran77xe "DW_LANG_Fortran77"ISO FORTRAN 77DW_LANG_Fortran90xe "DW_LANG_Fortran90"ISO Fortranxe "Fortran" 90DW_LANG_Fortran95xe "DW_LANG_Fortran95"ISO Fortran 95DW_LANG_Javaxe "DW_LANG_Java"Javaxe "Java"DW_LANG_Modula2xe "DW_LANG_Modula2"ISO Modula-2xe "Modula-2":1996DW_LANG_ObjCxe "DW_LANG_ObjC"Objective Cxe "Objective C"DW_LANG_ObjC_plus_plusxe "DW_LANG_ObjC_plus_plus"Objective C++xe "Objective C++"DW_LANG_Pascal83xe "DW_LANG_Pascal83"ISO Pascal:1983xe "Pascal"DW_LANG_PLI xe "DW_LANG_PLI"ANSI PL/I:1976DW_LANG_Python xe "DW_LANG_Python"PythonDW_LANG_UPCUnified Parallel C Support for these languages is limited. Figure  SEQ Figure \* ARABIC 8. Language names A  HYPERLINK \l "DW_AT_stmt_list" DW_AT_stmt_listxe "statement list attribute"xe "line number information" \t "See also statement list attribute"xe "DW_AT_stmt_list" attribute whose value is a section offsetxe "section offset:in statement list attribute" to the line number information for this compilation unit. This information is placed in a separate object file section from the debugging information entries themselves. The value of the statement list attribute is the offset in the .debug_linexe ".debug_line" section of the first byte of the line number information for this compilation unit (see Section REF BM6_2_Line_Number_Information \w \h  \* MERGEFORMAT 6.2). A HYPERLINK \l "DW_AT_macro_info"DW_AT_macro_infoxe "macro information attribute"xe "DW_AT_macro_info" attribute whose value is a section offsetxe "section offset:in macro information attribute" to the macro information for this compilation unit. This information is placed in a separate object file section from the debugging information entries themselves. The value of the macro information attribute is the offset in the .debug_macinfoxe ".debug_macinfo" section of the first byte of the macro information for this compilation unit (see Section  REF BM6_3_Macro_Information \w \h  \* MERGEFORMAT 6.3). A HYPERLINK \l "DW_AT_comp_dir"DW_AT_comp_dirxe "compilation directory attribute"xe "DW_AT_comp_dir" attribute whose value is a null-terminated string containing the current working directory of the compilation command that produced this compilation unit in whatever form makes sense for the host system. A HYPERLINK \l "DW_AT_producer"DW_AT_producerxe "producer attribute"xe "DW_AT_producer" attribute whose value is a null-terminated string containing information about the compiler that produced the compilation unit. The actual contents of the string will be specific to each producer, but should begin with the name of the compiler vendor or some other identifying character sequence that should avoid confusion with other producer values. A HYPERLINK \l "DW_AT_identifier_case"DW_AT_identifier_casexe "identifier case attribute"xe "case sensitivity"xe "DW_AT_identifier_case" attribute whose HYPERLINK \l "constant"integer constant value is a code describing the treatment of identifiers within this compilation unit. The set of identifier case codes is given in  REF _Ref249157629 \h Figure 9. HYPERLINK \l "DW_ID_case_sensitive"DW_ID_case_sensitivexe "DW_ID_case_sensitive"HYPERLINK \l "DW_ID_up_case"DW_ID_up_casexe "DW_ID_up_case"HYPERLINK \l "DW_ID_down_case"DW_ID_down_casexe "DW_ID_down_case"HYPERLINK \l "DW_ID_case_insensitive"DW_ID_case_insensitivexe "DW_ID_case_insensitive"Figure  SEQ Figure \* ARABIC 9. Identifier case codes DW_ID_case_sensitivexe "DW_ID_case_sensitive" is the default for all compilation units that do not have this attribute. It indicates that names given as the values of HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributesxe "name attribute" in debugging information entries for the compilation unit reflect the names as they appear in the source program. The debugger should be sensitive to the case of identifier names when doing identifier lookups. DW_ID_up_casexe "DW_ID_up_case" means that the producer of the debugging information for this compilation unit converted all source names to upper case. The values of the name attributes may not reflect the names as they appear in the source program. The debugger should convert all names to upper case when doing lookups. DW_ID_down_casexe "DW_ID_down_case" means that the producer of the debugging information for this compilation unit converted all source names to lower case. The values of the name attributes may not reflect the names as they appear in the source program. The debugger should convert all names to lower case when doing lookups. DW_ID_case_insensitivexe "DW_ID_case_insensitive" means that the values of the name attributes reflect the names as they appear in the source program but that a case insensitive lookup should be used to access those names. A HYPERLINK \l "DW_AT_base_types"DW_AT_base_typesxe "base types attribute"xe "DW_AT_base_types" attribute whose value is a HYPERLINK \l "reference"reference. This attribute points to a debugging information entry representing another compilation unit. It may be used to specify the compilation unit containing the base type entries used by entries in the current compilation unit (see Section  REF BM5_1_Base_Type_Entries \r \h  \* MERGEFORMAT 5.1). This attribute provides a consumer a way to find the definition of base types for a compilation unit that does not itself contain such definitions. This allows a consumer, for example, to interpret a type conversion to a base type correctly. A  HYPERLINK \l "DW_AT_use_utf8" DW_AT_use_UTF8xe "DW_AT_use_UTF8" attributexe "use UTF-8 attribute", which is a flag whose presence indicates that all strings (such as the names of declared entities in the source program) are represented using the UTF8xe "UTF-8" representation (see Section  REF BM7_5_4_Attribute_Encodings \r \h  \* MERGEFORMAT 7.5.4). A DW_AT_main_subprogramxe "DW_AT_main_subprogram" attributexe "main subprogram attribute", which is a flag whose presence indicates that the compilation unit contains a subprogram that has been identified as the starting function of the program. If more than one compilation unit contains this flag, any one of them may contain the starting function. Fortranxe "Fortran" has a PROGRAM statementxe "PROGRAM statement" which is used to specify and provide a user-specified name for the main subroutine of a program. xe "C" C uses the name main to identify the main subprogram of a program. Some other languages provide similar or other means to identify the main subprogram of a program. The base address of a compilation unit is defined as the value of the  HYPERLINK \l "DW_AT_low_pc" DW_AT_low_pc attribute, if present; otherwise, it is undefined. If the base address is undefined, then any DWARF entry or structure defined in terms of the base address of that compilation unit is not valid. Imported Unit Entries The place where a normal or partial unit is importedxe "imported unit entry" is represented by a debugging information entry with the tag DW_TAG_imported_unitxe "DW_TAG_imported_unit". An imported unit entry contains a  HYPERLINK \l "DW_AT_import" DW_AT_importxe "DW_AT_import" attributexe "import attribute" whose value is a reference to the normal or partial compilation unit whose declarations logically belong at the place of the imported unit entry. An imported unit entry does not necessarily correspond to any entity or construct in the source program. It is merely glue used to relate a partial unit, or a compilation unit used as a partial unit, to a place in some other compilation unit. Separate Type Unit Entries An object file may contain any number of separate type unit entries, each representing a single complete type definition. Each type unitxe "type unit"xe "compilation unit:type" must be uniquely identified by a 64-bit signature, stored as part of the type unit, which can be used to reference the type definition from debugging information entries in other compilation units and type units. A type unit is represented by a debugging information entry with the tag DW_TAG_type_unitxe "DW_TAG_type_unit". A type unit entry owns debugging information entries that represent the definition of a single type, plus additional debugging information entries that may be necessary to include as part of the definition of the type. A type unit entry may have a DW_AT_languagexe "DW_AT_language" attribute, whose constant value is an integer code indicating the source language used to define the type. The set of language names and their meanings are given in  REF _Ref249157670 \h  \* MERGEFORMAT Figure 8. A type unit entry for a given type T owns a debugging information entry that represents a defining declaration of type T. If the type is nested within enclosing types or namespaces, the debugging information entry for T is nested within debugging information entries describing its containers; otherwise, T is a direct child of the type unit entry. A type unit entry may also own additional debugging information entries that represent declarations of additional types that are referenced by type T and have not themselves been placed in separate type units. Like T, if an additional type U is nested within enclosing types or namespaces, the debugging information entry for U is nested within entries describing its containers; otherwise, U is a direct child of the type unit entry. The containing entries for types T and U are declarations, and the outermost containing entry for any given type T or U is a direct child of the type unit entry. The containing entries may be shared among the additional types and between T and the additional types. Types are not required to be placed in type unitsxe "type unit". In general, only large types such as structure, class, enumeration, and union types included from header files should be considered for separate type units. Base types and other small types are not usually worth the overhead of placement in separate type units. Types that are unlikely to be replicated, such as those defined in the main source file, are also better left in the main compilation unit. Module, Namespace and Importing Entries Modules and namespaces provide a means to collect related entities into a single entity and to manage the names of those entities. Module Entries Several languages have the concept of a module. A Modula-2xe "Modula-2" definition modulexe "Modula-2:definition module" may be represented by a module entry containing a declaration attributexe "declaration attribute" (HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration"). A Fortran90 modulexe "Fortran:module (Fortran 90)" may also be represented by a module entry (but no declaration attribute is warranted because Fortran has no concept of a corresponding module body). A module is represented by a debugging information entry with the tag DW_TAG_modulexe "module entry"xe "DW_TAG_module". Module entries may own other debugging information entries describing program entities whose declaration scopes end at the end of the module itself. If the module has a name, the module entry has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "name attribute"xe "DW_AT_name" attributexe "name attribute" whose value is a null- terminated string containing the module name as it appears in the source program. The module entry may have either a HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "low PC attribute"xe "DW_AT_low_pc" and HYPERLINK \l "DW_AT_high_pc"DW_AT_high_pcxe "high PC attribute"xe "DW_AT_high_pc" pair of attributes or a  HYPERLINK \l "DW_AT_ranges" DW_AT_rangesxe "ranges attribute"xe "DW_AT_ranges" attribute whose values encode the contiguous or non-contiguous address ranges, respectively, of the machine instructions generated for the module initialization code (see Section  REF _Ref495373534 \r \h  \* MERGEFORMAT 2.17). It may also have a  HYPERLINK \l "DW_AT_entry_pc" DW_AT_entry_pcxe "DW_AT_entry_pc" attributexe "entry PC attribute:for module initialization" whose value is the address of the first executable instruction of that initialization code (see Section  REF _Ref495374861 \r \h  \* MERGEFORMAT 2.18). If the module has been assigned a priority, it may have a HYPERLINK \l "DW_AT_priority"DW_AT_priorityxe "DW_AT_priority" attributexe "priority attribute". The value of this attribute is a HYPERLINK \l "reference"reference to another debugging information entry describing a variable with a constant value. The value of this variable is the actual constant value of the modules priority, represented as it would be on the target architecture. Namespace Entries C++xe "C++" has the notion of a namespacexe "namespace (C++)", which provides a way to implement name hiding, so that names of unrelated things do not accidentally clash in the global namespace when an application is linked together. A namespacexe "namespace declaration entry" is represented by a debugging information entry with the tag DW_TAG_namespacexe "DW_TAG_namespace". A namespace extensionxe "namespace extension entry" is represented by a DW_TAG_namespace entry with a  HYPERLINK \l "DW_AT_extension" DW_AT_extensionxe "DW_AT_extension" attributexe "extension attribute" referring to the previous extension, or if there is no previous extension, to the original DW_TAG_namespace entry. A namespace extension entry does not need to duplicate information in a previous extension entry of the namespace nor need it duplicate information in the original namespace entry. (Thus, for a namespace with a name, a  HYPERLINK \l "DW_AT_name" DW_AT_namexe "DW_AT_name" attributexe "name attribute" need only be attached directly to the original DW_TAG_namespace entry.) Namespace and namespace extension entries may own other debugging information entries describing program entities whose declarations occur in the namespace. For C++xe "C++", such owned program entities may be declarations, including certain declarations that are also object or function definitions. If a type, variable, or function declared in a namespace is defined outside of the body of the namespace declaration, that type, variable, or function definition entry has a  HYPERLINK \l "DW_AT_specification" DW_AT_specificationxe "DW_AT_specification" attribute whose value is a reference to the debugging information entry representing the declaration of the type, variable or function. Type, variable, or function entries with a DW_AT_specification attribute do not need to duplicate information provided by the declaration entry referenced by the specification attribute. The C++xe "C++" global namespacexe "namespace (C++):global"xe "global namespace" \t "See namespace (C++), global" (the namespace referred to by ::f, for example) is not explicitly represented in DWARF with a namespace entry (thus mirroring the situation in C++ source). Global items may be simply declared with no reference to a namespace. The C++xe "C++" compilation unit specific unnamed namespacexe "namespace (C++):unnamed"xe "unnamed namespace" \t "See namespace (C++), unnamed" may be represented by a namespace entry with no name attribute in the original namespace declaration entry (and therefore no name attribute in any namespace extension entry of this namespace). A compiler emitting namespace information may choose to explicitly represent namespace extensions, or to represent the final namespace declaration of a compilation unit; this is a quality-of-implementation issue and no specific requirements are given here. If only the final namespace is represented, it is impossible for a debugger to interpret using declaration references in exactly the manner defined by the C++xe "C++" language. Emitting all namespace declaration information in all compilation units can result in a significant increase in the size of the debug information and significant duplication of information across compilation units. The C++xe "C++" namespace stdxe "namespace (C++):std", for example, is large and will probably be referenced in every C++ compilation unit. For a C++ namespace example, see Appendix  REF _Ref513880648 \r \h  \* MERGEFORMAT D.3. Imported (or Renamed) Declaration Entries Some languages support the concept of importing into or making accessible in a given unit declarations made in a different module or scope. An imported declaration may sometimes be given another name. An imported declaration is represented by one or more debugging information entries with the tag DW_TAG_imported_declarationxe "imported declaration entry"xe "renamed declaration" \t "See imported declaration entry"xe "DW_TAG_imported_declaration". When an overloaded entity is imported, there is one imported declaration entry for each overloading. Each imported declaration entry has a HYPERLINK \l "DW_AT_import"DW_AT_importxe "DW_AT_import" attributexe "import attribute", whose value is a HYPERLINK \l "reference"reference to the debugging information entry representing the declaration that is being imported. An imported declaration may also have a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute" whose value is a null-terminated string containing the name, as it appears in the source program, by which the imported entity is to be known in the context of the imported declaration entry (which may be different than the name of the entity being imported). If no name is present, then the name by which the entity is to be known is the same as the name of the entity being imported. An imported declaration entry with a name attribute may be used as a general means to rename or provide an aliasxe "alias declaration" \t "See imported declaration entry" for an entity, regardless of the context in which the importing declaration or the imported entity occurs. A C++ namespace aliasxe "namespace (C++):alias" may be represented by an imported declaration entry with a name attribute whose value is a null-terminated string containing the alias name as it appears in the source program and an import attribute whose value is a reference to the applicable original namespace or namespace extension entry. A C++ using declarationxe "namespace (C++):using declaration"xe "using declaration" \t "See namespace (C++), using declaration" may be represented by one or more imported declaration entries. When the using declaration refers to an overloaded function, there is one imported declaration entry corresponding to each overloading. Each imported declaration entry has no name attribute but it does have an import attribute that refers to the entry for the entity being imported. (C++ provides no means to rename an imported entity, other than a namespace). A Fortran use statementxe "Fortran:use statement"xe "use statement" \t "See Fortran, use statement" with an only list may be represented by a series of imported declaration entries, one (or more) for each entity that is imported. An entity that is renamed in the importing context may be represented by an imported declaration entry with a name attribute that specifies the new local name. Imported Module Entries Some languages support the concept of importing into or making accessible in a given unit all of the declarations contained within a separate module or namespace. An imported module declaration is represented by a debugging information entry with the tag DW_TAG_imported_modulexe "imported module entry"xe "DW_TAG_imported_module". An imported module entry contains a DW_AT_importxe "DW_AT_import" attributexe "import attribute" whose value is a reference to the module or namespace entry containing the definition and/or declaration entries for the entities that are to be imported into the context of the imported module entry. An imported module declaration may own a set of imported declaration entries, each of which refers to an entry in the module whose corresponding entity is to be known in the context of the imported module declaration by a name other than its name in that module. Any entity in the module that is not renamed in this way is known in the context of the imported module entry by the same name as it is declared in the module. A C++xe "C++" using directivexe "namespace (C++):using directive"xe "using directive" \t "See namespace (C++), using directive" may be represented by an imported module entry, with an import attribute referring to the namespace entry of the appropriate extension of the namespace (which might be the original namespace entry) and no owned entries. A Fortranxe "Fortran" use statementxe "Fortran:use statement"xe "use statement" \t "See Fortran, use statement" with a rename list may be represented by an imported module entry with an import attribute referring to the module and owned entries corresponding to those entities that are renamed as part of being imported. A Fortranxe "Fortran" use statementxe "Fortran:use statement" with neither a rename list nor an only list may be represented by an imported module entry with an import attribute referring to the module and no owned child entries. A xe "Fortran" use statement with an only list is represented by a series of individual imported declaration entries as described in Section  REF BM4_3_Imported_Declaration_Entries \n \h  \* MERGEFORMAT 3.2.3. A Fortranxe "Fortran" use statement for an entity in a module that is itself imported by a use statement without an explicit mention may be represented by an imported declaration entry that refers to the original debugging information entry. For example, given module A integer X, Y, Z end module module B use A end module module C use B, only Q => X end module the imported declaration entry for Q within module C refers directly to the variable declaration entry for A in module A because there is no explicit representation for X in module B. A similar situation arises for a C++xe "C++" using declaration that imports an entity in terms of a namespace alias. See Appendix  REF _Ref513880648 \r \h  \* MERGEFORMAT D.3 for an example. Subroutine and Entry Point Entries The following tags exist to describe debugging information entries for subroutines and entry points: DW_TAG_subprogramxe "subprogram entry"xe "DW_TAG_subprogram"A subroutine or function. HYPERLINK \l "DW_TAG_inlined_subroutine" DW_TAG_inlined_subroutinexe "inlined subprogram entry"xe "DW_TAG_inlined_subroutine"A particular inlined instance of a subroutine or function.DW_TAG_entry_pointxe "entry point entry"xe "DW_TAG_entry_point"An alternate entry point.General Subroutine and Entry Point Information xe "function entry" \t "See subroutine entry"The subroutine or entry point entry has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute" whose value is a null-terminated string containing the subroutine or entry point name as it appears in the source program. It may also have a DW_AT_linkage_namexe "DW_AT_linkage_name" attribute as described in Section  REF _Ref237860526 \r \h  \* MERGEFORMAT 2.22. If the name of the subroutine described by an entry with the tag HYPERLINK \l "DW_TAG_subprogram"DW_TAG_subprogramxe "DW_TAG_subprogram" is visible outside of its containing compilation unit, that entry has a HYPERLINK \l "DW_AT_external"DW_AT_externalxe "DW_AT_external" attributexe "external attribute", which is a HYPERLINK \l "flag"flag. Additional attributes for functions that are members of a class or structure are described in Section  REF BM5_5_5_Structure_Member_Function_Entrie \w \h  \* MERGEFORMAT 5.5.7. A subroutine entry may contain a DW_AT_main_subprogramxe "DW_AT_main_subprogram" attributexe "main subprogram attribute" which is a flag whose presence indicates that the subroutine has been identified as the starting function of the program. If more than one subprogram contains this flag, any one of them may be the starting subroutine of the program. Fortranxe "Fortran" has a PROGRAM statementxe "PROGRAM statement" which is used to specify and provide a user-supplied name for the main subroutine of a program. A common debugger feature is to allow the debugger user to call a subroutine within the subject program. In certain cases, however, the generated code for a subroutine will not obey the standard calling conventions for the target architecture and will therefore not be safe to call from within a debugger. A subroutine entry may contain a HYPERLINK \l "DW_AT_calling_convention"DW_AT_calling_conventionxe "DW_AT_calling_convention" attribute,xe "calling convention attribute" whose value is an HYPERLINK \l "constant"integer constant. The set of calling convention codes is given in  REF _Ref483709616 \h  \* MERGEFORMAT Figure 10. HYPERLINK \l "DW_CC_normal"DW_CC_normalxe "DW_CC_normal"HYPERLINK \l "DW_CC_program"DW_CC_programxe "DW_CC_program"HYPERLINK \l "DW_CC_nocall"DW_CC_nocallxe "DW_CC_nocall"Figure  SEQ Figure \* ARABIC 10. Calling convention codes If this attribute is not present, or its value is the constant DW_CC_normalxe "DW_CC_normal", then the subroutine may be safely called by obeying the standard calling conventions of the target architecture. If the value of the calling convention attribute is the constant DW_CC_nocallxe "DW_CC_nocall", the subroutine does not obey standard calling conventions, and it may not be safe for the debugger to call this subroutine. If the semantics of the language of the compilation unit containing the subroutine entry distinguishes between ordinary subroutines and subroutines that can serve as the main program, that is, subroutines that cannot be called directly according to the ordinary calling conventions, then the debugging information entry for such a subroutine may have a calling convention attribute whose value is the constant DW_CC_programxe "DW_CC_program". The HYPERLINK \l "DW_CC_program"DW_CC_programxe "DW_CC_program" value is intended to support Fortran main programsxe "Fortran:main program" which in some implementations may not be callable or which must be invoked in a special way. It is not intended as a way of finding the entry address for the program. In C there is a difference between the types of functions declared using function prototype style declarations and those declared using non-prototype declarations. A subroutine entry declared with a function prototype style declaration may have a HYPERLINK \l "DW_AT_prototyped"DW_AT_prototypedxe "prototyped attribute"xe "DW_AT_prototyped" attribute, which is a HYPERLINK \l "flag"flag. The Fortranxe "Fortran" language allows the keywords elemental, pure and recursive to be included as part of the declaration of a subroutine; these attributes reflect that usage. These attributes are not relevant for languages that do not support similar keywords or syntax. In particular, the DW_AT_recursivexe "DW_AT_recursive" attribute is neither needed nor appropriate in languages such as Cxe "C" where functions support recursion by default. A subprogram entry may have a  HYPERLINK \l "DW_AT_elemental" DW_AT_elementalxe "DW_AT_elemental" attributexe "elemental attribute", which is a flag. The attribute indicates whether the subroutine or entry point was declared with the elemental keyword or property. A subprogram entry may have a  HYPERLINK \l "DW_AT_pure" DW_AT_purexe "DW_AT_pure" attributexe "pure attribute", which is a flag. The attribute indicates whether the subroutine was declared with the pure keyword or property. A subprogram entry may have a  HYPERLINK \l "DW_AT_recursive" DW_AT_recursivexe "DW_AT_recursive" attributexe "recursive attribute", which is a flag. The attribute indicates whether the subroutine or entry point was declared with the recursive keyword or property. Subroutine and Entry Point Return Types If the subroutine or entry point is a function that returns a value, then its debugging information entry has a HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" attributexe "type attribute"xe "return type of subroutine" to denote the type returned by that function. Debugging information entries for Cxe "C" void functions should not have an attribute for the return type. Subroutine and Entry Point Locations A subroutine entry may have either a HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "low PC attribute"xe "DW_AT_low_pc" and HYPERLINK \l "DW_AT_high_pc"DW_AT_high_pcxe "high PC attribute"xe "DW_AT_high_pc" pair of attributes or a  HYPERLINK \l "DW_AT_ranges" DW_AT_rangesxe "ranges attribute"xe "DW_AT_ranges" attribute whose values encode the contiguous or non-contiguous address ranges, respectively, of the machine instructions generated for the subroutine (see Section  REF _Ref495373534 \r \h  \* MERGEFORMAT 2.17). A subroutine entry may also have a  HYPERLINK \l "DW_AT_entry_pc" DW_AT_entry_pcxe "DW_AT_entry_pc" attributexe "entry PC attribute:for subroutine" whose value is the address of the first executable instruction of the subroutine (see Section  REF _Ref495374861 \r \h  \* MERGEFORMAT 2.18). An entry point has a HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "DW_AT_low_pc" attribute whose value is the relocated address of the first machine instruction generated for the entry point. While the DW_AT_entry_pcxe "DW_AT_entry_pc" attribute might also seem appropriate for this purpose, historically the DW_AT_low_pcxe "DW_AT_low_pc" attribute was used before the DW_AT_entry_pc was introduced (in DWARF Version 3xe "DWARF Version 3"). There is insufficient reason to change this. Subroutines and entry points may also have HYPERLINK \l "DW_AT_segment"DW_AT_segmentxe "segment attribute"xe "DW_AT_segment" and HYPERLINK \l "DW_AT_address_class"DW_AT_address_classxe "DW_AT_address_class" attributesxe "address class attribute", as appropriate, to specify which segments the code for the subroutine resides in and the HYPERLINK \l "DW_AT_address_class"addressing mode to be used in calling that subroutine. A subroutine entry representing a subroutine declaration that is not also a definition does not have code address or range attributes. Declarations Owned by Subroutines and Entry Points The declarations enclosed by a subroutine or entry point are represented by debugging information entries that are owned by the subroutine or entry point entry. Entries representing the formal parametersxe "formal parameter" of the subroutine or entry point appear in the same order as the corresponding declarations in the source program. There is no ordering requirement for entries for declarations that are children of subroutine or entry point entries but that do not represent formal parameters. The formal parameter entries may be interspersed with other entries used by formal parameter entries, such as type entries. The unspecified parameters of a variable parameter list are represented by a debugging information entry with the tag DW_TAG_unspecified_parametersxe "unspecified parameters attribute"xe "DW_TAG_unspecified_parameters". The entry for a subroutine that includes a Fortranxe "Fortran:common block" common blockxe "common block" \t "See Fortran, common block" has a child entry with the tag DW_TAG_common_inclusionxe "DW_TAG_common_inclusion". The common inclusion entry has a HYPERLINK \l "DW_AT_common_reference"DW_AT_common_referencexe "DW_AT_common_reference" attributexe "common (block) reference attribute" whose value is a HYPERLINK \l "reference"reference to the debugging information entry for the common block being included (see Section  REF BM4_2_Common_Block_Entries \w \h  \* MERGEFORMAT 4.2). Low-Level Information A subroutine or entry point entry may have a HYPERLINK \l "DW_AT_return_addr"DW_AT_return_addrxe "DW_AT_return_addr" attributexe "return address attribute", whose value is a location description. The location calculated is the place where the return address for the subroutine or entry point is stored. A subroutine or entry point entry may also have a HYPERLINK \l "DW_AT_frame_base"DW_AT_frame_basexe "DW_AT_frame_base" attributexe "frame base attribute", whose value is a location description that computes the frame base for the subroutine or entry point. If the location description is a simple register location description, the given register contains the frame base address. If the location description is a DWARF expression, the result of evaluating that expression is the frame base address. Finally, for a location list, this interpretation applies to each location description contained in the list of location list entries. The use of one of the DW_OP_regxe "DW_OP_reg0" operations in this context is equivalent to using DW_OP_breg(0)xe "DW_OP_breg0" but more compact. However, these are not equivalent in general. The frame base for a procedure is typically an address fixed relative to the first unit of storage allocated for the procedures stack frame. The HYPERLINK \l "DW_AT_frame_base"DW_AT_frame_basexe "DW_AT_frame_base" attribute can be used in several ways: In procedures that need location lists to locate local variables, the HYPERLINK \l "DW_AT_frame_base"DW_AT_frame_basexe "DW_AT_frame_base" can hold the needed location listxe "location list", while all variables location descriptions can be simpler ones involving the frame base. It can be used in resolving up-level addressing within nested routines. (See also HYPERLINK \l "DW_AT_static_link"DW_AT_static_linkxe "DW_AT_static_link", below) Some languages support nested subroutines. In such languages, it is possible to reference the local variables of an outer subroutine from within an inner subroutine. The HYPERLINK \l "DW_AT_static_link"DW_AT_static_linkxe "DW_AT_static_link" and HYPERLINK \l "DW_AT_frame_base"DW_AT_frame_basexe "DW_AT_frame_base" attributes allow debuggers to support this same kind of referencing. If a subroutine or entry point is nested, it may have a HYPERLINK \l "DW_AT_static_link"DW_AT_static_linkxe "DW_AT_static_link" attributexe "static link attribute"xe "uplevel address" \t "See static link attribute"xe "address, uplevel" \t "See static link attribute", whose value is a location description that computes the frame base of the relevant instance of the subroutine that immediately encloses the subroutine or entry point. In the context of supporting nested subroutines, the HYPERLINK \l "DW_AT_frame_base"DW_AT_frame_basexe "DW_AT_frame_base" attribute value should obey the following constraints: It should compute a value that does not change during the life of the procedure, and The computed value should be unique among instances of the same subroutine. (For typical HYPERLINK \l "DW_AT_frame_base"DW_AT_frame_basexe "DW_AT_frame_base" use, this means that a recursive subroutines stack frame must have non-zero size.) If a debugger is attempting to resolve an up-level reference to a variable, it uses the nesting structure of DWARF to determine which subroutine is the lexical parent and the HYPERLINK \l "DW_AT_static_link"DW_AT_static_linkxe "DW_AT_static_link" value to identify the appropriate active frame of the parent. It can then attempt to find the reference within the context of the parent. Types Thrown by Exceptions In C++xe "C++" a subroutine may declare a set of types which it may validly throw. If a subroutine explicitly declares that it may throw an exception for one or more types, each such type is represented by a debugging information entry with the tag DW_TAG_thrown_typexe "thrown type entry"xe "thrown exception" \t "See thrown type entry"xe "exception, thrown" \t "See thrown type entry"xe "DW_TAG_thrown_type". Each such entry is a child of the entry representing the subroutine that may throw this type. Each thrown type entry contains a HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" attributexe "type attribute", whose value is a HYPERLINK \l "reference"reference to an entry describing the type of the exception that may be thrown. Function Template Instantiations In C++xe "C++", a function template is a generic definition of a function that is instantiated differently when called with values of different types. DWARF does not represent the generic template definition, but does represent each instantiation. A template instantiationxe "template instantiation" is represented by a debugging information entry with the tag HYPERLINK \l "DW_TAG_subprogram"DW_TAG_subprogramxe "subprogram entry:use for template instantiation"xe "DW_TAG_subprogram". With four exceptions, such an entry will contain the same attributes and will have the same types of child entries as would an entry for a subroutine defined explicitly using the instantiation types. The exceptions are: Each formal parameterized typexe "formal type parameter" \t "See template type parameter entry" declaration appearing in the template definition is represented by a debugging information entry with the tag DW_TAG_template_type_parameterxe "template type parameter entry"xe "DW_TAG_template_type_parameter". Each such entry has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attribute,xe "name attribute"xe "type attribute" whose value is a null-terminated string containing the name of the formal type parameter as it appears in the source program. The template type parameter entry also has a HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" attribute describing the actual type by which the formal is replaced for this instantiation. The subprogram entry and each of its child entries reference a template type parameter entry in any circumstance where the template definition referenced a formal parameterized type. If the compiler has generated a special compilation unit to hold the template instantiation and that compilation unit has a different name from the compilation unit containing the template definition, the name attribute for the debugging information entry representing that compilation unit is empty or omitted. If the subprogram entry representing the template instantiation or any of its child entries contain  HYPERLINK \l "declaration_coordinates" declaration coordinate attributes, those attributes refer to the source for the template definition, not to any source generated artificially by the compiler for this instantiation. Inlinable and Inlined Subroutines A declaration or a definition of an inlinable subroutine is represented by a debugging information entry with the tag HYPERLINK \l "DW_TAG_subprogram"DW_TAG_subprogramxe "subprogram entry:use in inlined subprogram"xe "DW_TAG_subprogram". The entry for a subroutine that is explicitly declared to be available for inline expansion or that was expanded inline implicitly by the compiler has a HYPERLINK \l "DW_AT_inline"DW_AT_inlinexe "DW_AT_inline" attributexe "inline attribute" whose value is an HYPERLINK \l "constant"integer constant. The set of values for the HYPERLINK \l "DW_AT_inline"DW_AT_inline attribute is given in  REF _Ref478443568 \h  \* MERGEFORMAT Figure 11. NameMeaning DW_INL_not_inlinedxe "DW_INL_not_inlined"Not declared inline nor inlined by the compiler (equivalent to the absence of the containing DW_AT_inline attribute)DW_INL_inlinedxe "DW_INL_inlined"Not declared inline but inlined by the compiler DW_INL_declared_not_inlinedxe "DW_INL_declared_not_inlined"Declared inline but not inlined by the compiler DW_INL_declared_inlinedxe "DW_INL_declared_inlined"Declared inline and inlined by the compiler Figure  SEQ Figure \* ARABIC 11. Inline codes In C++xe "C++", a function or a constructor declared with constexprxe "constexpr" is implicitly declared inline. The abstract inline instance (see below) is represented by a debugging information entry with the tag DW_TAG_subprogramxe "DW_TAG_subprogram". Such an entry has a DW_AT_inlinexe "DW_AT_inline" attribute whose value is DW_INL_inlinedxe "DW_INL_inlined". Abstract Instances Any debugging information entry that is owned (either directly or indirectly) by a debugging information entry that contains the HYPERLINK \l "DW_AT_inline"DW_AT_inlinexe "DW_AT_inline" attributexe "inline attribute" is referred to as an abstract instance entryxe "abstract instance entry". Any subroutine entry that contains a HYPERLINK \l "DW_AT_inline"DW_AT_inline attribute whose value is other than DW_INL_not_inlined is known as an abstract instance rootxe "abstract instance root". Any set of abstract instance entries that are all children (either directly or indirectly) of some abstract instance root, together with the root itself, is known as an abstract instance treexe "abstract instance tree". However, in the case where an abstract instance tree is nested within another abstract instance tree, the entries in the nested abstract instance tree are not considered to be entries in the outer abstract instance tree. Each abstract instance root is either part of a larger tree (which gives a context for the root) or uses DW_AT_specification XE "DW_AT_specification"  to refer to the declaration in context. For example, in C++ XE "C++"  the context might be a namespace declaration or a class declaration. Abstract instance trees are defined so that no entry is part of more than one abstract instance tree. This simplifies the following descriptions. A debugging information entry that is a member of an abstract instance tree should not contain any attributes which describe aspects of the subroutine which vary between distinct inlined expansions or distinct out-of-line expansions. For example, the HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "low PC attribute:and abstract instance"xe "DW_AT_low_pc", HYPERLINK \l "DW_AT_high_pc"DW_AT_high_pcxe "high PC attribute:and abstract instance"xe "DW_AT_high_pc",  HYPERLINK \l "DW_AT_ranges" DW_AT_rangesxe "ranges attribute:and abstract instance"xe "DW_AT_ranges",  HYPERLINK \l "DW_AT_entry_pc_inl_subr" DW_AT_entry_pcxe "entry PC attribute:and abstract instance"xe "DW_AT_entry_pc", HYPERLINK \l "DW_AT_location"DW_AT_locationxe "location attribute:and abstract instance"xe "DW_AT_location", HYPERLINK \l "DW_AT_return_addr"DW_AT_return_addrxe "return address attribute:and abstract instance"xe "DW_AT_return_addr", HYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "start scope attribute:and abstract instance"xe "DW_AT_start_scope", and HYPERLINK \l "DW_AT_segment"DW_AT_segmentxe "DW_AT_segment" attributes typically should be omitted; however, this list is not exhaustivexe "segment attribute:and abstract instance". It would not make sense normally to put these attributes into abstract instance entries since such entries do not represent actual (concrete) instances and thus do not actually exist at run-time. However, see Appendix  REF _Ref513879102 \r \h  \* MERGEFORMAT D.7.3 for a contrary example. The rules for the relative location of entries belonging to abstract instance trees are exactly the same as for other similar types of entries that are not abstract. Specifically, the rule that requires that an entry representing a declaration be a direct child of the entry representing the scope of the declaration applies equally to both abstract and non-abstract entries. Also, the ordering rules for formal parameter entries, member entries, and so on, all apply regardless of whether or not a given entry is abstract. Concrete Inlined Instances Each inline expansion of a subroutine is represented by a debugging information entry with the tag DW_TAG_inlined_subroutinexe "inlined subprogram entry"xe "DW_TAG_inlined_subroutine". Each such entry should be a direct child of the entry that represents the scope within which the inlining occurs. Each inlined subroutine entry may have either a HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "low PC attribute"xe "DW_AT_low_pc" and HYPERLINK \l "DW_AT_high_pc"DW_AT_high_pcxe "high PC attribute"xe "DW_AT_high_pc" pair of attributes or a  HYPERLINK \l "DW_AT_ranges" DW_AT_rangesxe "ranges attribute"xe "DW_AT_ranges" attribute whose values encode the contiguous or non-contiguous address ranges, respectively, of the machine instructions generated for the inlined subroutine (see Section REF _Ref495373534 \r \h  \* MERGEFORMAT 2.17). An inlined subroutine entry may also contain a  HYPERLINK \l "DW_AT_entry_pc" DW_AT_entry_pcxe "DW_AT_entry_pc" attributexe "entry PC attribute:for inlined subprogram", representing the first executable instruction of the inline expansion (see Section  REF _Ref495374861 \r \h  \* MERGEFORMAT 2.18). An inlined subroutine entry may also have  HYPERLINK \l "DW_AT_call_file" DW_AT_call_filexe "DW_AT_call_file"xe "call file attribute",  HYPERLINK \l "DW_AT_call_line" DW_AT_call_linexe "DW_AT_call_line"xe "call line attribute" and  HYPERLINK \l "DW_AT_call_column" DW_AT_call_columnxe "DW_AT_call_column"xe "call column attribute" attributes, each of whose value is an integer constant. These attributes represent the source file, source line number, and source column number, respectively, of the first character of the statement or expression that caused the inline expansion. The call file, call line, and call column attributes are interpreted in the same way as the declaration file, declaration line, and declaration column attributes, respectively (see Section  REF BM2_12_Declaration_Coordinates \r \h  \* MERGEFORMAT 2.14). The call file, call line and call column coordinates do not describe the coordinates of the subroutine declaration that was inlined, rather they describe the coordinates of the call. An inlined subroutine entry may have a DW_AT_const_exprxe "DW_AT_const_expr" attributexe "constant expression attribute", which is a flag whose presence indicates that the subroutine has been evaluated as a compile-time constant. Such an entry may also have a  HYPERLINK \l "DW_AT_const_value" DW_AT_const_valuexe "DW_AT_const_value" attribute, whose value may be of any form that is appropriate for the representation of the subroutine's return value. The value of this attribute is the actual return value of the subroutine, represented as it would be on the target architecture. In C++xe "C++", if a function or a constructor declared with constexprxe "constexpr" is called with constant expressions, then the corresponding concrete inlined instance has a DW_AT_const_exprxe "DW_AT_const_expr" attribute, as well as a  HYPERLINK \l "DW_AT_const_value" DW_AT_const_valuexe "DW_AT_const_value" attribute whose value represents the actual return value of the concrete inlined instance. Any debugging information entry that is owned (either directly or indirectly) by a debugging information entry with the tag HYPERLINK \l "DW_TAG_inlined_subroutine"DW_TAG_inlined_subroutinexe "DW_TAG_inlined_subroutine" is referred to as a concrete inlined instance entry.xe "concrete inlined instance entry" Any entry that has the tag  HYPERLINK \l "DW_TAG_inlined_subroutine" DW_TAG_inlined_subroutinexe "DW_TAG_inlined_subroutine" is known as a concrete inlined instance rootxe "concrete inlined instance root". Any set of concrete inlined instance entries that are all children (either directly or indirectly) of some concrete inlined instance root, together with the root itself, is known as a concrete inlined instance treexe "concrete inlined instance tree". However, in the case where a concrete inlined instance tree is nested within another concrete instance tree, the entries in the nested concrete instance tree are not considered to be entries in the outer concrete instance tree. Concrete inlined instance trees are defined so that no entry is part of more than one concrete inlined instance tree. This simplifies later descriptions. Each concrete inlined instance tree is uniquely associated with one (and only one) abstract instance treexe "abstract instance tree". Note, however, that the reverse is not true. Any given abstract instance tree may be associated with several different concrete inlined instance trees, or may even be associated with zero concrete inlined instance trees. Concrete inlined instance entries may omit attributes that are not specific to the concrete instance (but present in the abstract instance) and need include only attributes that are specific to the concrete instance (but omitted in the abstract instance). In place of these omitted attributes, each concrete inlined instance entry has a  HYPERLINK \l "DW_AT_abstract_origin" DW_AT_abstract_originxe "DW_AT_abstract_origin" attributexe "abstract origin attribute" that may be used to obtain the missing information (indirectly) from the associated abstract instance entry. The value of the abstract origin attribute is a HYPERLINK \l "reference"reference to the associated abstract instance entry. If an entry within a concrete inlined instance tree contains attributes describing the  HYPERLINK \l "declaration_coordinates" declaration coordinatesxe "declaration coordinates:in concrete instance" of that entry, then those attributes should refer to the file, line and column of the original declaration of the subroutine, not to the point at which it was inlined. As a consequence, they may usually be omitted from any entry that has an abstract origin attribute. For each pair of entries that are associated via a  HYPERLINK \l "DW_AT_abstract_origin" DW_AT_abstract_originxe "DW_AT_abstract_origin" attribute, both members of the pair have the same tag. So, for example, an entry with the tag  HYPERLINK \l "DW_TAG_variable" DW_TAG_variablexe "variable entry:in concrete instance"xe "DW_TAG_variable" can only be associated with another entry that also has the tag  HYPERLINK \l "DW_TAG_variable" DW_TAG_variable. The only exception to this rule is that the root of a concrete instance tree (which must always have the tag HYPERLINK \l "DW_TAG_inlined_subroutine"DW_TAG_inlined_subroutinexe "inlined subprogram entry:in concrete instance"xe "DW_TAG_inlined_subroutine") can only be associated with the root of its associated abstract instance tree (which must have the tag HYPERLINK \l "DW_TAG_subprogram"DW_TAG_subprogramxe "DW_TAG_subprogram"). In general, the structure and content of any given concrete inlined instance tree will be closely analogous to the structure and content of its associated abstract instance tree. There are a few exceptions: An entry in the concrete instance tree may be omitted if it contains only a  HYPERLINK \l "DW_AT_abstract_origin" DW_AT_abstract_originxe "DW_AT_abstract_origin" attribute and either has no children, or its children are omitted. Such entries would provide no useful information. In C-like languages, such entries frequently include types, including structure, union, class, and interface types; and members of types. If any entry within a concrete inlined instance tree needs to refer to an entity declared within the scope of the relevant inlined subroutine and for which no concrete instance entry exists, the reference should refer to the abstract instance entry. Entries in the concrete instance tree which are associated with entries in the abstract instance tree such that neither has a  HYPERLINK \l "DW_AT_name" DW_AT_namexe "DW_AT_name" attributexe "name attribute", and neither is referenced by any other debugging information entry, may be omitted. This may happen for debugging information entries in the abstract instance trees that became unnecessary in the concrete instance tree because of additional information available there. For example, an anonymous variable might have been created and described in the abstract instance tree, but because of the actual parameters for a particular inlined expansion, it could be described as a constant value without the need for that separate debugging information entry. A concrete instance tree may contain entries which do not correspond to entries in the abstract instance tree to describe new entities that are specific to a particular inlined expansion. In that case, they will not have associated entries in the abstract instance tree, should not contain  HYPERLINK \l "DW_AT_abstract_origin" DW_AT_abstract_originxe "DW_AT_abstract_origin" attributes, and must contain all their own attributes directly. This allows an abstract instance tree to omit debugging information entries for anonymous entities that are unlikely to be needed in most inlined expansions. In any expansion which deviates from that expectation, the entries can be described in its concrete inlined instance tree. Out-of-Line Instances of Inlined Subroutines Under some conditions, compilers may need to generate concrete executable instances of inlined subroutines other than at points where those subroutines are actually called. Such concrete instances of inlined subroutines are referred to as concrete out-of-line instances.xe "concrete out-of-line instance"xe "out-of-line instance" \t "See concrete out-of-line instance" In C++xe "C++", for example, taking the address of a function declared to be inline can necessitate the generation of a concrete out-of-line instance of the given function. The DWARF representation of a concrete out-of-line instancexe "concrete out-of-line instance:of inlined subprogram" of an inlined subroutine is essentially the same as for a concrete inlined instance of that subroutine (as described in the preceding section). The representation of such a concrete out-of-line instance makes use of  HYPERLINK \l "DW_AT_abstract_origin" DW_AT_abstract_originxe "abstract origin attribute"xe "DW_AT_abstract_origin" attributes in exactly the same way as they are used for a  HYPERLINK \l "DW_AT_abstract_origin_inline" concrete inlined instance (that is, as references to corresponding entries within the associated abstract instance tree). The differences between the DWARF representation of a concrete out-of-line instance of a given subroutine and the representation of a concrete inlined instance of that same subroutine are as follows: The root entry for a concrete out-of-line instance of a given inlined subroutine has the same tag as does its associated (abstract) inlined subroutine entry (that is, tag DW_TAG_subprogramxe "DW_TAG_subprogram" rather than HYPERLINK \l "DW_TAG_inlined_subroutine"DW_TAG_inlined_subroutinexe "DW_TAG_inlined_subroutine"). The root entry for a concrete out-of-line instance tree is normally owned by the same parent entry that also owns the root entry of the associated abstract instance. However, it is not required that the abstract and out-of-line instance trees be owned by the same parent entry. Nested Inlined Subroutines xe "abstract instance:nested"xe "concrete inlined instance:nested"xe "nested abstract instance"xe "nested concrete inline instance"Some languages and compilers may permit the logical nesting of a subroutine within another subroutine, and may permit either the outer or the nested subroutine, or both, to be inlined. For a non-inlined subroutine nested within an inlined subroutine, the nested subroutine is described normally in both the abstract and concrete inlined instance trees for the outer subroutine. All rules pertaining to the abstract and concrete instance trees for the outer subroutine apply also to the abstract and concrete instance entries for the nested subroutine. For an inlined subroutine nested within another inlined subroutine, the following rules apply to their abstract and concrete instance trees: The abstract instance tree for the nested subroutine is described within the abstract instance tree for the outer subroutine according to the rules in Section  REF BM3_3_8_1_Abstract_Instances \r \h  \* MERGEFORMAT 3.3.8.1, and without regard to the fact that it is within an outer abstract instance tree. Any abstract instance tree for a nested subroutine is always omitted within the concrete instance tree for an outer subroutine. A concrete instance tree for a nested subroutine is always omitted within the abstract instance tree for an outer subroutine. The concrete instance tree for any inlined or out-of-line expansion of the nested subroutine is described within a concrete instance tree for the outer subroutine according to the rules in Sections  REF BM3_3_8_2_Concrete_Inlined_Instances \r \h  \* MERGEFORMAT 3.3.8.2 or  REF BM3_3_8_3_Out_of_Line_Instances_of_Inlin \r \h  \* MERGEFORMAT 3.3.8.3, respectively, and without regard to the fact that it is within an outer concrete instance tree. See Appendix  REF _Ref211071638 \n \h  \* MERGEFORMAT D.7 for discussion and examples. Trampolines A trampoline is a compiler-generated subroutine that serves as an intermediary in making a call to another subroutine. It may adjust parameters and/or the result (if any) as appropriate to the combined calling and called execution contexts. A trampolinexe "trampoline (subroutine) entry" is represented by a debugging information entry with the tag  HYPERLINK \l "DW_TAG_subprogram" DW_TAG_subprogramxe "DW_TAG_subprogram" or  HYPERLINK \l "DW_TAG_inlined_subroutine" DW_TAG_inlined_subroutinexe "DW_TAG_inlined_subroutine" that has a  HYPERLINK \l "DW_AT_trampoline" DW_AT_trampolinexe "DW_AT_trampoline" attributexe "trampoline attribute". The value of that attribute indicates the target subroutine of the trampoline, that is, the subroutine to which the trampoline passes control. (A trampoline entry may but need not also have a  HYPERLINK \l "DW_AT_artificial" DW_AT_artificialxe "DW_AT_artificial" attribute.) The value of the trampoline attribute may be represented using any of the following forms, which are listed in order of preference: If the value is of class reference, then the value specifies the debugging information entry of the target subprogram. If the value is of class address, then the value is the relocated address of the target subprogram. If the value is of class string, then the value is the (possibly mangled) name of the target subprogram. If the value is of class flag, then the value true indicates that the containing subroutine is a trampoline but that the target subroutine is not known. The target subprogram may itself be a trampoline. (A sequence of trampolines necessarily ends with a non-trampoline subprogram.) In C++xe "C++", trampolines may be used to implement derived virtual member functions; such trampolines typically adjust the implicit this pointer parameterxe "this parameter" in the course of passing control. Other languages and environments may use trampolines in a manner sometimes known as transfer functions or transfer vectors. Trampolines may sometimes pass control to the target subprogram using a branch or jump instruction instead of a call instruction, thereby leaving no trace of their existence in the subsequent execution context. This attribute helps make it feasible for a debugger to arrange that stepping into a trampoline or setting a breakpoint in a trampoline will result in stepping into or setting the breakpoint in the target subroutine instead. This helps to hide the compiler generated subprogram from the user. If the target subroutine is not known, a debugger may choose to repeatedly step until control arrives in a new subroutine which can be assumed to be the target subroutine. Lexical Block Entries A lexical block is a bracketed sequence of source statements that may contain any number of declarations. In some languages (including Cxe "C" and C++xe "C++"), blocks can be nested within other blocks to any depth. A lexical block is represented by a debugging information entry with the tag DW_TAG_lexical_blockxe "lexical block entry"xe "block entry" \t "See lexical block entry"xe "DW_TAG_lexical_block". The lexical block entry may have either a HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "low PC attribute"xe "DW_AT_low_pc" and HYPERLINK \l "DW_AT_high_pc"DW_AT_high_pcxe "high PC attribute"xe "DW_AT_high_pc" pair of attributes or a  HYPERLINK \l "DW_AT_ranges" DW_AT_rangesxe "ranges attribute"xe "DW_AT_ranges" attribute whose values encode the contiguous or non-contiguous address ranges, respectively, of the machine instructions generated for the lexical block (see Section REF _Ref495373534 \r \h  \* MERGEFORMAT 2.17). If a name has been given to the lexical block in the source program, then the corresponding lexical block entry has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute" whose value is a null-terminated string containing the name of the lexical block as it appears in the source program. This is not the same as a Cxe "C" or C++xe "C++" label (see below). The lexical block entry owns debugging information entries that describe the declarations within that lexical block. There is one such debugging information entry for each local declaration of an identifier or inner lexical block. Label Entries A label is a way of identifying a source statement. A labeled statement is usually the target of one or more go to statements. A label is represented by a debugging information entry with the tag DW_TAG_labelxe "label entry"xe "DW_TAG_label". The entry for a label should be owned by the debugging information entry representing the scope within which the name of the label could be legally referenced within the source program. The label entry has a HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "low PC attribute"xe "DW_AT_low_pc" attribute whose value is the relocated address of the first machine instruction generated for the statement identified by the label in the source program. The label entry also has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "name attribute"xe "DW_AT_name" attributexe "name attribute" whose value is a null-terminated string containing the name of the label as it appears in the source program. With Statement Entries Both Pascalxe "Pascal" and Modula-2xe "Modula-2" support the concept of a with statement. The with statement specifies a sequence of executable statements within which the fields of a record variable may be referenced, unqualified by the name of the record variable. A with statement is represented by a debugging information entry with the tag DW_TAG_with_stmtxe "with statement entry"xe "DW_TAG_with_stmt". A with statement entry may have either a HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "low PC attribute"xe "DW_AT_low_pc" and HYPERLINK \l "DW_AT_high_pc"DW_AT_high_pcxe "high PC attribute"xe "DW_AT_high_pc" pair of attributes or a  HYPERLINK \l "DW_AT_ranges" DW_AT_rangesxe "ranges attribute"xe "DW_AT_ranges" attribute whose values encode the contiguous or non-contiguous address ranges, respectively, of the machine instructions generated for the with statement (see Section  REF _Ref495373534 \r \h  \* MERGEFORMAT 2.17). The with statement entry has a HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" attribute,xe "type attribute" denoting the type of record whose fields may be referenced without full qualification within the body of the statement. It also has a HYPERLINK \l "DW_AT_location"DW_AT_locationxe "DW_AT_location" attributexe "location attribute", describing how to find the base address of the record object referenced within the body of the with statement. Try and Catch Block Entries In C++xe "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 can handle. A try block is represented by a debugging information entry with the tag DW_TAG_try_blockxe "try block entry"xe "block entry" \t "See try block entry"xe "DW_TAG_try_block". A catch block is represented by a debugging information entry with the tag DW_TAG_catch_blockxe "catch block entry"xe "DW_TAG_catch_block". Both try and catch block entries may have either a HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "low PC attribute"xe "DW_AT_low_pc" and HYPERLINK \l "DW_AT_high_pc"DW_AT_high_pcxe "high PC attribute"xe "DW_AT_high_pc" pair of attributes or a  HYPERLINK \l "DW_AT_ranges" DW_AT_rangesxe "ranges attribute"xe "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  REF _Ref495373534 \r \h  \* MERGEFORMAT 2.17). Catch 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  HYPERLINK \l "DW_TAG_formal_parameter" DW_TAG_formal_parameterxe "formal parameter entry:in catch block"xe "DW_TAG_formal_parameter" or HYPERLINK \l "DW_TAG_unspecified_parameters"DW_TAG_unspecified_parametersxe "unspecified parameters entry:in catch block"xe "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. DATA OBJECT AND OBJECT LIST ENTRIES 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. xe "parameter" \t "See formal parameter entry"xe "parameter" \t "See template type parameter entry"xe "parameter" \t "See template value parameter entry"xe "parameter" \t "See unspecified parameters entry"xe "parameter" \t "See optional parameter attribute"xe "parameter" \t "See variable parameter attribute"xe "parameter" \t "See this parameter"xe "parameter" \t "See macro formal parameter list" Data Object Entries Program variables, formal parameters and constants are represented by debugging information entries with the tags DW_TAG_variablexe "variable entry"xe "DW_TAG_variable", DW_TAG_formal_parameterxe "formal parameter entry"xe "DW_TAG_formal_parameter" and DW_TAG_constantxe "constant entry"xe "DW_TAG_constant", respectively. The tag HYPERLINK \l "DW_TAG_constant"DW_TAG_constantxe "DW_TAG_constant" is used for languages that have true named constants. The debugging information entry for a program variable, formal parameter or constant may have the following attributes: A HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attribute,xe "name attribute" whose value is a null-terminated string, containing the data object name as it appears in the source program. If a variable entry describes an xe "C++" anonymous unionxe "anonymous union", the name attribute is omitted or consists of a single zero byte. A HYPERLINK \l "DW_AT_external"DW_AT_externalxe "DW_AT_external" attributexe "external attribute", which is a HYPERLINK \l "flag"flag, if the name of a variable is visible outside of its enclosing compilation unit.  The definitions of C++xe "C++" static data members of structures or classes are represented by variable entries flagged as external. Both file static and local variables in Cxe "C" and C++xe "C++" are represented by non-external variable entries. A HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration" attributexe "declaration attribute", which is a flag that indicates whether this entry represents a non-defining declaration of an object. A HYPERLINK \l "DW_AT_location"DW_AT_locationxe "DW_AT_location" attributexe "location attribute", whose value describes the location of a variable or parameter at run-time. In a variable entryxe "unallocated variable" representing the definition of a variable (that is, with no HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration" attribute) if no location attribute is present, or if the location attribute is present but has an empty location description (as described in Section  REF BM2_4_Location_Descriptions \w \h  \* MERGEFORMAT 2.6), the variable is assumed to exist in the source code but not in the executable program (but see number  REF _Ref479475074 \r \h  \* MERGEFORMAT 10, below). In a variable entry representing a non-defining declaration of a variable, the location specified modifies the location specified by the defining declaration and only applies for the scope of the variable entry; if no location is specified, then the location specified in the defining declaration applies. The location of a variable may be further specified with a HYPERLINK \l "DW_AT_segment"DW_AT_segmentxe "DW_AT_segment" attributexe "segment attribute:and data segment", if appropriate. A HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" attributexe "type attribute" describing the type of the variable, constant or formal parameter. If the variable entry represents the defining declaration for a C++xe "C++" static data member of a structure, class or union, the entry has a HYPERLINK \l "DW_AT_specification"DW_AT_specificationxe "DW_AT_specification" attributexe "specification attribute", whose value is a HYPERLINK \l "reference"reference to the debugging information entry representing the declaration of this data member. The referenced entry has the tag  HYPERLINK \l "DW_TAG_member" DW_TAG_memberxe "DW_TAG_member" and will be a child of some class, structure or union type entry. If the variable entry represents a non-defining declaration, HYPERLINK \l "DW_AT_specification"DW_AT_specification may be used to reference the defining declaration of the variable. If no DW_AT_specification attribute is present, the defining declaration may be found as a global definition either in the current compilation unit or in another compilation unit with the HYPERLINK \l "DW_AT_external"DW_AT_externalxe "DW_AT_external" attribute. Variable entries containing the HYPERLINK \l "DW_AT_specification"DW_AT_specificationxe "DW_AT_specification" attribute do not need to duplicate information provided by the declaration entry referenced by the specification attribute. In particular, such variable entries do not need to contain attributes for the name or type of the data member whose definition they represent. A HYPERLINK \l "DW_AT_variable_parameter"DW_AT_variable_parameterxe "DW_AT_variable_parameter" attributexe "variable parameter attribute", which is a HYPERLINK \l "flag"flag, if a formal parameter entry represents a parameter whose value in the calling function may be modified by the callee.. The absence of this attribute implies that the parameters value in the calling function cannot be modified by the callee. A HYPERLINK \l "DW_AT_is_optional"DW_AT_is_optionalxe "is optional attribute"xe "DW_AT_is_optional" attribute, which is a HYPERLINK \l "flag"flag, if a parameter entry represents an optional parameter.xe "optional parameter" A HYPERLINK \l "DW_AT_default_value"DW_AT_default_valuexe "DW_AT_default_value" attribute for a formal parameter entry.xe "formal parameter entry:with default value" xe "default value attribute"The value of this attribute is a HYPERLINK \l "reference"reference to the debugging information entry for a variable or subroutine, or the value may be a constant. If the attribute form is of class reference, the default value of the parameter is the value of the referenced variable (which may be constant) or the value returned by the referenced subroutine; a reference value of 0 means that no default value has been specified. If the value is of class constant, that constant is interpreted as a default value of the type of the formal parameter. For a constant form there is no way to express the absence of a default value. A HYPERLINK \l "DW_AT_const_value"DW_AT_const_valuexe "DW_AT_const_value" attribute for an entry describing a variable or formal parameter whose value is constant and not represented by an object in the address space of the program, or an entry describing a named constant. (Note that such an entry does not have a location attribute.) xe "constant value attribute"The value of this attribute may be a  HYPERLINK \l "string" string or any of the  HYPERLINK \l "constant" constant data or data  HYPERLINK \l "block" block forms, as appropriate for the representation of the variables 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 with a constant value and no location can arise is for a formal parameter of an inlined subprogram that corresponds to a constant actual parameter of a call that is inlined. A HYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "DW_AT_start_scope" attribute if the scope of an object is smaller than (that is, is a subset of the addresses of) the scope most closely enclosing the object.xe "start scope attribute" There are two cases: If the scope of the object entry includes all of the containing scope except for a contiguous sequence of bytes at the beginning of that containing scope, then the scope of the object is specified using a value of class constant. If the containing scope is contiguous, the value of this attribute is the offset in bytes of the beginning of the scope for the object from the low pc value of the debugging information entry that defines its scope. If the containing scope is non-contiguous (see Section  REF _Ref495310701 \n \h  \* MERGEFORMAT 2.17.3), the value of this attribute is the offset in bytes of the beginning of the scope for the object from the beginning of the first range list entry that is not a base selection entry or an end of list entry. Otherwise, the scope of the object is specified using a value of class rangelistptr. This value indicates the beginning of a range list (see Section  REF _Ref495310701 \r \h  \* MERGEFORMAT 2.17.3). 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 containing initialization code may change the scope of a subsequent declaration. For example, in the following Cxe "C" code: float x = 99.99; int myfunc() { float f = x; float x = 88.99; return 0; } C scoping rules require that the value of the variable x assigned to the variable f in the initialization sequence is the value of the global variable x, rather than the local x, because the scope of the local variable x only starts after the full declarator for the local x. Due to optimization, the scope of an object may be non-contiguous and require use of a range list even when the containing scope is contiguous. Conversely, the scope of an object may not require its own range list even when the containing scope is non-contiguous. A  HYPERLINK \l "DW_AT_endianity" DW_AT_endianityxe "DW_AT_endianity" attribute,xe "endianity attribute" whose value is a constant that specifies the endianity of the object. The value of this attribute specifies an ABI-defined byte ordering for the value of the object. If omitted, the default endianity of data for the given type is assumed. The set of values and their meaning for this attribute is given in  REF _Ref111361081 \h  \* MERGEFORMAT Figure 12. NameMeaningDW_END_defaultxe "DW_END_default"Default endian encoding (equivalent to the absence of a DW_AT_endianity attribute)DW_END_bigxe "DW_END_big"Big-endian encodingxe "big-endian encoding" \t "See endianity attribute"DW_END_littlexe "DW_END_little"Little-endian encodingxe "little-endian encoding" \t "See endian attribute" \iFigure  SEQ Figure \* ARABIC 12. Endianity attribute values These represent the default encoding formats as defined by the target architectures ABI or processor definition. The exact definition of these formats may differ in subtle ways for different architectures. A DW_AT_const_exprxe "DW_AT_const_expr" attributexe "constant expression attribute", which is a flag, if a variable entry represents a C++xe "C++" object declared with the constexprxe "constexpr" specifier. This attributes indicates that the variable can be evaluated as a compile-time constant. In C++xe "C++", a variable declared with constexpr is implicitly const. Such a variable has a  HYPERLINK \l "DW_AT_type" DW_AT_typexe "DW_AT_type" attribute whose value is a reference to a debugging information entry describing a const qualified type. A  HYPERLINK \l "DW_AT_linkage_name" DW_AT_linkage_namexe "DW_AT_linkage_name" attribute for a variable or constant entry as described in Section  REF _Ref237860526 \r \h  \* MERGEFORMAT 2.22. Common Block Entries A Fortranxe "Fortran:common block" common block may be described by a debugging information entry with the tag DW_TAG_common_blockxe "common block entry"xe "DW_TAG_common_block". The common block entry has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute" whose value is a null-terminated string containing the common block name as it appears in the source program. It may also have a DW_AT_linkage_namexe "DW_AT_linkage_name" attribute as described in Section  REF _Ref237860526 \r \h  \* MERGEFORMAT 2.22. It also has a HYPERLINK \l "DW_AT_location"DW_AT_locationxe "DW_AT_location" attributexe "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. Namelist Entries At least one language, Fortranxe "Fortran" 90, has the concept of a namelist. A namelist is an ordered list of the names of some set of declared objects. The namelist object itself may be used as a replacement for the list of names in various contexts. A namelist is represented by a debugging information entry with the tag DW_TAG_namelistxe "namelist entry"xe "DW_TAG_namelist". If the namelist itself has a name, the namelist entry has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute", whose value is a null-terminated string containing the namelists name as it appears in the source program. Each name that is part of the namelist is represented by a debugging information entry with the tag DW_TAG_namelistxe "DW_TAG_namelist"_itemxe "namelist item entry"xe "DW_TAG_namelist_item". Each such entry is a child of the namelist entry, and all of the namelist item entries for a given namelist are ordered as were the list of names they correspond to in the source program. Each namelist item entry contains a HYPERLINK \l "DW_AT_namelist_item"DW_AT_namelist_itemxe "DW_AT_namelist_item" attributexe "namelist item attribute" whose value is a HYPERLINK \l "reference"reference to the debugging information entry representing the declaration of the item whose name appears in the namelist. TYPE ENTRIES This section presents the debugging information entries that describe program types: base types, modified types and user-defined types. If the scope of the declaration of a named type begins after the low pc value for the scope most closely enclosing the declaration, the declaration may have a HYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "DW_AT_start_scope" attribute as described for objects in Section  REF BM4_1_Data_Object_Entries \n \h  \* MERGEFORMAT 4.1xe "start scope attribute". Base Type Entries A base type is a data type that is not defined in terms of other data types. Each programming language has a set of base types that are considered to be built into that language. xe "builtin type" \t "See base type entry"xe "fundamental type" \t "See base type entry"A base type is represented by a debugging information entry with the tag DW_TAG_base_typexe "base type entry"xe "DW_TAG_base_type". A base type entry has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute" whose value is a null-terminated string containing the name of the base type as recognized by the programming language of the compilation unit containing the base type entry. A base type entry has a HYPERLINK \l "DW_AT_encoding"DW_AT_encodingxe "DW_AT_encoding" attributexe "encoding attribute" describing how the base type is encoded and is to be interpreted. The value of this attribute is an HYPERLINK \l "constant"integer constant. The set of values and their meanings for the HYPERLINK \l "DW_AT_encoding"DW_AT_encoding attribute is given in  REF _Ref478443608 \h  \* MERGEFORMAT Figure 13 and following text. A base type entry may have a  HYPERLINK \l "DW_AT_endianity" DW_AT_endianityxe "DW_AT_endianity" attributexe "endianity attribute" as described in Section  REF BM4_1_Data_Object_Entries \r \h  \* MERGEFORMAT 4.1. If omitted, the encoding assumes the representation that is the default for the target architecture. A base type entry has either a  HYPERLINK \l "DW_AT_byte_size" DW_AT_byte_sizexe "DW_AT_byte_size" attributexe "byte size attrbute" or a  HYPERLINK \l "DW_AT_bit_size" DW_AT_bit_sizexe "DW_AT_bit_size" attributexe "bit size attrbute" whose integer constant value (see Section  REF _Ref230675141 \w \h  \* MERGEFORMAT 2.21) is the amount of storage needed to hold a value of the type. For example, the Cxe "C" type int on a machine that uses 32-bit integers is represented by a base type entry with a name attribute whose value is int, an encoding attribute whose value is HYPERLINK \l "DW_ATE_signed"DW_ATE_signedxe "DW_ATE_signed" and a byte size attribute whose value is 4. If the value of an object of the given type does not fully occupy the storage described by a byte size attribute, the base type entry may also have a DW_AT_bit_size and a DW_AT_data_bit_offsetxe "DW_AT_data_bit_offset" attributexe "data bit offset attribute", both of whose values are integer constant values (see Section  REF _Ref519589220 \r \h  \* MERGEFORMAT 2.19). The bit size attribute describes the actual size in bits used to represent values of the given type. The data bit offset attribute is the offset in bits from the beginning of the containing storage to the beginning of the value. Bits that are part of the offset are padding. The data bit offset uses the bit numbering and direction conventions that are appropriate to the current language on the target system to locate the beginning of the storage and value. If this attribute is omitted a default data bit offset of zero is assumed. Attribute DW_AT_data_bit_offset is new in DWARF Version 4 and is also used for bit field members (see Section  REF BM5_5_4_Structure_Data_Member_Entries \r \h  \* MERGEFORMAT 5.5.6). It replaces the attribute DW_AT_bit_offset when used for base types as defined in DWARF V3 and earlier. The earlier attribute is defined in a manner suitable for bit field members on big-endian architectures but which is wasteful for use on little-endian architectures. The attribute DW_AT_bit_offset is deprecated in DWARF Version 4 for use in base types, but implementations may continue to support its use for compatibility. The DWARF Version 3xe "DWARF Version 3" definition of these attributes is as follows. A base type entry has a DW_AT_byte_sizexe "DW_AT_byte_size" attribute, whose value (see Section  REF _Ref519589220 \r \h  \* MERGEFORMAT 2.19) is the size in bytes of the storage unit used to represent an object of the given type. If the value of an object of the given type does not fully occupy the storage unit described by the byte size attribute, the base type entry may have a DW_AT_bit_sizexe "DW_AT_bit_size (V3)" attributexe "bit size attribute (V3)" and a DW_AT_bit_offsetxe "DW_AT_bit_offset (V3)" attributexe "bit offset attribute (V3)", both of whose values (see Section  REF _Ref519589220 \r \h  \* MERGEFORMAT 2.19) are integers. The bit size attribute describes the actual size in bits used to represent a value of the given type. The bit offset attribute describes the offset in bits of the high order bit of a value of the given type from the high order bit of the storage unit used to contain that value. In comparing DWARF Versions 3 and 4, note that DWARF V4 defines the following combinations of attributes: DW_AT_byte_sizexe "DW_AT_byte_size" DW_AT_bit_size DW_AT_byte_sizexe "DW_AT_byte_size", DW_AT_bit_size and optionally DW_AT_data_bit_offsetxe "DW_AT_data_bit_offset" DWARF V3 defines the following combinations: DW_AT_byte_sizexe "DW_AT_byte_size (V3)" DW_AT_byte_sizexe "DW_AT_byte_size (V3)", DW_AT_bit_sizexe "DW_AT_bit_size (V3)" and DW_AT_bit_offsetxe "DW_AT_bit_offset (V3)" NameMeaning DW_ATE_addressxe "DW_ATE_address"linear machine address (for segmented addresses see Section  REF BM2_10_Target_Specific_Addressing_Inform \r \h  \* MERGEFORMAT 2.12)DW_ATE_booleanxe "DW_ATE_boolean"true or false DW_ATE_complex_floatxe "DW_ATE_complex_float"complex binary floating-point number DW_ATE_floatxe "DW_ATE_float"binary floating-point number DW_ATE_imaginary_floatxe "DW_ATE_imaginary_float"imaginary binary floating-point numberDW_ATE_signedxe "DW_ATE_signed"signed binary integer DW_ATE_signed_charxe "DW_ATE_signed_char"signed character DW_ATE_unsignedxe "DW_ATE_unsigned"unsigned binary integer DW_ATE_unsigned_charxe "DW_ATE_unsigned_char"unsigned character DW_ATE_packed_decimalxe "DW_ATE_packed_decimal"packed decimalDW_ATE_numeric_stringxe "DW_ATE_numeric_string"numeric stringDW_ATE_editedxe "DW_ATE_edited"edited stringDW_ATE_signed_fixedxe "DW_ATE_signed_fixed"signed fixed-point scaled integerDW_ATE_unsigned_fixedxe "DW_ATE_unsigned_fixed"unsigned fixed-point scaled integerDW_ATE_decimal_float XE "DW_ATE_decimal_float" decimal floating-point numberDW_ATE_UTF XE "DW_ATE_UTF" Unicode characterFigure  SEQ Figure \* ARABIC 13. Encoding attribute values The DW_ATE_decimal_float encoding is intended for floating-point representations that have a power-of-ten exponent, such as that specified in IEEE 754R. The DW_ATE_UTF encoding is intended for Unicode string encodings (see the Universal Character Set standard, ISO/IEC 10646-1:1993). For example, the C++ type char16_t is represented by a base type entry with a name attribute whose value is char16_t, an encoding attribute whose value is DW_ATE_UTFxe "DW_ATE_UTF" and a byte size attribute whose value is 2. The DW_ATE_packed_decimalxe "DW_ATE_packed_decimal" and DW_ATE_numeric_stringxe "DW_ATE_numeric_string" base types represent packed and unpacked decimal string numeric data types, respectively, either of which may be either signed or unsigned. These base types are used in combination with DW_AT_decimal_signxe "DW_AT_decimal_sign", DW_AT_digit_countxe "DW_AT_digit_count" and DW_AT_decimal_scalexe "DW_AT_decimal_scale" attributes. A  HYPERLINK \l "DW_AT_decimal_sign" DW_AT_decimal_signxe "DW_AT_decimal_sign" attributexe "decimal sign attribute" is an integer constant that conveys the representation of the sign of the decimal type (see  REF _Ref104351054 \h  \* MERGEFORMAT Figure 14). Its integer constant value is interpreted to mean that the type has a leading overpunch, trailing overpunch, leading separate or trailing separate sign representation or, alternatively, no sign at all. The  HYPERLINK \l "DW_AT_digit_count" DW_AT_digit_countxe "DW_AT_digit_count" attributexe "digit count attribute" is an integer constant value that represents the number of digits in an instance of the type. The  HYPERLINK \l "DW_AT_decimal_scale" DW_AT_decimal_scalexe "DW_AT_decimal_scale" attributexe "decimal scale attribute" is an integer constant value that represents the exponent of the base ten scale factor to be applied to an instance of the type. A scale of zero puts the decimal point immediately to the right of the least significant digit. Positive scale moves the decimal point to the right and implies that additional zero digits on the right are not stored in an instance of the type. Negative scale moves the decimal point to the left; if the absolute value of the scale is larger than the digit count, this implies additional zero digits on the left are not stored in an instance of the type. The DW_ATE_editedxe "DW_ATE_edited" base type is used to represent an edited numeric or alphanumeric data type. It is used in combination with an  HYPERLINK \l "DW_AT_picture_string" DW_AT_picture_stringxe "DW_AT_picture_string" attribute whose value is a null-terminated string containing the target-dependent picture string associated with the type. If the edited base type entry describes an edited numeric data type, the edited type entry has a DW_AT_digit_countxe "DW_AT_digit_count"xe "digit count attribute" \t "" and a DW_AT_decimal_scalexe "DW_AT_decimal_scale" attributexe "decimal scale attribute". These attributes have the same interpretation as described for the DW_ATE_packed_decimalxe "DW_ATE_packed_decimal" and DW_ATE_numeric_stringxe "DW_ATE_numeric_string" base types. If the edited type entry describes an edited alphanumeric data type, the edited type entry does not have these attributes. The presence or absence of the DW_AT_digit_countxe "DW_AT_digit_count" and DW_AT_decimal_scalexe "DW_AT_decimal_scale" attributes allows a debugger to easily distinguish edited numeric from edited alphanumeric, although in principle the digit count and scale are derivable by interpreting the picture string. The DW_ATE_signed_fixedxe "DW_ATE_signed_fixed" and DW_ATE_unsigned_fixedxe "DW_ATE_unsigned_fixed" entries describe signed and unsigned fixed-point binary data types, respectively. The fixed binary type entries have a DW_AT_digit_countxe "DW_AT_digit_count" attributexe "digit count attribute" with the same interpretation as described for the DW_ATE_packed_decimalxe "DW_ATE_packed_decimal" and DW_ATE_numeric_stringxe "DW_ATE_numeric_string" base types. For a data type with a decimal scale factor, the fixed binary type entry has a DW_AT_decimal_scalexe "DW_AT_decimal_scale" attributexe "decimal scale attribute" with the same interpretation as described for the DW_ATE_packed_decimalxe "DW_ATE_packed_decimal" and DW_ATE_numeric_stringxe "DW_ATE_numeric_string" base types. For a data type with a binary scale factor, the fixed binary type entry has a DW_AT_binary_scalexe "DW_AT_binary_scale" attributexe "binary scale attribute". The DW_AT_binary_scale attribute is an integer constant value that represents the exponent of the base two scale factor to be applied to an instance of the type. Zero scale puts the binary point immediately to the right of the least significant bit. Positive scale moves the binary point to the right and implies that additional zero bits on the right are not stored in an instance of the type. Negative scale moves the binary point to the left; if the absolute value of the scale is larger than the number of bits, this implies additional zero bits on the left are not stored in an instance of the type. For a data type with a non-decimal and non-binary scale factor, the fixed binary type entry has a  HYPERLINK \l "DW_AT_small" DW_AT_smallxe "DW_AT_small" attributexe "small attribute" which references a  HYPERLINK \l "DW_TAG_constant" DW_TAG_constantxe "DW_TAG_constant" entry. The scale factor value is interpreted in accordance with the value defined by the  HYPERLINK \l "DW_TAG_constant" DW_TAG_constant entry. The value represented is the product of the integer value in memory and the associated constant entry for the type. The DW_AT_smallxe "DW_AT_small" attribute is defined with the Adaxe "Ada" small attribute in mind. NameMeaningDW_DS_unsignedxe "DW_DS_unsigned"UnsignedDW_DS_leading_overpunchxe "DW_DS_leading_overpunch"Sign is encoded in the most significant digit in a target-dependent mannerDW_DS_trailing_overpunchxe "DW_DS_trailing_overpunch"Sign is encoded in the least significant digit in a target-dependent mannerDW_DS_leading_separatexe "DW_DS_leading_separate"Sign is a + or - character to the left of the most significant digitDW_DS_trailing_separatexe "DW_DS_trailing_separate"Decimal type: Sign is a + or - character to the right of the least significant digit Packed decimal type: Least significant nibble contains a target-dependent value indicating positive or negativeFigure  SEQ Figure \* ARABIC 14. Decimal sign attribute values Unspecified Type Entries Some languages have constructs in which a type may be left unspecified or the absence of a type may be explicitly indicated. An unspecified (implicit, unknown, ambiguous or nonexistent) type is represented by a debugging information entry with the tag DW_TAG_unspecified_typexe "unspecified type entry"xe "void type" \t "See unspecified type entry"xe "DW_TAG_unspecified_type". If a name has been given to the type, then the corresponding unspecified type entry has a  HYPERLINK \l "DW_AT_name" DW_AT_namexe "DW_AT_name" attributexe "name attribute" whose value is a null-terminated string containing the name as it appears in the source program. The interpretation of this debugging information entry is intentionally left flexible to allow it to be interpreted appropriately in different languages. For example, in Cxe "C" and C++xe "C++" the language implementation can provide an unspecified type entry with the name void which can be referenced by the type attribute of pointer types and typedef declarations for 'void' (see Sections  REF BM5_2_Type_Modifier_Entries \n \h  \* MERGEFORMAT 0 and  REF BM5_3_Typedef_Entries \n \h  \* MERGEFORMAT 5.3, respectively). As another example, in Adaxe "Ada" such an unspecified type entry can be referred to by the type attribute of an access type where the denoted type is incomplete (the name is declared as a type but the definition is deferred to a separate compilation unit). Type Modifier Entries xe "type modifier entry" \t "See constant type entry"xe "type modifier entry" \t "See packed type entry"xe "type modifier entry" \t "See pointer type entry"xe "type modifier entry" \t "See restricted type entry"xe "type modifier entry" \t "See reference type entry"xe "type modifier entry" \t "See volatile type entry"xe "type modifier entry" \t "See shared type entry"A base or user-defined type may be modified in different ways in different languages. A type modifier is represented in DWARF by a debugging information entry with one of the tags given in  REF _Ref478443641 \h  \* MERGEFORMAT Figure 15. If a name has been given to the modified type in the source program, then the corresponding modified type entry has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute" whose value is a null-terminated string containing the modified type name as it appears in the source program. Each of the type modifier entries has a HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" attribute,xe "type attribute" whose value is a HYPERLINK \l "reference"reference to a debugging information entry describing a base type, a user-defined type or another type modifier. A modified type entry describing a pointer or reference type (using  HYPERLINK \l "DW_TAG_pointer_type" DW_TAG_pointer_typexe "DW_TAG_pointer_type",  HYPERLINK \l "DW_TAG_reference_type" DW_TAG_reference_typexe "DW_TAG_reference_type" or  HYPERLINK \l "DW_TAG_rvalue_reference_type" DW_TAG_rvalue_reference_typexe "DW_TAG_rvalue_reference_type") may have a HYPERLINK \l "DW_AT_address_class"DW_AT_address_classxe "DW_AT_address_class" attributexe "address class attribute" to describe how objects having the given pointer or reference type ought to be dereferenced. A modified type entry describing a shared qualified typexe "shared qualified type" (using  HYPERLINK \l "DW_TAG_shared_type" DW_TAG_shared_typexe "DW_TAG_shared_type") may have a  HYPERLINK \l "DW_AT_count" DW_AT_countxe "DW_AT_count" attributexe "count attribute" whose value is a constant expressing the blocksize of the type. If no count attribute is present, then the infinite blocksize is assumed. When multiple type modifiers are chained together to modify a base or user-defined type, the tree ordering reflects the semantics of the applicable lanuage rather than the textual order in the source presentation. TagMeaning DW_TAG_const_typexe "constant type entry"xe "DW_TAG_const_type"Cxe "C" or C++xe "C++" const qualified typexe "const qualified type" DW_TAG_packed_typexe "packed type entry"xe "DW_TAG_packed_type"Pascalxe "Pascal" or Adaxe "Ada" packed type DW_TAG_pointer_typexe "pointer type entry"xe "DW_TAG_pointer_type"Pointer to an object of the type being modified.DW_TAG_reference_typexe "reference type entry"xe "reference type entry:lvalue" \t "See reference type entry"xe "DW_TAG_reference_type"C++xe "C++" (lvalue) reference to an object of the type being modified DW_TAG_restrict_typexe "restricted type entry"xe "DW_TAG_restrict_type"Cxe "C" restrict qualified typexe "restrict qualified type"DW_TAG_rvalue_reference_type xe "rvalue reference type entry"xe "reference type entry:rvalue" \t "See rvalue reference type entry"xe "DW_TAG_rvalue_reference_type"C++ rvalue reference to an object of the type being modifiedDW_TAG_shared_typexe "shared qualified type entry"xe "DW_TAG_shared_type"UPCxe "UPC" shared qualified typexe "shared qualified type"DW_TAG_volatile_typexe "volatile type entry"xe "DW_TAG_volatile_type"Cxe "C" or C++xe "C++" volatile qualified typexe "volatile qualified type" Figure  SEQ Figure \* ARABIC 15. Type modifier tags As examples of how type modifiers are ordered, take the following Cxe "C" declarations: const unsigned char * volatile p; which represents a volatile pointer to a constant character. This is encoded in DWARF as:  HYPERLINK \l "DW_TAG_variable" DW_TAG_variablexe "DW_TAG_variable"(p) ( HYPERLINK \l "DW_TAG_volatile_type"DW_TAG_volatile_typexe "DW_TAG_volatile_type" ( HYPERLINK \l "DW_TAG_pointer_type"DW_TAG_pointer_typexe "DW_TAG_pointer_type" ( HYPERLINK \l "DW_TAG_const_type"DW_TAG_const_typexe "DW_TAG_const_type" ( HYPERLINK \l "DW_TAG_base_type"DW_TAG_base_typexe "DW_TAG_base_type"(unsigned char) volatile unsigned char * const restrict p; on the other hand, represents a restricted constant pointer to a volatile character. This is encoded as:  HYPERLINK \l "DW_TAG_variable" DW_TAG_variablexe "DW_TAG_variable"(p) (  HYPERLINK \l "DW_TAG_restrict_type" DW_TAG_restrict_typexe "DW_TAG_restrict_type" ( HYPERLINK \l "DW_TAG_const_type"DW_TAG_const_typexe "DW_TAG_const_type" ( HYPERLINK \l "DW_TAG_pointer_type"DW_TAG_pointer_typexe "DW_TAG_pointer_type" ( HYPERLINK \l "DW_TAG_volatile_type"DW_TAG_volatile_typexe "DW_TAG_volatile_type" ( HYPERLINK \l "DW_TAG_base_type"DW_TAG_base_typexe "DW_TAG_base_type"(unsigned char) Typedef Entries A named type that is defined in terms of another type definition is represented by a debugging information entry with the tag DW_TAG_typedefxe "typedef entry"xe "DW_TAG_typedef". The typedef entry has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute" whose value is a null-terminated string containing the name of the typedef as it appears in the source program. The typedef entry may also contain a HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" attributexe "type attribute" whose value is a reference to the type named by the typedef. If the debugging information entry for a typedef represents a declaration of the type that is not also a definition, it does not contain a type attribute. Depending on the language, a named type that is defined in terms of another type may be called a type alias, a subtype, a constrained type and other terms. A type name declared with no defining details may be termed an incomplete, forward or hidden type. While the DWARF DW_TAG_typedef entry was originally inspired by the like named construct in Cxe "C" and C++,xe "C++" it is broadly suitable for similar constructs (by whatever source syntax) in other languages. Array Type Entries Many languages share the concept of an array, which is a table of components of identical type. An array typexe "array:declaration of type" is represented by a debugging information entry with the tag DW_TAG_array_typexe "array type entry"xe "DW_TAG_array_type". If a name has been given to the array type in the source program, then the corresponding array type entry has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute" whose value is a null-terminated string containing the array type name as it appears in the source program. The array type entry describing a multidimensional array may have a HYPERLINK \l "DW_AT_ordering"DW_AT_orderingxe "DW_AT_ordering" attributexe "ordering attribute" whose HYPERLINK \l "constant"integer constant value is interpreted to mean either row-major or column-major ordering of array elementsxe "array:element ordering". The set of values and their meanings for the ordering attribute are listed in  REF _Ref478443672 \h  \* MERGEFORMAT Figure 16. If no ordering attribute is present, the default ordering for the source language (which is indicated by the HYPERLINK \l "DW_AT_language"DW_AT_languagexe "DW_AT_language" attributexe "language attribute" of the enclosing compilation unit entry) is assumed. DW_ORD_col_majorxe "DW_ORD_col_major" DW_ORD_row_majorxe "DW_ORD_row_major"Figure  SEQ Figure \* ARABIC 16. Array ordering The ordering attribute may optionally appear on one-dimensional arrays; it will be ignored. An array type entry has a HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" attributexe "type attribute"xe "array:element type" describing the type of each element of the array. If the amount of storage allocated to hold each element of an object of the given array type is different from the amount of storage that is normally allocated to hold an individual object of the indicated element type, then the array type entry has either a DW_AT_byte_stridexe "DW_AT_byte_stride" or a HYPERLINK \l "DW_AT_stride_size"DW_AT_bit_stridexe "DW_AT_bit_stride" attributexe "bit stride attribute", whose value (see Section  REF _Ref519589220 \r \h  \* MERGEFORMAT 2.19) is the size of each element of the array. The array type entry may have either a DW_AT_byte_sizexe "DW_AT_byte_size" or a DW_AT_bit_sizexe "DW_AT_bit_size" attribute (see Section  REF _Ref230675141 \w \h  \* MERGEFORMAT 2.21), whose value is the amount of storage needed to hold an instance of the array type. If the size of the array can be determined statically at compile time, this value can usually be computed by multiplying the number of array elements by the size of each element. Each array dimension is described by a debugging information entry with either the tag HYPERLINK \l "DW_TAG_subrange_type"DW_TAG_subrange_typexe "subrange type entry:as array dimension"xe "DW_TAG_subrange_type" or the tag  HYPERLINK \l "DW_TAG_enumeration_type" DW_TAG_enumeration_typexe "enumeration type entry:as array dimension"xe "DW_TAG_enumeration_type". These entries are children of the array type entry and are ordered to reflect the appearance of the dimensions in the source program (i.e., leftmost dimension first, next to leftmost second, and so on). In languages, such as Cxe "C", in which there is no concept of a multidimensional array, an array of arrays may be represented by a debugging information entry for a multidimensional array. Other attributes especially applicable to arrays are  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated",  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated" and  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location", which are described in Section  REF _Ref480964356 \n \h  \* MERGEFORMAT 5.14. For relevant examples, see also Appendix  REF _Ref513880723 \r \h  \* MERGEFORMAT D.2.1. Structure, Union, Class and Interface Type Entries The languages Cxe "C", C++xe "C++", and Pascalxe "Pascal", among others, allow the programmer to define types that are collections of related components. In Cxe "C" and C++, these collections are called structures. In Pascal, they are called records. The components may be of different types. The components are called members in C and C++, and fields in Pascal. The components of these collections each exist in their own space in computer memory. The components of a C or C++ union all coexist in the same memory. Pascal and other languages have a discriminated union, also called a variant record. Here, selection of a number of alternative substructures (variants) is based on the value of a component that is not part of any of those substructures (the discriminant). C++xe "C++" and Javaxe "Java" have the notion of "class, which is in some ways similar to a structure. A class may have member functions which are subroutines that are within the scope of a class or structure. The C++ notion of structure is more general than in Cxe "C", being equivalent to a class with minor differences. Accordingly, in the following discussion statements about C++ classes may be understood to apply to C++ structures as well. Structure, Union and Class Type Entries Structure, union, and class types are represented by debugging information entries with the tags DW_TAG_structure_typexe "structure type entry"xe "DW_TAG_structure_type", DW_TAG_union_typexe "union type entry"xe "DW_TAG_union_type", and DW_TAG_class_typexe "class type entry"xe "DW_TAG_class_type", respectively. If a name has been given to the structure, union, or class in the source program, then the corresponding structure type, union type, or class type entry has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute" whose value is a null-terminated string containing the type name as it appears in the source program. The members of a structure, union, or class are represented by debugging information entries that are owned by the corresponding structure type, union type, or class type entry and appear in the same order as the corresponding declarations in the source program. A structure type, union type or class type entry may have either a DW_AT_byte_sizexe "DW_AT_byte_size" or a DW_AT_bit_sizexe "DW_AT_bit_size" attribute (see Section  REF _Ref230675141 \w \h  \* MERGEFORMAT 2.21), whose value is the amount of storage needed to hold an instance of the structure, union or class type, including any padding. An incompletexe "incomplete type" structurexe "incomplete class/structure/union", union or class type is represented by a structure, union or class entry that does not have a byte size attribute and that has a HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration" attributexe "declaration attribute". If the complete declaration of a type has been placed in a separate type unit (see Section  REF _Ref235444914 \n \h  \* MERGEFORMAT 3.1.3)xe "type unit", an incomplete declaration of that type in the compilation unit may provide the unique 64-bit signature of the type using a  HYPERLINK \l "DW_AT_signature" DW_AT_signaturexe "DW_AT_signature" attribute. If a structure, union or class entry represents the definition of a structure, class or union member corresponding to a prior incomplete structure, class or union, the entry may have a  HYPERLINK \l "DW_AT_specification" DW_AT_specificationxe "DW_AT_specification" attribute whose value is a reference to the debugging information entry representing that incomplete declaration. Structure, union and class entries containing the DW_AT_specification attribute do not need to duplicate information provided by the declaration entry referenced by the specification attribute. In particular, such entries do not need to contain an attribute for the name of the structure, class or union they represent if such information is already provided in the declaration. For Cxe "C" and C++xe "C++", data member declarations occurring within the declaration of a structure, union or class type are considered to be definitions of those members, with the exception of static data members, whose definitions appear outside of the declaration of the enclosing structure, union or class type. Function member declarations appearing within a structure, union or class type declaration are definitions only if the body of the function also appears within the type declaration. If the definition for a given member of the structure, union or class does not appear within the body of the declaration, that member also has a debugging information entry describing its definition. That latter entry has a HYPERLINK \l "DW_AT_specification"DW_AT_specificationxe "DW_AT_specification" attributexe "specification attribute" referencing the debugging information entry owned by the body of the structure, union or class entry and representing a non-defining declaration of the data, function or type member. The referenced entry will not have information about the location of that member (low and high pc attributes for function members, location descriptions for data members) and will have a HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration" attribute. Consider a nested class whose definition occurs outside of the containing class definition, as in: struct A { struct B; }; struct A::B { }; The two different structs can be described in different compilation units to facilitate DWARF space compression (see Appendix  REF _Ref230762311 \r \h  \* MERGEFORMAT E.1). Interface Type Entries The Javaxe "Java" language defines "interface" types. An interface in Java is similar to a C++xe "C++" or Java class with only abstract methods and constant data members. Interface types are represented by debugging information entries with the tag DW_TAG_interface_typexe "interface type entry"xe "DW_TAG_interface_type". An interface type entry has a  HYPERLINK \l "DW_AT_name" DW_AT_namexe "DW_AT_name" attributexe "name attribute", whose value is a null-terminated string containing the type name as it appears in the source program. The members of an interface are represented by debugging information entries that are owned by the interface type entry and that appear in the same order as the corresponding declarations in the source program. Derived or Extended Structs, Classes and Interfaces In C++xe "C++", a class (or struct) may be "derived from" or be a "subclass of" another class. In Javaxe "Java", an interface may "extend" one or more other interfaces, and a class may "extend" another class and/or "implement" one or more interfaces. All of these relationships may be described using the following. Note that in Java, the distinction between extends and implements is implied by the entities at the two ends of the relationship. A class type or interface type entry that describes a derivedxe "derived type (C++)" \t "See inheritance entry", extendedxe "extended type (Java)" \t "See inheritance entry" or implementingxe "implementing type (Java)" \t "See inheritance entry" class or interface owns debugging information entries describing each of the classes or interfaces it is derived from, extending or implementing, respectively, ordered as they were in the source program. Each such entry has the tag DW_TAG_inheritancexe "inheritance entry"xe "DW_TAG_inheritance". An inheritance entry has a HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" attributexe "type attribute" whose value is a HYPERLINK \l "reference"reference to the debugging information entry describing the class or interface from which the parent class or structure of the inheritance entry is derived, extended or implementing. An inheritance entry for a class that derives from or extends another class or struct also has a HYPERLINK \l "DW_AT_data_member_location"DW_AT_data_member_locationxe "DW_AT_data_member_location" attributexe "data member location attribute", whose value describes the location of the beginning of the inherited type relative to the beginning address of the derived class. If that value is a constant, it is the offset in bytes from the beginning of the class to the beginning of the inherited type. Otherwise, the value must be a HYPERLINK \l "BM2_4_Location_Descriptions"location description. In this latter case, the beginning address of the derived class is pushed on the expression stack before the location description is evaluated and the result of the evaluation is the location of the inherited type. The interpretation of the value of this attribute for inherited types is the same as the interpretation for data members (see Section  REF BM5_5_4_Structure_Data_Member_Entries \r \h  \* MERGEFORMAT 5.5.6). An inheritance entry may have a HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility" attributexe "accessibility attribute". If no accessibility attribute is present, private access is assumed for an entry of a class and public access is assumed for an entry of an interface, struct or union. If the class referenced by the inheritance entry serves as a C++xe "C++" virtual base class, the inheritance entry has a HYPERLINK \l "DW_AT_virtuality"DW_AT_virtualityxe "DW_AT_virtuality" attributexe "virtuality attribute". For a C++ virtual base, the data member location attribute will usually consist of a non-trivial location description. Access Declarations In C++xe "C++", a derived class may contain access declarations that change the accessibility of individual class members from the overall accessibility specified by the inheritance declaration. A single access declaration may refer to a set of overloaded names. If a derived class or structure contains access declarationsxe "access declaration entry", each such declaration may be represented by a debugging information entry with the tag DW_TAG_access_declarationxe "DW_TAG_access_declaration". Each such entry is a child of the class or structure type entry. An access declaration entry has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute", whose value is a null-terminated string representing the name used in the declaration in the source program, including any class or structure qualifiers. An access declaration entry also has a HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility" attributexe "accessibility attribute" describing the declared accessibility of the named entities. Friends Each friend declared by a structure, union or class type may be represented by a debugging information entry that is a child of the structure, union or class type entry; the friend entry has the tag DW_TAG_friendxe "friend entry"xe "DW_TAG_friend". A friend entry has a HYPERLINK \l "DW_AT_friend"DW_AT_friendxe "DW_AT_friend" attributexe "friend attribute", whose value is a HYPERLINK \l "reference"reference to the debugging information entry describing the declaration of the friend. Data Member Entries A data member (as opposed to a member function) is represented by a debugging information entry with the tag DW_TAG_memberxe "member entry (data)"xe "data member" \t "See member entry (data)"xe "DW_TAG_member". The member entry for a named member has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute" whose value is a null-terminated string containing the member name as it appears in the source program. If the member entry describes an xe "C++" anonymous unionxe "anonymous union", the name attribute is omitted or consists of a single zero byte. The data member entry has a HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" attributexe "type attribute" to denote the type of that member. A data member entry may have a HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility" attributexe "accessibility attribute". If no accessibility attribute is present, private access is assumed for an entry of a class and public access is assumed for an entry of a structure, union, or interface. A data member entry may have a  HYPERLINK \l "DW_AT_mutable" DW_AT_mutablexe "DW_AT_mutable" attributexe "mutable attribute", which is a flag. This attribute indicates whether the data member was declared with the mutable storage class specifier. The beginning of a data memberxe "beginning of a data member"xe "beginning of an object" is described relative to the beginning of the object in which it is immediately contained. In general, the beginning is characterized by both an address and a bit offset within the byte at that address. When the storage for an entity includes all of the bits in the beginning byte, the beginning bit offset is defined to be zero. Bit offsets in DWARF use the bit numbering and direction conventions that are appropriate to the current language on the target system. The member entry corresponding to a data member that is defined in a structure, union or class may have either a DW_AT_data_member_locationxe "DW_AT_data_member_location" attribute or a DW_AT_data_bit_offsetxe "DW_AT_data_bit_offset" attribute. If the beginning of the data member is the same as the beginning of the containing entity then neither attribute is required. For a HYPERLINK \l "DW_AT_data_member_location"DW_AT_data_member_locationxe "DW_AT_data_member_location" attributexe "data member location attribute" there are two cases: 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 offset then the beginning of the member entry has that same bit offset as well. Otherwise, the value must be a HYPERLINK \l "BM2_4_Location_Descriptions"location descriptionxe "location description". In this case, the beginning of the containing entity must be byte aligned. The beginning address is pushed on the DWARF stack before the location description is evaluated; the result of the evaluation is the base address of the member entry. The push on the DWARF expression stack of the base address of the containing construct is equivalent to execution of the  HYPERLINK \l "DW_OP_push_object_address" DW_OP_push_object_addressxe "DW_OP_push_object_address" operation (see Section  REF BM2_4_3_3_Stack_Operations \r \h  \* MERGEFORMAT 2.5.1.3); DW_OP_push_object_address therefore is not needed at the beginning of a location description for a data member. The result of the evaluation is a location--either an address or the name of a register, not an offset to the member. A DW_AT_data_member_locationxe "DW_AT_data_member_location" attribute that has the form of a location description is not valid for a data member contained in an entity that is not byte aligned because DWARF operations do not allow for manipulating or computing bit offsets. For a DW_AT_data_bit_offsetxe "DW_AT_data_bit_offset" attributexe "data bit offset attribute", the value is an integer constant (see Section  REF _Ref519589220 \r \h  \* MERGEFORMAT 2.19) that specifies the number of bits from the beginning of the containing entity to the beginning of the data member. This value must be greater than or equal to zero, but is not limited to less than the number of bits per byte. If the size of a data member is not the same as the size of the type given for the data member, the data member has either a HYPERLINK \l "DW_AT_byte_size"DW_AT_byte_sizexe "DW_AT_byte_size"xe "byte size attribute" or a HYPERLINK \l "DW_AT_bit_size"DW_AT_bit_sizexe "DW_AT_bit_size" attributexe "bit size attribute" whose integer constant value (see Section  REF _Ref519589220 \r \h  \* MERGEFORMAT 2.19) is the amount of storage needed to hold the value of the data member. Cxe "C" and C++xe "C++" bit fieldsxe "bit fields" typically require the use of the DW_AT_data_bit_offsetxe "DW_AT_data_bit_offset" and DW_AT_bit_size attributesxe "DW_AT_bit_size". This Standard uses the following bit numbering and direction conventions in examples. These conventions are for illustrative purposes and other conventions may apply on particular architectures. For big-endian architectures, bit offsets are counted from high-order to low-order bits within a byte (or larger storage unit); in this case, the bit offset identifies the high-order bit of the object. For little-endian architectures, bit offsets are counted from low-order to high-order bits within a byte (or larger storage unit); in this case, the bit offset identifies the low-order bit of the object. In either case, the bit so identified is defined as the beginning of the objectxe "beginning of an object". For example, take one possible representation of the following C structure definition in both big- and little-endian byte orders: struct S { int j:5; int k:6; int m:5; int n:8; }; The following diagrams show the structure layout and data bit offsets for example big- and little-endian architectures, respectively. Both diagrams show a structure that begins at address A and whose size is four bytes. Also, high order bits are to the left and low order bits are to the right. Big-Endian Data Bit Offsets: j:0 k:5 m:11 n:16 Addresses increase -> | A | A + 1 | A + 2 | A + 3 | Data bit offsets increase -> +---------------+---------------+---------------+---------------+ |0 4|5 10|11 15|16 23|24 31| | j | k | m | n | | | | | | | | +---------------------------------------------------------------+ Little-Endian Data Bit Offsets: j:0 k:5 m:11 n:16 <- Addresses increase | A + 3 | A + 2 | A + 1 | A | <- Data bit offsets increase +---------------+---------------+---------------+---------------+ |31 24|23 16|15 11|10 5|4 0| | | n | m | k | j | | | | | | | +---------------------------------------------------------------+ Note that data member bit offsets in this example are the same for both big- and little-endian architectures even though the fields are allocated in different directions (high-order to low-order versus low-order to high-order); the bit naming conventions for memory and/or registers of the target architecture may or may not make this seem natural. For a more extensive example showing nested and packed records and arrays, see Appendix D.2.3. Attribute DW_AT_data_bit_offsetxe "DW_AT_data_bit_offset" is new in DWARF Version 4 and is also used for base types (see Section  REF BM5_1_Base_Type_Entries \r \h  \* MERGEFORMAT 5.1). It replaces the attributes DW_AT_bit_offsetxe "DW_AT_bit_offset" and DW_AT_byte_sizexe "DW_AT_byte_size" when used to identify the beginning of bit field data members as defined in DWARF V3 and earlier. The earlier attributes are defined in a manner suitable for bit field members on big-endian architectures but which is either awkward or incomplete for use on little-endian architectures. (DW_AT_byte_size also has other uses that are not affected by this change.) The DW_AT_byte_sizexe "DW_AT_byte_size", DW_AT_bit_sizexe "DW_AT_bit_size" and DW_AT_bit_offsetxe "DW_AT_bit_offset" attribute combination is deprecated for data members in DWARF Version 4, but implementations may continue to support this use for compatibility. The DWARF Version 3xe "DWARF Version 3" definitions of these attributes are as follows. If the data member entry describes a bit field, then that entry has the following attributes: A DW_AT_byte_sizexe "DW_AT_byte_size (V3)" attributexe "byte size attribute (V3)" whose value (see Section  REF _Ref519589220 \r \h  \* MERGEFORMAT 2.19) is the number of bytes that contain an instance of the bit field and any padding bits. The byte size attribute may be omitted if the size of the object containing the bit field can be inferred from the type attribute of the data member containing the bit field. A DW_AT_bit_offsetxe "DW_AT_bit_offset (V3)" attributexe "bit offset attribute (V3)" whose value (see Section  REF _Ref519589220 \r \h  \* MERGEFORMAT 2.19) is the number of bits to the left of the leftmost (most significant) bit of the bit field value. A DW_AT_bit_sizexe "DW_AT_bit_size (V3)" attributexe "bit size attribute (V3)" whose value (see Section  REF _Ref519589220 \r \h  \* MERGEFORMAT 2.19) is the number of bits occupied by the bit field value. The location description for a bit field calculates the address of an anonymous object containing the bit field. The address is relative to the structure, union, or class that most closely encloses the bit field declaration. The number of bytes in this anonymous object is the value of the byte size attribute of the bit field. The offset (in bits) from the most significant bit of the anonymous object to the most significant bit of the bit field is the value of the bit offset attribute. Diagrams similar to the above that show the use of the DW_AT_byte_sizexe "DW_AT_byte_size", DW_AT_bit_size and DW_AT_bit_offset attribute combination may be found in the DWARF Version 3 Standard. In comparing DWARF Versions 3 and 4, note that DWARF V4 defines the following combinations of attributes: either DW_AT_data_member_locationxe "DW_AT_data_member_location" or DW_AT_data_bit_offsetxe "DW_AT_data_bit_offset" (to specify the beginning of the data member) optionally together with either DW_AT_byte_sizexe "DW_AT_byte_size" or DW_AT_bit_sizexe "DW_AT_bit_size" (to specify the size of the data member) DWARF V3 defines the following combinations DW_AT_data_member_locationxe "DW_AT_data_member_location (V3)" (to specify the beginning of the data member, except this specification is only partial in the case of a bit field) optionally together with DW_AT_byte_sizexe "DW_AT_byte_size (V3)", DW_AT_bit_sizexe "DW_AT_bit_size (V3)" and DW_AT_bit_offsetxe "DW_AT_bit_offset (V3)" (to further specify the beginning of a bit field data member as well as specify the size of the data member) Member Function Entries A member functionxe "member function entry" is represented by a debugging information entry with the tag HYPERLINK \l "DW_TAG_subprogram"DW_TAG_subprogramxe "subprogram entry:as member function"xe "DW_TAG_subprogram". The member function entry may contain the same attributes and follows the same rules as non-member global subroutine entries (see Section  REF _Ref516898420 \r \h  \* MERGEFORMAT 3.3). A member function entry may have a HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility" attributexe "accessibility attribute". If no accessibility attribute is present, private access is assumed for an entry of a class and public access is assumed for an entry of a structure, union or interface. If the member function entry describes a virtual function, then that entry has a HYPERLINK \l "DW_AT_virtuality"DW_AT_virtualityxe "DW_AT_virtuality" attributexe "virtuality attribute". If the member function entry describes an explicit member function, then that entry has a  HYPERLINK \l "DW_AT_explicit" DW_AT_explicitxe "DW_AT_explicit" attributexe "explicit attribute". An entry for a virtual function also has a HYPERLINK \l "DW_AT_vtable_elem_location"DW_AT_vtable_elem_locationxe "DW_AT_vtable_elem_location" attributexe "vtable element location attribute" whose value contains a location description yielding the address of the slot for the function within the virtual function table for the enclosing class. The address of an object of the enclosing type is pushed onto the expression stack before the location description is evaluated. If the member function entry describes a non-static member function, then that entry has a  HYPERLINK \l "DW_AT_object_pointer" DW_AT_object_pointerxe "DW_AT_object_pointer" attributexe "object pointer attribute" \bxe "this pointer attribute" \t "See object pointer attribute" \bxe "self pointer attribute" \t "See object pointer attribute" \b whose value is a reference to the formal parameter entry that corresponds to the object for which the function is called. The name attribute of that formal parameter is defined by the current language (for example, this for C++xe "C++" or self for Objective Cxe "Objective C" and some other languages). That parameter also has a  HYPERLINK \l "DW_AT_artificial" DW_AT_artificialxe "DW_AT_artificial" attribute whose value is true. Conversely, if the member function entry describes a static member function, the entry does not have a DW_AT_object_pointer xe "DW_AT_object_pointer"attribute. If the member function entry describes a non-static member function that has a const-volatile qualification, then the entry describes a non-static member function whose object formal parameter has a type that has an equivalent const-volatile qualification. If a subroutine entry represents the defining declaration of a member function and that definition appears outside of the body of the enclosing class declaration, the subroutine entry has a HYPERLINK \l "DW_AT_specification"DW_AT_specificationxe "DW_AT_specification" attributexe "specification attribute", whose value is a HYPERLINK \l "reference"reference to the debugging information entry representing the declaration of this function member. The referenced entry will be a child of some class (or structure) type entry. Subroutine entries containing the HYPERLINK \l "DW_AT_specification"DW_AT_specificationxe "DW_AT_specification" attribute do not need to duplicate information provided by the declaration entry referenced by the specification attribute. In particular, such entries do not need to contain attributes for the name or return type of the function member whose definition they represent. Class Template Instantiations In C++xe "C++" a class template is a generic definition of a class type that may be instantiated when an instance of the class is declared or defined. The generic description of the class may include both parameterized types and parameterized constant values. DWARF does not represent the generic template definition, but does represent each instantiation. A class template instantiationxe "class template instantiation (entry)" is represented by a debugging information entry with the tag HYPERLINK \l "DW_TAG_class_type"DW_TAG_class_typexe "DW_TAG_class_type",xe "class type entry:as class template instantiation"  HYPERLINK \l "DW_TAG_structure_type" DW_TAG_structure_typexe "DW_TAG_structure_type" or  HYPERLINK \l "DW_TAG_union_type" DW_TAG_union_typexe "DW_TAG_union_type". With five exceptions, such an entry will contain the same attributes and have the same types of child entries as would an entry for a class type defined explicitly using the instantiation types and values. The exceptions are: Each formal parameterized type declaration appearing in the template definition is represented by a debugging information entry with the tag HYPERLINK \l "DW_TAG_template_type_parameter"DW_TAG_template_type_parameterxe "template type parameter entry"xe "DW_TAG_template_type_parameter". Each such entry may have a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute", whose value is a null-terminated string containing the name of the formal type parameter as it appears in the source program. The template type parameter entry also has a HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" attributexe "type attribute" describing the actual type by which the formal is replaced for this instantiation. Each formal parameterized value declaration appearing in the template definition is represented by a debugging information entry with the tag DW_TAG_template_value_parameterxe "template value parameter entry"xe "DW_TAG_template_value_parameter". Each such entry may have a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attribute,xe "name attribute" whose value is a null-terminated string containing the name of the formal value parameter as it appears in the source program. The template value parameter entry also has a HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" attributexe "type attribute" describing the type of the parameterized value. Finally, the template value parameter entry has a HYPERLINK \l "DW_AT_const_value"DW_AT_const_valuexe "DW_AT_const_value" attributexe "constant value attribute", whose value is the actual constant value of the value parameter for this instantiation as represented on the target architecture. The class type entry and each of its child entries references a template type parameter entry in any circumstance where the source template definition references a formal parameterized type. Similarly, the class type entry and each of its child entries references a template value parameter entry in any circumstance where the source template definition references a formal parameterized value. If the compiler has generated a special compilation unitxe "compilation unit:for template instantiation" to hold the template instantiationxe "template instantiation:and special compilation unit" and that special compilation unit has a different name from the compilation unit containing the template definition, the name attribute for the debugging information entry representing the special compilation unit should be empty or omitted. If the class type entry representing the template instantiation or any of its child entries contains  HYPERLINK \l "declaration_coordinates" declaration coordinate attributes, those attributes should refer to the source for the template definition, not to any source generated artificially by the compiler. Variant Entries A variant part of a structure is represented by a debugging information entry with the tag DW_TAG_variantxe "DW_TAG_variant"_partxe "variant part entry"xe "discriminant (entry)"xe "DW_TAG_variant_part" and is owned by the corresponding structure type entry. If the variant part has a discriminant, the discriminant is represented by a separate debugging information entry which is a child of the variant part entry. This entry has the form of a structure data member entryxe "member entry (data):as discriminant". The variant part entry will have a HYPERLINK \l "DW_AT_discr"DW_AT_discrxe "DW_AT_discr" attributexe "discriminant attribute" whose value is a HYPERLINK \l "reference"reference to the member entry for the discriminant. If the variant part does not have a discriminant (tag field), the variant part entry has a HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" attributexe "type attribute" to represent the tag type. Each variant of a particular variant part is represented by a debugging information entry with the tag DW_TAG_variantxe "variant entry"xe "DW_TAG_variant" and is a child of the variant part entry. The value that selects a given variant may be represented in one of three ways. The variant entry may have a HYPERLINK \l "DW_AT_discr_value"DW_AT_discrxe "DW_AT_discr"_valuexe "DW_AT_discr_value" attributexe "discriminant value attribute" whose value represents a single case label. The value of this attribute is encoded as an LEB128 number. The number is signed if the tag type for the variant part containing this variant is a signed type. The number is unsigned if the tag type is an unsigned type. Alternatively, the variant entry may contain a HYPERLINK \l "DW_AT_discr_list"DW_AT_discrxe "DW_AT_discr"_listxe "DW_AT_discr_list" attributexe "discriminant list attribute", whose value represents a list of discriminant values. This list is represented by any of the 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 a single label or a label range. A single case label is represented as an LEB128 number as defined above for the HYPERLINK \l "DW_AT_discr_value"DW_AT_discr_valuexe "DW_AT_discr_value" attribute. A label range is represented by two LEB128 numbers, the low value of the range followed by the high value. Both values follow the rules for signedness just described. The discriminant value descriptor is an HYPERLINK \l "constant"integer constant that may have one of the values given in  REF _Ref478443711 \h  \* MERGEFORMAT Figure 17. DW_DSC_labelxe "DW_DSC_label" DW_DSC_rangexe "DW_DSC_range" Figure  SEQ Figure \* ARABIC 17. Discriminant descriptor values If a variant entry has neither a HYPERLINK \l "DW_AT_discr_value"DW_AT_discrxe "DW_AT_discr"_valuexe "DW_AT_discr_value" attribute nor a HYPERLINK \l "DW_AT_discr_list"DW_AT_discr_listxe "DW_AT_discr_list" attribute, or if it has a HYPERLINK \l "DW_AT_discr_list"DW_AT_discr_list attribute with 0 size, the variant is a default variant. The components selected by a particular variant are represented by debugging information entries owned by the corresponding variant entry and appear in the same order as the corresponding declarations in the source program. Condition Entries COBOL has the notion of a level-88 conditionxe "level-88 condition, COBOL"xe "condition, COBOL level-88" that associates a data item, called the conditional variable, with a set of one or more constant values and/or value ranges. Semantically, the condition is  true if the conditional variable's value matches any of the described constants, and the condition is  false otherwise. The DW_TAG_conditionxe "DW_TAG_condition" debugging information entryxe "condition entry" describes a logical condition that tests whether a given data item s value matches one of a set of constant values. If a name has been given to the condition, the condition entry has a  HYPERLINK \l "DW_AT_name" DW_AT_namexe "DW_AT_name" attribute whose value is a null-terminated string giving the condition name as it appears in the source program. The condition entry's parent entry describes the conditional variable; normally this will be a  HYPERLINK \l "DW_TAG_variable" DW_TAG_variablexe "DW_TAG_variable",  HYPERLINK \l "DW_TAG_member" DW_TAG_memberxe "DW_TAG_member" or  HYPERLINK \l "DW_TAG_formal_parameter" DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" entry. If the parent entry has an array type, the condition can test any individual element, but not the array as a whole. The condition entry implicitly specifies a comparison type that is the type of an array element if the parent has an array type; otherwise it is the type of the parent entry. The condition entry owns  HYPERLINK \l "DW_TAG_constant" DW_TAG_constantxe "DW_TAG_constant" and/or  HYPERLINK \l "DW_TAG_subrange_type" DW_TAG_subrange_typexe "DW_TAG_subrange_type" entries that describe the constant values associated with the condition. If any child entry has a  HYPERLINK \l "DW_AT_type" DW_AT_typexe "DW_AT_type" attribute, that attribute should describe a type compatible with the comparison type (according to the source language); otherwise the childs type is the same as the comparison type. For conditional variables with alphanumeric types, COBOL permits a source program to provide ranges of alphanumeric constants in the condition. Normally a subrange type entry does not describe ranges of strings; however, this can be represented using bounds attributes that are references to constant entries describing strings. A subrange type entry may refer to constant entries that are siblings of the subrange type entry. Enumeration Type Entries An enumeration type is a scalar that can assume one of a fixed number of symbolic values. An enumeration type is represented by a debugging information entry with the tag DW_TAG_enumeration_typexe "enumeration type entry"xe "DW_TAG_enumeration_type". If a name has been given to the enumeration type in the source program, then the corresponding enumeration type entry has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attribute xe "name attribute"whose value is a null-terminated string containing the enumeration type name as it appears in the source program. This entry also has a HYPERLINK \l "DW_AT_byte_size"DW_AT_byte_sizexe "DW_AT_byte_size" attributexe "byte size attribute" whose HYPERLINK \l "constant"integer constant value is the number of bytes required to hold an instance of the enumeration. The enumeration type entry may have a  HYPERLINK \l "DW_AT_type" DW_AT_typexe "DW_AT_type" attribute which refers to the underlying data type used to implement the enumeration. If an enumeration type has type safe semanticsxe "type safe enumeration types" such that Enumerators are contained in the scope of the enumeration type, and/or Enumerators are not implicitly converted to another type then the enumeration type entry may have a DW_AT_enum_classxe "DW_AT_enum_class" attribute, which is a flag. In a language that offers only one kind of enumeration declaration, this attribute is not required. In Cxe "C" or C++xe "C++", the underlying type will be the appropriate integral type determined by the compiler from the properties of the enumeration literal values. A C++ type declaration written using enum class declares a strongly typed enumeration and is represented using DW_TAG_enumeration_typexe "DW_TAG_enumeration_type" in combination with DW_AT_enum_classxe "DW_AT_enum_class". Each enumeration literalxe "enumeration literal" \t "See enumerator entry" is represented by a debugging information entry with the tag DW_TAG_enumeratorxe "enumerator entry"xe "DW_TAG_enumerator". Each such entry is a child of the enumeration type entry, and the enumerator entries appear in the same order as the declarations of the enumeration literals in the source program. Each enumerator entry has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute", whose value is a null-terminated string containing the name of the enumeration literal as it appears in the source program. Each enumerator entry also has a HYPERLINK \l "DW_AT_const_value"DW_AT_const_valuexe "DW_AT_const_value" attributexe "constant value attribute", whose value is the actual numeric value of the enumerator as represented on the target system. If the enumeration type occurs as the description of a dimension of an array typexe "enumeration type entry:as array dimension", and the stride for that dimension is different than what would otherwise be determined, then the enumeration type entry has either a DW_AT_byte_stridexe "byte stride attribute"xe "DW_AT_byte_stride" or DW_AT_bit_stridexe "bit stride attribute"xe "DW_AT_bit_stride" attribute which specifies the separation between successive elements along the dimension as described in Section  REF _Ref519589220 \r \h  \* MERGEFORMAT 2.19. The value of the DW_AT_bit_stride attribute is interpreted as bits and the value of the DW_AT_byte_stride attribute is interpreted as bytes. Subroutine Type Entries It is possible in Cxe "C" to declare pointers to subroutines that return a value of a specific type. In both Cxe "C" and C++xe "C++", it is possible to declare pointers to subroutines that not only return a value of a specific type, but accept only arguments of specific types. The type of such pointers would be described with a pointer to modifier applied to a user-defined type. A subroutine type is represented by a debugging information entry with the tag DW_TAG_subroutine_typexe "subroutine type entry"xe "DW_TAG_subroutine_type". If a name has been given to the subroutine type in the source program, then the corresponding subroutine type entry has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute" whose value is a null-terminated string containing the subroutine type name as it appears in the source program. If the subroutine type describes a function that returns a value, then the subroutine type entry has a HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" attributexe "type attribute" to denote the type returned by the subroutine. If the types of the arguments are necessary to describe the subroutine type, then the corresponding subroutine type entry owns debugging information entries that describe the arguments. These debugging information entries appear in the order that the corresponding argument types appear in the source program. In Cxe "C" there is a difference between the types of functions declared using function prototype style declarations and those declared using non-prototype declarations. A subroutine entry declared with a function prototype style declaration may have a HYPERLINK \l "DW_AT_prototyped"DW_AT_prototypedxe "DW_AT_prototyped" attributexe "prototyped attribute", which is a HYPERLINK \l "flag"flag. Each debugging information entry owned by a subroutine type entry has a tag whose value has one of two possible interpretations: The formal parameters of a parameter list (that have a specific type) are represented by a debugging information entry with the tag HYPERLINK \l "DW_TAG_formal_parameter"DW_TAG_formal_parameterxe "formal parameter entry"xe "DW_TAG_formal_parameter". Each formal parameter entry has a  HYPERLINK \l "DW_AT_type" DW_AT_typexe "DW_AT_type" attributexe "type attribute" that refers to the type of the formal parameter. The unspecified parameters of a variable parameter list are represented by a debugging information entry with the tag HYPERLINK \l "DW_TAG_unspecified_parameters"DW_TAG_unspecified_parametersxe "unspecified parameters entry"xe "... parameters" \t "See unspecified parameters entry"xe "DW_TAG_unspecified_parameters". String Type Entries A string is a sequence of characters that have specific semantics and operations that separate them from arrays of characters. Fortranxe "Fortran" is one of the languages that has a string type. Note that string in this context refers to a target machine concept, not the class string as used in this document (except for the name attribute). A string type is represented by a debugging information entry with the tag DW_TAG_string_typexe "string type entry"xe "DW_TAG_string_type". If a name has been given to the string type in the source program, then the corresponding string type entry has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute" whose value is a null- terminated string containing the string type name as it appears in the source program. The string type entry may have a HYPERLINK \l "DW_AT_string_length"DW_AT_string_lengthxe "DW_AT_string_length" attributexe "string length attribute" whose value is a location description yielding the location where the length of the string is stored in the program. The string type entry may also have a HYPERLINK \l "DW_AT_byte_size"DW_AT_byte_sizexe "DW_AT_byte_size" attributexe "byte size attribute" or  HYPERLINK \l "DW_AT_bit_size" DW_AT_bit_sizexe "DW_AT_bit_size" attributexe "bit size attribute", whose value (see Section  REF _Ref230675141 \w \h  \* MERGEFORMAT 2.21) is the size of the data to be retrieved from the location referenced by the string length attribute. If no (byte or bit) size attribute is present, the size of the data to be retrieved is the same as the size of an addressxe "size of an address" on the target machine. If no string length attribute is present, the string type entry may have a HYPERLINK \l "DW_AT_byte_size"DW_AT_byte_sizexe "DW_AT_byte_size" attributexe "byte size attribute" or  HYPERLINK \l "DW_AT_bit_size" DW_AT_bit_sizexe "DW_AT_bit_size" attributexe "bit size attribute", whose value (see Section  REF _Ref230675141 \w \h  \* MERGEFORMAT 2.21) is the amount of storage needed to hold a value of the string type. Set Type Entries Pascalxe "Pascal" provides the concept of a set, which represents a group of values of ordinal type. A set is represented by a debugging information entry with the tag DW_TAG_set_typexe "set type entry"xe "DW_TAG_set_type". If a name has been given to the set type, then the set type entry has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute" whose value is a null-terminated string containing the set type name as it appears in the source program. The set type entry has a HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" attributexe "type attribute" to denote the type of an element of the set. If the amount of storage allocated to hold each element of an object of the given set type is different from the amount of storage that is normally allocated to hold an individual object of the indicated element type, then the set type entry has either a HYPERLINK \l "DW_AT_byte_size"DW_AT_byte_sizexe "DW_AT_byte_size" attribute,xe "byte size attribute" or  HYPERLINK \l "DW_AT_bit_size" DW_AT_bit_sizexe "DW_AT_bit_size" attributexe "bit size attribute" whose value (see Section  REF _Ref230675141 \w \h  \* MERGEFORMAT 2.21) is the amount of storage needed to hold a value of the set type. Subrange Type Entries Several languages support the concept of a subrange type object. These objects can represent a subset of the values that an object of the basis type for the subrange can represent. Subrange type entries may also be used to represent the bounds of array dimensions. A subrange type is represented by a debugging information entry with the tag DW_TAG_subrange_typexe "subrange type entry"xe "DW_TAG_subrange_type". If a name has been given to the subrange type, then the subrange type entry has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute" whose value is a null-terminated string containing the subrange type name as it appears in the source program. The subrange entry may have a HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" attribute to describe the type of object, called the basis type, of whose values this subrange is a subset. If the amount of storage allocated to hold each element of an object of the given subrange type is different from the amount of storage that is normally allocated to hold an individual object of the indicated element type, then the subrange type entry has a HYPERLINK \l "DW_AT_byte_size"DW_AT_byte_sizexe "byte size attribute"xe "DW_AT_byte_size" attribute or  HYPERLINK \l "DW_AT_bit_size" DW_AT_bit_sizexe "DW_AT_bit_size" attributexe "bit size attribute", whose value (see Section  REF _Ref519589220 \r \h  \* MERGEFORMAT 2.19) is the amount of storage needed to hold a value of the subrange type. The subrange entry may have a  HYPERLINK \l "DW_AT_threads_scaled" DW_AT_threads_scaledxe "DW_AT_threads_scaled" attributexe "threads scaled attribute", which is a flag. If present, this attribute indicates whether this subrange represents a UPCxe "UPC" array bound which is scaled by the runtime THREADS value (the number of UPC threads in this execution of the program). This allows the representation of a UPC shared array such as int shared foo[34*THREADS][10][20]; The subrange entry may have the attributes HYPERLINK \l "DW_AT_lower_bound"DW_AT_lower_boundxe "lower bound attribute"xe "DW_AT_lower_bound" and HYPERLINK \l "DW_AT_upper_bound"DW_AT_upper_boundxe "upper bound attribute"xe "DW_AT_upper_bound" to specify, respectively, the lower and upper bound values of the subrange. The HYPERLINK \l "DW_AT_upper_bound"DW_AT_upper_bound attribute may be replaced by a HYPERLINK \l "DW_AT_count"DW_AT_countxe "DW_AT_count" attributexe "count attribute", whose value describes the number of elements in the subrange rather than the value of the last element. The value of each of these attributes is determined as described in Section  REF _Ref519589220 \r \h  \* MERGEFORMAT 2.19. If the lower bound value is missing, the value is assumed to be a language-dependent default constant. The default lower bound is 0 for Cxe "C", C++xe "C++", Dxe "D", Javaxe "Java", Objective Cxe "Objective C", Objective C++,xe "Objective C++," Python, and UPCxe "UPC". The default lower bound is 1 for Ada, COBOLxe "COBOL", Fortranxe "Fortran", Modula-2xe "Modula-2", Pascalxe "Pascal" and PL/Ixe "PL/I". No other default lower bound values are currently defined. xe "count attribute:default"xe "lower bound attribute:default"xe "upper bound attribute:default"If the upper bound and count are missing, then the upper bound value is unknown. If the subrange entry has no type attribute describing the basis type, the basis type is assumed to be the same as the object described by the lower bound attribute (if it references an object). If there is no lower bound attribute, or that attribute does not reference an object, the basis type is the type of the upper bound or count attribute (if either of them references an object). If there is no upper bound or count attribute, or neither references an object, the type is assumed to be the same type, in the source language of the compilation unit containing the subrange entry, as a signed integer with the same size as an address on the target machine. If the subrange type occurs as the description of a dimension of an array type, and the stride for that dimension is different than what would otherwise be determined, then the subrange type entry has either a DW_AT_byte_stridexe "byte stride attribute"xe "DW_AT_byte_stride" or DW_AT_bit_stridexe "bit stride attribute"xe "DW_AT_bit_stride" attribute which specifies the separation between successive elements along the dimension as described in Section  REF _Ref230675141 \r \h 2.21..xe "stride attribute" \t "See bit stride attribute or byte stride attribute" Note that the stride can be negative. Pointer to Member Type Entries In C++xe "C++", a pointer to a data or function member of a class or structure is a unique type. A debugging information entry representing the type of an object that is a pointer to a structure or class member has the tag DW_TAG_ptr_to_member_typexe "pointer to member type entry"xe "DW_TAG_ptr_to_member_type". If the pointer to member type has a name, the pointer to member entry has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute", whose value is a null-terminated string containing the type name as it appears in the source program. The pointer to member entry has a HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" attributexe "type attribute" to describe the type of the class or structure member to which objects of this type may point. The pointer to member entry also has a HYPERLINK \l "DW_AT_containing_type"DW_AT_containing_typexe "DW_AT_containing_type" attributexe "containing type attribute", whose value is a HYPERLINK \l "reference"reference to a debugging information entry for the class or structure to whose members objects of this type may point. The pointer to member entry has a HYPERLINK \l "DW_AT_use_location"DW_AT_use_locationxe "DW_AT_use_location" attributexe "use location attribute" whose value is a location description that computes the address of the member of the class to which the pointer to member entry points. The method used to find the address of a given member of a class or structure is common to any instance of that class or structure and to any instance of the pointer or member type. The method is thus associated with the type entry, rather than with each instance of the type. The HYPERLINK \l "DW_AT_use_location"DW_AT_use_locationxe "DW_AT_use_location" description is used in conjunction with the location descriptions for a particular object of the given pointer to member type and for a particular structure or class instance. The HYPERLINK \l "DW_AT_use_location"DW_AT_use_location attribute expects two values to be pushed onto the DWARF expression stack before the HYPERLINK \l "DW_AT_use_location"DW_AT_use_location description is evaluatedxe "address:implicit push for member pointer". The first value pushed is the value of the pointer to member object itself. The second value pushed is the base address of the entire structure or union instance containing the member whose address is being calculated. For an expression such as object.*mbr_ptr where mbr_ptr has some pointer to member type, a debugger should: Push the value of mbr_ptr onto the DWARF expression stack. Push the base address of object onto the DWARF expression stack. Evaluate the HYPERLINK \l "DW_AT_use_location"DW_AT_use_locationxe "DW_AT_use_location" description given in the type of mbr_ptr. File Type Entries Some languages, such as Pascalxe "Pascal", provide a data type to represent files. A file type is represented by a debugging information entry with the tag DW_TAG_file_typexe "file type entry"xe "DW_TAG_file_type". If the file type has a name, the file type entry has a HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute", whose value is a null-terminated string containing the type name as it appears in the source program. The file type entry has a HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" attributexe "type attribute" describing the type of the objects contained in the file. The file type entry also has a HYPERLINK \l "DW_AT_byte_size"DW_AT_byte_sizexe "DW_AT_byte_size" xe "byte size attribute"or  HYPERLINK \l "DW_AT_bit_size" DW_AT_bit_sizexe "DW_AT_bit_size" attributexe "bit size attribute", whose value (see Section  REF _Ref519589220 \r \h  \* MERGEFORMAT 2.19) is the amount of storage need to hold a value of the file type. Dynamic Type Properties Data Location Some languages may represent objects using descriptors to hold information, including a location and/or run-time parameters, about the data that represents the value for that object. The  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location" attributexe "data location attribute" may be used with any type that provides one or more levels of hidden indirectionxe "hidden indirection" \t "See data location attribute" and/or run-time parameters in its representation. Its value is a  HYPERLINK \l "location_expression" location description. The result of evaluating this description yields the location of the data for an object. When this attribute is omitted, the address of the data is the same as the address of the object. This location description will typically begin with  HYPERLINK \l "DW_OP_push_object_address" DW_OP_push_object_addressxe "DW_OP_push_object_address" which loads the address of the object which can then serve as a descriptor in subsequent calculation. For an example using DW_AT_data_locationxe "DW_AT_data_location" for a Fortran90 array, see Appendix  REF _Ref513880807 \r \h  \* MERGEFORMAT D.2.1. Allocation and Association Status Some languages, such as Fortranxe "Fortran" 90, provide types whose values may be dynamically allocated or associated with a variable under explicit program control. The  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated" attributexe "allocated attribute" may optionally be used with any type for which objects of the type can be explicitly allocated and deallocated. The presence of the attribute indicates that objects of the type are allocatable and deallocatable. The integer value of the attribute (see below) specifies whether an object of the type is currently allocated or not. The  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated" attributexe "associated attribute" may optionally be used with any type for which objects of the type can be dynamically associated with other objects. The presence of the attribute indicates that objects of the type can be associated. The integer value of the attribute (see below) indicates whether an object of the type is currently associated or not. While these attributes are defined specifically with Fortranxe "Fortran" 90 ALLOCATABLE and POINTER types in mind, usage is not limited to just that language. The value of these attributes is determined as described in Section  REF _Ref519589220 \r \h  \* MERGEFORMAT 2.19. A non-zero value is interpreted as allocated or associated, and zero is interpreted as not allocated or not associated. For Fortran 90, if the DW_AT_associatedxe "DW_AT_associated" attribute is present, the type has the POINTER property where either the parent variable is never associated with a dynamic object or the implementation does not track whether the associated object is static or dynamic. If the DW_AT_allocatedxe "DW_AT_allocated" attribute is present and the DW_AT_associated attribute is not, the type has the ALLOCATABLE property. If both attributes are present, then the type should be assumed to have the POINTER property (and not ALLOCATABLE); the DW_AT_allocatedxe "DW_AT_allocated" attribute may then be used to indicate that the association status of the object resulted from execution of an ALLOCATE statement rather than pointer assignment. For examples using DW_AT_allocatedxe "DW_AT_allocated" for Adaxe "Ada" and Fortran 90 arrays, see Appendix  REF _Ref513880859 \r \h  \* MERGEFORMAT D.2. Template Alias Entries A type named using a template alias is represented by a debugging information entry with the tag DW_TAG_template_aliasxe "DW_TAG_template_alias"xe "Template alias entry". The template alias entry has a  HYPERLINK \l "DW_AT_name" DW_AT_namexe "DW_AT_name" attribute whose value is a null-terminated string containing the name of the template alias as it appears in the source program. The template alias entry also contains a  HYPERLINK \l "DW_AT_type" DW_AT_typexe "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: Each formal parameterized type declaration appearing in the template alias declaration is represented by a debugging information entry with the tag  HYPERLINK \l "DW_TAG_template_type_parameter" DW_TAG_template_type_parameterxe "DW_TAG_template_type_parameter". Each such entry may have a DW_AT_name attribute, whose value is a null-terminated string containing the name of the formal type parameter as it appears in the source program. The template type parameter entry also has a DW_AT_type attribute describing the actual type by which the formal is replaced for this instantiation. Each formal parameterized value declaration appearing in the template alias declaration is represented by a debugging information entry with the tag  HYPERLINK \l "DW_TAG_template_value_parameter" DW_TAG_template_value_parameterxe "DW_TAG_template_value_parameter". Each such entry may have a DW_AT_namexe "DW_AT_name" attribute, whose value is a null-terminated string containing the name of the formal value parameter as it appears in the source program. The template value parameter entry also has a DW_AT_typexe "DW_AT_type" attribute describing the type of the parameterized value. Finally, the template value parameter entry has a  HYPERLINK \l "DW_AT_const_value" DW_AT_const_valuexe "DW_AT_const_value" attribute, whose value is the actual constant value of the value parameter for this instantiation as represented on the target architecture. OTHER DEBUGGING INFORMATION This section describes debugging information that is not represented in the form of debugging information entries and is not contained within a .debug_infoxe ".debug_info" or .debug_typesxe ".debug_types" section. In the descriptions that follow, these terms are used to specify the representation of DWARF sections: Initial length, section offset and section length, which are defined in Sections  REF _Ref519667129 \r \h  \* MERGEFORMAT 7.2.2 and  REF BM7_4_File_Constraints \r \h  \* MERGEFORMAT 7.4. Sbytexe "sbyte", ubytexe "ubyte", uhalfxe "uhalf", and uwordxe "uword", which are defined in Section  REF _Ref483181048 \n \h 7.26. Accelerated Access A debugger frequently needs to find the debugging information for a program entity defined outside of the compilation unit where the debugged program is currently stopped. Sometimes the debugger will know only the name of the entity; sometimes only the address. To find the debugging information associated with a global entity by name, using the DWARF debugging information entries alone, a debugger would need to run through all entries at the highest scope within each compilation unit. Similarly, in languages in which the name of a type is required to always refer to the same concrete type (such as C++xe "C++"), a compiler may choose to elide type definitions in all compilation units except one. In this case a debugger needs a rapid way of locating the concrete type definition by name. As with the definition of global data objects, this would require a search of all the top level type definitions of all compilation units in a program. To find the debugging information associated with a subroutine, given an address, a debugger can use the low and high pc attributes of the compilation unit entries to quickly narrow down the search, but these attributes only cover the range of addresses for the text associated with a compilation unit entry. To find the debugging information associated with a data object, given an address, an exhaustive search would be needed. Furthermore, any search through debugging information entries for different compilation units within a large program would potentially require the access of many memory pages, probably hurting debugger performance. To make lookups of program entities (data objects, functions and types) by name or by address fasterxe "accelerated access", a producer of DWARF information may provide three different types of tables containing information about the debugging information entries owned by a particular compilation unit entry in a more condensed format. Lookup by Name For lookup by namexe "accelerated access:by name"xe "lookup:by name", two tables are maintained in separate object file sections named .debug_pubnamesxe ".debug_pubnames" for objects and functions, and .debug_pubtypesxe ".debug_pubtypes" for types. Each table consists of sets of variable length entries. Each set describes the names of global objects and functions, or global types, respectively, whose definitions are represented by debugging information entries owned by a single compilation unit. C++xe "C++" member functions with a definition in the class declaration are definitions in every compilation unit containing the class declaration, but if there is no concrete out-of-line instance there is no need to have a .debug_pubnames entry for the member function. Each set begins with a header containing four values: unit_lengthxe "unit_length" (HYPERLINK \l "initial_length_field"initial lengthxe "initial length field") The total length of the all of the entries for that set, not including the length field itself (see Section  REF _Ref519667129 \n \h  \* MERGEFORMAT 7.2.2). versionxe "version number:name lookup table" (uhalfxe "uhalf") A version number (see Section  REF _Ref249090119 \r \h  \* MERGEFORMAT 7.19). This number is specific to the name lookup table and is independent of the DWARF version number. debug_info_offset (section offsetxe "section offset:in .debug_pubnames header")xe "section offset:in .debug_pubtypes header" The offset from the beginning of the .debug_infoxe ".debug_info" section of the compilation unit header referenced by the set. debug_info_length (section lengthxe "section length:in .debug_pubnames header"xe "section length:in .debug_pubtypes header") The size in bytes of the contents of the .debug_infoxe ".debug_info" section generated to represent that compilation unit. This header is followed by a variable number of offset/name pairs. Each pair consists of the section offsetxe "section offset:in .debug_pubnames offset/name pair"xe "section offset:in .debug_pubtypes name/offset pair" from the beginning of the compilation unit corresponding to the current set to the debugging information entry for the given object, followed by a null-terminated character string representing the name of the object as given by the HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attributexe "name attribute" of the referenced debugging information entry. Each set of names is terminated by an offset field containing zero (and no following string). In the case of the name of a function member or static data member of a C++xe "C++" structure, class or union, the name presented in the .debug_pubnames section is not the simple name given by the HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" attribute of the referenced debugging information entry, but rather the fully qualified name of the data or function member. Lookup by Address For lookup by addressxe "accelerated access:by address"xe "lookup:by address", a table is maintained in a separate object file section called .debug_arangesxe ".debug_aranges". The table consists of sets of variable length entries, each set describing the portion of the programs address space that is covered by a single compilation unit. Each set begins with a header containing five values: unit_lengthxe "unit_length" ( HYPERLINK \l "initial_location" initial lengthxe "initial length field") The total length of all of the entries for that set, not including the length field itself (see Section  REF _Ref519667129 \n \h  \* MERGEFORMAT 7.2.2). versionxe "version number:address lookup table" (uhalfxe "uhalf") A version number (see  REF _Ref114543352 \n \h  \* MERGEFORMAT Appendix F). This number is specific to the address lookup table and is independent of the DWARF version number. debug_info_offset (section offsetxe "section length:in .debug_aranges header") The offset from the beginning of the .debug_infoxe ".debug_info" or .debug_typesxe ".debug_types" section of the compilation unit header referenced by the set. address_sizexe "address_size" (ubytexe "ubyte") The size of axe "size of an address"n addressxe "size of an address" in bytes on the target architecture. For segmented addressingxe "address space:segmented", this is the size of the offset portion of the address. segment_sizexe "segment_size" (ubytexe "ubyte") The size of a segment selector in bytes on the target architecture. If the target system uses a flat address space, this value is 0. This header is followed by a variable number of address range descriptors. Each descriptor is a triple consisting of a segment selector, the beginning address within that segment of a range of text or data covered by some entry owned by the corresponding compilation unit, followed by the non-zero length of that range. A particular set is terminated by an entry consisting of three zeroes. When the segment_sizexe "segment_size" value is zero in the header, the segment selector is omitted so that each descriptor is just a pair, including the terminating entry. By scanning the table, a debugger can quickly decide which compilation unit to look in to find the debugging information for an object that has a given address. If the range of addresses covered by the text and/or data of a compilation unit is not contiguous, then there may be multiple address range descriptors for that compilation unit. Line Number Information A source-level debugger will need to know how to associate locations in the source files with the corresponding machine instruction addresses in the executable object or the shared objects used by that executable object. Such an association would make it possible for the debugger user to specify machine instruction addresses in terms of source locations. This would be done by specifying the line number and the source file containing the statement. The debugger can also use this information to display locations in terms of the source files and to single step from line to line, or statement to statement. Line number information generated for a compilation unit is represented in the .debug_linexe ".debug_line" section of an object file and is referenced by a corresponding compilation unit debugging information entry (see Section  REF _Ref516902159 \r \h  \* MERGEFORMAT 3.1.1) in the .debug_infoxe ".debug_info" section. Some computer architectures employ more than one instruction set (for example, the ARMxe "ARM instruction set architecture" and MIPSxe "MIPS instruction set architecture" architectures support a 32-bit as well as a 16-bit instruction set). Because the instruction set is a function of the program counter, it is convenient to encode the applicable instruction set in the .debug_line section as well. If space were not a consideration, the information provided in the .debug_line section could be represented as a large matrix, with one row for each instruction in the emitted object code. The matrix would have columns for: the source file name the source line number the source column number whether this instruction is the beginning of a source statement whether this instruction is the beginning of a basic block and so on Such a matrix, however, would be impractically large. We shrink it with two techniques. First, we delete from the matrix each row whose file, line, source column and discriminator information is identical with that of its predecessors. Any deleted row would never be the beginning of a source statement. Second, we design a byte-coded language for a state machine and store a stream of bytes in the object file instead of the matrix. This language can be much more compact than the matrix. When a consumer of the line number information executes, it must run the state machine to generate the matrix for each compilation unit it is interested in. The concept of an encoded matrix also leaves room for expansion. In the future, columns can be added to the matrix to encode other things that are related to individual instruction addresses. When the set of addresses of a compilation unit cannot be described as a single contiguous range, there will be a separate matrix for each contiguous subrange. Definitions The following terms are used in the description of the line number information format: state machine The hypothetical machine used by a consumer of the line number information to expand the byte-coded instruction stream into a matrix of line number information. line number program A series of byte-coded line number information instructions representing one compilation unit. basic 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. A basic block does not necessarily correspond to a specific source code construct. sequence A series of contiguous target machine instructions. One compilation unit may emit multiple sequences (that is, not all instructions within a compilation unit are assumed to be contiguous). State Machine Registers The line number information state machine has the following registers: address xe "address register:in line number machine"The program-counter value corresponding to a machine instruction generated by the compiler. op_index xe "op_index"An unsigned integer representing the index of an operation within a VLIW instruction. The index of the first operation is 0. For non-VLIW architectures, this register will always be 0. The address and op_index registers, taken together, form an operation pointerxe "operation pointer" that can reference any individual operation with the instruction stream. file An unsigned integer indicating the identity of the source file corresponding to a machine instruction. line An unsigned integer indicating a source line number. Lines are numbered beginning at 1. The compiler may emit the value 0 in cases where an instruction cannot be attributed to any source line. column An unsigned integer indicating a column number within a source line. Columns are numbered beginning at 1. The value 0 is reserved to indicate that a statement begins at the left edge of the line. is_stmt xe "is_stmt"A boolean indicating that the current instruction is a recommended breakpoint location. A recommended breakpoint location is intended to represent a line, a statement and/or a semantically distinct subpart of a statement. basic_block xe "basic_block"A boolean indicating that the current instruction is the beginning of a basic block. end_sequence xe "end_sequence"A boolean indicating that the current address is that of the first byte after the end of a sequence of target machine instructions. end_sequence terminates a sequence of lines; therefore other information in the same row is not meaningful. prologue_end xe "prologue_end"A boolean indicating that the current address is one (of possibly many) where execution should be suspended for an entry breakpoint of a function. epilogue_begin xe "epilogue_begin"A boolean indicating that the current address is one (of possibly many) where execution should be suspended for an exit breakpoint of a function. isa xe "isa"An unsigned integer whose value encodes the applicable instruction set architecture for the current instruction. The encoding of instruction sets should be shared by all users of a given architecture. It is recommended that this encoding be defined by the ABI authoring committee for each architecture. discriminator xe "discriminator"An unsigned integer identifying the 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 exists for a given source position, the discriminator value should be zero. At the beginning of each sequence within a line number program, the state of the registers is: address 0 op_indexxe "op_index" 0 file 1 line 1 column 0 is_stmtxe "is_stmt" determined by default_is_stmtxe "default_is_stmt" in the line number program header basic_blockxe "basic_block" false end_sequencexe "end_sequence" false prologue_endxe "prologue_end" false epilogue_beginxe "epilogue_begin" false isaxe "isa" 0 discriminatorxe "discriminator" 0 The isa value 0 specifies that the instruction set is the architecturally determined default instruction set. This may be fixed by the ABI, or it may be specified by other means, for example, by the object file description. Line Number Program Instructions The state machine instructions in a line number program belong to one of three categories: special opcodes These have a ubytexe "ubyte" opcode field and no operands. Most of the instructions in a line number program are special opcodes. standard opcodes These have a ubytexe "ubyte" opcode field which may be followed by zero or more LEB128 operands (except for HYPERLINK \l "DW_LNS_fixed_advance_pc"DW_LNS_fixed_advance_pcxe "DW_LNS_fixed_advance_pc", see below). The opcode implies the number of operands and their meanings, but the line number program header also specifies the number of operands for each standard opcode. extended opcodes These have a multiple byte format. The first byte is zero; the next bytes are an unsigned LEB128 integer giving the number of bytes in the instruction itself (does not include the first zero byte or the size). The remaining bytes are the instruction itself (which begins with a ubyte extended opcode). The Line Number Program Header The optimal encoding of line number information depends to a certain degree upon the architecture of the target machine. The line number program header provides information used by consumers in decoding the line number program instructions for a particular compilation unit and also provides information used throughout the rest of the line number program. The line number program for each compilation unit begins with a header containing the following fields in order: unit_lengthxe "unit_length" (HYPERLINK \l "initial_length_field"initial lengthxe "initial length field") The size in bytes of the line number information for this compilation unit, not including the unit_lengthxe "unit_length" field itself (see Section  REF _Ref519667129 \n \h  \* MERGEFORMAT 7.2.2). versionxe "version number:line number information" (uhalfxe "uhalf") A version number (see  REF _Ref114543352 \n \h Appendix F). This number is specific to the line number information and is independent of the DWARF version number. header_length The number of bytes following the header_length field to the beginning of the first byte of the line number program itself. In the  HYPERLINK \l "bit32_dwarf_format"  HYPERLINK \l "bit32_dwarf_format"  HYPERLINK \l "bit32_dwarf_format" 32-bit DWARF format, this is a 4-byte unsigned length; in the  HYPERLINK \l "bit64_dwarf_format" 64-bit DWARF format, this field is an 8-byte unsigned length (see Section  REF BM7_4_File_Constraints \n \h  \* MERGEFORMAT 7.4). minimum_instruction_lengthxe "minimum_instruction_length" (ubytexe "ubyte") The size in bytes of the smallest target machine instruction. Line number program opcodes that alter the address and op_indexxe "op_index" registers use this and maximum_operations_per_instructionxe "maximum_operations_per_instruction" in their calculations. maximum_operations_per_instructionxe "maximum_operations_per_instruction" (ubyte) The maximum number of individual operations that may be encoded in an instruction. Line number program opcodes that alter the address and op_indexxe "op_index" registers use this and minimum_instruction_lengthxe "minimum_instruction_length" in their calculations. For non-VLIW architectures, this field is 1, the op_indexxe "op_index" register is always 0, and the operation pointerxe "operation pointer" is simply the address register. default_is_stmtxe "default_is_stmt" (ubytexe "ubyte") The initial value of the is_stmtxe "is_stmt" register. A simple approach to building line number information when machine instructions are emitted in an order corresponding to the source program is to set default_is_stmt to true and to not change the value of the is_stmt register within the line number program. One matrix entry is produced for each line that has code generated for it. The effect is that every entry in the matrix recommends the beginning of each represented line as a breakpoint location. This is the traditional practice for unoptimized code. A more sophisticated approach might involve multiple entries in the matrix for a line number; in this case, at least one entry (often but not necessarily only one) specifies a recommended breakpoint location for the line number. DW_LNS_negate_stmtxe "DW_LNS_negate_stmt" opcodes in the line number program control which matrix entries constitute such a recommendation and default_is_stmt might be either true or false. This approach might be used as part of support for debugging optimized code. line_basexe "line_base" (sbytexe "sbyte") This parameter affects the meaning of the special opcodes. See below. line_rangexe "line_range" (ubytexe "ubyte") This parameter affects the meaning of the special opcodes. See below. opcode_basexe "opcode_base" (ubytexe "ubyte") The number assigned to the first special opcode. Opcode base is typically one greater than the highest-numbered standard opcode defined for the specified version of the line number information (12 in DWARF Version 3xe "DWARF Version 3" and Version 4, 9 in Version 2xe "DWARF Version 2"). If opcode_base is less than the typical value, then standard opcode numbers greater than or equal to the opcode base are not used in the line number table of this unit (and the codes are treated as special opcodes). If opcode_base is greater than the typical value, then the numbers between that of the highest standard opcode and the first special opcode (not inclusive) are used for vendor specific extensionsxe "vendor extensibility". standard_opcode_lengthsxe "standard_opcode_lengths" (array of ubytexe "ubyte") This array specifies the number of LEB128 operands for each of the standard opcodes. The first element of the array corresponds to the opcode whose value is 1, and the last element corresponds to the opcode whose value is opcode_basexe "opcode_base" - 1. By increasing opcode_base, and adding elements to this array, new standard opcodes can be added, while allowing consumers who do not know about these new opcodes to be able to skip them. Codes for vendor specific extensionsxe "vendor extensibility", if any, are described just like standard opcodes. include_directoriesxe "include_directories" (sequence of path names) Entries in this sequence describe each path that was searched for included source files in this compilation. (The paths include those directories specified explicitly by the user for the compiler to search and those the compiler searches without explicit direction.) Each path entry is either a full path name or is relative to the current directory of the compilation. The last entry is followed by a single null byte. The line number program assigns numbers to each of the file entries in order, beginning with 1. The current directory of the compilation is understood to be the zeroth entry and is not explicitly represented. file_namesxe "file_names" (sequence of file entries) Entries in this sequence describe source files that contribute to the line number information for this compilation unit or is used in other contexts, such as in a  HYPERLINK \l "declaration_coordinates" declaration coordinate or a macro file inclusion. Each entry consists of the following values: A null-terminated string containing the full or relative path name of a source file. If the entry contains a file name or relative path name, the file is located relative to either the compilation directory (as specified by the DW_AT_comp_dirxe "DW_AT_comp_dir" attribute given in the compilation unit) or one of the directories listed in the include_directoriesxe "include_directories" section. An unsigned LEB128 number representing the directory index of a directory in the include_directories section. An unsigned LEB128 number representing the (implementation-defined) time of last modification for the file, or 0 if not available. An unsigned LEB128 number representing the length in bytes of the file, or 0 if not available. The last entry is followed by a single null byte. The directory index represents an entry in the include_directoriesxe "include_directories" section. The index is 0 if the file was found in the current directory of the compilation, 1 if it was found in the first directory in the include_directories section, and so on. The directory index is ignored for file names that represent full path names. The primary source file is described by an entry whose path name exactly matches that given in the DW_AT_namexe "DW_AT_name" attribute in the compilation unit, and whose directory is understood to be given by the implicit entry with index 0. The line number program assigns numbers to each of the file entries in order, beginning with 1, and uses those numbers instead of file names in the file register. A compiler may generate a single null byte for the file names field and define file names using the extended opcode  HYPERLINK \l "DW_LNE_define_file" DW_LNE_define_filexe "DW_LNE_define_file". The Line Number Program As stated before, the goal of a line number program is to build a matrix representing one compilation unit, which may have produced multiple sequences of target machine instructions. Within a sequence, addresses (operation pointers) may only increase. (Line numbers may decrease in cases of pipeline scheduling or other optimization.) Special Opcodes Each ubytexe "ubyte" special opcode has the following effect on the state machine: Add a signed integer to the line register. Modify the operation pointerxe "operation pointer" by incrementing the address and op_indexxe "op_index" registers as described below. Append a row to the matrix using the current values of the state machine registers. Set the basic_blockxe "basic_block" register to false. Set the prologuexe "prologue"_end register to false. Set the epiloguexe "epilogue"_begin register to false. Set the discriminatorxe "discriminator" register to 0. All of the special opcodes do those same seven things; they differ from one another only in what values they add to the line, address and op_indexxe "op_index" registers. Instead of assigning a fixed meaning to each special opcode, the line number program uses several parameters in the header to configure the instruction set. There are two reasons for this. First, although the opcode space available for special opcodes now ranges from 13 through 255, the lower bound may increase if one adds new standard opcodes. Thus, the opcode_basexe "opcode_base" field of the line number program header gives the value of the first special opcode. Second, the best choice of special-opcode meanings depends on the target architecture. For example, for a RISC machine where the compiler-generated code interleaves instructions from different lines to schedule the pipeline, it is important to be able to add a negative value to the line register to express the fact that a later instruction may have been emitted for an earlier source line. For a machine where pipeline scheduling never occurs, it is advantageous to trade away the ability to decrease the line register (a standard opcode provides an alternate way to decrease the line number) in return for the ability to add larger positive values to the address register. To permit this variety of strategies, the line number program header defines a line_basexe "line_base" field that specifies the minimum value which a special opcode can add to the line register and a line_rangexe "line_range" field that defines the range of values it can add to the line register. A special opcode value is chosen based on the amount that needs to be added to the line, address and op_indexxe "op_index" registers. The maximum line increment for a special opcode is the value of the line_base field in the header, plus the value of the line_rangexe "line_range" field, minus 1 (line base + line range - 1). If the desired line increment is greater than the maximum line increment, a standard opcode must be used instead of a special opcode. The operation advancexe "operation advance" represents the number of operations to skip when advancing the operation pointerxe "operation pointer". The special opcode is then calculated using the following formula: opcode = (desired line increment - line_basexe "line_base") + (line_rangexe "line_range" * operation advancexe "operation advance") + opcode_basexe "opcode_base" If the resulting opcode is greater than 255, a standard opcode must be used instead. When maximum_operations_per_instructionxe "maximum_operations_per_instruction" is 1, the operation advance is simply the address increment divided by the minimum_instruction_lengthxe "minimum_instruction_length". To decode a special opcode, subtract the opcode_base from the opcode itself to give the adjusted opcode. The operation advancexe "operation advance" is the result of the adjusted opcode divided by the line_rangexe "line_range". The new address and op_indexxe "op_index" values are given by adjusted opcode = opcode opcode_basexe "opcode_base" operation advancexe "operation advance" = adjusted opcode / line_rangexe "line_range" new address = address + minimum_instruction_lengthxe "minimum_instruction_length" * ((op_indexxe "op_index" + operation advancexe "operation advance")/maximum_operations_per_instructionxe "maximum_operations_per_instruction") new op_indexxe "op_index" = (op_indexxe "op_index" + operation advancexe "operation advance") % maximum_operations_per_instruction When the maximum_operations_per_instructionxe "maximum_operations_per_instruction" field is 1, op_indexxe "op_index" is always 0 and these calculations simplify to those given for addresses in DWARF Version 3xe "DWARF Version 3". The amount to increment the line register is the line_basexe "line_base" plus the result of the adjusted opcode modulo the line_rangexe "line_range". That is, line increment = line_base + (adjusted opcode % line_range) As an example, suppose that the opcode_base is 13, line_base is -3, line_range is 12, minimum_instruction_lengthxe "minimum_instruction_length" is 1 and maximum_operations_per_instructionxe "maximum_operations_per_instruction" is 1. This means that we can use a special opcode whenever two successive rows in the matrix have source line numbers differing by any value within the range [-3, 8] and (because of the limited number of opcodes available) when the difference between addresses is within the range [0, 20], but not all line advances are available for the maximum operation advance (see below). The opcode mapping would be: \ Line advance Operation \ Advance \ -3 -2 -1 0 1 2 3 4 5 6 7 8 --------- ----------------------------------------------- 0 13 14 15 16 17 18 19 20 21 22 23 24 1 25 26 27 28 29 30 31 32 33 34 35 36 2 37 38 39 40 41 42 43 44 45 46 47 48 3 49 50 51 52 53 54 55 56 57 58 59 60 4 61 62 63 64 65 66 67 68 69 70 71 72 5 73 74 75 76 77 78 79 80 81 82 83 84 6 85 86 87 88 89 90 91 92 93 94 95 96 7 97 98 99 100 101 102 103 104 105 106 107 108 8 109 110 111 112 113 114 115 116 117 118 119 120 9 121 122 123 124 125 126 127 128 129 130 131 132 10 133 134 135 136 137 138 139 140 141 142 143 144 11 145 146 147 148 149 150 151 152 153 154 155 156 12 157 158 159 160 161 162 163 164 165 166 167 168 13 169 170 171 172 173 174 175 176 177 178 179 180 14 181 182 183 184 185 186 187 188 189 190 191 192 15 193 194 195 196 197 198 199 200 201 202 203 204 16 205 206 207 208 209 210 211 212 213 214 215 216 17 217 218 219 220 221 222 223 224 225 226 227 228 18 229 230 231 232 233 234 235 236 237 238 239 240 19 241 242 243 244 245 246 247 248 249 250 251 252 20 253 254 255 There is no requirement that the expression 255 - line_basexe "line_base" + 1 be an integral multiple of line_rangexe "line_range". Standard Opcodes The standard opcodes, their applicable operands and the actions performed by these opcodes are as follows: DW_LNS_copyxe "DW_LNS_copy" The DW_LNS_copyxe "DW_LNS_copy" opcode takes no operands. It appends a row to the matrix using the current values of the state machine registers. Then it sets the discriminatorxe "discriminator" register to 0, and sets the basic_blockxe "basic_block", prologue_endxe "prologue_end" and epilogue_beginxe "epilogue_end" registers to false. DW_LNS_advance_pcxe "DW_LNS_advance_pc" The DW_LNS_advance_pcxe "DW_LNS_advance_pc" opcode takes a single unsigned LEB128 operand as the operation advancexe "operation advance" and modifies the address and op_indexxe "op_index" registers as specified in Section  REF BM6_2_5_1_Special_Opcodes \n \h  \* MERGEFORMAT 6.2.5.1. DW_LNS_advance_linexe "DW_LNS_advance_line" The DW_LNS_advance_linexe "DW_LNS_advance_line" opcode takes a single signed LEB128 operand and adds that value to the line register of the state machine. DW_LNS_set_filexe "DW_LNS_set_file" The DW_LNS_set_filexe "DW_LNS_set_file" opcode takes a single unsigned LEB128 operand and stores it in the file register of the state machine. DW_LNS_set_columnxe "DW_LNS_set_column" The DW_LNS_set_columnxe "DW_LNS_set_column" opcode takes a single unsigned LEB128 operand and stores it in the column register of the state machine. DW_LNS_negate_stmtxe "DW_LNS_negate_stmt" The DW_LNS_negate_stmtxe "DW_LNS_negate_stmt" opcode takes no operands. It sets the is_stmtxe "is_stmt" register of the state machine to the logical negation of its current value. DW_LNS_set_basic_blockxe "DW_LNS_set_basic_block" The DW_LNS_set_basic_blockxe "DW_LNS_set_basic_block" opcode takes no operands. It sets the basic_blockxe "basic_block" register of the state machine to true. DW_LNS_const_add_pcxe "DW_LNS_const_add_pc" The DW_LNS_const_add_pcxe "DW_LNS_const_add_pc" opcode takes no operands. It advances the address and op_indexxe "op_index" registers by the increments corresponding to special opcode 255. When the line number program needs to advance the address by a small amount, it can use a single special opcode, which occupies a single byte. When it needs to advance the address by up to twice the range of the last special opcode, it can use DW_LNS_const_add_pc followed by a special opcode, for a total of two bytes. Only if it needs to advance the address by more than twice that range will it need to use both HYPERLINK \l "DW_LNS_advance_pc"DW_LNS_advance_pcxe "DW_LNS_advance_pc" and a special opcode, requiring three or more bytes. DW_LNS_fixed_advance_pcxe "DW_LNS_fixed_advance_pc" The DW_LNS_fixed_advance_pcxe "DW_LNS_fixed_advance_pc" opcode takes a single uhalfxe "uhalf" (unencoded) operand and adds it to the address register of the state machine and sets the op_indexxe "op_index" register to 0. This is the only standard opcode whose operand is not a variable length number. It also does not multiply the operand by the minimum_instruction_lengthxe "minimum_instruction_length" field of the header. Existing assemblers cannot emit HYPERLINK \l "DW_LNS_advance_pc"DW_LNS_advance_pcxe "DW_LNS_advance_pc" or special opcodes because they cannot encode LEB128 numbers or judge when the computation of a special opcode overflows and requires the use of HYPERLINK \l "DW_LNS_advance_pc"DW_LNS_advance_pc. Such assemblers, however, can use DW_LNS_fixed_advance_pc instead, sacrificing compression. DW_LNS_set_prologue_endxe "DW_LNS_set_prologue_end"xe "prologue" The DW_LNS_set_prologuexe "prologue"_endxe "DW_LNS_set_prologue_end" opcode takes no operands. It sets the prologue_endxe "prologue_end" register to true. When a breakpoint is set on entry to a function, it is generally desirable for execution to be suspended, not on the very first instruction of the function, but rather at a point after the function's frame has been set up, after any language defined local declaration processing has been completed, and before execution of the first statement of the function begins. Debuggers generally cannot properly determine where this point is. This command allows a compiler to communicate the location(s) to use. In the case of optimized code, there may be more than one such location; for example, the code might test for a special case and make a fast exit prior to setting up the frame. Note that the function to which the prologuexe "prologue" end applies cannot be directly determined from the line number information alone; it must be determined in combination with the subroutine information entries of the compilation (including inlined subroutines). DW_LNS_set_epilogue_beginxe "DW_LNS_set_epilogue_begin"xe "epilogue" The DW_LNS_set_epiloguexe "epilogue"_begin opcode takes no operands. It sets the epilogue_beginxe "epilogue_begin" register to true. When a breakpoint is set on the exit of a function or execution steps over the last executable statement of a function, it is generally desirable to suspend execution after completion of the last statement but prior to tearing down the frame (so that local variables can still be examined). Debuggers generally cannot properly determine where this point is. This command allows a compiler to communicate the location(s) to use. Note that the function to which the epiloguexe "epilogue" end applies cannot be directly determined from the line number information alone; it must be determined in combination with the subroutine information entries of the compilation (including inlined subroutines). In the case of a trivial function, both prologuexe "prologue" end and epiloguexe "epilogue" begin may occur at the same address. DW_LNS_set_isaxe "DW_LNS_set_isa" The DW_LNS_set_isaxe "DW_LNS_set_isa" opcode takes a single unsigned LEB128 operand and stores that value in the isaxe "isa" register of the state machine. Extended Opcodes The extended opcodes are as follows: DW_LNE_end_sequencexe "DW_LNE_end_sequence" The DW_LNE_end_sequence opcode takes no operands. It sets the end_sequencexe "end_sequence" register of the state machine to true and appends a row to the matrix using the current values of the state-machine registers. Then it resets the registers to the initial values specified above (see Section  REF BM6_2_2_State_Machine_Registers \n \h  \* MERGEFORMAT 6.2.2). Every line number program sequence must end with a DW_LNE_end_sequencexe "DW_LNE_end_sequence" instruction which creates a row whose address is that of the byte after the last target machine instruction of the sequence. DW_LNE_set_addressxe "DW_LNE_set_address" The DW_LNE_set_addressxe "DW_LNE_set_address" opcode takes a single relocatable address as an operand. The size of the operand is the size of an address on the target machine. It sets the address register to the value given by the relocatable address and sets the op_indexxe "op_index" register to 0. All of the other line number program opcodes that affect the address register add a delta to it. This instruction stores a relocatable value into it instead. DW_LNE_define_filexe "DW_LNE_define_file" The DW_LNE_define_filexe "DW_LNE_define_file" opcode takes four operands: A null-terminated string containing the full or relative path name of a source file. If the entry contains a file name or a relative path name, the file is located relative to either the compilation directory (as specified by the DW_AT_comp_dirxe "DW_AT_comp_dir" attribute given in the compilation unit) or one of the directories in the include_directoriesxe "include_directories" section. An unsigned LEB128 number representing the directory index of the directory in which the file was found. An unsigned LEB128 number representing the time of last modification of the file, or 0 if not available. An unsigned LEB128 number representing the length in bytes of the file, or 0 if not available. The directory index represents an entry in the include_directoriesxe "include_directories" section of the line number program header. The index is 0 if the file was found in the current directory of the compilation, 1 if it was found in the first directory in the include_directories section, and so on. The directory index is ignored for file names that represent full path names. The primary source file is described by an entry whose path name exactly matches that given in the DW_AT_namexe "DW_AT_name" attribute in the compilation unit, and whose directory index is 0. The files are numbered, starting at 1, in the order in which they appear; the names in the header come before names defined by the DW_LNE_define_filexe "DW_LNE_define_file" instruction. These numbers are used in the file register of the state machine. DW_LNE_set_discriminator The DW_LNE_set_discriminatorxe "DW_LNE_set_discriminator" opcode takes a single parameter, an unsigned LEB128 integer. It sets the discriminatorxe "discriminator" register to the new value. Appendix  REF _Ref249153948 \r \h D.5 gives some sample line number programs. Macro Information Some languages, such as Cxe "C" and C++xe "C++", provide a way to replace text in the source program with macros defined either in the source file itself, or in another file included by the source file. Because these macros are not themselves defined in the target language, it is difficult to represent their definitions using the standard language constructs of DWARF. The debugging information therefore reflects the state of the source after the macro definition has been expanded, rather than as the programmer wrote it. The macro information table provides a way of preserving the original source in the debugging information. xe "macro information"As described in Section  REF _Ref516902159 \r \h  \* MERGEFORMAT 3.1.1, the macro information for a given compilation unit is represented in the .debug_macinfoxe ".debug_macinfo" section of an object file. The macro information for each compilation unit is represented as a series of macinfo entries. Each macinfo entry consists of a type code and up to two additional operands. The series of entries for a given compilation unit ends with an entry containing a type code of 0. Macinfo Types The valid macinfo types are as follows:xe "macinfo types"  HYPERLINK \l "DW_MACINFO_define" DW_MACINFO_definexe "DW_MACINFO_define" A macro definition.  HYPERLINK \l "DW_MACINFO_undef" DW_MACINFO_undefxe "DW_MACINFO_undef" A macro undefinition.  HYPERLINK \l "DW_MACINFO_start_file" DW_MACINFO_start_filexe "DW_MACINFO_start_file" The start of a new source file inclusion.  HYPERLINK \l "DW_MACINFO_end_file" DW_MACINFO_end_filexe "DW_MACINFO_end_file" The end of the current source file inclusion.  HYPERLINK \l "DW_MACINFO_vendor_ext" DW_MACINFO_vendor_extxe "DW_MACINFO_vendor_ext" Vendor specific macro information directives. Define and Undefine Entries All DW_MACINFO_definexe "DW_MACINFO_define" and DW_MACINFO_undefxe "DW_MACINFO_undef" entries have two operands. The first operand encodes the line number of the source line on which the relevant defining or undefining macro directives appeared. The second operand consists of a null-terminated character string. In the case of a DW_MACINFO_undefxe "DW_MACINFO_undef" entry, the value of this string will be simply the name of the pre- processor symbol that was undefined at the indicated source line. In the case of a DW_MACINFO_definexe "DW_MACINFO_define" entry, the value of this string will be the name of the macro symbol that was defined at the indicated source line, followed immediately by the macro formal parameterxe "macro formal parameter list" list including the surrounding parentheses (in the case of a function-like macro) followed by the definition string for the macro. If there is no formal parameter list, then the name of the defined macro is followed directly by its definition string. In the case of a function-like macro definition, no whitespace characters should appear between the name of the defined macro and the following left parenthesis. Also, no whitespace characters should appear between successive formal parameters in the formal parameter list. (Successive formal parameters are, however, separated by commas.) Also, exactly one space character should separate the right parenthesis that terminates the formal parameter list and the following definition string. In the case of a normal (i.e. non-function-like) macro definition, exactly one space character should separate the name of the defined macro from the following definition text. Start File Entries Each DW_MACINFO_start_filexe "DW_MACINFO_start_file" entry also has two operands. The first operand encodes the line number of the source line on which the inclusion macro directive occurred. The second operand encodes a source file name index. This index corresponds to a file number in the line number information table for the relevant compilation unit. This index indicates (indirectly) the name of the file that is being included by the inclusion directive on the indicated source line. End File Entries A DW_MACINFO_end_filexe "DW_MACINFO_end_file" entry has no operands. The presence of the entry marks the end of the current source file inclusion. Vendor Extension Entries A DW_MACINFO_vendor_extxe "DW_MACINFO_vendor_ext"xe "vendor extension:for macro information" entry has two operands. The first is a constant. The second is a null-terminated character string. The meaning and/or significance of these operands is intentionally left undefined by this specification. A consumer must be able to totally ignore all DW_MACINFO_vendor_ext XE "DW_MACINFO_vendor_ext"  entries that it does not understand (see Section  REF BM7_1_Vendor_Extensibility \r \h  \* MERGEFORMAT 7.1). Base Source Entries A producer shall generate HYPERLINK \l "DW_MACINFO_start_file"DW_MACINFO_start_file and HYPERLINK \l "DW_MACINFO_end_file"DW_MACINFO_end_file entries for the source file submitted to the compiler for compilation. This DW_MACINFO_start_file entry has the value 0 in its line number operand and references the file entry in the line number information table for the primary source file. Macinfo Entries for Command Line Options In addition to producing HYPERLINK \l "DW_MACINFO_define"DW_MACINFO_definexe "DW_MACINFO_define" and HYPERLINK \l "DW_MACINFO_undef"DW_MACINFO_undefxe "DW_MACINFO_undef" entries for each of the define and undefine directives processed during compilation, the DWARF producer should generate a HYPERLINK \l "DW_MACINFO_define"DW_MACINFO_define or HYPERLINK \l "DW_MACINFO_undef"DW_MACINFO_undef entry for each pre-processor symbol which is defined or undefined by some means other than via a define or undefine directive within the compiled source text. In particular, pre-processor symbol definitions and un- definitions which occur as a result of command line options (when invoking the compiler) should be represented by their own HYPERLINK \l "DW_MACINFO_define"DW_MACINFO_define and HYPERLINK \l "DW_MACINFO_undef"DW_MACINFO_undef entries. All such HYPERLINK \l "DW_MACINFO_define"DW_MACINFO_definexe "DW_MACINFO_define" and HYPERLINK \l "DW_MACINFO_undef"DW_MACINFO_undefxe "DW_MACINFO_undef" entries representing compilation options should appear before the first HYPERLINK \l "DW_MACINFO_start_file"DW_MACINFO_start_filexe "DW_MACINFO_start_file" entry for that compilation unit and should encode the value 0 in their line number operands. General Rules and Restrictions All macinfo entries within a .debug_macinfoxe ".debug_macinfo" section for a given compilation unit appear in the same order in which the directives were processed by the compiler. All macinfo entries representing command line options appear in the same order as the relevant command line options were given to the compiler. In the case where the compiler itself implicitly supplies one or more macro definitions or un-definitions in addition to those which may be specified on the command line, macinfo entries are also produced for these implicit definitions and un-definitions, and these entries also appear in the proper order relative to each other and to any definitions or undefinitions given explicitly by the user on the command line. Call Frame Information Debuggers often need to be able to view and modify the state of any subroutine activationxe "activation, call frame" that is on the call stack. An activation consists of: A code location that is within the subroutine. This location is either the place where the program stopped when the debugger got control (e.g. a breakpoint), or is a place where a subroutine made a call or was interrupted by an asynchronous event (e.g. a signal). An area of memory that is allocated on a stack called a call frame. The call frame is identified by an address on the stack. We refer to this address as the Canonical Frame Address or CFA. Typically, the CFA is defined to be the value of the stack pointer at the call site in the previous frame (which may be different from its value on entry to the current frame). A set of registers that are in use by the subroutine at the code location. Typically, a set of registers are designated to be preserved across a call. If a callee wishes to use such a register, it saves the value that the register had at entry time in its call frame and restores it on exit. The code that allocates space on the call frame stack and performs the save operation is called the subroutines prologuexe "prologue", and the code that performs the restore operation and deallocates the frame is called its epiloguexe "epilogue". Typically, the prologue code is physically at the beginning of a subroutine and the epilogue code is at the end. To be able to view or modify an activation that is not on the top of the call frame stack, the debugger must virtually unwind the stack of activations until it finds the activation of interest. A debugger unwinds a stack in steps. Starting with the current activation it virtually restores any registers that were preserved by the current activation and computes the predecessors CFA and code location. This has the logical effect of returning from the current subroutine to its predecessor. We say that the debugger virtually unwinds the stack because the actual state of the target process is unchanged. The unwinding operation needs to know where registers are saved and how to compute the predecessors CFA and code location. When considering an architecture-independent way of encoding this information one has to consider a number of special things. Prologue and epiloguexe "epilogue" code is not always in distinct blocks 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 save/unsave operations and moves them into the body of the subroutine to just where they are needed. Compilers use different ways to manage the call frame. Sometimes they use a frame pointer register, sometimes not. The algorithm to compute CFA changes as you progress through the prologuexe "prologue" and epiloguexe "epilogue" code. (By definition, the CFA value does not change.) Some subroutines have no call frame. Sometimes a register is saved in another register that by convention does not need to be saved. Some architectures have special instructions that perform some or all of the register management in one instruction, leaving special information on the stack that indicates how registers are saved. Some architectures treat return address values specially. For example, in one architecture, the call instruction guarantees that the low order two bits will be zero and the return instruction ignores those bits. This leaves two bits of storage that are available to other uses that must be treated specially. Structure of Call Frame Information DWARF supports virtual unwinding by defining an architecture independent basis for recording how procedures save and restore registers during their lifetimes. This basis must be augmented on some machines with specific information that is defined by an architecture specific ABI authoring committee, a hardware vendor, or a compiler producer. The body defining a specific augmentation is referred to below as the augmenter. Abstractly, this mechanism describes a very large table that has the following structure: LOC CFA R0 R1 ... RN L0 L1 ... LN The first column indicates an addressxe "address register:in call frame information" for every location that contains code in a program. (In shared objects, this is an object-relative offset.) The remaining columns contain virtual unwinding rules that are associated with the indicated location. The CFA column defines the rule which computes the Canonical Frame Address value; it may be either a register and a signed offset that are added together, or a DWARF expression that is evaluated. The remaining columns are labeled by register number. This includes some registers that have special designation on some architectures such as the PC and the stack pointer register. (The actual mapping of registers for a particular architecture is defined by the augmenter.) The register columns contain rules that describe whether a given register has been saved and the rule to find the value for the register in the previous frame. The register rules are: undefined A register that has this rule has no recoverable value in the previous frame. (By convention, it is not preserved by a callee.) same value This register has not been modified from the previous frame. (By convention, it is preserved by the callee, but the callee has not modified it.) offset(N) The previous value of this register is saved at the address CFA+N where CFA is the current CFA value and N is a signed offset. val_offset(N) The previous value of this register is the value CFA+N where CFA is the current CFA value and N is a signed offset. register(R) The previous value of this register is stored in another register numberedR. expression(E) The previous value of this register is located at the address produced by executing the  HYPERLINK \l "DWARF_expression" DWARF expression E. val_expression(E) The previous value of this register is the value produced by executing the  HYPERLINK \l "DWARF_expression" DWARF expression E. architectural The rule is defined externally to this specification by the augmenter. This table would be extremely large if actually constructed as described. Most of the entries at any point in the table are identical to the ones above them. The whole table can be represented quite compactly by recording just the differences starting at the beginning address of each subroutine in the program. The virtual unwind information is encoded in a self-contained section called .debug_framexe ".debug_frame". Entries in a .debug_frame section are aligned on a multiple of the address size relative to the start of the section and come in two forms: a Common Information Entry (CIExe "CIE" \t "See common information entry") and a Frame Description Entry (FDExe "FDE" \t "See frame description entry"). If the range of code addresses for a function is not contiguous, there may be multiple CIEs and FDEs corresponding to the parts of that function. A Common Information Entryxe "common information entry" holds information that is shared among many Frame Description Entries. There is at least one CIE in every non-empty .debug_frame section. A CIE contains the following fields, in order: length (HYPERLINK \l "initial_length_field"initial lengthxe "initial length field") A constant that gives the number of bytes of the CIE structure, not including the length field itself (see Section  REF _Ref519667129 \n \h  \* MERGEFORMAT 7.2.2). The size of the length field plus the value of length must be an integral multiple of the address size. CIE_idxe "CIE_id" (4 or 8 bytes, see Section  REF BM7_4_File_Constraints \n \h  \* MERGEFORMAT 7.4) A constant that is used to distinguish CIEs from FDEs. versionxe "version number:call frame information" (ubytexe "ubyte") A version number (see Section  REF BM7_23_Call_Frame_Information \r \h  \* MERGEFORMAT 7.23). This number is specific to the call frame information and is independent of the DWARF version number. augmentation (UTF-8 stringxe "ubyte") A null-terminated UTF-8xe "UTF-8" string that identifies the augmentation to this CIE or to the FDEs that use it. If a reader encounters an augmentation string that is unexpected, then only the following fields can be read: CIE: length, CIE_idxe "CIE_id", version, augmentation FDE: length, CIE_pointerxe "CIE_pointer", initial_location, address_range If there is no augmentation, this value is a zero byte. The augmentation string allows users to indicate that there is additional target-specific information in the CIE or FDE which is needed to unwind a stack frame. For example, this might be information about dynamically allocated data which needs to be freed on exit from the routine. Because the .debug_frame section is useful independently of any .debug_info section, the augmentation string always uses UTF-8 encoding. address_sizexe "address_size" (ubyte) The size of a target address in this CIE and any FDEs that use it, in bytes. If a compilation unit exists for this frame, its address size must match the address size here. segment_sizexe "segment_size" (ubyte) The size of a segment selector in this CIE and any FDEs that use it, in bytes. code_alignment_factorxe "code_alignment_factor" (unsigned LEB128) A constant that is factored out of all advance location instructions (seeSection  REF _Ref249090505 \r \h 6.4.2.1). data_alignment_factor (signed LEB128) A constant that is factored out of certain offset instructions (see below). The resulting value is (operand * data_alignment_factor). return_address_register (unsigned LEB128) An unsigned LEB128 constant that indicates which column in the rule table represents the return address of the function. Note that this column might not correspond to an actual machine register. initial_instructions (array of ubytexe "ubyte") A sequence of rules that are interpreted to create the initial setting of each column in the table. The default rule for all columns before interpretation of the initial instructions is the undefined rule. However, an ABI authoring body or a compilation system authoring body may specify an alternate default value for any or all columns. padding (array of ubytexe "ubyte") Enough HYPERLINK \l "DW_CFA_nop"DW_CFA_nopxe "DW_CFA_nop" instructions to make the size of this entry match the length value above. An FDExe "frame description entry" contains the following fields, in order: length (HYPERLINK \l "initial_length_field"initial lengthxe "initial length field") A constant that gives the number of bytes of the header and instruction stream for this function, not including the length field itself (see Section  REF _Ref519667129 \n \h  \* MERGEFORMAT 7.2.2). The size of the length field plus the value of length must be an integral multiple of the address size. CIE_pointerxe "CIE_pointer" (4 or 8 bytes, see Section  REF BM7_4_File_Constraints \n \h  \* MERGEFORMAT 7.4xe "section offset:in FDE header") A constant offset into the .debug_framexe ".debug_frame" section that denotes the CIE that is associated with this FDE. initial_location (segment selector and target address) The address of the first location associated with this table entry. If the segment_sizexe "segment_size" field of this FDE's CIE is non-zero, the initial location is preceded by a segment selector of the given length. address_range (target address) The number of bytes of program instructions described by this entry. instructions (array of ubytexe "ubyte") A sequence of table defining instructions that are described below. padding (array of ubytexe "ubyte") Enough HYPERLINK \l "DW_CFA_nop"DW_CFA_nopxe "DW_CFA_nop" instructions to make the size of this entry match the length value above. Call Frame Instructions Each call frame instruction is defined to take 0 or more operands. Some of the operands may be encoded as part of the opcode (see Section  REF BM7_23_Call_Frame_Information \w \h  \* MERGEFORMAT 7.23). The instructions are defined in the following sections. Some call frame instructions have operands that are encoded as DWARF expressions (see Section  REF BM2_4_3_Addressing_Operations \r \h  \* MERGEFORMAT 2.5.1). The following DWARF operators cannot be used in such operands:  HYPERLINK \l "DW_OP_call2" DW_OP_call2,xe "DW_OP_call2"  HYPERLINK \l "DW_OP_call4" DW_OP_call4xe "DW_OP_call4" and  HYPERLINK \l "DW_OP_call_ref" DW_OP_call_refxe "DW_OP_call_ref" operators are not meaningful in an operand of these instructions because there is no mapping from call frame information to any corresponding debugging compilation unit information, thus there is no way to interpret the call offset.  HYPERLINK \l "DW_OP_push_object_address" DW_OP_push_object_addressxe "DW_OP_push_object_address" is not meaningful in an operand of these instructions xe "DW_CFA_def_cfa"xe "DW_CFA_def_cfa_expression"xe "DW_CFA_expression"because there is no object context to provide a value to push.  HYPERLINK \l "DW_OP_call_frame_cfa" DW_OP_call_frame_cfaxe "DW_OP_call_frame_cfa" is not meaningful in an operand of these instructions because its use would be circular. Call frame instructions to which these restrictions apply include  HYPERLINK \l "DW_CFA_def_cfa_expression" DW_CFA_def_cfa_expressionxe "DW_CFA_def_cfa_expression",  HYPERLINK \l "DW_CFA_expression" DW_CFA_expressionxe "DW_CFA_expression" and  HYPERLINK \l "DW_CFA_val_expression" DW_CFA_val_expressionxe "DW_CFA_val_expression". Row Creation Instructions DW_CFA_set_locxe "DW_CFA_set_loc" The DW_CFA_set_locxe "DW_CFA_set_loc" instruction takes a single operand that represents a target address. The required action is to create a new table row using the specified address as the location. All other values in the new row are initially identical to the current row. The new location value is always greater than the current one. If the segment_sizexe "segment_size" field of this FDE's CIE is non-zero, the initial location is preceded by a segment selector of the given length. DW_CFA_advance_locxe "DW_CFA_advance_loc" The DW_CFA_advance instruction takes a single operand (encoded with the opcode) that represents a constant delta. The required action is to create a new table row with a location value that is computed by taking the current entrys location value and adding the value of delta * code_alignment_factorxe "code_alignment_factor". All other values in the new row are initially identical to the current row. DW_CFA_advance_loc1xe "DW_CFA_advance_loc1" The DW_CFA_advance_loc1xe "DW_CFA_advance_loc1" instruction takes a single ubytexe "ubyte" operand that represents a constant delta. This instruction is identical to HYPERLINK \l "DW_CFA_advance_loc"DW_CFA_advance_loc except for the encoding and size of the delta operand. DW_CFA_advance_loc2xe "DW_CFA_advance_loc2" The DW_CFA_advance_loc2xe "DW_CFA_advance_loc2" instruction takes a single uhalfxe "uhalf" operand that represents a constant delta. This instruction is identical to HYPERLINK \l "DW_CFA_advance_loc"DW_CFA_advance_loc except for the encoding and size of the delta operand. DW_CFA_advance_loc4xe "DW_CFA_advance_loc4" The DW_CFA_advance_loc4xe "DW_CFA_advance_loc4" instruction takes a single uwordxe "uword" operand that represents a constant delta. This instruction is identical to HYPERLINK \l "DW_CFA_advance_loc"DW_CFA_advance_loc except for the encoding and size of the delta operand. CFA Definition Instructions DW_CFA_def_cfaxe "DW_CFA_def_cfa" The DW_CFA_def_cfaxe "DW_CFA_def_cfa" instruction takes two unsigned LEB128 operands representing a register number and a (non-factored) offset. The required action is to define the current CFA rule to use the provided register and offset. DW_CFA_def_cfa_sfxe "DW_CFA_def_cfa_sf" The DW_CFA_def_cfaxe "DW_CFA_def_cfa"_sfxe "DW_CFA_def_cfa_sf" instruction takes two operands: an unsigned LEB128 value representing a register number and a signed LEB128 factored offset. This instruction is identical to  HYPERLINK \l "DW_CFA_def_cfa" DW_CFA_def_cfa except that the second operand is signed and factored. The resulting offset is factored_offset * data_alignment_factor. DW_CFA_def_cfa_registerxe "DW_CFA_def_cfa_register" The DW_CFA_def_cfa_registerxe "DW_CFA_def_cfa_register" instruction takes a single unsigned LEB128 operand representing a register number. The required action is to define the current CFA rule to use the provided register (but to keep the old offset). This operation is valid only if the current CFA rule is defined to use a register and offset. DW_CFA_def_cfa_offsetxe "DW_CFA_def_cfa_offset" The DW_CFA_def_cfaxe "DW_CFA_def_cfa"_offsetxe "DW_CFA_def_cfa_offset" instruction takes a single unsigned LEB128 operand representing a (non-factored) offset. The required action is to define the current CFA rule to use the provided offset (but to keep the old register). This operation is valid only if the current CFA rule is defined to use a register and offset. DW_CFA_def_cfa_offset_sfxe "DW_CFA_def_cfa_offset_sf" The DW_CFA_def_cfa_offset_sfxe "DW_CFA_def_cfa_offset_sf" instruction takes a signed LEB128 operand representing a factored offset. This instruction is identical to  HYPERLINK \l "DW_CFA_def_cfa_offset" DW_CFA_def_cfa_offset except that the operand is signed and factored. The resulting offset is factored_offset * data_alignment_factor. This operation is valid only if the current CFA rule is defined to use a register and offset. DW_CFA_def_cfa_expressionxe "DW_CFA_def_cfa_expression" The DW_CFA_def_cfa_expressionxe "DW_CFA_def_cfa_expression" instruction takes a single operand encoded as a  HYPERLINK \l "DW_FORM_block" DW_FORM_exprlocxe "DW_FORM_exprloc" value representing a  HYPERLINK \l "DWARF_expression" DWARF expression. The required action is to establish that expression as the means by which the current CFA is computed. See Section  REF BM6_4_2_Call_Frame_Instructions \r \h  \* MERGEFORMAT 6.4.2 regarding restrictions on the DWARF expression operators that can be used. Register Rule Instructions DW_CFA_undefinedxe "DW_CFA_undefined" The DW_CFA_undefinedxe "DW_CFA_undefined" instruction takes a single unsigned LEB128 operand that represents a register number. The required action is to set the rule for the specified register to undefined. DW_CFA_same_valuexe "DW_CFA_same_value" The DW_CFA_same_valuexe "DW_CFA_same_value" instruction takes a single unsigned LEB128 operand that represents a register number. The required action is to set the rule for the specified register to same value. DW_CFA_offsetxe "DW_CFA_offset" The DW_CFA_offsetxe "DW_CFA_offset" instruction takes two operands: a register number (encoded with the opcode) and an unsigned LEB128 constant representing a factored offset. The required action is to change the rule for the register indicated by the register number to be an offset(N) rule where the value of N is factoredoffset*data_alignment_factor. DW_CFA_offset_extendedxe "DW_CFA_offset_extended" The DW_CFA_offset_extendedxe "DW_CFA_offset_extended" instruction takes two unsigned LEB128 operands representing a register number and a factored offset. This instruction is identical to HYPERLINK \l "DW_CFA_offset"DW_CFA_offset except for the encoding and size of the register operand. DW_CFA_offset_extended_sfxe "DW_CFA_offset_extended_sf" The DW_CFA_offset_extended_sfxe "DW_CFA_offset_extended_sf" instruction takes two operands: an unsigned LEB128 value representing a register number and a signed LEB128 factored offset. This instruction is identical to  HYPERLINK \l "DW_CFA_offset_extended" DW_CFA_offset_extended except that the second operand is signed and factored. The resulting offset is factored_offset * data_alignment_factor. DW_CFA_val_offsetxe "DW_CFA_val_offset" The DW_CFA_val_offset instruction takes two unsigned LEB128 operands representing a register number and a factored offset. The required action is to change the rule for the register indicated by the register number to be a val_offset(N) rule where the value of N is factored_offset*data_alignment_factor. DW_CFA_val_offset_sfxe "DW_CFA_val_offset_sf" The DW_CFA_val_offset_sf instruction takes two operands: an unsigned LEB128 value representing a register number and a signed LEB128 factored offset. This instruction is identical to DW_CFA_val_offsetxe "DW_CFA_val_offset" except that the second operand is signed and factored. The resulting offset is factored_offset * data_alignment_factor. DW_CFA_registerxe "DW_CFA_register" The DW_CFA_registerxe "DW_CFA_register" instruction takes two unsigned LEB128 operands representing register numbers. The required action is to set the rule for the first register to be register(R) where R is the second register. DW_CFA_expressionxe "DW_CFA_expression" The DW_CFA_expressionxe "DW_CFA_expression" instruction takes two operands: an unsigned LEB128 value representing a register number, and a  HYPERLINK \l "DW_FORM_block" DW_FORM_blockxe "DW_FORM_block" value representing a  HYPERLINK \l "DWARF_expression" DWARF expression. The required action is to change the rule for the register indicated by the register number to be an expression(E) rule where E is the DWARF expression. That is, the DWARF expression computes the address. The value of the CFA is pushed on the DWARF evaluation stack prior to execution of the DWARF expression. See Section  REF BM6_4_2_Call_Frame_Instructions \r \h  \* MERGEFORMAT 6.4.2 regarding restrictions on the DWARF expression operators that can be used. DW_CFA_val_expressionxe "DW_CFA_val_expression" The DW_CFA_val_expression instruction takes two operands: an unsigned LEB128 value representing a register number, and a DW_FORM_block value representing a DWARF expression. The required action is to change the rule for the register indicated by the register number to be a val_expression(E) rule where E is the DWARF expression. That is, the DWARF expression computes the value of the given register. The value of the CFA is pushed on the DWARF evaluation stack prior to execution of the DWARF expression. See Section  REF BM6_4_2_Call_Frame_Instructions \r \h  \* MERGEFORMAT 6.4.2 regarding restrictions on the DWARF expression operators that can be used. DW_CFA_restorexe "DW_CFA_restore" The DW_CFA_restorexe "DW_CFA_restore" instruction takes a single operand (encoded with the opcode) that represents a register number. The required action is to change the rule for the indicated register to the rule assigned it by the initial_instructions in the CIE. DW_CFA_restore_extendedxe "DW_CFA_restore_extended" The DW_CFA_restore_extendedxe "DW_CFA_restore_extended" instruction takes a single unsigned LEB128 operand that represents a register number. This instruction is identical to HYPERLINK \l "DW_CFA_restore"DW_CFA_restore except for the encoding and size of the register operand. Row State Instructions The next two instructions provide the ability to stack and retrieve complete register states. They may be useful, for example, for a compiler that moves epiloguexe "epilogue" code into the body of a function. DW_CFA_remember_statexe "DW_CFA_remember_state" The DW_CFA_remember_statexe "DW_CFA_remember_state" instruction takes no operands. The required action is to push the set of rules for every register onto an implicit stack. DW_CFA_restore_statexe "DW_CFA_restore_state" The DW_CFA_restore_statexe "DW_CFA_restore_state" instruction takes no operands. The required action is to pop the set of rules off the implicit stack and place them in the current row. Padding Instruction DW_CFA_nopxe "DW_CFA_nop" The DW_CFA_nopxe "DW_CFA_nop" instruction has no operands and no required actions. It is used as padding to make a CIE or FDE an appropriate size. Call Frame Instruction Usage To determine the virtual unwind rule set for a given location (L1), one searches through the FDE headers looking at the initial_location and address_range values to see if L1 is contained in the FDE. If so, then: Initialize a register set by reading the initial_instructions field of the associated CIE. Read and process the FDEs instruction sequence until a HYPERLINK \l "DW_CFA_advance_loc"DW_CFA_advance_locxe "DW_CFA_advance_loc", HYPERLINK \l "DW_CFA_set_loc"DW_CFA_set_locxe "DW_CFA_set_loc", or the end of the instruction stream is encountered. If a HYPERLINK \l "DW_CFA_advance_loc"DW_CFA_advance_locxe "DW_CFA_advance_loc" or HYPERLINK \l "DW_CFA_set_loc"DW_CFA_set_locxe "DW_CFA_set_loc" instruction is encountered, then compute a new location value (L2). If L1 >= L2 then process the instruction and go back to step 2. The end of the instruction stream can be thought of as a HYPERLINK \l "DW_CFA_set_loc"DW_CFA_set_locxe "DW_CFA_set_loc" (initial_location + address_range) instruction. Note that the FDE is ill-formed if L2 is less than L1. The rules in the register set now apply to location L1. For an example, see Appendix  REF Appendix_5____Call_Frame_Information_Exa \r \h  \* MERGEFORMAT D.6. Call Frame Calling Address When unwinding frames, consumers frequently wish to obtain the address of the instruction which called a subroutine. This information is not always provided. Typically, however, one of the registers in the virtual unwind table is the Return Address. If a Return Address register is defined in the virtual unwind table, and its rule is undefined (for example, by DW_CFA_undefinedxe "DW_CFA_undefined"), then there is no return address and no call address, and the virtual unwind of stack activations is complete. In most cases the return address is in the same context as the 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 subroutine. If a consumer were to assume that it was in the same context as the calling address, the unwind might fail. For architectures with constant-length instructions where the return address immediately follows the call instruction, a simple solution is to subtract the length of an instruction from the return address to obtain the calling instruction. For architectures with variable-length instructions (e.g. x86), this is not possible. However, subtracting 1 from the return address, although not guaranteed to provide the exact calling address, generally will produce an address within the same context as the calling address, and that usually is sufficient. DATA REPRESENTATION This section describes the binary representation of the debugging information entry itself, of the attribute types and of other fundamental elements described above. Vendor Extensibility xe "vendor extensibility"To reserve a portion of the DWARF name space and ranges of enumeration values for use for vendor specific extensions, special labels are reserved for tag names, attribute names, base type encodings, location operations, language names, calling conventions and call frame instructions. The labels denoting the beginning and end of the reserved value range for vendor specific extensions consist of the appropriate prefix (HYPERLINK \l "DW_TAG_lo_hi"DW_TAG,  HYPERLINK \l "DW_AT_lo_hi" DW_AT,  HYPERLINK \l "DW_END_lo_hi" DW_END, HYPERLINK \l "DW_ATE_lo_hi"DW_ATE,  HYPERLINK \l "DW_OP_lo_hi" DW_OP,  HYPERLINK \l "DW_LANG_lo_hi" DW_LANG,  HYPERLINK \l "DW_LNE_lo_hi" DW_LNE,  HYPERLINK \l "DW_CC_lo_hi" DW_CC or  HYPERLINK \l "DW_CFA_lo_hi" DW_CFA respectively) followed by _lo_user or _hi_user. For example, for entry tags, the special labels are HYPERLINK \l "DW_TAG_lo_user"DW_TAG_lo_userxe "DW_TAG_lo_user" and HYPERLINK \l "DW_TAG_hi_user"DW_TAG_hi_userxe "DW_TAG_hi_user". Values in the range between prefix_lo_user and prefix_hi_user inclusive, are reserved for vendor specific extensions. Vendors may use values in this range without conflicting with current or future system-defined values. All other values are reserved for use by the system. 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 number of standard opcodes varies with the DWARF version, the range for extensions is also version dependent. Thus, DW_LNS_lo_userxe "DW_LNS_lo_user omission" and DW_LNS_hi_userxe "DW_LNS_hi_user omission" symbols are not defined. Vendor defined tags, attributes, base type encodings, location atoms, language names, line number actions, calling conventions and call frame instructions, conventionally use the form prefix_vendor_id_name, where vendor_idxe "vendor id" is some identifying character sequence chosen so as to avoid conflicts with other vendors. To ensure that extensions added by one vendor may be safely ignored by consumers that do not understand those extensions, the following rules should be followed: New attributes should be added in such a way that a debugger may recognize the format of a new attribute value without knowing the content of that attribute value. The semantics of any new attributes should not alter the semantics of previously existing attributes. The semantics of any new tags should not conflict with the semantics of previously existing tags. Do not add any new forms of attribute value. Reserved Values Error Values xe "error value"As a convenience for consumers of DWARF information, the value 0 is reserved in the encodings for attribute names, attribute forms, base type encodings, location operations, languages, line number program opcodes, macro information entries and tag names to represent an error condition or unknown value. DWARF does not specify names for these reserved values, since they do not represent valid encodings for the given type and should not appear in DWARF debugging information. Initial Length Values An initial lengthxe "initial length field:encoding" field is one of the length fields that occur at the beginning of those DWARF sections that have a header (.debug_arangesxe ".debug_aranges", .debug_infoxe ".debug_info", .debug_typesxe ".debug_types", .debug_linexe ".debug_line", .debug_pubnamesxe ".debug_pubnames", and .debug_pubtypesxe ".debug_pubtypes") or the length field that occurs at the beginning of the CIE and FDE structures in the .debug_framexe ".debug_frame" section. In an initial length field, the values 0xfffffff0 through 0xffffffff are reserved by DWARF to indicate some form of extension relative to DWARF Version 2xe "DWARF Version 2"; such values must not be interpreted as a length field. The use of one such value, 0xffffffff, is defined below (see Section  REF BM7_4_File_Constraints \r \h  \* MERGEFORMAT 7.4); the use of the other values is reserved for possible future extensions. Executable Objects and Shared Objects The relocated addresses in the debugging information for an executable object are virtual addresses and the relocated addresses in the debugging information for a shared object are offsets relative to the start of the lowest region of memory loaded from that shared object. This requirement makes the debugging information for shared objects position independent. Virtual addresses in a shared object may be calculated by adding the offset to the base address at which the object was attached. This offset is available in the run-time linkers data structures. 32-Bit and 64-Bit DWARF Formats There are two closely related file formats. In the 32-bit DWARF formatxe "32-bit DWARF format", all values that represent lengths of DWARF sections and offsets relative to the beginning of DWARF sections are represented using 32-bits. xe "DWARF Version 2"In the 64-bit DWARF formatxe "64-bit DWARF format", all values that represent lengths of DWARF sections and offsets relative to the beginning of DWARF sections are represented using 64-bits. A special convention applies to the initial length field of certain DWARF sections, as well as the CIE and FDE structures, so that the 32-bit and 64-bit DWARF formats can coexist and be distinguished within a single linked object. The differences between the 32- and 64-bit DWARF formats are detailed in the following: In the 32-bit DWARF format, an  HYPERLINK \l "initial_length_field" initial length field (see Section  REF _Ref519667129 \r \h  \* MERGEFORMAT 7.2.2) is an unsigned 32-bit integer (which must be less than 0xfffffff0); in the 64-bit DWARF format, an initial length field is 96 bits in size, and has two parts: The first 32-bits have the value 0xffffffff. The following 64-bits contain the actual length represented as an unsigned 64-bit integer. This representation allows a DWARF consumer to dynamically detect that a DWARF section contribution is using the 64-bit format and to adapt its processing accordingly. Section offsetxe "section offset:use in headers" and section lengthxe "section length:use in headers" fields that occur in the headers of DWARF sections (other than initial length fields) are listed following. In the 32-bit DWARF format these are 32-bit unsigned integer values; in the 64-bit DWARF format, they are 64-bit unsigned integer values. Section Name Role xe ".debug_abbrev"xe ".debug_aranges"xe ".debug_frame"xe ".debug_info"xe ".debug_line"xe ".debug_pubnames"xe ".debug_pubtypes"xe ".debug_types"xe "debug_info_offset"xe "CIE_id"xe "CIE_pointer"xe "debug_abbrev_offset"xe "header_length"xe "debug_info_offset"xe "debug_info_length"xe "type_offset" .debug_aranges debug_info_offset offset in .debug_info .debug_frame/CIE CIE_id CIE distinguished value .debug_frame/FDE CIE_pointer offset in .debug_frame .debug_info debug_abbrev_offset offset in .debug_abbrev .debug_line header_length length of header itself .debug_pubnames debug_info_offset offset in .debug_info debug_info_length length of .debug_info contribution .debug_pubtypes debug_info_offset offset in .debug_info debug_info_length length of .debug_info contribution .debug_types debug_abbrev_offset offset in .debug_abbrev type_offset offset in .debug_types The CIE_id field in a CIE structure must be 64 bits because it overlays the CIE_pointer in a FDE structure; this implicit union must be accessed to distinguish whether a CIE or FDE is present, consequently, these two fields must exactly overlay each other (both offset and size). Within the body of the .debug_info or .debug_typesxe ".debug_types" section, certain forms of attribute value depend on the choice of DWARF format as follows. For the 32-bit DWARF format, the value is a 32-bit unsigned integer; for the 64-bit DWARF format, the value is a 64-bit unsigned integer. Form Role xe ".debug_info"xe ".debug_str"  HYPERLINK \l "DW_FORM_ref_addr" DW_FORM_ref_addrxe "DW_FORM_ref_addr" offset in .debug_info  HYPERLINK \l "sec_offset_forms" DW_FORM_sec_offsetxe "DW_FORM_sec_offset" offset in a section other than .debug_info or .debug_str  HYPERLINK \l "DW_FORM_strp" DW_FORM_strpxe "DW_FORM_strp" offset in .debug_str  HYPERLINK \l "DW_OP_call_ref" DW_OP_call_refxe "DW_FORM_ref_addr" offset in .debug_info Within the body of the .debug_pubnamesxe ".debug_pubnames" and .debug_pubtypesxe ".debug_pubtypes" sections, the representation of the first field of each tuple (which represents an offset in the .debug_infoxe ".debug_info" section) depends on the DWARF format as follows: in the 32-bit DWARF format, this field is a 32-bit unsigned integer; in the 64-bit DWARF format, it is a 64-bit unsigned integer. The 32-bit and 64-bit DWARF format conventions must not be intermixed within a single compilation unit. Attribute values and section header fields that represent addresses in the target program are not affected by these rules. A DWARF consumer that supports the 64-bit DWARF format must support executables in which some compilation units use the 32-bit format and others use the 64-bit format provided that the combination links correctly (that is, provided that there are no link-time errors due to truncation or overflow). (An implementation is not required to guarantee detection and reporting of all such errors.) It is expected that DWARF producing compilers will not use the 64-bit format by default. In most cases, the division of even very large applications into a number of executable and shared objects will suffice to assure that the DWARF sections within each individual linked object are less than 4 GBytes in size. However, for those cases where needed, the 64-bit format allows the unusual case to be handled as well. Even in this case, it is expected that only application supplied objects will need to be compiled using the 64-bit format; separate 32-bit format versions of system supplied shared executable libraries can still be used. Format of Debugging Information For each compilation unit compiled with a DWARF producer, a contribution is made to the .debug_infoxe ".debug_info" section of the object file. Each such contribution consists of a compilation unit header (see Section  REF BM7_5_1_Compilation_Unit_Header \r \h  \* MERGEFORMAT 7.5.1.1) followed by a single DW_TAG_compile_unitxe "DW_TAG_compile_unit" or DW_TAG_partial_unitxe "DW_TAG_partial_unit" debugging information entry, together with its children. For each type defined in a compilation unit, a contribution may be made to the .debug_typesxe ".debug_types" section of the object file. Each such contribution consists of a type unit header (see Section  REF type_unit_header \r \h  \* MERGEFORMAT 7.5.1.2) followed by a DW_TAG_type_unit entry, together with its children. Each debugging information entry begins with a code that represents an entry in a separate abbreviations tablexe "abbreviations table". This code is followed directly by a series of attribute values. The appropriate entry in the abbreviations table guides the interpretation of the information contained directly in the .debug_info or .debug_typesxe ".debug_types" section. Multiple debugging information entries may share the same abbreviation table entry. Each compilation unit is associated with a particular abbreviation table, but multiple compilation units may share the same table. Unit Headers Compilation Unit Header xe "compilation unit:header"The header for the series of debugging information entries contributed by a single normal or partial compilation unit, within the .debug_infoxe ".debug_info" section, consists of the following information: unit_lengthxe "unit_length" ( HYPERLINK \l "initial_length_field" initial lengthxe "initial length") A 4-byte or 12-byte unsigned integer representing the length of the .debug_infoxe ".debug_info" contribution for that compilation unit, not including the length field itself. In the  HYPERLINK \l "bit32_dwarf_format"  HYPERLINK \l "bit32_dwarf_format" 32-bit DWARF format, this is a 4-byte unsigned integer (which must be less than 0xfffffff0); in the  HYPERLINK \l "bit64_dwarf_format" 64-bit DWARF format, this consists of the 4-byte value 0xffffffff followed by an 8-byte unsigned integer that gives the actual length (see Section  REF BM7_4_File_Constraints \n \h  \* MERGEFORMAT 7.4). versionxe "version number:debug information" (uhalfxe "uhalf") A 2-byte unsigned integer representing the version of the DWARF information for the compilation unit (see  REF _Ref114543352 \n \h  \* MERGEFORMAT Appendix F). The value in this field is 4. debug_abbrev_offsetxe "debug_abbrev_offset" ( HYPERLINK \l "section_offset" section offsetxe "section offset:in .debug_info header")xe "section offset:in .debug_info header" A 4-byte or 8-byte unsigned offset into the .debug_abbrevxe ".debug_abbrev" section. This offset associates the compilation unit with a particular set of debugging information entry abbreviations. In the  HYPERLINK \l "bit32_dwarf_format" 32-bit DWARF format, this is a 4-byte unsigned length; in the  HYPERLINK \l "bit64_safe_DWARF_description"  HYPERLINK \l "bit64_dwarf_format" 64-bit DWARF format, this is an 8-byte unsigned length (see Section  REF BM7_4_File_Constraints \n \h  \* MERGEFORMAT 7.4). address_sizexe "address_size" (ubytexe "ubyte") A 1-byte unsigned integer representing the size in bytes of an addressxe "size of an address" on the target architecture. If the system uses segmented addressingxe "address space:segmented"xe "segmented addressing" \t "See address space", this value represents the size of the offset portion of an address. Type Unit Header The header for the series of debugging information entries contributing to the description of a type that has been placed in its own type unitxe "type unit", within the .debug_typesxe ".debug_types" section, consists of the following information: unit_lengthxe "unit_length" (initial lengthxe "initial length") A 4-byte or 12-byte unsigned integer representing the length of the .debug_typesxe ".debug_types" contribution for that compilation unit, not including the length field itself. In the  HYPERLINK \l "bit32_dwarf_format"  HYPERLINK \l "bit32_dwarf_format" 32-bit DWARF format, this is a 4-byte unsigned integer (which must be less than 0xfffffff0); in the  HYPERLINK \l "bit64_dwarf_format" 64-bit DWARF format, this consists of the 4-byte value 0xffffffff followed by an 8-byte unsigned integer that gives the actual length (see Section  REF BM7_4_File_Constraints \n \h  \* MERGEFORMAT 7.4). versionxe "version number:debug information" (uhalfxe "uhalf") A 2-byte unsigned integer representing the version of the DWARF information for the compilation unit (see  REF _Ref114543352 \n \h  \* MERGEFORMAT Appendix F). The value in this field is 4. debug_abbrev_offsetxe "debug_abbrev_offset" (section offsetxe "section offset:in .debug_info header")xe "section offset:in .debug_info header" A 4-byte or 8-byte unsigned offset into the .debug_abbrevxe ".debug_abbrev" section. This offset associates the compilation unit with a particular set of debugging information entry abbreviations. In the  HYPERLINK \l "bit32_dwarf_format" 32-bit DWARF format, this is a 4-byte unsigned length; in the  HYPERLINK \l "bit64_safe_DWARF_description"  HYPERLINK \l "bit64_dwarf_format" 64-bit DWARF format, this is an 8-byte unsigned length (see Section  REF BM7_4_File_Constraints \n \h  \* MERGEFORMAT 7.4). address_sizexe "address_size" (ubytexe "ubyte") A 1-byte unsigned integer representing the size in bytes of an addressxe "size of an address" on the target architecture. If the system uses segmented addressingxe "address space:segmented"xe "segmented addressing" \t "See address space", this value represents the size of the offset portion of an address. type_signaturexe "type_signature" (8-byte unsigned integer) A 64-bit unique signature of the type described in this type unit. An attribute that refers(using DW_FORM_ref_sig8xe "DW_FORM_ref_sig8") to the primary type contained in this type unit uses this value. type_offsetxe "type_offset" (section offset) A 4-byte or 8-byte unsigned offset relative to the beginning of the type unitxe "type unit" header. This offset refers to the debugging information entry that describes the type. Because the type may be nested inside a namespace or other structures, and may contain references to other types that have not been placed in separate type units, it is not necessarily either the first or the only entry in the type unit. In the  HYPERLINK \l "bit32_dwarf_format" 32-bit DWARF format, this is a 4-byte unsigned length; in the  HYPERLINK \l "bit64_dwarf_format" 64-bit DWARF format, this is an 8-byte unsigned length (see Section  REF BM7_4_File_Constraints \n \h 7.4). Debugging Information Entry Each debugging information entry begins with an unsigned LEB128 number containing the abbreviation code for the entry. This code represents an entry within the abbreviations tablexe "abbreviations table" associated with the compilation unit containing this entry. The abbreviation code is followed by a series of attribute values. On some architectures, there are alignment constraints on section boundaries. To make it easier to pad debugging information sections to satisfy such constraints, the abbreviation code 0 is reserved. Debugging information entries consisting of only the abbreviation code 0 are considered null entries. Abbreviations Tables The abbreviations tablesxe "abbreviations table" for all compilation units are contained in a separate object file section called .debug_abbrevxe ".debug_abbrev". As mentioned before, multiple compilation units may share the same abbreviations table. The abbreviations table for a single compilation unit consists 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 code itself. It is this code that appears at the beginning of a debugging information entry in the .debug_infoxe ".debug_info" or .debug_typesxe ".debug_types" section. As described above, the abbreviation code 0 is reserved for null debugging information entries. The abbreviation code is followed by another unsigned LEB128 number that encodes the entrys tag. The encodings for the tag names are given in  REF _Ref519657692 \h  \* MERGEFORMAT Figure 18 (page  PAGEREF _Ref249091570 154). Following the tag encoding is a 1-byte value that determines whether a debugging information entry using this abbreviation has child entries or not. If the value is DW_CHILDREN_yesxe "DW_CHILDREN_yes", the next physically succeeding entry of any debugging information entry using this abbreviation is the first child of that entry. If the 1-byte value following the abbreviations tag encoding is DW_CHILDREN_noxe "DW_CHILDREN_no", the next physically succeeding entry of any debugging information entry using this abbreviation is a sibling of that entry. (Either the first child or sibling entries may be null entries). The encodings for the child determination byte are given in  REF _Ref478443886 \h  \* MERGEFORMAT Figure 19 (page  PAGEREF _Ref478375250 154). (As mentioned in Section  REF BM2_3_Relationship_of_Debugging_Informat \w \h  \* MERGEFORMAT 2.3, each chain of sibling entries is terminated by a null entry.) 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 attributes name. The second part is an unsigned LEB128 number representing the attributes form. The series of attribute specifications ends with an entry containing 0 for the name and 0 for the form. The attribute form DW_FORM_indirectxe "DW_FORM_indirect" is a special case. For attributes with this form, the attribute value itself in the .debug_infoxe ".debug_info" or .debug_typesxe ".debug_types" section begins with an unsigned LEB128 number that represents its form. This allows producers to choose forms for particular attributes dynamically, without having to add a new entry to the abbreviations tablexe "abbreviations table:dynamic forms in". The abbreviations for a given compilation unit end with an entry consisting of a 0 byte for the abbreviation code. See Appendix  REF _Ref493924693 \r \h  \* MERGEFORMAT D.1 for a depiction of the organization of the debugging information. Attribute Encodings The encodings for the attribute names are given in  REF _Ref235518114 \h  \* MERGEFORMAT Figure 20 (page  PAGEREF _Ref249091658 159). The attribute form governs how the value of the attribute is encoded. There are nine classes of form, listed below. Each class is a set of forms which have related representations and which are given a common interpretation according to the attribute in which the form is used. Form DW_FORM_sec_offsetxe "DW_FORM_sec_offset" is a member of more than one class, namely lineptr, loclistptr, macptr or rangelistptr; the list of classes allowed by the applicable attribute in  REF _Ref235518114 \h  \* MERGEFORMAT Figure 20 determines the class of the form. In DWARF V3 the forms DW_FORM_data4xe "DW_FORM_data4" and DW_FORM_data8xe "DW_FORM_data8" were members of either class constant or one of the classes lineptr, loclistptr, macptr or rangelistptr, depending on context. In DWARF V4 DW_FORM_data4 and DW_FORM_data8 are members of class constant in all cases. The new DW_FORM_sec_offset replaces their usage for the other classes. Each possible form belongs to one or more of the following classes: addressxe "address class" Represented as an object of appropriate size to hold an address on the target machine (DW_FORM_addrxe "DW_FORM_addr"). The size is encoded in the compilation unit header (see Section  REF BM7_5_1_Compilation_Unit_Header \r \h  \* MERGEFORMAT 7.5.1.1). This address is relocatable in a relocatable object file and is relocated in an executable file or shared object. blockxe "block class" Blocks come in four forms: A 1-byte length followed by 0 to 255 contiguous information bytes (DW_FORM_block1xe "DW_FORM_block1"). A 2-byte length followed by 0 to 65,535 contiguous information bytes (DW_FORM_block2xe "DW_FORM_block2"). A 4-byte length followed by 0 to 4,294,967,295 contiguous information bytes (DW_FORM_block4xe "DW_FORM_block4"). An unsigned LEB128 length followed by the number of bytes specified by the length (DW_FORM_blockxe "DW_FORM_block"). In all forms, the length is the number of information bytes that follow. The information bytes may contain any mixture of relocated (or relocatable) addresses, references to other debugging information entries or data bytes. constantxe "constant class" There are six forms of constants. There are fixed length constant data forms for one, two, four and eight byte values (respectively, DW_FORM_data1xe "DW_FORM_data1", DW_FORM_data2xe "DW_FORM_data2", DW_FORM_data4xe "DW_FORM_data4", and DW_FORM_data8xe "DW_FORM_data8"). There are also variable length constant data forms encoded using LEB128 numbers (see below). Both signed (DW_FORM_sdataxe "DW_FORM_sdata") and unsigned (DW_FORM_udataxe "DW_FORM_udata") variable length constants are available The data in DW_FORM_data1, DW_FORM_data2, DW_FORM_data4 and DW_FORM_data8 can be anything. Depending on context, it may be a signed integer, an unsigned integer, a floating-point constant, or anything else. A consumer must use context to know how to interpret the bits, which if they are target machine data (such as an integer or floating point constant) will be in target machine byte-order. If one of the DW_FORM_data forms is used to represent a signed or unsigned integer, it can be hard for a consumer to discover the context necessary to determine which interpretation is intended. Producers are therefore strongly encouraged to use DW_FORM_sdata or DW_FORM_udata for signed and unsigned integers respectively, rather than DW_FORM_data. exprlocxe "exprloc class" This is an unsigned LEB128 length followed by the number of information bytes specified by the length (DW_FORM_exprlocxe "DW_FORM_exprloc"). The information bytes contain a DWARF expression (see Section  REF DWARF_expression \r \h  \* MERGEFORMAT 2.5) or location description (see Section  REF BM2_4_Location_Descriptions \r \h  \* MERGEFORMAT 2.6). flagxe "flag class" A flag is represented explicitly as a single byte of data (DW_FORM_flagxe "DW_FORM_flag") or implicitly (DW_FORM_flag_presentxe "DW_FORM_flag_present"). In the first case, if the flag has value zero, it indicates the absence of the attribute; if the flag has a non-zero value, it indicates the presence of the attribute. In the second case, the attribute is implicitly indicated as present, and no value is encoded in the debugging information entry itself. lineptrxe "lineptr class" This is an offset into the .debug_linexe ".debug_line" section (DW_FORM_sec_offsetxe "DW_FORM_sec_offset"). It consists of an offset from the beginning of the .debug_line sectionxe "section offset:in class lineptr value" to the first byte of the data making up the line number list for the compilation unit. It is relocatable in a relocatable object file, and relocated in an executable or shared object. In the  REF bit32_dwarf_format \h 32-bit DWARF format, this offset is a 4-byte unsigned value; in the  REF bit64_dwarf_format \h 64-bit DWARF format, it is an 8-byte unsigned value (see Section  REF BM7_4_File_Constraints \r \h  \* MERGEFORMAT 7.4). loclistptrxe "loclistptr class" This is an offset into the .debug_locxe ".debug_loc" section (DW_FORM_sec_offsetxe "DW_FORM_sec_offset"). It consists of an offset from the beginning of the .debug_loc sectionxe "section offset:in class loclistptr value" to the first byte of the data making up the location listxe "location list" for the compilation unit. It is relocatable in a relocatable object file, and relocated in an executable or shared object. In the  REF bit32_dwarf_format \h 32-bit DWARF format, this offset is a 4-byte unsigned value; in the  REF bit64_dwarf_format \h 64-bit DWARF format, it is an 8-byte unsigned value (see Section  REF BM7_4_File_Constraints \r \h 7.4).xe "DW_FORM_data4"xe "DW_FORM_data8" macptrxe "macptr class" This is an offset into the .debug_macinfoxe ".debug_macinfo" section (DW_FORM_sec_offsetxe "DW_FORM_sec_offset"). It consists of an offset from the beginning of the .debug_macinfo sectionxe "section offset:in class macptr value" to the first byte of the data 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  REF bit32_dwarf_format \h 32-bit DWARF format, this offset is a 4-byte unsigned value; in the  REF bit64_dwarf_format \h 64-bit DWARF format, it is an 8-byte unsigned value (see Section  REF BM7_4_File_Constraints \r \h  \* MERGEFORMAT 7.4). rangelistptrxe "rangelistptr class" This is an offset into the .debug_rangesxe ".debug_ranges" section (DW_FORM_sec_offsetxe "DW_FORM_sec_offset"). It consists of an offset from the beginning of the .debug_ranges sectionxe "section offset:in class rangelistptr value" to the beginning of the non-contiguous address ranges information for the referencing entity. It is relocatable in a relocatable object file and relocated in an executable or shared object. In the  REF bit32_dwarf_format \h 32-bit DWARF format, this offset is a 4-byte unsigned value; in the  REF bit64_dwarf_format \h 64-bit DWARF format, it is an 8-byte unsigned value (see Section  REF BM7_4_File_Constraints \r \h  \* MERGEFORMAT 7.4). Because classes lineptr, loclistptr, macptr and rangelistptr share a common representation, it is not possible for an attribute to allow more than one of these classes referencexe "reference class" There are three types of referencexe "section offset:in class reference value". The first type of reference can identify any debugging information entry within the containing unit. This type of reference is an offset from the first byte of the compilation header for the compilation unit containing the reference. There are five forms for this type of reference. There are fixed length forms for one, two, four and eight byte offsets (respectively, DW_FORM_ref1xe "DW_FORM_ref1", DW_FORM_ref2xe "DW_FORM_ref2", DW_FORM_ref4xe "DW_FORM_ref4", and DW_FORM_ref8xe "DW_FORM_ref8"). There is also an unsigned variable length offset encoded form that uses unsigned LEB128 numbers (DW_FORM_ref_udataxe "DW_FORM_ref_udata"). Because this type of reference is within the containing compilation unit no relocation of the value is required. The second type of reference can identify any debugging information entry within a .debug_infoxe ".debug_info" section; in particular, it may refer to an entry in a different compilation unit from the unit containing the reference, and may refer to an entry in a different shared object. This type of reference (DW_FORM_ref_addrxe "DW_FORM_ref_addr") is an offset from the beginning of the .debug_infoxe ".debug_info" section of the target executable or shared object; it is relocatable in a relocatable object file and frequently relocated in an executable file or shared object. For references from one shared object or static executable file to another, the relocation and identification of the target object must be performed by the consumer. In the  HYPERLINK \l "bit32_dwarf_format" 32-bit DWARF format, this offset is a 4-byte unsigned value; in the  HYPERLINK \l "bit64_dwarf_format" 64-bit DWARF format, it is an 8-byte unsigned value (see Section  REF BM7_4_File_Constraints \r \h  \* MERGEFORMAT 7.4). A debugging information entry that may be referenced by another compilation unit using DW_FORM_ref_addrxe "DW_FORM_ref_addr" must have a global symbolic name. For a reference from one executable or shared object to another, the reference is resolved by the debugger to identify the shared object or executable and the offset into that objects .debug_info section in the same fashion as the run time loader, either when the debug information is first read, or when the reference is used. The third type of reference can identify any debugging information type entry that has been placed in its own type unitxe "type unit". This type of reference (DW_FORM_ref_sig8) is the 64-bit type signaturexe "type signature" (see Section  REF _Ref230753495 \n \h  \* MERGEFORMAT 7.27) that was computed for the type. The use of compilation unit relative references will reduce the number of link-time relocations and so speed up linking. The use of the second and third type of reference allows for the sharing of information, such as types, across compilation units. A reference to any kind of compilation unit identifies the debugging information entry for that unit, not the preceding header. stringxe "string class" A string is a sequence of contiguous non-null bytes followed by one null byte. A string may be represented immediately in the debugging information entry itself (DW_FORM_stringxe "DW_FORM_string"), or may be represented as an offset into a string table contained in the .debug_strxe ".debug_str" sectionxe "section offset:in class string value" of the object file (DW_FORM_strpxe "DW_FORM_strp"). In the  HYPERLINK \l "bit32_dwarf_format" 32-bit DWARF format, the representation of a DW_FORM_strp value is a 4-byte unsigned offset; in the  HYPERLINK \l "bit64_safe_DWARF_description"  HYPERLINK \l "bit64_dwarf_format" 64-bit DWARF format, it is an 8byte unsigned offset (see Section REF BM7_4_File_Constraints \r \h  \* MERGEFORMAT 7.4). If the  HYPERLINK \l "DW_AT_use_utf8" DW_AT_use_UTF8xe "DW_AT_use_UTF8" attributexe "use UTF-8 attribute" \t "See also UTF-8" is specified for the compilation unit entry, string values are encoded using the UTF-8xe "UTF-8" (Unicode Transformation Format-8) from the Universal Character Set standard (ISO/IEC 10646-1:1993). Otherwise, the string representation is unspecified. The Unicode Standard Version 3 is fully compatible with ISO/IEC 10646-1:1993. It contains all the same characters and encoding points as ISO/IEC 10646, as well as additional information about the characters and their use. Earlier versions of DWARF did not specify the representation of strings; for compatibility, this version also does not. However, the UTF-8 representation is strongly recommended. In no case does an attribute use one of the classes lineptrxe "lineptr", loclistptrxe "loclistptr", macptrxe "macptr" or rangelistptrxe "rangelistptr" to point into either the .debug_infoxe ".debug_info" or .debug_strxe ".debug_str" section. The form encodings are listed in  REF _Ref235518113 \h  \* MERGEFORMAT Figure 21 (page  PAGEREF _Ref249091480 161). Figure 18, Tag encodings, begins here. Tag nameValueHYPERLINK \l "DW_TAG_array_type"DW_TAG_array_typexe "DW_TAG_array_type"0x01HYPERLINK \l "DW_TAG_class_type"DW_TAG_class_typexe "DW_TAG_class_type"0x02HYPERLINK \l "DW_TAG_entry_point"DW_TAG_entry_pointxe "DW_TAG_entry_point"0x03HYPERLINK \l "DW_TAG_enumeration_type"DW_TAG_enumeration_typexe "DW_TAG_enumeration_type"0x04HYPERLINK \l "DW_TAG_formal_parameter"DW_TAG_formal_parameterxe "DW_TAG_formal_parameter"0x05HYPERLINK \l "DW_TAG_imported_declaration"DW_TAG_imported_declarationxe "DW_TAG_imported_declaration"0x08HYPERLINK \l "DW_TAG_label"DW_TAG_labelxe "DW_TAG_label"0x0aHYPERLINK \l "DW_TAG_lexical_block"DW_TAG_lexical_blockxe "DW_TAG_lexical_block"0x0bHYPERLINK \l "DW_TAG_member"DW_TAG_memberxe "DW_TAG_member"0x0dHYPERLINK \l "DW_TAG_pointer_type"DW_TAG_pointer_typexe "DW_TAG_pointer_type"0x0fHYPERLINK \l "DW_TAG_reference_type"DW_TAG_reference_typexe "DW_TAG_reference_type"0x10HYPERLINK \l "DW_TAG_compile_unit"DW_TAG_compile_unitxe "DW_TAG_compile_unit"0x11HYPERLINK \l "DW_TAG_string_type"DW_TAG_string_typexe "DW_TAG_string_type"0x12HYPERLINK \l "DW_TAG_structure_type"DW_TAG_structure_typexe "DW_TAG_structure_type"0x13HYPERLINK \l "DW_TAG_subroutine_type"DW_TAG_subroutine_typexe "DW_TAG_subroutine_type"0x15HYPERLINK \l "DW_TAG_typedef"DW_TAG_typedefxe "DW_TAG_typedef"0x16HYPERLINK \l "DW_TAG_union_type"DW_TAG_union_typexe "DW_TAG_union_type"0x17HYPERLINK \l "DW_TAG_unspecified_parameters"DW_TAG_unspecified_parametersxe "DW_TAG_unspecified_parameters"0x18HYPERLINK \l "DW_TAG_variant"DW_TAG_variantxe "DW_TAG_variant"0x19HYPERLINK \l "DW_TAG_common_block"DW_TAG_common_blockxe "DW_TAG_common_block"0x1aHYPERLINK \l "DW_TAG_common_inclusion"DW_TAG_common_inclusionxe "DW_TAG_common_inclusion"0x1bHYPERLINK \l "DW_TAG_inheritance"DW_TAG_inheritancexe "DW_TAG_inheritance"0x1cHYPERLINK \l "DW_TAG_inlined_subroutine"DW_TAG_inlined_subroutinexe "DW_TAG_inlined_subroutine"0x1dHYPERLINK \l "DW_TAG_module"DW_TAG_modulexe "DW_TAG_module"0x1eHYPERLINK \l "DW_TAG_ptr_to_member_type"DW_TAG_ptr_to_member_typexe "DW_TAG_ptr_to_member_type"0x1fHYPERLINK \l "DW_TAG_set_type"DW_TAG_set_typexe "DW_TAG_set_type"0x20HYPERLINK \l "DW_TAG_subrange_type"DW_TAG_subrange_typexe "DW_TAG_subrange_type"0x21HYPERLINK \l "DW_TAG_with_stmt"DW_TAG_with_stmtxe "DW_TAG_with_stmt"0x22HYPERLINK \l "DW_TAG_access_declaration"DW_TAG_access_declarationxe "DW_TAG_access_declaration"0x23HYPERLINK \l "DW_TAG_base_type"DW_TAG_base_typexe "DW_TAG_base_type"0x24HYPERLINK \l "DW_TAG_catch_block"DW_TAG_catch_blockxe "DW_TAG_catch_block"0x25HYPERLINK \l "DW_TAG_const_type"DW_TAG_const_typexe "DW_TAG_const_type"0x26HYPERLINK \l "DW_TAG_constant"DW_TAG_constantxe "DW_TAG_constant"0x27HYPERLINK \l "DW_TAG_enumerator"DW_TAG_enumeratorxe "DW_TAG_enumerator"0x28HYPERLINK \l "DW_TAG_file_type"DW_TAG_file_typexe "DW_TAG_file_type"0x29HYPERLINK \l "DW_TAG_friend"DW_TAG_friendxe "DW_TAG_friend"0x2aHYPERLINK \l "DW_TAG_namelist"DW_TAG_namelistxe "DW_TAG_namelist"0x2bHYPERLINK \l "DW_TAG_namelist_item"DW_TAG_namelist_xe "DW_TAG_namelist"itemxe "DW_TAG_namelist_item"0x2cHYPERLINK \l "DW_TAG_packed_type"DW_TAG_packed_typexe "DW_TAG_packed_type"0x2dHYPERLINK \l "DW_TAG_subprogram"DW_TAG_subprogramxe "DW_TAG_subprogram"0x2eHYPERLINK \l "DW_TAG_template_type_parameter"DW_TAG_template_type_parameterxe "DW_TAG_template_type_parameter"0x2fHYPERLINK \l "DW_TAG_template_value_parameter"DW_TAG_template_value_parameterxe "DW_TAG_template_value_parameter"0x30HYPERLINK \l "DW_TAG_thrown_type"DW_TAG_thrown_typexe "DW_TAG_thrown_type"0x31HYPERLINK \l "DW_TAG_try_block"DW_TAG_try_blockxe "DW_TAG_try_block"0x32HYPERLINK \l "DW_TAG_variant_part"DW_TAG_variant_xe "DW_TAG_variant"partxe "DW_TAG_variant_part"0x33HYPERLINK \l "DW_TAG_variable"DW_TAG_variablexe "DW_TAG_variable"0x34HYPERLINK \l "DW_TAG_volatile_type"DW_TAG_volatile_typexe "DW_TAG_volatile_type"0x35 HYPERLINK \l "DW_TAG_dwarf_procedure" DW_TAG_dwarf_procedurexe "DW_TAG_dwarf_procedure"0x36 HYPERLINK \l "DW_TAG_restrict_type" DW_TAG_restrict_typexe "DW_TAG_restrict_type"0x37 HYPERLINK \l "DW_TAG_interface" DW_TAG_interface_typexe "DW_TAG_interface_type"0x38 HYPERLINK \l "DW_TAG_namespace" DW_TAG_namespacexe "DW_TAG_namespace"0x39 HYPERLINK \l "DW_TAG_imported_module" DW_TAG_imported_modulexe "DW_TAG_imported_module"0x3a HYPERLINK \l "DW_TAG_unspecified_type" DW_TAG_unspecified_typexe "DW_TAG_unspecified_type"0x3b HYPERLINK \l "DW_TAG_partial_unit" DW_TAG_partial_unitxe "DW_TAG_partial_unit"0x3c HYPERLINK \l "DW_TAG_imported_unit" DW_TAG_imported_unitxe "DW_TAG_imported_unit"0x3d HYPERLINK \l "DW_TAG_condition" DW_TAG_conditionxe "DW_TAG_condition"0x3f HYPERLINK \l "DW_TAG_shared_type" DW_TAG_shared_typexe "DW_TAG_shared_type"0x40 HYPERLINK \l "DW_TAG_type_unit_def" DW_TAG_type_unitxe "DW_TAG_type_unit" 0x41 HYPERLINK \l "DW_TAG_rvalue_reference_type" DW_TAG_rvalue_reference_type xe "DW_TAG_rvalue_reference_type"0x42HYPERLINK \l "DW_TAG_template_alias"DW_TAG_template_alias xe "DW_TAG_template_alias"0x43 HYPERLINK \l "DW_XXX_lo_hi" DW_TAG_lo_userxe "DW_TAG_lo_user"0x4080 HYPERLINK \l "DW_XXX_lo_hi" DW_TAG_hi_userxe "DW_TAG_hi_user"0xffff New in DWARF Version 4 Figure  SEQ Figure \* ARABIC 18. Tag encodings Child determination nameValueHYPERLINK \l "DW_CHILDREN_no"DW_CHILDREN_noxe "DW_CHILDREN_no"0x00HYPERLINK \l "DW_CHILDREN_yes"DW_CHILDREN_yesxe "DW_CHILDREN_yes"0x01Figure  SEQ Figure \* ARABIC 19. Child determination encodings Figure 20, Attribute encodings, begins here. Attribute nameValueClasses HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling"0x01reference HYPERLINK \l "DW_AT_location"DW_AT_locationxe "DW_AT_location"0x02exprloc, loclistptrHYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name"0x03string HYPERLINK \l "DW_AT_ordering"DW_AT_orderingxe "DW_AT_ordering"0x09constant HYPERLINK \l "DW_AT_byte_size"DW_AT_byte_sizexe "DW_AT_byte_size"0x0bconstant, exprloc, reference HYPERLINK \l "DW_AT_bit_offset"DW_AT_bit_offsetxe "DW_AT_bit_offset"0x0cconstant, exprloc, reference HYPERLINK \l "DW_AT_bit_size"DW_AT_bit_sizexe "DW_AT_bit_size"0x0dconstant, exprloc, reference HYPERLINK \l "DW_AT_stmt_list"DW_AT_stmt_listxe "DW_AT_stmt_list"0x10lineptrHYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "DW_AT_low_pc"0x11addressHYPERLINK \l "DW_AT_high_pc"DW_AT_high_pcxe "DW_AT_high_pc"0x12address, constant HYPERLINK \l "DW_AT_language"DW_AT_languagexe "DW_AT_language"0x13constant HYPERLINK \l "DW_AT_discr"DW_AT_discrxe "DW_AT_discr"0x15reference HYPERLINK \l "DW_AT_discr_value"DW_AT_discr_xe "DW_AT_discr"valuexe "DW_AT_discr_value"0x16constant HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility"0x17constant HYPERLINK \l "DW_AT_import"DW_AT_importxe "DW_AT_import"0x18reference HYPERLINK \l "DW_AT_string_length"DW_AT_string_lengthxe "DW_AT_string_length"0x19exprloc, loclistptrHYPERLINK \l "DW_AT_common_reference"DW_AT_common_referencexe "DW_AT_common_reference"0x1areference HYPERLINK \l "DW_AT_comp_dir"DW_AT_comp_dirxe "DW_AT_comp_dir"0x1bstring HYPERLINK \l "DW_AT_const_value"DW_AT_const_valuexe "DW_AT_const_value"0x1cblock, constant, stringHYPERLINK \l "DW_AT_containing_type"DW_AT_containing_typexe "DW_AT_containing_type"0x1dreference HYPERLINK \l "DW_AT_default_value"DW_AT_default_valuexe "DW_AT_default_value"0x1ereference HYPERLINK \l "DW_AT_inline"DW_AT_inlinexe "DW_AT_inline"0x20constant HYPERLINK \l "DW_AT_is_optional"DW_AT_is_optionalxe "DW_AT_is_optional"0x21flag HYPERLINK \l "DW_AT_lower_bound"DW_AT_lower_boundxe "DW_AT_lower_bound"0x22constant, exprloc, referenceHYPERLINK \l "DW_AT_producer"DW_AT_producerxe "DW_AT_producer"0x25string HYPERLINK \l "DW_AT_prototyped"DW_AT_prototypedxe "DW_AT_prototyped"0x27flag HYPERLINK \l "DW_AT_return_addr"DW_AT_return_addrxe "DW_AT_return_addr"0x2aexprloc, loclistptrHYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "DW_AT_start_scope"0x2cConstant, rangelistptr HYPERLINK \l "DW_AT_bit_stride"DW_AT_bit_stridexe "DW_AT_bit_stride"0x2econstant, exprloc, reference HYPERLINK \l "DW_AT_upper_bound"DW_AT_upper_boundxe "DW_AT_upper_bound"0x2fconstant, exprloc, referenceHYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin"0x31reference HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility"0x32constant HYPERLINK \l "DW_AT_address_class"DW_AT_address_classxe "DW_AT_address_class"0x33constant HYPERLINK \l "DW_AT_artificial"DW_AT_artificialxe "DW_AT_artificial"0x34flag HYPERLINK \l "DW_AT_base_types"DW_AT_base_typesxe "DW_AT_base_types"0x35reference HYPERLINK \l "DW_AT_calling_convention"DW_AT_calling_conventionxe "DW_AT_calling_convention"0x36constant HYPERLINK \l "DW_AT_count"DW_AT_countxe "DW_AT_count"0x37constant, exprloc, referenceHYPERLINK \l "DW_AT_data_member_location"DW_AT_data_member_locationxe "DW_AT_data_member_location"0x38constant, exprloc, loclistptrHYPERLINK \l "DW_AT_decl_column"DW_AT_decl_columnxe "DW_AT_decl_column"0x39constant HYPERLINK \l "DW_AT_decl_file"DW_AT_decl_filexe "DW_AT_decl_file"0x3aconstant HYPERLINK \l "DW_AT_decl_line"DW_AT_decl_linexe "DW_AT_decl_line"0x3bconstant HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration"0x3cflag HYPERLINK \l "DW_AT_discr_list"DW_AT_discr_listxe "DW_AT_discr_list"0x3dblock HYPERLINK \l "DW_AT_encoding"DW_AT_encodingxe "DW_AT_encoding"0x3econstant HYPERLINK \l "DW_AT_external"DW_AT_externalxe "DW_AT_external"0x3fflag HYPERLINK \l "DW_AT_frame_base"DW_AT_frame_basexe "DW_AT_frame_base"0x40exprloc, loclistptrHYPERLINK \l "DW_AT_friend"DW_AT_friendxe "DW_AT_friend"0x41reference HYPERLINK \l "DW_AT_identifier_case"DW_AT_identifier_casexe "DW_AT_identifier_case"0x42constant HYPERLINK \l "DW_AT_macro_info"DW_AT_macro_infoxe "DW_AT_macro_info"0x43macptr HYPERLINK \l "DW_AT_namelist_item"DW_AT_namelist_itemxe "DW_AT_namelist_item"0x44referenceHYPERLINK \l "DW_AT_priority"DW_AT_priorityxe "DW_AT_priority"0x45reference HYPERLINK \l "DW_AT_segment"DW_AT_segmentxe "DW_AT_segment"0x46exprloc, loclistptrHYPERLINK \l "DW_AT_specification"DW_AT_specificationxe "DW_AT_specification"0x47reference HYPERLINK \l "DW_AT_static_link"DW_AT_static_linkxe "DW_AT_static_link"0x48exprloc, loclistptrHYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type"0x49reference HYPERLINK \l "DW_AT_use_location"DW_AT_use_locationxe "DW_AT_use_location"0x4aexprloc, loclistptrHYPERLINK \l "DW_AT_variable_parameter"DW_AT_variable_parameterxe "DW_AT_variable_parameter"0x4bflag HYPERLINK \l "DW_AT_virtuality"DW_AT_virtualityxe "DW_AT_virtuality"0x4cconstant HYPERLINK \l "DW_AT_vtable_elem_location"DW_AT_vtable_elem_locationxe "DW_AT_vtable_elem_location"0x4dexprloc, loclistptr HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"0x4econstant, exprloc, reference HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"0x4fconstant, exprloc, reference HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location"0x50exprloc HYPERLINK \l "DW_AT_stride" DW_AT_byte_stridexe "DW_AT_byte_stride"0x51constant, exprloc, reference HYPERLINK \l "DW_AT_entry_pc" DW_AT_entry_pcxe "DW_AT_entry_pc"0x52address HYPERLINK \l "DW_AT_use_utf8" DW_AT_use_UTF8xe "DW_AT_use_UTF8"0x53flag HYPERLINK \l "DW_AT_extension" DW_AT_extensionxe "DW_AT_extension"0x54reference HYPERLINK \l "DW_AT_ranges" DW_AT_rangesxe "DW_AT_ranges"0x55rangelistptr HYPERLINK \l "DW_AT_trampoline" DW_AT_trampolinexe "DW_AT_trampoline"0x56address, flag, reference, string HYPERLINK \l "DW_AT_call_column" DW_AT_call_columnxe "DW_AT_call_column"0x57constant HYPERLINK \l "DW_AT_call_file" DW_AT_call_filexe "DW_AT_call_file"0x58constant HYPERLINK \l "DW_AT_call_line" DW_AT_call_linexe "DW_AT_call_line"0x59constant HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description"0x5astring HYPERLINK \l "DW_AT_binary_scale" DW_AT_binary_scalexe "DW_AT_binary_scale"0x5bconstant HYPERLINK \l "DW_AT_decimal_scale" DW_AT_decimal_scale XE "DW_AT_decimal_scale" 0x5cconstant HYPERLINK \l "DW_AT_small" DW_AT_smallxe "DW_AT_small"0x5dreference HYPERLINK \l "DW_AT_decimal_sign" DW_AT_decimal_signxe "DW_AT_decimal_sign"0x5econstant HYPERLINK \l "DW_AT_digit_count" DW_AT_digit_countxe "DW_AT_digit_count"0x5fconstant HYPERLINK \l "DW_AT_picture_string" DW_AT_picture_stringxe "DW_AT_picture_string"0x60string HYPERLINK \l "DW_AT_mutable" DW_AT_mutablexe "DW_AT_mutable"0x61flag HYPERLINK \l "DW_AT_threads_scaled" DW_AT_threads_scaledxe "DW_AT_threads_scaled"0x62flag HYPERLINK \l "DW_AT_explicit" DW_AT_explicitxe "DW_AT_explicit"0x63flag HYPERLINK \l "DW_AT_object_pointer" DW_AT_object_pointerxe "DW_AT_object_pointer"0x64reference HYPERLINK \l "DW_AT_endianity" DW_AT_endianityxe "DW_AT_endianity"0x65constant HYPERLINK \l "DW_AT_elemental" DW_AT_elementalxe "DW_AT_elemental"0x66flag HYPERLINK \l "DW_AT_pure" DW_AT_purexe "DW_AT_pure"0x67flag HYPERLINK \l "DW_AT_recursive" DW_AT_recursivexe "DW_AT_recursive"0x68flag HYPERLINK \l "DW_AT_signature" DW_AT_signaturexe "DW_AT_signature" 0x69reference HYPERLINK \l "DW_AT_main_subprogram" DW_AT_main_subprogramxe "DW_AT_main_subprogram" 0x6aflag HYPERLINK \l "DW_AT_data_bit_offset" DW_AT_data_bit_offset xe "DW_AT_data_bit_offset"0x6bconstant HYPERLINK \l "DW_AT_const_expr" DW_AT_const_expr xe "DW_AT_const_expr"0x6cflag HYPERLINK \l "DW_AT_enum_class" DW_AT_enum_class xe "DW_AT_enum_class"0x6dflag HYPERLINK \l "DW_AT_linkage_name" DW_AT_linkage_namexe "DW_AT_linkage_name" 0x6estring HYPERLINK \l "DW_XXX_lo_hi" DW_AT_lo_userxe "DW_AT_lo_user"0x2000---  HYPERLINK \l "DW_XXX_lo_hi" DW_AT_hi_userxe "DW_AT_hi_user"0x3fff---  New in DWARF Version 4 Figure  SEQ Figure \* ARABIC 20. Attribute encodings Form nameValueClass HYPERLINK \l "DW_FORM_addr"DW_FORM_addrxe "DW_FORM_addr"0x01address  HYPERLINK \l "DW_FORM_block2" DW_FORM_block2xe "DW_FORM_block2"0x03block HYPERLINK \l "DW_FORM_block4"DW_FORM_block4xe "DW_FORM_block4"0x04block HYPERLINK \l "DW_FORM_data2"DW_FORM_data2xe "DW_FORM_data2"0x05constant HYPERLINK \l "DW_FORM_data4"DW_FORM_data4xe "DW_FORM_data4"0x06constant HYPERLINK \l "DW_FORM_data8"DW_FORM_data8xe "DW_FORM_data8"0x07constant HYPERLINK \l "DW_FORM_string"DW_FORM_stringxe "DW_FORM_string"0x08string HYPERLINK \l "DW_FORM_block"DW_FORM_blockxe "DW_FORM_block"0x09block HYPERLINK \l "DW_FORM_block1"DW_FORM_block1xe "DW_FORM_block1"0x0ablock HYPERLINK \l "DW_FORM_data1"DW_FORM_data1xe "DW_FORM_data1"0x0bconstant HYPERLINK \l "DW_FORM_flag"DW_FORM_flagxe "DW_FORM_flag"0x0cflag HYPERLINK \l "DW_FORM_sdata"DW_FORM_sdataxe "DW_FORM_sdata"0x0dconstant HYPERLINK \l "DW_FORM_strp"DW_FORM_strpxe "DW_FORM_strp"0x0estring HYPERLINK \l "DW_FORM_udata"DW_FORM_udataxe "DW_FORM_udata"0x0fconstant HYPERLINK \l "DW_FORM_ref_addr"DW_FORM_ref_addrxe "DW_FORM_ref_addr"0x10reference HYPERLINK \l "DW_FORM_ref1"DW_FORM_ref1xe "DW_FORM_ref1"0x11reference HYPERLINK \l "DW_FORM_ref2"DW_FORM_ref2xe "DW_FORM_ref2"0x12reference HYPERLINK \l "DW_FORM_ref4"DW_FORM_ref4xe "DW_FORM_ref4"0x13reference HYPERLINK \l "DW_FORM_ref8"DW_FORM_ref8xe "DW_FORM_ref8"0x14reference HYPERLINK \l "DW_FORM_ref_udata"DW_FORM_ref_udataxe "DW_FORM_ref_udata"0x15reference HYPERLINK \l "DW_FORM_indirect"DW_FORM_indirectxe "DW_FORM_indirect"0x16(see Section  REF BM7_5_3_Abbreviation_Tables \w \h  \* MERGEFORMAT 7.5.3)  HYPERLINK \l "sec_offset_forms" DW_FORM_sec_offset xe "DW_FORM_sec_offset"0x17lineptr, loclistptr, macptr, rangelistptr HYPERLINK \l "exprloc_forms" DW_FORM_exprloc xe "DW_FORM_exprloc"0x18exprloc HYPERLINK \l "flag_present_forms" DW_FORM_flag_present xe "DW_FORM_flag_present"0x19flag HYPERLINK \l "DW_FORM_ref_sig8" DW_FORM_ref_sig8xe "DW_FORM_ref_sig8" 0x20reference New in DWARF Version 4 Figure  SEQ Figure \* ARABIC 21. Attribute form encodings Variable Length Data xe "variable length data"xe "variable length data" \t "See also LEB128"xe "Little Endian Base 128" \t "See LEB128"Integers may be encoded using Little Endian Base 128 (LEB128) numbers. LEB128 is a scheme for encoding integers densely that exploits the assumption that most integers are small in magnitude. This encoding is equally suitable whether the target machine architecture represents data in big-endian or little-endian order. It is little-endian only in the sense that it avoids using space to represent the big end of an unsigned integer, when the big end is all zeroes or sign extension bits. xe "LEB128:signed, encoding as" Unsigned LEB128 (ULEB128) numbers are encoded as follows: start at the low order end of an unsigned integer and chop it into 7-bit chunks. Place each chunk into the low order 7 bits of a byte. Typically, several of the high order bytes will be zero; discard them. Emit the remaining bytes in a stream, starting with the low order byte; set the high order bit on each byte except the last emitted byte. The high bit of zero on the last byte indicates to the decoder that it has encountered the last byte. The integer zero is a special case, consisting of a single zero byte.  REF _Ref478444053 \h  \* MERGEFORMAT Figure 22 gives some examples of unsigned LEB128 numbers. The 0x80 in each case is the high order bit of the byte, indicating that an additional byte follows. xe "LEB128:unsigned, encoding as"The encoding for signed, twos complement LEB128 (SLEB128) numbers is similar, except that the criterion for discarding high order bytes is not whether they are zero, but whether they consist entirely of sign extension bits. Consider the 32-bit integer -2. The three high level bytes of the number are sign extension, thus LEB128 would represent it as a single byte containing the low order 7 bits, with the high order bit cleared to indicate the end of the byte stream. Note that there is nothing within the LEB128 representation that indicates whether an encoded number is signed or unsigned. The decoder must know what type of number to expect.  REF _Ref478444053 \h Figure 22 gives some examples of unsigned LEB128 numbers and  REF _Ref478376471 \h Figure 23 gives some examples of signed LEB128 numbers.  REF _Ref478376678 \w \h  \* MERGEFORMAT Appendix C gives algorithms for encoding and decoding these forms. xe "LEB128:examples" NumberFirst byteSecond byte 22--- 127127--- 1280+0x801 1291+0x801 1302+0x801 1285757+0x80100 Figure  SEQ Figure \* ARABIC 22. Examples of unsigned LEB128 encodings NumberFirst byteSecond byte 22--- -20x7e--- 127127+0x800 -1271+0x800x7f 1280+0x801 -1280+0x800x7f 1291+0x801 -1290x7f+0x800x7e Figure  SEQ Figure \* ARABIC 23. Examples of signed LEB128 encodings DWARF Expressions and Location Descriptions DWARF Expressions A DWARF expression is stored in a block of contiguous bytes. The bytes form a sequence of operations. Each operation is a 1-byte code that identifies that operation, followed by zero or more bytes of additional data. The encodings for the operations are described in  REF _Ref519657898 \h  \* MERGEFORMAT Figure 24. Figure 24, DWARF operation encodings, begins here.xe "DWARF expression:operator encodings" Operation CodeNo. of OperandsNotes HYPERLINK \l "DW_OP_addr"DW_OP_addrxe "DW_OP_addr"0x031constant address (size target specific) HYPERLINK \l "DW_OP_deref"DW_OP_derefxe "DW_OP_deref"0x060HYPERLINK \l "DW_OP_const1u"DW_OP_const1uxe "DW_OP_const1u"0x0811-byte constant HYPERLINK \l "DW_OP_const1s"DW_OP_const1sxe "DW_OP_const1s"0x0911-byte constant HYPERLINK \l "DW_OP_const2u"DW_OP_const2uxe "DW_OP_const2u"0x0a12-byte constant HYPERLINK \l "DW_OP_const2s"DW_OP_const2sxe "DW_OP_const2s"0x0b12-byte constant HYPERLINK \l "DW_OP_const4u"DW_OP_const4uxe "DW_OP_const4u"0x0c14-byte constant HYPERLINK \l "DW_OP_const4s"DW_OP_const4sxe "DW_OP_const4s"0x0d14-byte constant HYPERLINK \l "DW_OP_const8u"DW_OP_const8uxe "DW_OP_const8u"0x0e18-byte constant HYPERLINK \l "DW_OP_const8s"DW_OP_const8sxe "DW_OP_const8s"0x0f18-byte constant HYPERLINK \l "DW_OP_constu"DW_OP_constuxe "DW_OP_constu"0x101ULEB128 constant HYPERLINK \l "DW_OP_consts"DW_OP_constsxe "DW_OP_consts"0x111SLEB128 constant HYPERLINK \l "DW_OP_dup"DW_OP_dupxe "DW_OP_dup"0x120HYPERLINK \l "DW_OP_drop"DW_OP_dropxe "DW_OP_drop"0x130HYPERLINK \l "DW_OP_over"DW_OP_overxe "DW_OP_over"0x140HYPERLINK \l "DW_OP_pick"DW_OP_pickxe "DW_OP_pick"0x1511-byte stack index HYPERLINK \l "DW_OP_swap"DW_OP_swapxe "DW_OP_swap"0x160HYPERLINK \l "DW_OP_rot"DW_OP_rotxe "DW_OP_rot"0x170HYPERLINK \l "DW_OP_xderef"DW_OP_xderefxe "DW_OP_xderef"0x180HYPERLINK \l "DW_OP_abs"DW_OP_absxe "DW_OP_abs"0x190HYPERLINK \l "DW_OP_and"DW_OP_andxe "DW_OP_and"0x1a0HYPERLINK \l "DW_OP_div"DW_OP_divxe "DW_OP_div"0x1b0HYPERLINK \l "DW_OP_minus"DW_OP_minusxe "DW_OP_minus"0x1c0HYPERLINK \l "DW_OP_mod"DW_OP_modxe "DW_OP_mod"0x1d0HYPERLINK \l "DW_OP_mul"DW_OP_mulxe "DW_OP_mul"0x1e0HYPERLINK \l "DW_OP_neg"DW_OP_negxe "DW_OP_ne"xe "DW_OP_neg"0x1f0HYPERLINK \l "DW_OP_not"DW_OP_notxe "DW_OP_not"0x200HYPERLINK \l "DW_OP_or"DW_OP_orxe "DW_OP_or"0x210HYPERLINK \l "DW_OP_plus"DW_OP_plusxe "DW_OP_plus"0x220HYPERLINK \l "DW_OP_plus_uconst"DW_OP_plus_uconstxe "DW_OP_plus_uconst"0x231ULEB128 addend HYPERLINK \l "DW_OP_shl"DW_OP_shlxe "DW_OP_shl"0x240HYPERLINK \l "DW_OP_shr"DW_OP_shrxe "DW_OP_shr"0x250HYPERLINK \l "DW_OP_shra"DW_OP_shraxe "DW_OP_shr"xe "DW_OP_shra"0x260HYPERLINK \l "DW_OP_xor"DW_OP_xorxe "DW_OP_xor"0x270HYPERLINK \l "DW_OP_skip"DW_OP_skipxe "DW_OP_skip"0x2f1signed 2-byte constant HYPERLINK \l "DW_OP_bra"DW_OP_braxe "DW_OP_bra"0x281signed 2-byte constant HYPERLINK \l "DW_OP_eq"DW_OP_eqxe "DW_OP_eq"0x290HYPERLINK \l "DW_OP_ge"DW_OP_gexe "DW_OP_ge"0x2a0HYPERLINK \l "DW_OP_gt"DW_OP_gtxe "DW_OP_gt"0x2b0HYPERLINK \l "DW_OP_le"DW_OP_lexe "DW_OP_le"0x2c0HYPERLINK \l "DW_OP_lt"DW_OP_ltxe "DW_OP_lt"0x2d0HYPERLINK \l "DW_OP_ne"DW_OP_nexe "DW_OP_ne"0x2e0HYPERLINK \l "DW_OP_litN"DW_OP_lit0xe "DW_OP_lit0"0x300literals 0..31 = ( HYPERLINK \l "DW_OP_lit0" DW_OP_lit0xe "DW_OP_lit0" + literal) HYPERLINK \l "DW_OP_litN"DW_OP_lit1xe "DW_OP_lit1"0x310... HYPERLINK \l "DW_OP_litN"DW_OP_lit31xe "DW_OP_lit31"0x4f0HYPERLINK \l "DW_OP_regN"DW_OP_reg0xe "DW_OP_reg0"0x500reg 0..31 = ( HYPERLINK \l "DW_OP_reg0" DW_OP_reg0xe "DW_OP_reg0" + regnum) HYPERLINK \l "DW_OP_regN"DW_OP_reg1xe "DW_OP_reg1"0x510... HYPERLINK \l "DW_OP_regN"DW_OP_reg31xe "DW_OP_reg31"0x6f0HYPERLINK \l "DW_OP_bregN"DW_OP_breg0xe "DW_OP_breg0"0x701SLEB128 offset base register 0..31 = ( HYPERLINK \l "DW_OP_bregN" DW_OP_breg0xe "DW_OP_breg0" + regnum) HYPERLINK \l "DW_OP_bregN"DW_OP_breg1xe "DW_OP_breg1"0x711... HYPERLINK \l "DW_OP_bregN"DW_OP_breg31xe "DW_OP_breg31"0x8f1HYPERLINK \l "DW_OP_regx"DW_OP_regxxe "DW_OP_regx"0x901ULEB128 register HYPERLINK \l "DW_OP_fbreg"DW_OP_fbregxe "DW_OP_fbreg"0x911SLEB128 offset HYPERLINK \l "DW_OP_bregx"DW_OP_bregxxe "DW_OP_bregx"0x922ULEB128 register followed by SLEB128 offset HYPERLINK \l "DW_OP_piece"DW_OP_piecexe "DW_OP_piece"0x931ULEB128 size of piece addressed HYPERLINK \l "DW_OP_deref_size"DW_OP_deref_sizexe "DW_OP_deref_size"0x9411-byte size of data retrieved HYPERLINK \l "DW_OP_xderef_size"DW_OP_xderef_sizexe "DW_OP_xderef_size"0x9511-byte size of data retrieved HYPERLINK \l "DW_OP_nop"DW_OP_nopxe "DW_OP_nop"0x960 HYPERLINK \l "DW_OP_push_object_address" DW_OP_push_object_addressxe "DW_OP_push_object_address"0x970 HYPERLINK \l "DW_OP_call2" DW_OP_call2xe "DW_OP_call2"0x9812-byte offset of DIE HYPERLINK \l "DW_OP_call4" DW_OP_call4xe "DW_OP_call4"0x9914-byte offset of DIE HYPERLINK \l "DW_OP_call_ref" DW_OP_call_refxe "DW_OP_call_ref"0x9a14- or 8-byte offset of DIE HYPERLINK \l "DW_OP_form_tls_address" DW_OP_form_tls_addressxe "DW_OP_form_tls_address"0x9b0 HYPERLINK \l "DW_OP_call_frame_cfa" DW_OP_call_frame_cfaxe "DW_OP_call_frame_cfa"0x9c0 HYPERLINK \l "DW_OP_bit_piece" DW_OP_bit_piecexe "DW_OP_bit_piece"0x9d2ULEB128 size followed by ULEB128 offset HYPERLINK \l "DW_OP_implicit_value" DW_OP_implicit_valuexe "DW_OP_implicit_value" 0x9e2ULEB128 size followed by block of that size HYPERLINK \l "DW_OP_stack_value" DW_OP_stack_valuexe "DW_OP_stack_value" 0x9f0 HYPERLINK \l "DW_XXX_lo_hi" DW_OP_lo_userxe "DW_OP_lo_user"0xe0 HYPERLINK \l "DW_XXX_lo_hi" DW_OP_hi_userxe "DW_OP_hi_user"0xff New in DWARF Version 4 Figure  SEQ Figure \* ARABIC 24. DWARF operation encodings Location Descriptions A location description is used to compute the location of a variable or other entity. Location Lists Each entry in a location listxe "location list" is either a location list entry, a base address selection entry, or an end of list entry. A location list entry consists of two address offsets followed by a 2-byte length, followed by a block of contiguous bytes that contains a DWARF location description. The length specifies the number of bytes in that block. The two offsets are the same size as an address xe "DW_FORM_addr"on the target machine. A base address selection entryxe "base address selection entry:in location list" and an end of list entryxe "end of list entry:in location list" each consist of two (constant or relocated) address offsets. The two offsets are the same size as an address xe "DW_FORM_addr"on the target machine. For a location list to be specified, the base address of the corresponding compilation unit must be defined (see Section  REF _Ref516902159 \r \h  \* MERGEFORMAT 3.1.1). Base Type Attribute Encodings The encodings of the constants used in the HYPERLINK \l "DW_AT_encoding"DW_AT_encodingxe "DW_AT_encoding" attribute are given in  REF _Ref264184383 \h Figure 25. xe "encoding attribute:encoding" Base type encoding code nameValue HYPERLINK \l "DW_ATE_address" DW_ATE_addressxe "DW_ATE_address"0x01HYPERLINK \l "DW_ATE_boolean"DW_ATE_booleanxe "DW_ATE_boolean"0x02HYPERLINK \l "DW_ATE_complex_float"DW_ATE_complex_floatxe "DW_ATE_complex_float"0x03 HYPERLINK \l "DW_ATE_float" DW_ATE_floatxe "DW_ATE_float"0x04HYPERLINK \l "DW_ATE_signed"DW_ATE_signedxe "DW_ATE_signed"0x05HYPERLINK \l "DW_ATE_signed_char"DW_ATE_signed_charxe "DW_ATE_signed_char"0x06HYPERLINK \l "DW_ATE_unsigned"DW_ATE_unsignedxe "DW_ATE_unsigned"0x07HYPERLINK \l "DW_ATE_unsigned_char"DW_ATE_unsigned_charxe "DW_ATE_unsigned_char"0x08 HYPERLINK \l "DW_ATE_imaginary_float" DW_ATE_imaginary_floatxe "DW_ATE_imaginary_float"0x09 HYPERLINK \l "DW_ATE_packed_decimal" DW_ATE_packed_decimalxe "DW_ATE_packed_decimal"0x0a HYPERLINK \l "DW_ATE_numeric_string" DW_ATE_numeric_stringxe "DW_ATE_numeric_string"0x0b HYPERLINK \l "DW_ATE_edited" DW_ATE_editedxe "DW_ATE_edited"0x0c HYPERLINK \l "DW_ATE_signed_fixed" DW_ATE_signed_fixedxe "DW_ATE_signed_fixed"0x0d HYPERLINK \l "DW_ATE_unsigned_fixed" DW_ATE_unsigned_fixedxe "DW_ATE_unsigned_fixed"0x0e HYPERLINK \l "DW_ATE_decimal_float" DW_ATE_decimal_floatxe "DW_ATE_decimal_float"0x0f HYPERLINK \l "DW_ATE_utf" DW_ATE_UTF XE "DW_ATE_UTF"  0x10 HYPERLINK \l "DW_XXX_lo_hi" DW_ATE_lo_userxe "DW_ATE_lo_user"0x80 HYPERLINK \l "DW_XXX_lo_hi" DW_ATE_hi_userxe "DW_ATE_hi_user"0xff New in DWARF Version 4 Figure  SEQ Figure \* ARABIC 25. Base type encoding values The encodings of the constants used in the  HYPERLINK \l "DW_AT_decimal_sign" DW_AT_decimal_signxe "DW_AT_decimal_sign" attribute are given in  REF _Ref249093022 Figure 26. Decimal sign code nameValue HYPERLINK \l "DW_DS_unsigned" DW_DS_unsignedxe "DW_DS_unsigned"0x01 HYPERLINK \l "DW_DS_leading_overpunch" DW_DS_leading_overpunchxe "DW_DS_leading_overpunch"0x02 HYPERLINK \l "DW_DS_trailing_overpunch" DW_DS_trailing_overpunchxe "DW_DS_trailing_overpunch"0x03 HYPERLINK \l "DW_DS_leading_separate" DW_DS_leading_separatexe "DW_DS_leading_separate"0x04 HYPERLINK \l "DW_DS_trailing_separate" DW_DS_trailing_separatexe "DW_DS_trailing_separate"0x05Figure  SEQ Figure \* ARABIC 26. Decimal sign encodings The encodings of the constants used in the  HYPERLINK \l "DW_AT_endianity" DW_AT_endianityxe "DW_AT_endianity" attribute are given in  REF _Ref249093271 \* MERGEFORMAT Figure 27. Endian code nameValue HYPERLINK \l "DW_END_default" DW_END_defaultxe "DW_END_default"0x00 HYPERLINK \l "DW_END_big" DW_END_bigxe "DW_END_big"0x01 HYPERLINK \l "DW_END_little" DW_END_littlexe "DW_END_little"0x02DW_END_lo_userxe "DW_END_lo_user"0x40DW_END_hi_userxe "DW_END_hi_user"0xffFigure  SEQ Figure \* ARABIC 27. Endianity encodings Accessibility Codes The encodings of the constants used in the HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility" xe "accessibility attribute:encoding"attribute are given in  REF _Ref478376859 \h  \* MERGEFORMAT Figure 28. Accessibility code nameValue HYPERLINK \l "DW_ACCESS_public" DW_ACCESS_publicxe "DW_ACCESS_public"0x01 HYPERLINK \l "DW_ACCESS_protected" DW_ACCESS_protectedxe "DW_ACCESS_protected"0x02 HYPERLINK \l "DW_ACCESS_private" DW_ACCESS_privatexe "DW_ACCESS_private"0x03Figure  SEQ Figure \* ARABIC 28. Accessibility encodings Visibility Codes The encodings of the constants used in the HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility" attribute are given in  REF _Ref478376876 \h  \* MERGEFORMAT Figure 29. xe "visibility attribute:encoding" Visibility code nameValueHYPERLINK \l "DW_VIS_local"DW_VIS_localxe "DW_VIS_local"0x01HYPERLINK \l "DW_VIS_exported"DW_VIS_exportedxe "DW_VIS_exported"0x02HYPERLINK \l "DW_VIS_qualified"DW_VIS_qualifiedxe "DW_VIS_qualified"0x03Figure  SEQ Figure \* ARABIC 29. Visibility encodings Virtuality Codes The encodings of the constants used in the HYPERLINK \l "DW_AT_virtuality"DW_AT_virtualityxe "DW_AT_virtuality" attribute are given in  REF _Ref478376892 \h  \* MERGEFORMAT Figure 30. xe "virtuality attribute:encoding" \i Virtuality code nameValueHYPERLINK \l "DW_VIRTUALITY_none"DW_VIRTUALITY_nonexe "DW_VIRTUALITY_none"0x00HYPERLINK \l "DW_VIRTUALITY_virtual"DW_VIRTUALITY_virtualxe "DW_VIRTUALITY_virtual"0x01HYPERLINK \l "DW_VIRTUALITY_pure_virtual"DW_VIRTUALITY_pure_virtualxe "DW_VIRTUALITY_pure_virtual"0x02Figure  SEQ Figure \* ARABIC 30. Virtuality encodings The value DW_VIRTUALITY_none is equivalent to the absence of the DW_AT_virtuality attribute. Source Languages The encodings of the constants used in the  HYPERLINK \l "DW_AT_language" DW_AT_languagexe "DW_AT_language" attribute are given in  REF _Ref519658001 \h  \* MERGEFORMAT Figure 31. Names marked with and their associated values are reserved, but the languages they represent are not well supported. xe "language name encoding" \i  REF _Ref519658001 \h  \* MERGEFORMAT Figure 31 also shows the default lower boundxe "lower bound attribute:default", if any, assumed for an omitted  HYPERLINK \l "DW_AT_lower_bound_subrange" DW_AT_lower_boundxe "DW_AT_lower_bound" attribute in the context of a  HYPERLINK \l "DW_TAG_subrange_type" DW_TAG_subrange_typexe "DW_TAG_subrange_type" debugging information entry for each defined language. Language nameValueDefault Lower BoundHYPERLINK \l "DW_LANG_C89"DW_LANG_C89xe "DW_LANG_C89"0x00010HYPERLINK \l "DW_LANG_C"DW_LANG_Cxe "DW_LANG_C"0x00020HYPERLINK \l "DW_LANG_Ada83"DW_LANG_Ada83 xe "DW_LANG_Ada83"0x00031HYPERLINK \l "DW_LANG_C_plus_plus"DW_LANG_C_plus_plusxe "DW_LANG_C_plus_plus"0x00040HYPERLINK \l "DW_LANG_Cobol74"DW_LANG_Cobol74xe "DW_LANG_Cobol74" 0x00051HYPERLINK \l "DW_LANG_Cobol85"DW_LANG_Cobol85xe "DW_LANG_Cobol85" 0x00061HYPERLINK \l "DW_LANG_Fortran77"DW_LANG_Fortran77xe "DW_LANG_Fortran77"0x00071HYPERLINK \l "DW_LANG_Fortran90"DW_LANG_Fortran90xe "DW_LANG_Fortran90"0x00081HYPERLINK \l "DW_LANG_Pascal83"DW_LANG_Pascal83xe "DW_LANG_Pascal83"0x00091HYPERLINK \l "DW_LANG_Modula2"DW_LANG_Modula2xe "DW_LANG_Modula2"0x000a1 HYPERLINK \l "DW_LANG_Java" DW_LANG_Javaxe "DW_LANG_Java"0x000b0 HYPERLINK \l "DW_LANG_C99" DW_LANG_C99xe "DW_LANG_C99"0x000c0 HYPERLINK \l "DW_LANG_Ada95" DW_LANG_Ada95 xe "DW_LANG_Ada95"0x000d1 REF DW_LANG_Fortran95 \h  \* MERGEFORMAT DW_LANG_Fortran95xe "DW_LANG_Fortran95"0x000e1 HYPERLINK \l "DW_LANG_PLI" DW_LANG_PLIxe "DW_LANG_PLI" 0x000f1 HYPERLINK \l "DW_LANG_ObjC" DW_LANG_ObjCxe "DW_LANG_ObjC"0x00100 HYPERLINK \l "DW_LANG_ObjC_plus_plus" DW_LANG_ObjC_plus_plusxe "DW_LANG_ObjC_plus_plus"0x00110 HYPERLINK \l "DW_LANG_UPC" DW_LANG_UPC XE "DW_LANG_UPC" 0x00120 HYPERLINK \l "DW_LANG_D" DW_LANG_D XE "DW_LANG_Python" 0x00130 HYPERLINK \l "DW_LANG_Python" DW_LANG_Python xe "DW_LANG_Python"0x00140 HYPERLINK \l "DW_XXX_lo_hi" DW_LANG_lo_userxe "DW_LANG_lo_user"0x8000 HYPERLINK \l "DW_XXX_lo_hi" DW_LANG_hi_userxe "DW_LANG_hi_user"0xffff See text Figure  SEQ Figure \* ARABIC 31. Language encodings Address Class Encodings The value of the common address class encoding HYPERLINK \l "DW_ADDR_none"DW_ADDR_nonexe "DW_ADDR_none" is 0. xe "address class attribute:encoding" \i Identifier Case The encodings of the constants used in the HYPERLINK \l "DW_AT_identifier_case"DW_AT_identifier_casexe "DW_AT_identifier_case" attribute are given in  REF _Ref478376968 \h  \* MERGEFORMAT Figure 32. xe "identifier case attribute:encoding" \i Identifier Case NameValueHYPERLINK \l "DW_ID_case_sensitive"DW_ID_case_sensitivexe "DW_ID_case_sensitive"0x00HYPERLINK \l "DW_ID_up_case"DW_ID_up_casexe "DW_ID_up_case"0x01HYPERLINK \l "DW_ID_down_case"DW_ID_down_casexe "DW_ID_down_case"0x02HYPERLINK \l "DW_ID_case_insensitive"DW_ID_case_insensitivexe "DW_ID_case_insensitive"0x03Figure  SEQ Figure \* ARABIC 32. Identifier case encodings Calling Convention Encodings The encodings of the constants used in the HYPERLINK \l "DW_AT_calling_convention"DW_AT_calling_conventionxe "DW_AT_calling_convention" attribute are given in  REF _Ref478376989 \h  \* MERGEFORMAT Figure 33. xe "calling convention attribute:encoding" \i Calling Convention NameValueHYPERLINK \l "DW_CC_normal"DW_CC_normalxe "DW_CC_normal"0x01HYPERLINK \l "DW_CC_program"DW_CC_programxe "DW_CC_program"0x02HYPERLINK \l "DW_CC_nocall"DW_CC_nocallxe "DW_CC_nocall"0x03 HYPERLINK \l "DW_XXX_lo_hi" DW_CC_lo_userxe "DW_CC_lo_user"0x40 HYPERLINK \l "DW_XXX_lo_hi" DW_CC_hi_userxe "DW_CC_hi_user"0xffFigure  SEQ Figure \* ARABIC 33. Calling convention encodings Inline Codes The encodings of the constants used in the HYPERLINK \l "DW_AT_inline"DW_AT_inlinexe "DW_AT_inline" attribute are given in  REF _Ref478377006 \h  \* MERGEFORMAT Figure 34. xe "inline attribute:encoding" \i Inline Code NameValueHYPERLINK \l "DW_INL_not_inlined"DW_INL_not_inlinedxe "DW_INL_not_inlined"0x00HYPERLINK \l "DW_INL_inlined"DW_INL_inlinedxe "DW_INL_inlined"0x01HYPERLINK \l "DW_INL_declared_not_inlined"DW_INL_declared_not_inlinedxe "DW_INL_declared_not_inlined"0x02HYPERLINK \l "DW_INL_declared_inlined"DW_INL_declared_inlinedxe "DW_INL_declared_inlined"0x03Figure  SEQ Figure \* ARABIC 34. Inline encodings Array Ordering The encodings of the constants used in the  HYPERLINK \l "DW_AT_ordering_usage" DW_AT_orderingxe "DW_AT_ordering" attribute are given in  REF _Ref478377021 \h  \* MERGEFORMAT Figure 35. xe "ordering attribute:encoding" \i Ordering nameValueHYPERLINK \l "DW_ORD_row_major"DW_ORD_row_majorxe "DW_ORD_row_major"0x00HYPERLINK \l "DW_ORD_col_major"DW_ORD_col_majorxe "DW_ORD_col_major"0x01Figure  SEQ Figure \* ARABIC 35. Ordering encodings Discriminant Lists The descriptors used in the HYPERLINK \l "DW_AT_discr_list"DW_AT_discr_listxe "DW_AT_discr_list" attribute are encoded as 1-byte constants. The defined values are given in  REF _Ref478377046 \h  \* MERGEFORMAT Figure 36. xe "discriminant list attribute:encoding" \i Descriptor NameValueHYPERLINK \l "DW_DSC_label"DW_DSC_labelxe "DW_DSC_label"0x00HYPERLINK \l "DW_DSC_range"DW_DSC_rangexe "DW_DSC_range"0x01Figure  SEQ Figure \* ARABIC 36. Discriminant descriptor encodings Name Lookup Tables Each set of entries in the table of global names contained in the .debug_pubnamesxe ".debug_pubnames" and .debug_pubtypesxe ".debug_pubtypes" sections begins with a header consisting of: unit_lengthxe "unit_length" (HYPERLINK \l "initial_length_field"initial lengthxe "initial length field") A 4-byte or 12-byte length of the set of entries for this compilation unit, not including the length field itself. In the  HYPERLINK \l "bit32_dwarf_format" 32-bit DWARF format, this is a 4-byte unsigned integer (which must be less than 0xfffffff0); in the  HYPERLINK \l "bit64_dwarf_format" 64-bit DWARF format, this consists of the 4-byte value 0xffffffff followed by an 8-byte unsigned integer that gives the actual length (see Section  REF BM7_4_File_Constraints \n \h  \* MERGEFORMAT 7.4). versionxe "version number:name lookup table" (uhalfxe "uhalf") A 2-byte version identifier containing the value 2 (see  REF _Ref114543352 \n \h  \* MERGEFORMAT Appendix F). debug_info_offset (section offsetxe "section offset:in .debug_pubnames header") A 4-byte or 8-byte offset into the .debug_infoxe ".debug_info" section of the compilation unit header. In the  HYPERLINK \l "bit32_dwarf_format" 32-bit DWARF format, this is a 4-byte unsigned offset; in the  HYPERLINK \l "bit64_safe_DWARF_description"  HYPERLINK \l "bit64_dwarf_format" 64-bit DWARF format, this field is an 8-byte unsigned offset (see Section  REF BM7_4_File_Constraints \n \h  \* MERGEFORMAT 7.4). debug_info_length (section lengthxe "section length:in .debug_pubnames header"xe "section length:in .debug_pubtypes header") A 4-byte or 8-byte length containing the size in bytes of the contents of the .debug_infoxe ".debug_info" section generated to represent this compilation unit. In the  HYPERLINK \l "bit32_dwarf_format" 32-bit DWARF format, this is a 4-byte unsigned length; in the  HYPERLINK \l "bit64_safe_DWARF_description"  HYPERLINK \l "bit64_dwarf_format" 64-bit DWARF format, this is an 8-byte unsigned length (see Section  REF BM7_4_File_Constraints \n \h  \* MERGEFORMAT 7.4). This header is followed by a series of tuples. Each tuple consists of a 4-byte or 8-byte offset followed by a string of non-null bytes terminated by one null byte. In the 32-bit DWARF format, this is a 4-byte offset; in the 64-bit DWARF format, it is an 8-byte offset. Each set is terminated by an offset containing the value 0. Address Range Table Each set of entries in the table of address ranges contained in the .debug_arangesxe ".debug_aranges" section begins with a header containing: unit_lengthxe "unit_length" (HYPERLINK \l "initial_length_field"initial lengthxe "initial length field") A 4-byte or 12-byte length containing the length of the set of entries for this compilation unit, not including the length field itself. In the  HYPERLINK \l "bit32_dwarf_format" 32-bit DWARF format, this is a 4-byte unsigned integer (which must be less than 0xfffffff0); in the  HYPERLINK \l "bit64_dwarf_format" 64-bit DWARF format, this consists of the 4-byte value 0xffffffff followed by an 8-byte unsigned integer that gives the actual length (see Section  REF BM7_4_File_Constraints \n \h  \* MERGEFORMAT 7.4). versionxe "version number:address lookup table" (uhalfxe "uhalf") A 2-byte version identifier containing the value 2 (see  REF _Ref114543352 \n \h Appendix F). debug_info_offset (section offsetxe "section offset:in .debug_pubnames header") A 4-byte or 8-byte offset into the .debug_infoxe ".debug_info" section of the compilation unit header. In the  HYPERLINK \l "bit32_dwarf_format" 32-bit DWARF format, this is a 4-byte unsigned offset; in the  HYPERLINK \l "bit64_safe_DWARF_description"  HYPERLINK \l "bit64_dwarf_format" 64-bit DWARF format, this is an 8-byte unsigned offset (see Section  REF BM7_4_File_Constraints \n \h  \* MERGEFORMAT 7.4). address_sizexe "address_size" (ubytexe "ubyte") A 1-byte unsigned integer containing the size in bytes of an addressxe "size of an address" (or the offset portion of an address for segmented addressingxe "address space:segmented") on the target system. segment_sizexe "segment_size" (ubytexe "ubyte") A 1-byte unsigned integer containing the size in bytes of a segment selector on the target system. This header is followed by a series of tuples. Each tuple consists of a segment, an address and a length. The segment size is given by the segment_sizexe "segment_size" field of the header; the address and length size are each given by the address_sizexe "address_size" field of the header. The first tuple following the header in each set begins at an offset that is a multiple of the size of a single tuple (that is, the size of a segment selector plus twice the size of an addressxe "size of an address"). The header is padded, if necessary, to that boundary. Each set of tuples is terminated by a 0 for the segment, a 0 for the address and 0 for the length. If the segment_size field in the header is zero, the segment selectors are omitted from all tuples, including the terminating tuple. Line Number Information The version numberxe "version number:line number information" in the line number program header is 4 (see  REF _Ref114543352 \n \h  \* MERGEFORMAT Appendix F).. The boolean values true and false used by the line number information program are encoded as a single byte containing the value 0 for false, and a non-zero value for true. The encodings for the standard opcodes are given in  REF _Ref519658061 \h  \* MERGEFORMAT Figure 37. xe "line number opcodes:standard opcode encoding" Opcode NameValueHYPERLINK \l "DW_LNS_copy"DW_LNS_copyxe "DW_LNS_copy"0x01HYPERLINK \l "DW_LNS_advance_pc"DW_LNS_advance_pcxe "DW_LNS_advance_pc"0x02HYPERLINK \l "DW_LNS_advance_line"DW_LNS_advance_linexe "DW_LNS_advance_line"0x03HYPERLINK \l "DW_LNS_set_file"DW_LNS_set_filexe "DW_LNS_set_file"0x04HYPERLINK \l "DW_LNS_set_column"DW_LNS_set_columnxe "DW_LNS_set_column"0x05HYPERLINK \l "DW_LNS_negate_stmt"DW_LNS_negate_stmtxe "DW_LNS_negate_stmt"0x06HYPERLINK \l "DW_LNS_set_basic_block"DW_LNS_set_basic_blockxe "DW_LNS_set_basic_block"0x07HYPERLINK \l "DW_LNS_const_add_pc"DW_LNS_const_add_pcxe "DW_LNS_const_add_pc"0x08HYPERLINK \l "DW_LNS_fixed_advance_pc"DW_LNS_fixed_advance_pcxe "DW_LNS_fixed_advance_pc"0x09 HYPERLINK \l "DW_LNS_set_prologue_end" DW_LNS_set_prologue_endxe "DW_LNS_set_prologue_end"xe "prologue"0x0a HYPERLINK \l "DW_LNS_set_epilogue_begin" DW_LNS_set_epilogue_beginxe "DW_LNS_set_epilogue_begin"xe "epilogue"0x0b HYPERLINK \l "DW_LNS_set_isa" DW_LNS_set_isaxe "DW_LNS_set_isa"0x0cFigure  SEQ Figure \* ARABIC 37. Line Number Standard Opcode Encodings The encodings for the extended opcodes are given in  REF _Ref528997817 \h  \* MERGEFORMAT Figure 38. xe "line number opcodes:extended opcode encoding" Opcode NameValueHYPERLINK \l "DW_LNE_end_sequence"DW_LNE_end_sequencexe "DW_LNE_end_sequence"0x01HYPERLINK \l "DW_LNE_set_address"DW_LNE_set_addressxe "DW_LNE_set_address"0x02HYPERLINK \l "DW_LNE_define_file"DW_LNE_define_filexe "DW_LNE_define_file"0x03 HYPERLINK \l "DW_LNE_set_discriminator" DW_LNE_set_discriminatorxe "DW_LNE_set_discriminator" 0x04 HYPERLINK \l "DW_XXX_lo_hi" DW_LNE_lo_userxe "DW_LNE_lo_user"0x80 HYPERLINK \l "DW_XXX_lo_hi" DW_LNE_hi_userxe "DW_LNE_hi_user"0xff New in DWARF Version 4 Figure  SEQ Figure \* ARABIC 38. Line Number Extended Opcode Encodings Macro Information 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 HYPERLINK \l "DW_MACINFO_vendor_ext"DW_MACINFO_vendor_extxe "DW_MACINFO_vendor_ext" entry. The macinfo type is encoded as a single byte. The encodings are given in  REF _Ref478377193 \h  \* MERGEFORMAT Figure 39. xe "macinfo types:encoding" \i Macinfo Type NameValueHYPERLINK \l "DW_MACINFO_define"DW_MACINFO_definexe "DW_MACINFO_define"0x01HYPERLINK \l "DW_MACINFO_undef"DW_MACINFO_undefxe "DW_MACINFO_undef"0x02HYPERLINK \l "DW_MACINFO_start_file"DW_MACINFO_start_filexe "DW_MACINFO_start_file"0x03HYPERLINK \l "DW_MACINFO_end_file"DW_MACINFO_end_filexe "DW_MACINFO_end_file"0x04HYPERLINK \l "DW_MACINFO_vendor_ext"DW_MACINFO_vendor_extxe "DW_MACINFO_vendor_ext"0xffFigure  SEQ Figure \* ARABIC 39. Macinfo Type Encodings Call Frame Information In the  HYPERLINK \l "bit32_dwarf_format" 32-bit DWARF format, the value of the CIE id in the CIE header is 0xffffffff; in the  HYPERLINK \l "bit64_safe_DWARF_description"  HYPERLINK \l "bit64_dwarf_format" 64-bit DWARF format, the value is 0xffffffffffffffff. The value of the CIE versionxe "version number:call frame information" number is 4 (see  REF _Ref114543352 \n \h  \* MERGEFORMAT Appendix F). Call frame instructions are encoded in one or more bytes. The primary opcode is encoded in the high order two bits of the first byte (that is, opcode = byte >> 6). An operand or extended opcode may be encoded in the low order 6 bits. Additional operands are encoded in subsequent bytes. The instructions and their encodings are presented in  REF _Ref519658101 \h  \* MERGEFORMAT Figure 40. xe "call frame information:encoding" \i InstructionHigh 2 BitsLow 6 BitsOperand 1Operand 2 HYPERLINK \l "DW_CFA_advance_loc"DW_CFA_advance_locxe "DW_CFA_advance_loc"0x1deltaHYPERLINK \l "DW_CFA_offset"DW_CFA_offsetxe "DW_CFA_offset"0x2registerULEB128 offset HYPERLINK \l "DW_CFA_restore"DW_CFA_restorexe "DW_CFA_restore"0x3registerHYPERLINK \l "DW_CFA_nop"DW_CFA_nopxe "DW_CFA_nop"00HYPERLINK \l "DW_CFA_set_loc"DW_CFA_set_locxe "DW_CFA_set_loc"00x01address HYPERLINK \l "DW_CFA_advance_loc1"DW_CFA_advance_loc1xe "DW_CFA_advance_loc1"00x021-byte delta HYPERLINK \l "DW_CFA_advance_loc2"DW_CFA_advance_loc2xe "DW_CFA_advance_loc2"00x032-byte delta HYPERLINK \l "DW_CFA_advance_loc4"DW_CFA_advance_loc4xe "DW_CFA_advance_loc4"00x044-byte delta HYPERLINK \l "DW_CFA_offset_extended"DW_CFA_offset_extendedxe "DW_CFA_offset_extended"00x05ULEB128 registerULEB128 offset HYPERLINK \l "DW_CFA_restore_extended"DW_CFA_restore_extendedxe "DW_CFA_restore_extended"00x06ULEB128 register HYPERLINK \l "DW_CFA_undefined"DW_CFA_undefinedxe "DW_CFA_undefined"00x07ULEB128 register HYPERLINK \l "DW_CFA_same_value"DW_CFA_same_valuexe "DW_CFA_same_value"00x08ULEB128 register HYPERLINK \l "DW_CFA_register"DW_CFA_registerxe "DW_CFA_register"00x09ULEB128 registerULEB128 register HYPERLINK \l "DW_CFA_remember_state"DW_CFA_remember_statexe "DW_CFA_remember_state"00x0aHYPERLINK \l "DW_CFA_restore_state"DW_CFA_restore_statexe "DW_CFA_restore_state"00x0bHYPERLINK \l "DW_CFA_def_cfa"DW_CFA_def_cfaxe "DW_CFA_def_cfa"00x0cULEB128 registerULEB128 offset HYPERLINK \l "DW_CFA_def_cfa_register"DW_CFA_def_cfa_registerxe "DW_CFA_def_cfa_register"00x0dULEB128 register HYPERLINK \l "DW_CFA_def_cfa_offset"DW_CFA_def_cfa_offsetxe "DW_CFA_def_cfa_offset"00x0eULEB128 offset  HYPERLINK \l "DW_CFA_def_cfa_expression" DW_CFA_def_cfa_expressionxe "DW_CFA_def_cfa_expression"00x0fBLOCK HYPERLINK \l "DW_CFA_expression" DW_CFA_expressionxe "DW_CFA_expression"00x10ULEB128 registerBLOCK HYPERLINK \l "DW_CFA_offset_extended_sf" DW_CFA_offset_extendedxe "DW_CFA_offset_extended"_sfxe "DW_CFA_offset_extended_sf"00x11ULEB128 registerSLEB128 offset HYPERLINK \l "DW_CFA_def_cfa_sf" DW_CFA_def_cfa_sfxe "DW_CFA_def_cfa_sf"00x12ULEB128 registerSLEB128 offset HYPERLINK \l "DW_CFA_def_cfa_offset_sf" DW_CFA_def_cfa_offset_sfxe "DW_CFA_def_cfa_offset_sf"00x13SLEB128 offset HYPERLINK \l "DW_CFA_val_offset" DW_CFA_val_offsetxe "DW_CFA_val_offset"00x14ULEB128ULEB128 HYPERLINK \l "DW_CFA_val_offset_sf" DW_CFA_val_offset_sfxe "DW_CFA_val_offset_sf"00x15ULEB128SLEB128 HYPERLINK \l "DW_CFA_val_expression" DW_CFA_val_expressionxe "DW_CFA_val_expression"00x16ULEB128BLOCK HYPERLINK \l "DW_XXX_lo_hi" DW_CFA_lo_userxe "DW_CFA_lo_user"00x1c HYPERLINK \l "DW_XXX_lo_hi" DW_CFA_hi_userxe "DW_CFA_hi_user"00x3fFigure  SEQ Figure \* ARABIC 40. Call frame instruction encodings Non-contiguous Address Ranges Each entry in a range listxe "range list" (see Section  REF _Ref495310701 \r \h  \* MERGEFORMAT 2.17.3) is either a range list entry, a base address selection entry, or an end of list entry. A range list entry consists of two relative addresses. The addresses are the same size as addresses xe "DW_FORM_addr"on the target machine. A base address selection entryxe "base address selection entry:in range list" and an end of list entryxe "end of list entry:in range list" each consist of two (constant or relocated) addresses. The two addresses are the same size as addresses xe "DW_FORM_addr"on the target machine. For a range list to be specified, the base address of the corresponding compilation unit must be defined (see Section  REF _Ref516902159 \r \h  \* MERGEFORMAT 3.1.1). Dependencies and Constraints The debugging information in this format is intended to exist in the .debug_abbrevxe ".debug_abbrev", .debug_arangesxe ".debug_aranges", .debug_framexe ".debug_frame", .debug_infoxe ".debug_info", .debug_linexe ".debug_line", .debug_locxe ".debug_loc", .debug_macinfoxe ".debug_macinfo", .debug_pubnamesxe ".debug_pubnames", .debug_pubtypesxe ".debug_pubtypes", .debug_ranges,xe ".debug_ranges" .debug_strxe ".debug_str" and .debug_types xe ".debug_types"sections of an object file, or equivalent separate file or databasexe "DWARF section names, list of". The information is not word-aligned. Consequently: For the  HYPERLINK \l "bit32_dwarf_format" 32-bit DWARF format and a target architecture with 32-bit addresses, an assembler or compiler must provide a way to produce 2-byte and 4-byte quantities without alignment restrictions, and the linker must be able to relocate a 4-byte address or section offsetxe "section offset:alignment of" that occurs at an arbitrary alignment. For the  HYPERLINK \l "bit32_dwarf_format" 32-bit DWARF format and a target architecture with 64-bit addresses, an assembler or compiler must provide a way to produce 2-byte, 4-byte and 8-byte quantities without alignment restrictions, and the linker must be able to relocate an 8-byte address or 4-byte section offset that occurs at an arbitrary alignment. For the  HYPERLINK \l "bit64_dwarf_format" 64-bit DWARF format and a target architecture with 32-bit addresses, an assembler or compiler must provide a way to produce 2-byte, 4-byte and 8-byte quantities without alignment restrictions, and the linker must be able to relocate a 4-byte address or 8-byte section offset that occurs at an arbitrary alignment. It is expected that this will be required only for very large 32-bit programs or by those architectures which support a mix of 32-bit and 64-bit code and data within the same executable object. For the  HYPERLINK \l "bit64_dwarf_format" 64-bit DWARF format and a target architecture with 64-bit addresses, an assembler or compiler must provide a way to produce 2-byte, 4-byte and 8-byte quantities without alignment restrictions, and the linker must be able to relocate an 8-byte address or section offset that occurs at an arbitrary alignment. Integer Representation Names The sizes of the integers used in the lookup by name, lookup by address, line number and call frame information sections are given in  REF _Ref483180630 \h  \* MERGEFORMAT Figure 41. Representation nameRepresentationsbytexe "sbyte"signed, 1-byte integerubytexe "ubyte"unsigned, 1-byte integeruhalfxe "uhalf"unsigned, 2-byte integeruwordxe "uword"unsigned, 4-byte integerFigure  SEQ Figure \* ARABIC 41. Integer Representation Names Type Signature Computation A type signaturexe "type signature" is computed only by the DWARF producer; it is used by a DWARF consumer to resolve type references to the type definitions that are contained in type unitsxe "type unit". The type signaturexe "type signature" for a type T0 is formed from the MD5 hashxe "MD5 hash" of a flattened description of the type. The flattened description of the type is a byte sequence derived from the DWARF encoding of the type as follows: Start with an empty sequence S and a list V of visited types, where V is initialized to a list containing the type T0 as its single element. Elements in V are indexed from 1, so that V[1] is T0. If the debugging information entry represents a type that is nested inside another type or a namespace, append to S the types context as follows: For each surrounding type or namespace, beginning with the outermost such construct, append the letter 'C', the DWARF tag of the construct, and the name (taken from the DW_AT_namexe "DW_AT_name" attribute) of the type or namespace (including its trailing null byte). Append to S the letter 'D', followed by the DWARF tag of the debugging information entry. For each of the following attributes that are present in the debugging information entry, in the order listed below, append to S a marker letter (see below), the DWARF attribute code, and the attribute value.  HYPERLINK \l "DW_AT_name" DW_AT_namexe "DW_AT_name"  HYPERLINK \l "DW_AT_accessibility" DW_AT_accessibilityxe "DW_AT_accessibility"  HYPERLINK \l "DW_AT_address_class" DW_AT_address_classxe "DW_AT_address_class"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_artificial" DW_AT_artificialxe "DW_AT_artificial"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_binary_scale" DW_AT_binary_scalexe "DW_AT_binary_scale"  HYPERLINK \l "DW_AT_bit_offset" DW_AT_bit_offsetxe "DW_AT_bit_offset"  HYPERLINK \l "DW_AT_bit_size" DW_AT_bit_sizexe "DW_AT_bit_size"  HYPERLINK \l "DW_AT_bit_stride" DW_AT_bit_stridexe "DW_AT_bit_stride"  HYPERLINK \l "DW_AT_byte_size" DW_AT_byte_sizexe "DW_AT_byte_size"  HYPERLINK \l "DW_AT_bit_stride" DW_AT_byte_stridexe "DW_AT_byte_stride"  HYPERLINK \l "DW_AT_const_expr" DW_AT_const_exprxe "DW_AT_const_expr"  HYPERLINK \l "DW_AT_const_value" DW_AT_const_valuexe "DW_AT_const_value"  HYPERLINK \l "DW_AT_containing_type" DW_AT_containing_typexe "DW_AT_containing_type"  HYPERLINK \l "DW_AT_count" DW_AT_countxe "DW_AT_count"  HYPERLINK \l "DW_AT_data_bit_offset" DW_AT_data_bit_offsetxe "DW_AT_data_bit_offset"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location"  HYPERLINK \l "DW_AT_data_member_location" DW_AT_data_member_locationxe "DW_AT_data_member_location"  HYPERLINK \l "DW_AT_decimal_scale" DW_AT_decimal_scalexe "DW_AT_decimal_scale"  HYPERLINK \l "DW_AT_decimal_sign" DW_AT_decimal_signxe "DW_AT_decimal_sign"  HYPERLINK \l "DW_AT_default_value" DW_AT_default_valuexe "DW_AT_default_value"  HYPERLINK \l "DW_AT_digit_count" DW_AT_digit_countxe "DW_AT_digit_count"  HYPERLINK \l "DW_AT_discr" DW_AT_discrxe "DW_AT_discr"  HYPERLINK \l "DW_AT_discr_list" DW_AT_discr_listxe "DW_AT_discr_list"  HYPERLINK \l "DW_AT_discr_value" DW_AT_discr_valuexe "DW_AT_discr_value"  HYPERLINK \l "DW_AT_encoding" DW_AT_encodingxe "DW_AT_encoding"  HYPERLINK \l "DW_AT_enum_class" DW_AT_enum_classxe "DW_AT_enum_class"  HYPERLINK \l "DW_AT_endianity" DW_AT_endianityxe "DW_AT_endianity"  HYPERLINK \l "DW_AT_explicit" DW_AT_explicitxe "DW_AT_explicit"  HYPERLINK \l "DW_AT_is_optional" DW_AT_is_optionalxe "DW_AT_is_optional"  HYPERLINK \l "DW_AT_location" DW_AT_locationxe "DW_AT_location"  HYPERLINK \l "DW_AT_lower_bound" DW_AT_lower_boundxe "DW_AT_lower_bound"  HYPERLINK \l "DW_AT_mutable" DW_AT_mutablexe "DW_AT_mutable"  HYPERLINK \l "DW_AT_ordering" DW_AT_orderingxe "DW_AT_ordering"  HYPERLINK \l "DW_AT_picture_string" DW_AT_picture_stringxe "DW_AT_picture_string"  HYPERLINK \l "DW_AT_prototyped" DW_AT_prototypedxe "DW_AT_prototyped"  HYPERLINK \l "DW_AT_small" DW_AT_smallxe "DW_AT_small"  HYPERLINK \l "DW_AT_segment" DW_AT_segmentxe "DW_AT_segment"  HYPERLINK \l "DW_AT_string_length" DW_AT_string_lengthxe "DW_AT_string_length"  HYPERLINK \l "DW_AT_threads_scaled" DW_AT_threads_scaledxe "DW_AT_threads_scaled"  HYPERLINK \l "DW_AT_upper_bound" DW_AT_upper_boundxe "DW_AT_upper_bound"  HYPERLINK \l "DW_AT_use_location" DW_AT_use_locationxe "DW_AT_use_location"  HYPERLINK \l "DW_AT_use_utf8" DW_AT_use_UTF8xe "DW_AT_use_UTF8"  HYPERLINK \l "DW_AT_variable_parameter" DW_AT_variable_parameterxe "DW_AT_variable_parameter"  HYPERLINK \l "DW_AT_virtuality" DW_AT_virtualityxe "DW_AT_virtuality"  HYPERLINK \l "DW_AT_visibility" DW_AT_visibilityxe "DW_AT_visibility"  HYPERLINK \l "DW_AT_vtable_elem_location" DW_AT_vtable_elem_locationxe "DW_AT_vtable_elem_location" Note that except for the initial DW_AT_name attribute, attributes are appended in order according to the alphabetical spelling of their identifier. If an implementation defines any vendor-specific attributes, any such attributes that are essential to the definition of the type should also be included at the end of the above list, in their own alphabetical suborder. 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' as the marker, process the type T recursively by performing Steps 2 through 7, and use the result as the attribute value. Other attribute values use the letter 'A' as the marker, and the value consists of the form code (encoded as an unsigned 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:  HYPERLINK \l "DW_FORM_sdata" DW_FORM_sdataxe "DW_FORM_sdata",  HYPERLINK \l "DW_FORM_flag" DW_FORM_flagxe "DW_FORM_flag",  HYPERLINK \l "DW_FORM_string" DW_FORM_stringxe "DW_FORM_string", and  HYPERLINK \l "DW_FORM_block" DW_FORM_blockxe "DW_FORM_block". If the tag in Step 3 is one of  HYPERLINK \l "DW_TAG_pointer_type" DW_TAG_pointer_typexe "DW_TAG_pointer_type",  HYPERLINK \l "DW_TAG_reference_type" DW_TAG_reference_typexe "DW_TAG_reference_type",  HYPERLINK \l "DW_TAG_rvalue_reference_type" DW_TAG_rvalue_reference_typexe "DW_TAG_rvalue_reference_type",  HYPERLINK \l "DW_TAG_ptr_to_member_type" DW_TAG_ptr_to_member_typexe "DW_TAG_ptr_to_member_type", or  HYPERLINK \l "DW_TAG_friend" DW_TAG_friendxe "DW_TAG_friend", and the referenced type (via the  HYPERLINK \l "DW_AT_type" DW_AT_typexe "DW_AT_type" or  HYPERLINK \l "DW_AT_friend" DW_AT_friendxe "DW_AT_friend" attribute) has a  HYPERLINK \l "DW_AT_name" DW_AT_namexe "DW_AT_name" attribute, append to S the letter 'N', the DWARF attribute code (DW_AT_type or DW_AT_friend), the context of the type (according to the method in Step 2), the letter 'E', and the name of the type. For DW_TAG_friend, if the referenced entry is a  HYPERLINK \l "DW_TAG_subprogram" DW_TAG_subprogramxe "DW_TAG_subprogram", the context is omitted and the name to be used is the ABI-specific name of the subprogram (e.g., the mangled linker name). If the tag in Step 3 is not one of DW_TAG_pointer_typexe "DW_TAG_pointer_type", DW_TAG_reference_type, DW_TAG_rvalue_reference_type, DW_TAG_ptr_to_member_type, or DW_TAG_friend, but has a DW_AT_typexe "DW_AT_type" attribute, or if the referenced type (via the DW_AT_type or DW_AT_friend attribute) does not have a DW_AT_namexe "DW_AT_name" attribute, the attribute is processed according to the method in Step 4 for an attribute that refers to another type entry. Visit each child C of the debugging information entry as follows: If C is a nested type entry or a member function entry, and has a DW_AT_namexe "DW_AT_name" attribute, append to S the letter 'S', the tag of C, and its name; otherwise, process C recursively by performing Steps 3 through 7, appending the result to S. Following the last child (or if there are no children), append a zero byte. For the purposes of this algorithm, if a debugging information entry S has a  HYPERLINK \l "DW_AT_specification" DW_AT_specificationxe "DW_AT_specification" attribute that refers to another entry D (which has a  HYPERLINK \l "DW_AT_declaration" DW_AT_declarationxe "DW_AT_declaration" attribute), then S inherits the attributes and children of D, and S is processed as if those attributes and children were present in the entry S. Exception: if a particular attribute is found in both S and D, the attribute in S is used and the corresponding 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. A grammar describing this computation may be found in Appendix  REF _Ref249150955 \r \h E.2.2. An attribute that refers to another type entry should be recursively processed or replaced with the name of the referent (in Step 4, 5 or 6). If neither treatment applies to an attribute that references another type entry, the entry that contains that attribute should not be considered for a separate type unitxe "type unit". If a debugging information entry contains an attribute from the list above that would require an unsupported form, that entry should not be considered for a separate type unit. A type should be considered for a separate type unit only if all of the type entries that it contains or refers to in Steps 6 and 7 can themselves each be considered for a separate type unit. Where the DWARF producer may reasonably choose two or more different forms for a given attribute, it should choose the simplest possible form in computing the signature. (For example, a constant value should be preferred to a location expression when possible.) Once the string S has been formed from the DWARF encoding, an MD5 hashxe "MD5 hash" is computed for the string and the lower 64 bits are taken as the type signaturexe "type signature". The string S is intended to be a flattened representation of the type that uniquely identifies that type (i.e., a different type is highly unlikely to produce the same string). A debugging information entry should not be placed in a separate type unit if any of the following apply: The entry has an attribute whose value is a location expression, and the location expression contains a reference to another debugging information entry (e.g., a DW_OP_call_refxe "DW_OP_call_ref" operator), as it is unlikely that the entry will remain identical across compilation units. The entry has an attribute whose value refers to a code location or a location list.xe "type unit" The entry has an attribute whose value refers to another debugging information entry that does not represent a type. Certain attributes are not included in the type signature: The DW_AT_declarationxe "DW_AT_declaration" attribute is not included because it indicates that the debugging information entry represents an incomplete declaration, and incomplete declarations should not be placed in separate type unitsxe "type unit". The DW_AT_descriptionxe "DW_AT_description" attribute is not included because it does not provide any information unique to the defining declaration of the type. The DW_AT_decl_filexe "DW_AT_decl_file", DW_AT_decl_linexe "DW_AT_decl_line", and DW_AT_decl_columnxe "DW_AT_decl_column" attributes are not included because they may vary from one source file to the next, and would prevent two otherwise identical type declarations from producing the same hash. The DW_AT_object_pointerxe "DW_AT_object_pointer" attribute is not included because the information it provides is not necessary for the computation of a unique type signaturexe "type signature". Nested types and some types referred to by a debugging information entry are encoded by name rather than by recursively encoding the type to allow for cases where a complete definition of the type might not be available in all compilation units. If a type definition contains the definition of a member function, it cannot be moved as is into a type unit, because the member function contains attributes that are unique to that compilation unit. Such a type definition can be moved to a type unit by rewriting the DIE tree, moving the member function declaration into a separate declaration tree, and replacing the function definition in the type with a non-defining declaration of the function (as if the function had been defined out of line). An example that illustrates the computation of an MD5 hashxe "MD5 hash" may be found in Appendix  REF _Ref235500877 \r \h  \* MERGEFORMAT E.2. -- Attributes by Tag Value (informative) The list below enumerates the attributes that are most applicable to each type of debugging information entry. DWARF does not in general require that a given debugging information entry contain a particular attribute or set of attributes. Instead, a DWARF producer is free to generate any, all, or none of the attributes described in the text as being applicable to a given entry. Other attributes (both those defined within this document but not explicitly associated with the entry in question, and new, vendor-defined ones) may also appear in a given debugging information entry. Therefore, the list may be taken as instructive, but cannot be considered definitive. In the following table, DECLxe "DECL"xe "declaration coordinates" means the declaration coordinates HYPERLINK \l "DW_AT_decl_column"DW_AT_decl_columnxe "DW_AT_decl_column", HYPERLINK \l "DW_AT_decl_file"DW_AT_decl_filexe "DW_AT_decl_file", and HYPERLINK \l "DW_AT_decl_line"DW_AT_decl_linexe "DW_AT_decl_line". Figure 42, Attributes by tag value, begins here. TAG NameApplicable AttributesHYPERLINK \l "DW_TAG_access_declaration"DW_TAG_access_declarationxe "DW_TAG_access_declaration"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_TAG_array_type"DW_TAG_array_typexe "DW_TAG_array_type"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_bit_size" DW_AT_bit_sizexe "DW_AT_bit_size" HYPERLINK \l "DW_AT_stride_size"DW_AT_bit_stridexe "DW_AT_bit_stride" HYPERLINK \l "DW_AT_byte_size"DW_AT_byte_sizexe "DW_AT_byte_size"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_ordering"DW_AT_orderingxe "DW_AT_ordering" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling"  HYPERLINK \l "DW_AT_specification" DW_AT_specification xe "DW_AT_specification" HYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "DW_AT_start_scope" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility" HYPERLINK \l "DW_TAG_base_type"DW_TAG_base_typexe "DW_TAG_base_type"  HYPERLINK \l "DECL" DECL  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_binary_scale" DW_AT_binary_scalexe "DW_AT_binary_scale" HYPERLINK \l "DW_AT_bit_offset"DW_AT_bit_offsetxe "DW_AT_bit_offset" HYPERLINK \l "DW_AT_bit_size"DW_AT_bit_sizexe "DW_AT_bit_size" HYPERLINK \l "DW_AT_byte_size"DW_AT_byte_sizexe "DW_AT_byte_size"  HYPERLINK \l "DW_AT_data_bit_offset" DW_AT_data_bit_offsetxe "DW_AT_data_bit_offset"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location"  HYPERLINK \l "DW_AT_decimal_scale" DW_AT_decimal_scalexe "DW_AT_decimal_scale"  HYPERLINK \l "DW_AT_decimal_sign" DW_AT_decimal_signxe "DW_AT_decimal_sign"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description"  HYPERLINK \l "DW_AT_digit_count" DW_AT_digit_countxe "DW_AT_digit_count" HYPERLINK \l "DW_AT_encoding"DW_AT_encodingxe "DW_AT_encoding"  HYPERLINK \l "DW_AT_endianity" DW_AT_endianityxe "DW_AT_endianity" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name"  HYPERLINK \l "DW_AT_picture_string" DW_AT_picture_stringxe "DW_AT_picture_string" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling"  HYPERLINK \l "DW_AT_small" DW_AT_smallxe "DW_AT_small" HYPERLINK \l "DW_TAG_catch_block"DW_TAG_catch_blockxe "DW_TAG_catch_block"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_high_pc"DW_AT_high_pcxe "DW_AT_high_pc" HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "DW_AT_low_pc"  HYPERLINK \l "DW_AT_ranges" DW_AT_rangesxe "DW_AT_ranges" HYPERLINK \l "DW_AT_segment"DW_AT_segmentxe "DW_AT_segment" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_TAG_class_type"DW_TAG_class_typexe "DW_TAG_class_type"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_bit_size" DW_AT_bit_sizexe "DW_AT_bit_size" HYPERLINK \l "DW_AT_byte_size"DW_AT_byte_sizexe "DW_AT_byte_size"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling"  HYPERLINK \l "DW_AT_signature" DW_AT_signaturexe "DW_AT_signature"  HYPERLINK \l "DW_AT_specification" DW_AT_specificationxe "DW_AT_specification" HYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "DW_AT_start_scope" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility" HYPERLINK \l "DW_TAG_common_block"DW_TAG_common_blockxe "DW_TAG_common_block"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description"  HYPERLINK \l "DW_AT_linkage_name" DW_AT_linkage_namexe "DW_AT_linkage_name" HYPERLINK \l "DW_AT_location"DW_AT_locationxe "DW_AT_location" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_segment"DW_AT_segmentxe "DW_AT_segment" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility" HYPERLINK \l "DW_TAG_common_inclusion"DW_TAG_common_inclusionxe "DW_TAG_common_inclusion"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_common_reference"DW_AT_common_referencexe "DW_AT_common_reference" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility" HYPERLINK \l "DW_TAG_compile_unit"DW_TAG_compile_unitxe "DW_TAG_compile_unit" HYPERLINK \l "DW_AT_base_types"DW_AT_base_typesxe "DW_AT_base_types" HYPERLINK \l "DW_AT_comp_dir"DW_AT_comp_dirxe "DW_AT_comp_dir" HYPERLINK \l "DW_AT_identifier_case"DW_AT_identifier_casexe "DW_AT_identifier_case" HYPERLINK \l "DW_AT_high_pc"DW_AT_high_pcxe "DW_AT_high_pc" HYPERLINK \l "DW_AT_language"DW_AT_languagexe "DW_AT_language" HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "DW_AT_low_pc" HYPERLINK \l "DW_AT_macro_info"DW_AT_macro_info XE "DW_AT_macro_info"   HYPERLINK \l "DW_AT_main_subprogram_unit_usage" DW_AT_main_subprogramxe "DW_AT_main_subprogram" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_producer"DW_AT_producerxe "DW_AT_producer"  HYPERLINK \l "DW_AT_ranges" DW_AT_rangesxe "DW_AT_ranges"  HYPERLINK \l "DW_AT_segment" DW_AT_segmentxe "DW_AT_segment" HYPERLINK \l "DW_AT_stmt_list"DW_AT_stmt_listxe "DW_AT_stmt_list"  HYPERLINK \l "DW_AT_use_utf8" DW_AT_use_UTF8xe "DW_AT_use_UTF8"  HYPERLINK \l "DW_TAG_condition" DW_TAG_conditionxe "DW_TAG_condition"  HYPERLINK \l "DECL" DECL  HYPERLINK \l "DW_AT_name" DW_AT_namexe "DW_AT_name"  HYPERLINK \l "DW_AT_sibling" DW_AT_siblingxe "DW_AT_sibling"HYPERLINK \l "DW_TAG_const_type"DW_TAG_const_typexe "DW_TAG_const_type"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location"  HYPERLINK \l "DW_AT_name" DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_TAG_constant"DW_TAG_constantxe "DW_TAG_constant"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility" HYPERLINK \l "DW_AT_const_value"DW_AT_const_valuexe "DW_AT_const_value" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description"  HYPERLINK \l "DW_AT_endianity" DW_AT_endianityxe "DW_AT_endianity" HYPERLINK \l "DW_AT_external"DW_AT_externalxe "DW_AT_external"  HYPERLINK \l "DW_AT_linkage_name" DW_AT_linkage_namexe "DW_AT_linkage_name" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "DW_AT_start_scope" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility"  HYPERLINK \l "DW_TAG_dwarf_procedure" DW_TAG_dwarf_procedurexe "DW_TAG_dwarf_procedure" HYPERLINK \l "DW_AT_location" DW_AT_locationxe "DW_AT_location"HYPERLINK \l "DW_TAG_entry_point"DW_TAG_entry_pointxe "DW_TAG_entry_point"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_address_class"DW_AT_address_classxe "DW_AT_address_class"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_frame_base"DW_AT_frame_basexe "DW_AT_frame_base"  HYPERLINK \l "DW_AT_linkage_name" DW_AT_linkage_namexe "DW_AT_linkage_name" HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "DW_AT_low_pc" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_return_addr"DW_AT_return_addrxe "DW_AT_return_addr" HYPERLINK \l "DW_AT_segment"DW_AT_segmentxe "DW_AT_segment" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_static_link"DW_AT_static_linkxe "DW_AT_static_link" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_TAG_enumeration_type"DW_TAG_enumeration_typexe "DW_TAG_enumeration_type"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_bit_size" DW_AT_bit_sizexe "DW_AT_bit_size"  HYPERLINK \l "DW_AT_bit_stride" DW_AT_bit_stridexe "DW_AT_bit_stride" HYPERLINK \l "DW_AT_byte_size"DW_AT_byte_sizexe "DW_AT_byte_size"  HYPERLINK \l "DW_AT_stride" DW_AT_byte_stridexe "DW_AT_byte_stride"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description"  HYPERLINK \l "DW_AT_enum_class" DW_AT_enum_classxe "DW_AT_enum_class" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling"  HYPERLINK \l "DW_AT_signature" DW_AT_signaturexe "DW_AT_signature"  HYPERLINK \l "DW_AT_specification" DW_AT_specification xe "DW_AT_specification" HYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "DW_AT_start_scope"  HYPERLINK \l "DW_AT_type" DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility" HYPERLINK \l "DW_TAG_enumerator"DW_TAG_enumeratorxe "DW_TAG_enumerator"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_const_value"DW_AT_const_valuexe "DW_AT_const_value"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_TAG_file_type"DW_TAG_file_typexe "DW_TAG_file_type"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_bit_size" DW_AT_bit_sizexe "DW_AT_bit_size" HYPERLINK \l "DW_AT_byte_size"DW_AT_byte_sizexe "DW_AT_byte_size"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "DW_AT_start_scope" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility" HYPERLINK \l "DW_TAG_formal_parameter"DW_TAG_formal_parameterxe "DW_TAG_formal_parameter"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_artificial"DW_AT_artificial XE "DW_AT_artificial"   HYPERLINK \l "DW_AT_const_value" DW_AT_const_value xe "DW_AT_artificial" HYPERLINK \l "DW_AT_default_value"DW_AT_default_valuexe "DW_AT_default_value"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description"  HYPERLINK \l "DW_AT_endianity" DW_AT_endianityxe "DW_AT_endianity" HYPERLINK \l "DW_AT_is_optional"DW_AT_is_optionalxe "DW_AT_is_optional" HYPERLINK \l "DW_AT_location"DW_AT_locationxe "DW_AT_location" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_segment"DW_AT_segmentxe "DW_AT_segment" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_AT_variable_parameter"DW_AT_variable_parameterxe "DW_AT_variable_parameter" HYPERLINK \l "DW_TAG_friend"DW_TAG_friendxe "DW_TAG_friend"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_friend"DW_AT_friendxe "DW_AT_friend" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_TAG_imported_declaration"DW_TAG_imported_declarationxe "DW_TAG_imported_declaration"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_import"DW_AT_importxe "DW_AT_import" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "DW_AT_start_scope"  HYPERLINK \l "DW_TAG_imported_module" DW_TAG_imported_modulexe "DW_TAG_imported_module"  HYPERLINK \l "DECL" DECL  HYPERLINK \l "DW_AT_import" DW_AT_importxe "DW_AT_import"  HYPERLINK \l "DW_AT_sibling" DW_AT_siblingxe "DW_AT_sibling"  HYPERLINK \l "DW_AT_start_scope" DW_AT_start_scopexe "DW_AT_start_scope" HYPERLINK \l "DW_TAG_imported_unit" DW_TAG_imported_unitxe "DW_TAG_imported_unit" HYPERLINK \l "DW_AT_import" DW_AT_importxe "DW_AT_import"HYPERLINK \l "DW_TAG_inheritance"DW_TAG_inheritancexe "DW_TAG_inheritance"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility" HYPERLINK \l "DW_AT_data_member_location"DW_AT_data_member_locationxe "DW_AT_data_member_location" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_AT_virtuality"DW_AT_virtualityxe "DW_AT_virtuality" HYPERLINK \l "DW_TAG_inlined_subroutine"DW_TAG_inlined_subroutinexe "DW_TAG_inlined_subroutine" HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin"  HYPERLINK \l "DW_AT_call_column" DW_AT_call_columnxe "DW_AT_call_column"  HYPERLINK \l "DW_AT_call_file" DW_AT_call_filexe "DW_AT_call_file"  HYPERLINK \l "DW_AT_call_line" DW_AT_call_linexe "DW_AT_call_line"  HYPERLINK \l "DW_AT_const_expr" DW_AT_const_exprxe "DW_AT_const_expr"  HYPERLINK \l "DW_AT_entry_pc" DW_AT_entry_pcxe "DW_AT_entry_pc" HYPERLINK \l "DW_AT_high_pc"DW_AT_high_pcxe "DW_AT_high_pc" HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "DW_AT_low_pc"  HYPERLINK \l "DW_AT_ranges" DW_AT_rangesxe "DW_AT_ranges" HYPERLINK \l "DW_AT_return_addr"DW_AT_return_addrxe "DW_AT_return_addr" HYPERLINK \l "DW_AT_segment"DW_AT_segmentxe "DW_AT_segment" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "DW_AT_start_scope"  HYPERLINK \l "DW_AT_trampoline" DW_AT_trampolinexe "DW_AT_trampoline"  HYPERLINK \l "DW_TAG_interface" DW_TAG_interface_typexe "DW_TAG_interface_type"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "DW_AT_start_scope" HYPERLINK \l "DW_TAG_label"DW_TAG_labelxe "DW_TAG_label"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "DW_AT_low_pc" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_segment"DW_AT_segmentxe "DW_AT_segment" HYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "DW_AT_start_scope" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_TAG_lexical_block"DW_TAG_lexical_blockxe "DW_TAG_lexical_block"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_high_pc"DW_AT_high_pcxe "DW_AT_high_pc" HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "DW_AT_low_pc" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name"  HYPERLINK \l "DW_AT_ranges" DW_AT_rangesxe "DW_AT_ranges" HYPERLINK \l "DW_AT_segment"DW_AT_segmentxe "DW_AT_segment" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_TAG_member"DW_TAG_memberxe "DW_TAG_member"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility" HYPERLINK \l "DW_AT_bit_offset"DW_AT_bit_offsetxe "DW_AT_bit_offset" HYPERLINK \l "DW_AT_bit_size"DW_AT_bit_sizexe "DW_AT_bit_size" HYPERLINK \l "DW_AT_byte_size"DW_AT_byte_sizexe "DW_AT_byte_size"  HYPERLINK \l "DW_AT_data_bit_offset" DW_AT_data_bit_offsetxe "DW_AT_data_bit_offset" HYPERLINK \l "DW_AT_data_member_location"DW_AT_data_member_locationxe "DW_AT_data_member_location" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description"  HYPERLINK \l "DW_AT_mutable" DW_AT_mutablexe "DW_AT_mutable" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility" HYPERLINK \l "DW_TAG_module"DW_TAG_modulexe "DW_TAG_module"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description"  HYPERLINK \l "DW_AT_entry_pc" DW_AT_entry_pcxe "DW_AT_entry_pc" HYPERLINK \l "DW_AT_high_pc"DW_AT_high_pcxe "DW_AT_high_pc" HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "DW_AT_low_pc" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_priority"DW_AT_priorityxe "DW_AT_priority"  HYPERLINK \l "DW_AT_ranges" DW_AT_rangesxe "DW_AT_ranges" HYPERLINK \l "DW_AT_segment"DW_AT_segmentxe "DW_AT_segment" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling"  HYPERLINK \l "DW_AT_specification" DW_AT_specification xe "DW_AT_specification" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility" HYPERLINK \l "DW_TAG_namelist"DW_TAG_namelist xe "DW_TAG_namelist"  HYPERLINK \l "DECL" DECL xe "DW_AT_accessibility" HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility" HYPERLINK \l "DW_TAG_namelist_item"DW_TAG_namelist_itemxe "DW_TAG_namelist_item"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_namelist_item"DW_AT_namelist_itemxe "DW_AT_namelist_item" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling"  HYPERLINK \l "DW_TAG_namespace" DW_TAG_namespacexe "DW_TAG_namespace"  HYPERLINK \l "DECL" DECL  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description"  HYPERLINK \l "DW_AT_extension" DW_AT_extensionxe "DW_AT_extension"  HYPERLINK \l "DW_AT_name" DW_AT_namexe "DW_AT_name"  HYPERLINK \l "DW_AT_sibling" DW_AT_siblingxe "DW_AT_sibling"  HYPERLINK \l "DW_AT_start_scope" DW_AT_start_scopexe "DW_AT_start_scope"HYPERLINK \l "DW_TAG_packed_type"DW_TAG_packed_typexe "DW_TAG_packed_type"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location"  HYPERLINK \l "DW_AT_name" DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type"  HYPERLINK \l "DW_TAG_partial_unit" DW_TAG_partial_unit xe "DW_TAG_partial_unit"HYPERLINK \l "DW_AT_base_types"DW_AT_base_typesxe "DW_AT_base_types" HYPERLINK \l "DW_AT_comp_dir"DW_AT_comp_dirxe "DW_AT_comp_dir"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_identifier_case"DW_AT_identifier_casexe "DW_AT_identifier_case" HYPERLINK \l "DW_AT_high_pc"DW_AT_high_pcxe "DW_AT_high_pc" HYPERLINK \l "DW_AT_language"DW_AT_languagexe "DW_AT_language" HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "DW_AT_low_pc" HYPERLINK \l "DW_AT_macro_info"DW_AT_macro_infoxe "DW_AT_macro_info"  HYPERLINK \l "DW_AT_main_subprogram_unit_usage" DW_AT_main_subprogramxe "DW_AT_main_subprogram" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_producer"DW_AT_producerxe "DW_AT_producer"  HYPERLINK \l "DW_AT_ranges" DW_AT_rangesxe "DW_AT_ranges"  HYPERLINK \l "DW_AT_segment" DW_AT_segmentxe "DW_AT_segment" HYPERLINK \l "DW_AT_stmt_list"DW_AT_stmt_listxe "DW_AT_stmt_list"  HYPERLINK \l "DW_AT_use_utf8" DW_AT_use_UTF8xe "DW_AT_use_UTF8"HYPERLINK \l "DW_TAG_pointer_type"DW_TAG_pointer_typexe "DW_TAG_pointer_type" HYPERLINK \l "DW_AT_address_class"DW_AT_address_classxe "DW_AT_address_class"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location"  HYPERLINK \l "DW_AT_name" DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_TAG_ptr_to_member_type"DW_TAG_ptr_to_member_typexe "DW_TAG_ptr_to_member_type"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_address_class"DW_AT_address_classxe "DW_AT_address_class"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated" HYPERLINK \l "DW_AT_containing_type"DW_AT_containing_typexe "DW_AT_containing_type"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_AT_use_location"DW_AT_use_locationxe "DW_AT_use_location" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility" HYPERLINK \l "DW_TAG_reference_type"DW_TAG_reference_typexe "DW_TAG_reference_type" HYPERLINK \l "DW_AT_address_class"DW_AT_address_classxe "DW_AT_address_class"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location"  HYPERLINK \l "DW_AT_name" DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type"  HYPERLINK \l "DW_TAG_restrict_type" DW_TAG_restrict_typexe "DW_TAG_restrict_type"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location"  HYPERLINK \l "DW_AT_name" DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type"  HYPERLINK \l "DW_TAG_rvalue_reference_type" DW_TAG_rvalue_reference_typexe "DW_TAG_rvalue_reference_type"  HYPERLINK \l "DECL" DECL  HYPERLINK \l "DW_AT_address_class_ptr" DW_AT_address_classxe "DW_AT_address_class"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location"  HYPERLINK \l "DW_AT_name" DW_AT_namexe "DW_AT_name"  HYPERLINK \l "DW_AT_sibling" DW_AT_siblingxe "DW_AT_sibling"  HYPERLINK \l "DW_AT_type" DW_AT_typexe "DW_AT_type"HYPERLINK \l "DW_TAG_set_type"DW_TAG_set_typexe "DW_TAG_set_type"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_bit_size" DW_AT_bit_sizexe "DW_AT_bit_size" HYPERLINK \l "DW_AT_byte_size"DW_AT_byte_sizexe "DW_AT_byte_size"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "DW_AT_start_scope" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility"  HYPERLINK \l "DW_TAG_shared_type" DW_TAG_shared_typexe "DW_TAG_shared_type"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_count" DW_AT_countxe "DW_AT_count"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location"  HYPERLINK \l "DW_AT_name" DW_AT_namexe "DW_AT_count"  HYPERLINK \l "DW_AT_sibling" DW_AT_siblingxe "DW_AT_sibling"  HYPERLINK \l "DW_AT_type" DW_AT_typexe "DW_AT_type"HYPERLINK \l "DW_TAG_string_type"DW_TAG_string_typexe "DW_TAG_string_type"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_bit_size" DW_AT_bit_sizexe "DW_AT_bit_size" HYPERLINK \l "DW_AT_byte_size"DW_AT_byte_sizexe "DW_AT_byte_size"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "DW_AT_start_scope" HYPERLINK \l "DW_AT_string_length"DW_AT_string_lengthxe "DW_AT_string_length" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility" HYPERLINK \l "DW_TAG_structure_type"DW_TAG_structure_typexe "DW_TAG_structure_type"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_bit_size" DW_AT_bit_sizexe "DW_AT_bit_size" HYPERLINK \l "DW_AT_byte_size"DW_AT_byte_sizexe "DW_AT_byte_size"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling"  HYPERLINK \l "DW_AT_signature" DW_AT_signaturexe "DW_AT_signature"  HYPERLINK \l "DW_AT_specification" DW_AT_specificationxe "DW_AT_specification" HYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "DW_AT_start_scope" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility"  HYPERLINK \l "DW_TAG_subprogram"DW_TAG_subprogramxe "DW_TAG_subprogram"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility" HYPERLINK \l "DW_AT_address_class"DW_AT_address_classxe "DW_AT_address_class" HYPERLINK \l "DW_AT_artificial"DW_AT_artificialxe "DW_AT_artificial" HYPERLINK \l "DW_AT_calling_convention"DW_AT_calling_conventionxe "DW_AT_calling_convention" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description"  HYPERLINK \l "DW_AT_elemental" DW_AT_elementalxe "DW_AT_elemental"  HYPERLINK \l "DW_AT_entry_pc" DW_AT_entry_pcxe "DW_AT_entry_pc"  HYPERLINK \l "DW_AT_explicit" DW_AT_explicitxe "DW_AT_explicit" \i HYPERLINK \l "DW_AT_external"DW_AT_externalxe "DW_AT_external" HYPERLINK \l "DW_AT_frame_base"DW_AT_frame_basexe "DW_AT_frame_base" HYPERLINK \l "DW_AT_high_pc"DW_AT_high_pcxe "DW_AT_high_pc" HYPERLINK \l "DW_AT_inline"DW_AT_inlinexe "DW_AT_inline"  HYPERLINK \l "DW_AT_linkage_name" DW_AT_linkage_namexe "DW_AT_linkage_name" HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "DW_AT_low_pc"  HYPERLINK \l "DW_AT_main_subprogram_unit_usage" DW_AT_main_subprogramxe "DW_AT_main_subprogram" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name"  HYPERLINK \l "DW_AT_object_pointer" DW_AT_object_pointerxe "DW_AT_object_pointer" HYPERLINK \l "DW_AT_prototyped"DW_AT_prototypedxe "DW_AT_prototyped"  HYPERLINK \l "DW_AT_pure" DW_AT_purexe "DW_AT_pure"  HYPERLINK \l "DW_AT_ranges" DW_AT_rangesxe "DW_AT_ranges"  HYPERLINK \l "DW_AT_recursive" DW_AT_recursivexe "DW_AT_recursive" HYPERLINK \l "DW_AT_return_addr"DW_AT_return_addrxe "DW_AT_return_addr" HYPERLINK \l "DW_AT_segment"DW_AT_segmentxe "DW_AT_segment" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_specification"DW_AT_specificationxe "DW_AT_specification" HYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "DW_AT_start_scope" HYPERLINK \l "DW_AT_static_link"DW_AT_static_linkxe "DW_AT_static_link"  HYPERLINK \l "DW_AT_trampoline" DW_AT_trampolinexe "DW_AT_trampoline" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility" HYPERLINK \l "DW_AT_virtuality"DW_AT_virtualityxe "DW_AT_virtuality" HYPERLINK \l "DW_AT_vtable_elem_location"DW_AT_vtable_elem_locationxe "DW_AT_vtable_elem_location" HYPERLINK \l "DW_TAG_subrange_type"DW_TAG_subrange_typexe "DW_TAG_subrange_type"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_bit_size" DW_AT_bit_sizexe "DW_AT_bit_size"  HYPERLINK \l "DW_AT_bit_stride" DW_AT_bit_stridexe "DW_AT_bit_stride" HYPERLINK \l "DW_AT_byte_size"DW_AT_byte_sizexe "DW_AT_byte_size"  HYPERLINK \l "DW_AT_stride" DW_AT_byte_stridexe "DW_AT_byte_stride" HYPERLINK \l "DW_AT_count"DW_AT_countxe "DW_AT_count"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_lower_bound"DW_AT_lower_boundxe "DW_AT_lower_bound" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling"  HYPERLINK \l "DW_AT_threads_scaled" DW_AT_threads_scaledxe "DW_AT_threads_scaled" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_AT_upper_bound"DW_AT_upper_boundxe "DW_AT_upper_bound" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility" HYPERLINK \l "DW_TAG_subroutine_type"DW_TAG_subroutine_typexe "DW_TAG_subroutine_type"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility" HYPERLINK \l "DW_AT_address_class"DW_AT_address_classxe "DW_AT_address_class"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_prototyped"DW_AT_prototypedxe "DW_AT_prototyped" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "DW_AT_start_scope" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility"  HYPERLINK \l "DW_TAG_template_alias" DW_TAG_template_aliasxe "DW_TAG_template_alias"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling"  HYPERLINK \l "DW_AT_signature" DW_AT_signaturexe "DW_AT_signature" HYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "DW_AT_start_scope" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility"HYPERLINK \l "DW_TAG_template_type_parameter"DW_TAG_template_type_parameterxe "DW_TAG_template_type_parameter"  HYPERLINK \l "DECL" DECL  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_TAG_template_value_parameter"DW_TAG_template_value_parameterxe "DW_TAG_template_value_parameter"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_const_value"DW_AT_const_valuexe "DW_AT_const_value"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_TAG_thrown_type"DW_TAG_thrown_typexe "DW_TAG_thrown_type"  HYPERLINK \l "DECL" DECL  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_TAG_try_block"DW_TAG_try_blockxe "DW_TAG_try_block"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_high_pc"DW_AT_high_pcxe "DW_AT_high_pc" HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "DW_AT_low_pc"  HYPERLINK \l "DW_AT_ranges" DW_AT_rangesxe "DW_AT_ranges" HYPERLINK \l "DW_AT_segment"DW_AT_segmentxe "DW_AT_segment" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_TAG_typedef"DW_TAG_typedefxe "DW_TAG_typedef"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "DW_AT_start_scope" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility"  HYPERLINK \l "DW_TAG_type_unit_def" DW_TAG_type_unitxe "DW_TAG_type_unit" HYPERLINK \l "DW_AT_language" DW_AT_languagexe "DW_AT_language"HYPERLINK \l "DW_TAG_union_type"DW_TAG_union_typexe "DW_TAG_union_type"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_bit_size" DW_AT_bit_sizexe "DW_AT_bit_size" HYPERLINK \l "DW_AT_byte_size"DW_AT_byte_sizexe "DW_AT_byte_size"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling"  HYPERLINK \l "DW_AT_signature" DW_AT_signaturexe "DW_AT_signature"  HYPERLINK \l "DW_AT_specification" DW_AT_specificationxe "DW_AT_specification" HYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "DW_AT_start_scope" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility" HYPERLINK \l "DW_TAG_unspecified_parameters"DW_TAG_unspecified_parametersxe "DW_TAG_unspecified_parameters"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_artificial"DW_AT_artificialxe "DW_AT_artificial" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling"  HYPERLINK \l "DW_TAG_unspecified_type" DW_TAG_unspecified_typexe "DW_TAG_unspecified_type"  HYPERLINK \l "DECL" DECL  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name"HYPERLINK \l "DW_TAG_variable"DW_TAG_variablexe "DW_TAG_variable"  HYPERLINK \l "DECL" DECL  HYPERLINK \l "DW_AT_abstract_origin" DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility"  HYPERLINK \l "DW_AT_const_expr" DW_AT_const_exprxe "DW_AT_const_expr" HYPERLINK \l "DW_AT_const_value"DW_AT_const_valuexe "DW_AT_const_value" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration"  HYPERLINK \l "DW_AT_description" DW_AT_descriptionxe "DW_AT_description"  HYPERLINK \l "DW_AT_endianity" DW_AT_endianityxe "DW_AT_endianity" HYPERLINK \l "DW_AT_external"DW_AT_externalxe "DW_AT_external"  HYPERLINK \l "DW_AT_linkage_name" DW_AT_linkage_namexe "DW_AT_linkage_name" HYPERLINK \l "DW_AT_location"DW_AT_locationxe "DW_AT_location" HYPERLINK \l "DW_AT_name"DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_segment"DW_AT_segmentxe "DW_AT_segment" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_specification"DW_AT_specificationxe "DW_AT_specification" HYPERLINK \l "DW_AT_start_scope"DW_AT_start_scopexe "DW_AT_start_scope" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility" HYPERLINK \l "DW_TAG_variant"DW_TAG_variantxe "DW_TAG_variant"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility" HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration" HYPERLINK \l "DW_AT_discr_list"DW_AT_discr_xe "DW_AT_discr"listxe "DW_AT_discr_list" HYPERLINK \l "DW_AT_discr_value"DW_AT_discr_valuexe "DW_AT_discr_value" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_TAG_variant_part"DW_TAG_variant_partxe "DW_TAG_variant_part"  HYPERLINK \l "DECL" DECL HYPERLINK \l "DW_AT_abstract_origin"DW_AT_abstract_originxe "DW_AT_abstract_origin" HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration" HYPERLINK \l "DW_AT_discr"DW_AT_discrxe "DW_AT_discr" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_TAG_volatile_type"DW_TAG_volatile_typexe "DW_TAG_volatile_type"  HYPERLINK \l "DW_AT_allocated" DW_AT_allocatedxe "DW_AT_allocated"  HYPERLINK \l "DW_AT_associated" DW_AT_associatedxe "DW_AT_associated"  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location"  HYPERLINK \l "DW_AT_type" DW_AT_namexe "DW_AT_name" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type"  HYPERLINK \l "DW_TAG_with_stmt" DW_TAG_with_stmtxe "DW_TAG_with_stmt" HYPERLINK \l "DW_AT_accessibility"DW_AT_accessibilityxe "DW_AT_accessibility" HYPERLINK \l "DW_AT_address_class"DW_AT_address_classxe "DW_AT_address_class" HYPERLINK \l "DW_AT_declaration"DW_AT_declarationxe "DW_AT_declaration" HYPERLINK \l "DW_AT_high_pc"DW_AT_high_pcxe "DW_AT_high_pc" HYPERLINK \l "DW_AT_location"DW_AT_locationxe "DW_AT_location" HYPERLINK \l "DW_AT_low_pc"DW_AT_low_pcxe "DW_AT_low_pc"  HYPERLINK \l "DW_AT_ranges" DW_AT_rangesxe "DW_AT_ranges" HYPERLINK \l "DW_AT_segment"DW_AT_segmentxe "DW_AT_segment" HYPERLINK \l "DW_AT_sibling"DW_AT_siblingxe "DW_AT_sibling" HYPERLINK \l "DW_AT_type"DW_AT_typexe "DW_AT_type" HYPERLINK \l "DW_AT_visibility"DW_AT_visibilityxe "DW_AT_visibility" Figure  SEQ Figure \* ARABIC 42. Attributes by TAG value -- Debug Section Relationships (informative) DWARF information is organized into multiple program sections, each of which holds a particular kind of information. In some cases, information in one section refers to information in one or more of the others. These relationships are illustrated by the diagram and associated notes on the following pages.               Figure  SEQ Figure \* ARABIC 43. Debug section relationships Notes (a) .debug_arangesxe ".debug_aranges" The debug_info_offset value in the header is the offset in the .debug_info section of the corresponding compilation unit header (not the compilation unit entry). (b) .debug_pubnamesxe ".debug_pubnames" and .debug_pubtypesxe ".debug_pubtypes" The debug_info_offset value in the header is the offset in the .debug_info section of the corresponding compilation unit header (not the compilation unit entry). Each pubname/pubtype has the offset (within the corresponding compilation unit) of the applicable debugging information entry. (c) .debug_info and .debug_types xe ".debug_info"The debug_abbrev_offsetxe "debug_abbrev_offset" value in the header is the offset in the .debug_abbrevxe ".debug_abbrev" section of the abbreviations for that compilation unit. (d) .debug_info and .debug_types Attribute values of class string may have form DW_FORM_strpxe "DW_FORM_strp", whose value is the offset in the .debug_strxe ".debug_str" section of the corresponding string. (e) .debug_locxe ".debug_loc" The operand of the DW_OP_call_refxe "DW_OP_call_ref" DWARF expression operator is the offset of a debugging information entry in the .debug_info section. (f) .debug_info An attribute value of class loclistptr (specifically form DW_FORM_sec_offsetxe "DW_FORM_data4") is an offset within the .debug_loc section of a location listxe "location list". (g) .debug_info An attribute value of class rangelistptr (specifically form DW_FORM_sec_offsetxe "DW_FORM_data4") is an offset within the .debug_rangesxe ".debug_ranges" section of a range listxe "range list". (h) .debug_info An attribute value of class macptr (specifically form DW_FORM_sec_offsetxe "DW_FORM_data4") is an offset within the .debug_macinfoxe ".debug_macinfo" section of the beginning of the macro information for the referencing unit. (i) .debug_info An attribute value of class lineptr (specifically form DW_FORM_sec_offsetxe "DW_FORM_data4") is an offset in the .debug_linexe ".debug_line" section of the beginning of the line number information for the referencing unit. -- Variable Length Data: Encoding/Decoding (informative) Here are algorithms expressed in a C-like pseudo-code to encode and decode signed and unsigned numbers in LEB128 representation. xe "LEB128:unsigned, encoding as" \i do { byte = low order 7 bits of value; value >>= 7; if (value != 0) /* more bytes to come */ set high order bit of byte; emit byte; } while (value != 0); Figure  SEQ Figure \* ARABIC 44. Algorithm to encode an unsigned integer xe "LEB128:signed, encoding as" \i more = 1; negative = (value < 0); size = no. of bits in signed integer; while(more) { byte = low order 7 bits of value; value >>= 7; /* the following is unnecessary if the * implementation of >>= uses an arithmetic rather * than logical shift for a signed left operand */ if (negative) /* sign extend */ value |= - (1 <<(size - 7)); /* sign bit of byte is second high order bit (0x40) */ if ((value == 0 && sign bit of byte is clear) || (value == -1 && sign bit of byte is set)) more = 0; else set high order bit of byte; emit byte; } Figure  SEQ Figure \* ARABIC 45. Algorithm to encode a signed integer xe "LEB128:unsigned, decoding of" \i result = 0; shift = 0; while(true) { byte = next byte in input; result |= (low order 7 bits of byte << shift); if (high order bit of byte == 0) break; shift += 7; } Figure  SEQ Figure \* ARABIC 46. Algorithm to decode an unsigned LEB128 number xe "LEB128:signed, decoding of" \i result = 0; shift = 0; size = number of bits in signed integer; while(true) { byte = next byte in input; result |= (low order 7 bits of byte << shift); shift += 7; /* sign bit of byte is second high order bit (0x40) */ if (high order bit of byte == 0) break; } if ((shift to indicate a specialization of the desc struct in which n is the bound for the dims component as well as the contents of the num_dims component. Because the arrays considered here come in two parts, it is necessary to distinguish the parts carefully. In particular, the address of the variable or equivalently, the base address of the object always refers to the descriptor. For arrays that do not come in two parts, an implementation can provide a descriptor anyway, thereby giving it two parts. (This may be convenient for general runtime support unrelated to debugging.) In this case the above vocabulary applies as stated. Alternatively, an implementation can do without a descriptor, in which case the address of the variable, or equivalently the base address of the object, refers to the raw data (the real data, the only thing around that can be the object). If an object has a descriptor, then the DWARF type for that object will have a  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location" attribute. If an object does not have a descriptor, then usually the DWARF type for the object will not have a DW_AT_data_location. (See the following Adaxe "Ada" example for a case where the type for an object without a descriptor does have a DW_AT_data_location attribute. In that case the object doubles as its own descriptor.) The Fortran 90 derived type array_ptr can now be redescribed in Cxe "C"-like terms that expose some of the representation as in struct array_ptr { float myvar; desc<1> ap; }; Similarly for variable arrays: desc<1> arrays; (Recall that desc<1> indicates the 1-dimensional version of desc.) Finally, the following notation is useful: sizeof(type): size in bytes of entities of the given type offset(type, comp): offset in bytes of the comp component within an entity of the given type The DWARF description is shown in  REF _Ref514566187 \h  \* MERGEFORMAT Figure 51. ! Description for type of 'ap' 1$: DW_TAG_array_typexe "DW_TAG_array_type" ! No name, default (Fortran) ordering, default stride DW_AT_typexe "DW_AT_type"(reference to REAL) DW_AT_associatedxe "DW_AT_associated"(expression= ! Test 'ptr_assoc' flag DW_OP_push_object_addressxe "DW_OP_push_object_address" DW_OP_litxe "DW_OP_litn" ! where n == offset(ptr_assoc) DW_OP_plusxe "DW_OP_plus" DW_OP_derefxe "DW_OP_deref" DW_OP_lit1xe "DW_OP_lit1" ! mask for 'ptr_assoc' flag DW_OP_andxe "DW_OP_and") DW_AT_data_locationxe "DW_AT_data_location"(expression= ! Get raw data address DW_OP_push_object_addressxe "DW_OP_push_object_address" DW_OP_litxe "DW_OP_litn" ! where n == offset(base) DW_OP_plusxe "DW_OP_plus" DW_OP_derefxe "DW_OP_deref") ! Type of index of array 'ap' 2$: DW_TAG_subrange_typexe "DW_TAG_subrange_type" ! No name, default stride DW_AT_typexe "DW_AT_type"(reference to INTEGER) DW_AT_lower_boundxe "DW_AT_lower_bound"(expression= DW_OP_push_object_addressxe "DW_OP_push_object_address" DW_OP_litxe "DW_OP_litn" ! where n == ! offset(desc, dims) + ! offset(dims_str, lower_bound) DW_OP_plusxe "DW_OP_plus" DW_OP_derefxe "DW_OP_deref") DW_AT_upper_boundxe "DW_AT_upper_bound"(expression= DW_OP_push_object_addressxe "DW_OP_push_object_address" DW_OP_litxe "DW_OP_litn" ! where n == ! offset(desc, dims) + ! offset(dims_str, upper_bound) DW_OP_plusxe "DW_OP_plus" DW_OP_derefxe "DW_OP_deref") ! Note: for the m'th dimension, the second operator becomes ! DW_OP_litxe "DW_OP_litn" where ! x == offset(desc, dims) + ! (m-1)*sizeof(dims_str) + ! offset(dims_str, [lower|upper]_bound) ! That is, the expression does not get longer for each ! successive dimension (other than to express the larger ! offsets involved). 3$: DW_TAG_structure_typexe "DW_TAG_structure_type" DW_AT_namexe "DW_AT_name"("array_ptr") DW_AT_byte_sizexe "DW_AT_byte_size"(constant sizeof(REAL) + sizeof(desc<1>)) 4$: DW_TAG_memberxe "DW_TAG_member" DW_AT_namexe "DW_AT_name"("myvar") DW_AT_typexe "DW_AT_type"(reference to REAL) DW_AT_data_member_locationxe "DW_AT_data_member_location"(constant 0) 5$: DW_TAG_memberxe "DW_TAG_member" DW_AT_namexe "DW_AT_name"("ap"); DW_AT_typexe "DW_AT_type"(reference to 1$) DW_AT_data_member_locationxe "DW_AT_data_member_location"(constant sizeof(REAL)) 6$: DW_TAG_array_typexe "DW_TAG_array_type" ! No name, default (Fortran) ordering, default stride DW_AT_typexe "DW_AT_type"(reference to 3$) DW_AT_allocatedxe "DW_AT_allocated"(expression= ! Test 'ptr_alloc' flag DW_OP_push_object_addressxe "DW_OP_push_object_address" DW_OP_litxe "DW_OP_litn" ! where n == offset(ptr_alloc) DW_OP_plusxe "DW_OP_plus" DW_OP_derefxe "DW_OP_deref" DW_OP_lit2xe "DW_OP_lit2" ! mask for 'ptr_alloc' flag DW_OP_andxe "DW_OP_and") DW_AT_data_locationxe "DW_AT_data_location"(expression= ! Get raw data address DW_OP_push_object_addressxe "DW_OP_push_object_address" DW_OP_litxe "DW_OP_litn" ! where n = offset(base) DW_OP_plusxe "DW_OP_plus" DW_OP_derefxe "DW_OP_deref") 7$: DW_TAG_subrange_typexe "DW_TAG_subrange_type" ! No name, default stride DW_AT_typexe "DW_AT_type"(reference to INTEGER) DW_AT_lower_boundxe "DW_AT_lower_bound"(expression= DW_OP_push_object_addressxe "DW_OP_push_object_address" DW_OP_litxe "DW_OP_litn" ! where n == ... DW_OP_plusxe "DW_OP_plus" DW_OP_derefxe "DW_OP_deref") DW_AT_upper_boundxe "DW_AT_upper_bound"(expression= DW_OP_push_object_addressxe "DW_OP_push_object_address" DW_OP_litxe "DW_OP_litn" ! where n == ... DW_OP_plusxe "DW_OP_plus" DW_OP_derefxe "DW_OP_deref") 8$: DW_TAG_variablexe "DW_TAG_variable" DW_AT_namexe "DW_AT_name"("arrays") DW_AT_typexe "DW_AT_type"(reference to 6$) DW_AT_locationxe "DW_AT_location"(expression= ...as appropriate...) ! Assume static allocation Figure  SEQ Figure \* ARABIC 51. Fortran 90 example: DWARF description Suppose the program is stopped immediately following completion of the do loop. Suppose further that the user enters the following debug command: debug> print arrays(5)%ap(2) Interpretation of this expression proceeds as follows: 1) Lookup name arrays. We find that it is a variable, whose type is given by the unnamed type at 6$. Notice that the type is an array type. 2) Find the 5th element of that array object. To do array indexing requires several pieces of information: the address of the array data the lower bounds of the array [To check that 5 is within bounds would require the upper bound too, but well skip that for this example.] c) the stride For a), check for a  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location" attribute. Since there is one, go execute the expression, whose result is the address needed. The object address used in this case is the object we are working on, namely the variable named arrays, whose address was found in step 1. (Had there been no DW_AT_data_location attribute, the desired address would be the same as the address from step 1.) For b), for each dimension of the array (only one in this case), go interpret the usual lower bound attribute. Again this is an expression, which again begins with DW_OP_push_object_addressxe "DW_OP_push_object_address". This object is still arrays, from step 1, because we havent begun to actually perform any indexing yet. For c), the default stride applies. Since there is no  HYPERLINK \l "DW_AT_byte_stride" DW_AT_byte_stridexe "DW_AT_byte_stride" attribute, use the size of the array element type, which is the size of type array_ptr (at 3$). Having acquired all the necessary data, perform the indexing operation in the usual mannerwhich has nothing to do with any of the attributes involved up to now. Those just provide the actual values used in the indexing step. The result is an object within the memory that was dynamically allocated for arrays. 3) Find the ap component of the object just identified, whose type is array_ptr. This is a conventional record component lookup and interpretation. It happens that the ap component in this case begins at offset 4 from the beginning of the containing object. Component ap has the unnamed array type defined at 1$ in the symbol table. 4) Find the second element of the array object found in step 3. To do array indexing requires several pieces of information: a) the address of the array storage b) the lower bounds of the array [To check that 2 is within bounds we would require the upper bound too, but well skip that for this example] c) the stride This is just like step 2), so the details are omitted. Recall that because the DWARF type 1$ has a  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location", the address that results from step 4) is that of a descriptor, and that address is the address pushed by the DW_OP_push_object_addressxe "DW_OP_push_object_address" operations in 1$ and 2$. Note: we happen to be accessing a pointer array here instead of an allocatable array; but because there is a common underlying representation, the mechanics are the same. There could be completely different descriptor arrangements and the mechanics would still be the sameonly the stack machines would be different. Adaxe "Ada" Example  REF _Ref495121448 \h  \* MERGEFORMAT Figure 52 illustrates two kinds of Adaxe "Ada" parameterized array, one embedded in a record. M : INTEGER := ; VEC1 : array (1..M) of INTEGER; subtype TEENY is INTEGER range 1..100; type ARR is array (INTEGER range <>) of INTEGER; type REC2(N : TEENY := 100) is record VEC2 : ARR(1..N); end record; OBJ2B : REC2; Figure  SEQ Figure \* ARABIC 52. Adaxe "Ada" example: source fragment VEC1 illustrates an (unnamed) array type where the upper bound of the first and only dimension is determined at runtime. Adaxe "Ada" semantics require that the value of an array bound is fixed at the time the array type is elaborated (where elaboration refers to the runtime executable aspects of type processing). For the purposes of this example, we assume that there are no other assignments to M so that it safe for the REC1 type description to refer directly to that variable (rather than a compiler generated copy). REC2 illustrates another array type (the unnamed type of component VEC2) where the upper bound of the first and only bound is also determined at runtime. In this case, the upper bound is contained in a discriminant of the containing record type. (A discriminant is a component of a record whose value cannot be changed independently of the rest of the record because that value is potentially used in the specification of other components of the record.) The DWARF description is shown in  REF _Ref514566351 \h  \* MERGEFORMAT Figure 53. Interesting aspects about this example are: 1) The array VEC2 is immediately contained within structure REC2 (there is no intermediate descriptor or indirection), which is reflected in the absence of a  HYPERLINK \l "DW_AT_data_location" DW_AT_data_locationxe "DW_AT_data_location" attribute on the array type at 28$. One of the bounds of VEC2 is nonetheless dynamic and part of the same containing record. It is described as a reference to a member, and the location of the upper bound is determined as for any member. That is, the location is determined using an address calculation relative to the base of the containing object. A consumer must notice that the referenced bound is a member of the same containing object and implicitly push the base address of the containing object just as for accessing a data member generally. The lack of a subtype concept in DWARF means that DWARF types serve the role of subtypes and must replicate information from what should be the parent type. For this reason, DWARF for the unconstrained array ARR is not needed for the purposes of this example and therefore not shown. 11$: DW_TAG_variablexe "DW_TAG_variable" DW_AT_namexe "DW_AT_name"("M") DW_AT_typexe "DW_AT_type"(reference to INTEGER) 12$: DW_TAG_array_typexe "DW_TAG_array_type" ! No name, default (Adaxe "Ada") order, default stride DW_AT_typexe "DW_AT_type"(reference to INTEGER) 13$: DW_TAG_subrange_typexe "DW_TAG_subrange_type" DW_AT_typexe "DW_AT_type"(reference to INTEGER) DW_AT_lower_boundxe "DW_AT_lower_bound"(constant 1) DW_AT_upper_boundxe "DW_AT_upper_bound"(reference to variable M at 11$) 14$: DW_TAG_variablexe "DW_TAG_member" DW_AT_namexe "DW_AT_name"("VEC1") DW_AT_typexe "DW_AT_type"(reference to array type at 12$) . . . 21$: DW_TAG_subrange_type DW_AT_namexe "DW_AT_name"("TEENY")xe "DW_TAG_subrange_type" DW_AT_typexe "DW_AT_type"(reference to INTEGER) DW_AT_lower_boundxe "DW_AT_lower_bound"(constant 1) DW_AT_upper_boundxe "DW_AT_upper_bound"(constant 100) . . . 26$: DW_TAG_structure_typexe "DW_TAG_structure_type" DW_AT_namexe "DW_AT_name"("REC2") 27$: DW_TAG_memberxe "DW_TAG_member" DW_AT_namexe "DW_AT_name"("N") DW_AT_typexe "DW_AT_type"(reference to subtype TEENY at 21$) DW_AT_data_member_locationxe "DW_AT_data_member_location"(constant 0) 28$: DW_TAG_array_typexe "DW_TAG_array_type" ! No name, default (Adaxe "Ada") order, default stride ! Default data location DW_AT_TYPE(reference to INTEGER) 29$: DW_TAG_subrange_typexe "DW_TAG_subrange_type" DW_AT_typexe "DW_AT_type"(reference to subrange TEENY at 21$) DW_AT_lower_boundxe "DW_AT_lower_bound"(constant 1) DW_AT_upper_boundxe "DW_AT_upper_bound"(reference to member N at 27$) 30$: DW_TAG_memberxe "DW_TAG_member" DW_AT_namexe "DW_AT_name"("VEC2") DW_AT_typexe "DW_AT_type"(reference to array subtype at 28$) DW_AT_data_member_locationxe "DW_AT_data_member_location"(machine= DW_OP_litxe "DW_OP_litn" ! where n == offset(REC2, VEC2) DW_OP_plusxe "DW_OP_plus") . . . 41$: DW_TAG_variablexe "DW_TAG_variable" DW_AT_namexe "DW_AT_name"("OBJ2B") DW_AT_typexe "DW_AT_type"(reference to REC2 at 26$) DW_AT_locationxe "DW_AT_location"(...as appropriate...) Figure  SEQ Figure \* ARABIC 53. Adaxe "Ada" example: DWARF description Pascal Example The Pascal source in  REF _Ref230668377 \h  \* MERGEFORMAT Figure 54 is used to illustrate the representation of packed unaligned bit fieldsxe "bit fields". TYPE T : PACKED RECORD ! bit size is 2 F5 : BOOLEAN; ! bit offset is 0 F6 : BOOLEAN; ! bit offset is 1 END; VAR V : PACKED RECORD F1 : BOOLEAN; ! bit offset is 0 F2 : PACKED RECORD ! bit offset is 1 F3 : INTEGER; ! bit offset is 0 in F2, 1 in V END; F4 : PACKED ARRAY [0..1] OF T; ! bit offset is 33 F7 : T; ! bit offset is 37 END; Figure  SEQ Figure \* ARABIC 54. Packed record example: source fragment The DWARF representation in  REF _Ref230668591 \h  \* MERGEFORMAT Figure 55 is appropriate. DW_TAG_packed_type entries could be added to better represent the source, but these do not otherwise affect the example and are omitted for clarity. Note that this same representation applies to both typical big- and little-endian architectures using the conventions described in Section  REF BM5_5_4_Structure_Data_Member_Entries \w \h  \* MERGEFORMAT 5.5.6. 10$: DW_TAG_base_typexe "DW_TAG_base_type" DW_AT_namexe "DW_AT_name"("BOOLEAN") ... 11$: DW_TAG_base_typexe "DW_TAG_base_type" DW_AT_namexe "DW_AT_name"("INTEGER") ... 20$: DW_TAG_structure_typexe "DW_TAG_structure_type" DW_AT_namexe "DW_AT_name"("T") DW_AT_bit_sizexe "DW_AT_bit_size"(2) DW_TAG_memberxe "DW_TAG_member" DW_AT_namexe "DW_AT_name"("F5") DW_AT_typexe "DW_AT_type"(reference to 10$) DW_AT_data_bit_offsetxe "DW_AT_data_bit_offset"(0) ! may be omitted DW_AT_bit_size(1) DW_TAG_memberxe "DW_TAG_member" DW_AT_namexe "DW_AT_name"("F6") DW_AT_typexe "DW_AT_type"(reference to 10$) DW_AT_data_bit_offsetxe "DW_AT_data_bit_offset"(1) DW_AT_bit_size(1) 21$: DW_TAG_structure_typexe "DW_TAG_structure_type" ! anonymous type for F2 DW_TAG_memberxe "DW_TAG_member" DW_AT_namexe "DW_AT_name"("F3") DW_AT_typexe "DW_AT_type"(reference to 11$) 22$: DW_TAG_array_typexe "DW_TAG_array_type" ! anonymous type for F4 DW_AT_typexe "DW_AT_type"(reference to 20$) DW_TAG_subrange_typexe "DW_TAG_subrange_type" DW_AT_typexe "DW_AT_type"(reference to 11$) DW_AT_lower_boundxe "DW_AT_lower_bound"(0) DW_AT_upper_boundxe "DW_AT_upper_bound"(1) DW_AT_bit_stridexe "DW_AT_bit_stride"(2) DW_AT_bit_sizexe "DW_AT_bit_size"(4) 23$: DW_TAG_structure_typexe "DW_TAG_structure_type" ! anonymous type for V DW_AT_bit_size(39) DW_TAG_memberxe "DW_TAG_member" DW_AT_namexe "DW_AT_name"("F1") DW_AT_typexe "DW_AT_type"(reference to 10$) DW_AT_data_bit_offsetxe "DW_AT_data_bit_offset"(0)! may be omitted DW_AT_bit_size(1) ! may be omitted DW_AT_member DW_AT_namexe "DW_AT_name"("F2") DW_AT_typexe "DW_AT_type"(reference to 21$) DW_AT_data_bit_offset(1) DW_AT_bit_size(32) ! may be omitted DW_AT_member DW_AT_namexe "DW_AT_name"("F4") DW_AT_typexe "DW_AT_type"(reference to 22$) DW_AT_data_bit_offset(33) DW_AT_bit_size(4) ! may be omitted DW_AT_member DW_AT_namexe "DW_AT_name"("F7") DW_AT_typexe "DW_AT_type"(reference to 20$) ! type T DW_AT_data_bit_offset(37) DW_AT_bit_size(2) ! may be omitted DW_TAG_variablexe "DW_TAG_variable" DW_AT_namexe "DW_AT_name"("V") DW_AT_typexe "DW_AT_type"(reference to 23$) DW_AT_locationxe "DW_AT_location"(...) ... Figure  SEQ Figure \* ARABIC 55. Packed record example: DWARF description Namespace Example The C++ examplexe "namespace (C++):example" in  REF _Ref514566514 \h  \* MERGEFORMAT Figure 56 is used to illustrate the representation of namespaces. namespace { int i; } namespace A { namespace B { int j; int myfunc (int a); float myfunc (float f) { return f 2.0; } int myfunc2(int a) { return a + 2; } } } namespace Y { using A::B::j; // (1) using declaration int foo; } using A::B::j; // (2) using declaration namespace Foo = A::B; // (3) namespace alias using Foo::myfunc; // (4) using declaration using namespace Foo; // (5) using directive namespace A { namespace B { using namespace Y; // (6) using directive int k; } } int Foo::myfunc(int a) { i = 3; j = 4; return myfunc2(3) + j + i + a + 2; } Figure  SEQ Figure \* ARABIC 56. Namespace example: source fragment The DWARF representation in  REF _Ref514566562 \h  \* MERGEFORMAT Figure 57 is appropriate. 1$: DW_TAG_base_typexe "DW_TAG_base_type" DW_AT_namexe "DW_AT_name"("int") ... 2$: DW_TAG_base_type DW_AT_namexe "DW_AT_name"("float") ... 6$: DW_TAG_namespacexe "DW_TAG_namespace" ! no DW_AT_namexe "DW_AT_name" attribute 7$: DW_TAG_variablexe "DW_TAG_variable" DW_AT_name("i") DW_AT_typexe "DW_AT_type"(reference to 1$) DW_AT_locationxe "DW_AT_location" ... ... 10$: DW_TAG_namespacexe "DW_TAG_namespace" DW_AT_namexe "DW_AT_name"("A") 20$: DW_TAG_namespace DW_AT_name("B") 30$: DW_TAG_variablexe "DW_TAG_variable" DW_AT_name("j") DW_AT_typexe "DW_AT_type"(reference to 1$) DW_AT_locationxe "DW_AT_location" ... ... 34$: DW_TAG_subprogramxe "DW_TAG_subprogram" DW_AT_name("myfunc") DW_AT_type(reference to 1$) ... 36$: DW_TAG_subprogram DW_AT_name("myfunc") DW_AT_type(reference to 2$) ... 38$: DW_TAG_subprogram DW_AT_name("myfunc2") DW_AT_low_pcxe "DW_AT_low_pc" ... DW_AT_high_pcxe "DW_AT_high_pc" ... DW_AT_type(reference to 1$) ... 40$: DW_TAG_namespacexe "DW_TAG_namespace" DW_AT_namexe "DW_AT_name"("Y") DW_TAG_imported_declarationxe "DW_TAG_imported_declaration" ! (1) using-declaration DW_AT_importxe "DW_AT_import"(reference to 30$) DW_TAG_variablexe "DW_TAG_variable" DW_AT_name("foo") DW_AT_typexe "DW_AT_type"(reference to 1$) DW_AT_locationxe "DW_AT_location" ... ... DW_TAG_imported_declarationxe "DW_TAG_imported_declaration" ! (2) using declaration DW_AT_importxe "DW_AT_import"(reference to 30$) DW_TAG_imported_declarationxe "DW_TAG_imported_declaration" ! (3) namespace alias DW_AT_namexe "DW_AT_name"("Foo") DW_AT_importxe "DW_AT_import"(reference to 20$) DW_TAG_imported_declarationxe "DW_TAG_imported_declaration" ! (4) using declaration DW_AT_importxe "DW_AT_import"(reference to 34$) ! - part 1 DW_TAG_imported_declarationxe "DW_TAG_imported_declaration" ! (4) using declaration DW_AT_importxe "DW_AT_import"(reference to 36$) ! - part 2 DW_TAG_imported_modulexe "DW_TAG_imported_module" ! (5) using directive DW_AT_importxe "DW_AT_import"(reference to 20$) DW_TAG_namespacexe "DW_TAG_namespace" DW_AT_extensionxe "DW_AT_extension"(reference to 10$) DW_TAG_namespace DW_AT_extension(reference to 20$) DW_TAG_imported_modulexe "DW_TAG_imported_module" ! (6) using directive DW_AT_importxe "DW_AT_import"(reference to 40$) DW_TAG_variablexe "DW_TAG_variable" DW_AT_namexe "DW_AT_name"("k") DW_AT_typexe "DW_AT_type"(reference to 1$) DW_AT_locationxe "DW_AT_location" ... ... 60$: DW_TAG_subprogramxe "DW_TAG_subprogram" DW_AT_specificationxe "DW_AT_specification"(reference to 34$) DW_AT_low_pcxe "DW_AT_low_pc" ... DW_AT_high_pcxe "DW_AT_high_pc" ... ... Figure  SEQ Figure \* ARABIC 57. Namespace example: DWARF description Member Function Example Consider the member function example fragment in  REF _Ref107913400 \h  \* MERGEFORMAT Figure 58. class A { void func1(int x1); void func2() const; static void func3(int x3); }; void A::func1(int x) {} Figure  SEQ Figure \* ARABIC 58. Member function example: source fragment The DWARF description in  REF _Ref107913440 \h  \* MERGEFORMAT Figure 59 is appropriate. 1$: DW_TAG_unspecified_typexe "DW_TAG_unspecified_type" DW_AT_namexe "DW_AT_name"("void") ... 2$ DW_TAG_base_typexe "DW_TAG_base_type" DW_AT_namexe "DW_AT_name"("int") ... 3$: DW_TAG_class_typexe "DW_TAG_class_type" DW_AT_namexe "DW_AT_name"("A") ... 4$: DW_TAG_pointer_typexe "DW_TAG_pointer_type" DW_AT_typexe "DW_AT_type"(reference to 3$) ... 5$: DW_TAG_const_typexe "DW_TAG_const_type" DW_AT_typexe "DW_AT_type"(reference to 3$) ... 6$: DW_TAG_pointer_typexe "DW_TAG_pointer_type" DW_AT_typexe "DW_AT_type"(reference to 5$) ... 7$: DW_TAG_subprogramxe "DW_TAG_subprogram" DW_AT_declarationxe "DW_AT_declaration" DW_AT_namexe "DW_AT_name"("func1") DW_AT_typexe "DW_AT_type"(reference to 1$) DW_AT_object_pointerxe "DW_AT_object_pointer"(reference to 8$) ! References a formal parameter in this member function ... 8$: DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" DW_AT_artificialxe "DW_AT_artificial"(true) DW_AT_namexe "DW_AT_name"("this") DW_AT_typexe "DW_AT_type"(reference to 4$) ! Makes type of 'this' as 'A*' => ! func1 has not been marked const or volatile DW_AT_locationxe "DW_AT_location" ... ... 9$: DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" DW_AT_namexe "DW_AT_name"(x1) DW_AT_typexe "DW_AT_type"(reference to 2$) ... 10$: DW_TAG_subprogramxe "DW_TAG_subprogram" DW_AT_declarationxe "DW_AT_declaration" DW_AT_namexe "DW_AT_name"("func2") DW_AT_typexe "DW_AT_type"(reference to 1$) DW_AT_object_pointer(reference to 11$) ! References a formal parameter in this member function ... 11$: DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" DW_AT_artificialxe "DW_AT_artificial"(true) DW_AT_namexe "DW_AT_name"("this") DW_AT_typexe "DW_AT_type"(reference to 6$) ! Makes type of 'this' as 'A const*' => ! func2 marked as const DW_AT_location ... ... 12$: DW_TAG_subprogramxe "DW_TAG_subprogram" DW_AT_declarationxe "DW_AT_declaration" DW_AT_namexe "DW_AT_name"("func3") DW_AT_typexe "DW_AT_type"(reference to 1$) ... ! No object pointer reference formal parameter ! implies func3 is static 13$: DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" DW_AT_namexe "DW_AT_name"(x3) DW_AT_typexe "DW_AT_type"(reference to 2$) ... Figure  SEQ Figure \* ARABIC 59. Member function example: DWARF description Line Number Program Example Consider the simple source file and the resulting machine code for the Intel 8086 processor in  REF _Ref514566641 \h  \* MERGEFORMAT Figure 60. 1: int 2: main() 0x239: push pb 0x23a: mov bp,sp 3: { 4: printf("Omit needless words\n"); 0x23c: mov ax,0xaa 0x23f: push ax 0x240: call _printf 0x243: pop cx 5: exit(0); 0x244: xor ax,ax 0x246: push ax 0x247: call _exit 0x24a: pop cx 6: } 0x24b: pop bp 0x24c: ret 7: 0x24d: Figure  SEQ Figure \* ARABIC 60. Line number program example: machine code Suppose the line number program header includes the following (header fields not needed below are not shown): version 4xe "version number:line number information" minimum_instruction_lengthxe "minimum_instruction_length" 1 opcode_basexe "opcode_base" 10 ! Opcodes 10-12 not needed line_basexe "line_base" 1 line_rangexe "line_range" 15  REF _Ref490448600 \h  \* MERGEFORMAT Figure 61 shows one encoding of the line number program, which occupies 12 bytes (the opcode SPECIAL(m,n) indicates the special opcode generated for a line increment of m and an address increment of n). Opcode Operand Byte Stream -------------------------------------------------------------------------------- HYPERLINK \l "DW_LNS_advance_pc"DW_LNS_advance_pcxe "DW_LNS_advance_pc" LEB128(0x239) 0x2, 0xb9, 0x04 SPECIAL(2, 0) 0xb SPECIAL(2, 3) 0x38 SPECIAL(1, 8) 0x82 SPECIAL(1, 7) 0x73 HYPERLINK \l "DW_LNS_advance_pc"DW_LNS_advance_pc LEB128(2) 0x2, 0x2 HYPERLINK \l "DW_LNE_end_sequence"DW_LNE_end_sequencexe "DW_LNE_end_sequence" 0x0, 0x1, 0x1 Figure  SEQ Figure \* ARABIC 61. Line number program example: one encoding  REF _Ref490448653 \h  \* MERGEFORMAT Figure 62 shows an alternate encoding of the same program using standard opcodes to advance the program counter; this encoding occupies 22 bytes. Opcode Operand Byte Stream ------------------------------------------------------------------------- HYPERLINK \l "DW_LNS_fixed_advance_pc"DW_LNS_fixed_advance_pcxe "DW_LNS_fixed_advance_pc" 0x239 0x9, 0x39, 0x2 SPECIAL(2, 0) 0xb HYPERLINK \l "DW_LNS_fixed_advance_pc"DW_LNS_fixed_advance_pc 0x3 0x9, 0x3, 0x0 SPECIAL(2, 0) 0xb HYPERLINK \l "DW_LNS_fixed_advance_pc"DW_LNS_fixed_advance_pc 0x8 0x9, 0x8, 0x0 SPECIAL(1, 0) 0xa HYPERLINK \l "DW_LNS_fixed_advance_pc"DW_LNS_fixed_advance_pc 0x7 0x9, 0x7, 0x0 SPECIAL(1, 0) 0xa HYPERLINK \l "DW_LNS_fixed_advance_pc"DW_LNS_fixed_advance_pc 0x2 0x9, 0x2, 0x0 HYPERLINK \l "DW_LNE_end_sequence"DW_LNE_end_sequencexe "DW_LNE_end_sequence" 0x0, 0x1, 0x1 Figure  SEQ Figure \* ARABIC 62. Line number program example: alternate encoding Call Frame Information Example The following example uses a hypothetical RISC machine in the style of the Motorola 88000. xe "call frame information:examples" \i Memory is byte addressed. Instructions are all 4 bytes each and word aligned. Instruction operands are typically of the form: , , The address for the load and store instructions is computed by adding the contents of the source register with the constant. There are 8 4-byte registers: R0 always 0 R1 holds return address on call R2-R3 temp registers (not preserved on call) R4-R6 preserved on call R7 stack pointer. The stack grows in the negative direction. The architectural ABI committee specifies that the stack pointer (R7) is the same as the CFA The following are two code fragments from a subroutine called foo that uses a frame pointer (in addition to the stack pointer). The first column values are byte addresses. denotes the stack frame size in bytes, namely 12. ;; start prologuexe "prologue" foo sub R7, R7, ; Allocate frame foo+4 store R1, R7, (-4) ; Save the return address foo+8 store R6, R7, (-8) ; Save R6 foo+12 add R6, R7, 0 ; R6 is now the Frame ptr foo+16 store R4, R6, (-12) ; Save a preserved reg ;; This subroutine does not change R5 ... ;; Start epiloguexe "epilogue" (R7 is returned to entry value) foo+64 load R4, R6, (-12) ; Restore R4 foo+68 load R6, R7, (-8) ; Restore R6 foo+72 load R1, R7, (-4) ; Restore return address foo+76 add R7, R7, ; Deallocate frame foo+80 jump R1 ; Return foo+84 Figure  SEQ Figure \* ARABIC 63. Call frame information example: machine code fragments An abstract table (see Section  REF BM6_4_1_Structure_of_Call_Frame_Informat \n \h  \* MERGEFORMAT 6.4.1) for the foo subroutine is shown in  REF _Ref490446932 \h  \* MERGEFORMAT Figure 64. Corresponding fragments from the .debug_framexe ".debug_frame:example" section are shown in  REF _Ref514566821 \h  \* MERGEFORMAT Figure 65. The following notations apply in  REF _Ref490446932 \h  \* MERGEFORMAT Figure 64: 1. R8 is the return address 2. s = same_value rule 3. u = undefined rule 4. rN = register(N) rule 5. cN = offset(N) rule 6. a = architectural rule Location CFA R0 R1 R2 R3 R4 R5 R6 R7 R8 foo [R7]+0 s u u u s s s a r1 foo+4 [R7]+fs s u u u s s s a r1 foo+8 [R7]+fs s u u u s s s a c-4 foo+12 [R7]+fs s u u u s s c-8 a c-4 foo+16 [R6]+fs s u u u s s c-8 a c-4 foo+20 [R6]+fs s u u u c-12 s c-8 a c-4 ... foo+64 [R6]+fs s u u u c-12 s c-8 a c-4 foo+68 [R6]+fs s u u u s s c-8 a c-4 foo+72 [R7]+fs s u u u s s s a c-4 foo+76 [R7]+fs s u u u s s s a r1 foo+80 [R7]+0 s u u u s s s a r1 Figure  SEQ Figure \* ARABIC 64. Call frame information example: conceptual matrix Address Value Comment cie 36 length cie+4 0xffffffff CIE_idxe "CIE_id" cie+8 4 versionxe "version number:call frame information" cie+9 0 augmentation cie+10 4 address size cie+11 0 segment size cie+12 4 code_alignment_factor, cie+13 -4 data_alignment_factor, cie+14 8 R8 is the return addr. cie+15 HYPERLINK \l "DW_CFA_def_cfa"DW_CFA_def_cfaxe "DW_CFA_def_cfa" (7, 0) CFA = [R7]+0 cie+18 HYPERLINK \l "DW_CFA_same_value"DW_CFA_same_valuexe "DW_CFA_same_value" (0) R0 not modified (=0) cie+20 HYPERLINK \l "DW_CFA_undefined"DW_CFA_undefinedxe "DW_CFA_undefined" (1) R1 scratch cie+22 HYPERLINK \l "DW_CFA_undefined"DW_CFA_undefined (2) R2 scratch cie+24 HYPERLINK \l "DW_CFA_undefined"DW_CFA_undefined (3) R3 scratch cie+26 HYPERLINK \l "DW_CFA_same_value"DW_CFA_same_value (4) R4 preserve cie+28 HYPERLINK \l "DW_CFA_same_value"DW_CFA_same_value (5) R5 preserve cie+30 HYPERLINK \l "DW_CFA_same_value"DW_CFA_same_value (6) R6 preserve cie+32 HYPERLINK \l "DW_CFA_same_value"DW_CFA_same_value (7) R7 preserve cie+34 HYPERLINK \l "DW_CFA_register"DW_CFA_registerxe "DW_CFA_register" (8, 1) R8 is in R1 cie+37 HYPERLINK \l "DW_CFA_nop"DW_CFA_nopxe "DW_CFA_nop" padding cie+38 HYPERLINK \l "DW_CFA_nop"DW_CFA_nopxe "DW_CFA_nop" padding cie+39 HYPERLINK \l "DW_CFA_nop"DW_CFA_nopxe "DW_CFA_nop" padding cie+40 Figure  SEQ Figure \* ARABIC 65. Call frame information example: common information entry encoding The following notations apply in  REF _Ref241040257 \h  \* MERGEFORMAT Figure 66: = frame size = code alignment factorxe "" \t "See code alignment factor" = data alignment factorxe "" \t "See data alignment factor" Address Value Comment fde 40 length fde+4 cie CIE_ptr fde+8 foo initial_location fde+12 84 address_range fde+16 HYPERLINK \l "DW_CFA_advance_loc"DW_CFA_advance_locxe "DW_CFA_advance_loc"(1) instructions fde+17 HYPERLINK \l "DW_CFA_def_cfa_offset"DW_CFA_def_cfaxe "DW_CFA_def_cfa"_offsetxe "DW_CFA_def_cfa_offset"(12) fde+19 HYPERLINK \l "DW_CFA_advance_loc"DW_CFA_advance_loc(1) 4/ fde+20 HYPERLINK \l "DW_CFA_offset"DW_CFA_offsetxe "DW_CFA_offset"(8,1) -4/ (second parameter) fde+22 HYPERLINK \l "DW_CFA_advance_loc"DW_CFA_advance_loc(1) fde+23 HYPERLINK \l "DW_CFA_offset"DW_CFA_offset(6,2) -8/ (2nd parameter) fde+25 HYPERLINK \l "DW_CFA_advance_loc"DW_CFA_advance_loc(1) fde+26 HYPERLINK \l "DW_CFA_def_cfa_register"DW_CFA_def_cfa_registerxe "DW_CFA_def_cfa_register"(6) fde+28 HYPERLINK \l "DW_CFA_advance_loc"DW_CFA_advance_loc(1) fde+29 HYPERLINK \l "DW_CFA_offset"DW_CFA_offset(4,3) -12/ (2nd parameter) fde+31 HYPERLINK \l "DW_CFA_advance_loc"DW_CFA_advance_loc(12) 44/ fde+32 HYPERLINK \l "DW_CFA_restore"DW_CFA_restorexe "DW_CFA_restore"(4) fde+33 HYPERLINK \l "DW_CFA_advance_loc"DW_CFA_advance_loc(1) fde+34 HYPERLINK \l "DW_CFA_restore"DW_CFA_restore(6) fde+35 HYPERLINK \l "DW_CFA_def_cfa_register"DW_CFA_def_cfa_register(7) fde+37 HYPERLINK \l "DW_CFA_advance_loc"DW_CFA_advance_loc(1) fde+38 HYPERLINK \l "DW_CFA_restore"DW_CFA_restore(8) fde+39 HYPERLINK \l "DW_CFA_advance_loc"DW_CFA_advance_loc(1) fde+40 HYPERLINK \l "DW_CFA_def_cfa_offset"DW_CFA_def_cfa_offset(0) fde+42 HYPERLINK \l "DW_CFA_nop"DW_CFA_nopxe "DW_CFA_nop" padding fde+43 HYPERLINK \l "DW_CFA_nop"DW_CFA_nop padding fde+44 Figure  SEQ Figure \* ARABIC 66. Call frame information example: frame description entry encoding Inlining Examples xe "inlined subprogram call:examples"The pseudo-source in  REF _Ref513876858 \h  \* MERGEFORMAT Figure 67 is used to illustrate the use of DWARF to describe inlined subroutine calls. This example involves a nested subprogram INNER that makes uplevel references to the formal parameter and local variable of the containing subprogram OUTER. inline procedure OUTER (OUTER_FORMAL : integer) = begin OUTER_LOCAL : integer; procedure INNER (INNER_FORMAL : integer) = begin INNER_LOCAL : integer; print(INNER_FORMAL + OUTER_LOCAL); end; INNER(OUTER_LOCAL); ... INNER(31); end; ! Call OUTER ! OUTER(7); Figure  SEQ Figure \* ARABIC 67. Inlining examples: pseudo-source fragment There are several approaches that a compiler might take to inlining for this sort of example. This presentation considers three such approaches, all of which involve inline expansion of subprogram OUTER. (If OUTER is not inlined, the inlining reduces to a simpler single level subset of the two level approaches considered here.) The approaches are: Inline both OUTER and INNER in all cases Inline OUTER, multiple INNERs Treat INNER as a non-inlinable part of OUTER, compile and call a distinct normal version of INNER defined within each inlining of OUTER. Inline OUTER, one INNER Compile INNER as a single normal subprogram which is called from every inlining of OUTER. This discussion does not consider why a compiler might choose one of these approaches; it considers only how to describe the result. In the examples that follow in this section, the debugging information entries are given mnemonic labels of the following form ... where is either INNER or OUTER to indicate to which subprogram the debugging information entry applies, is either AI or CI to indicate abstract instance or concrete instance respectively, is the number of the alternative being considered, and is a sequence number that distinguishes the individual entries. There is no implication that symbolic labels, nor any particular naming convention, are required in actual use. For conciseness, declaration coordinates and call coordinates are omitted. Alternative #1: inline both OUTER and INNER A suitable abstract instancexe "abstract instance:example" for an alternative where both OUTER and INNER are always inlined is shown in  REF _Ref513876786 \h  \* MERGEFORMAT Figure 68. Notice in  REF _Ref513876786 \h  \* MERGEFORMAT Figure 68 that the debugging information entry for INNER (labelled INNER.AI.1.1) is nested in (is a child of) that for OUTER (labelled OUTER.AI.1.1). Nonetheless, the abstract instance tree for INNER is considered to be separate and distinct from that for OUTER. The call of OUTERxe "concrete inlined instance:example" shown in  REF _Ref513876858 \h  \* MERGEFORMAT Figure 67 might be described as shown in  REF _Ref513876890 \h  \* MERGEFORMAT Figure 69. ! Abstract instance for OUTER ! OUTER.AI.1.1: DW_TAG_subprogramxe "DW_TAG_subprogram" DW_AT_namexe "DW_AT_name"("OUTER") DW_AT_inlinexe "DW_AT_inline"(DW_INL_declared_inlinedxe "DW_INL_declared_inlined") ! No low/high PCs OUTER.AI.1.2: DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" DW_AT_namexe "DW_AT_name"("OUTER_FORMAL") DW_AT_typexe "DW_AT_type"(reference to integer) ! No location OUTER.AI.1.3: DW_TAG_variablexe "DW_TAG_variable" DW_AT_namexe "DW_AT_name"("OUTER_LOCAL") DW_AT_typexe "DW_AT_type"(reference to integer) ! No location ! ! Abstract instance for INNER ! INNER.AI.1.1: DW_TAG_subprogramxe "DW_TAG_subprogram" DW_AT_namexe "DW_AT_name"("INNER") DW_AT_inlinexe "DW_AT_inline"(DW_INL_declared_inlinedxe "DW_INL_declared_inlined") ! No low/high PCs INNER.AI.1.2: DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" DW_AT_namexe "DW_AT_name"("INNER_FORMAL") DW_AT_typexe "DW_AT_type"(reference to integer) ! No location INNER.AI.1.3: DW_TAG_variablexe "DW_TAG_variable" DW_AT_namexe "DW_AT_name"("INNER_LOCAL") DW_AT_typexe "DW_AT_type"(reference to integer) ! No location ... 0 ! No DW_TAG_inlined_subroutinexe "DW_TAG_inlined_subroutine" (concrete instance) ! for INNER corresponding to calls of INNER ... 0 Figure  SEQ Figure \* ARABIC 68. Inlining example #1: abstract instance ! Concrete instance for call "OUTER(7)" ! OUTER.CI.1.1: DW_TAG_inlined_subroutinexe "DW_TAG_inlined_subroutine" ! No name DW_AT_abstract_originxe "DW_AT_abstract_origin"(reference to OUTER.AI.1.1) DW_AT_low_pcxe "DW_AT_low_pc"(...) DW_AT_high_pcxe "DW_AT_high_pc"(...) OUTER.CI.1.2: DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" ! No name DW_AT_abstract_originxe "DW_AT_abstract_origin"(reference to OUTER.AI.1.2) DW_AT_const_valuexe "DW_AT_const_value"(7) OUTER.CI.1.3: DW_TAG_variablexe "DW_TAG_variable" ! No name DW_AT_abstract_originxe "DW_AT_abstract_origin"(reference to OUTER.AI.1.3) DW_AT_locationxe "DW_AT_location"(...) ! ! No DW_TAG_subprogramxe "DW_TAG_subprogram" (abstract instance) for INNER ! ! Concrete instance for call INNER(OUTER_LOCAL) ! INNER.CI.1.1: DW_TAG_inlined_subroutinexe "DW_TAG_inlined_subroutine" ! No name DW_AT_abstract_originxe "DW_AT_abstract_origin"(reference to INNER.AI.1.1) DW_AT_low_pcxe "DW_AT_low_pc"(...) DW_AT_high_pcxe "DW_AT_high_pc"(...) DW_AT_static_linkxe "DW_AT_static_link"(...) INNER.CI.1.2: DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" ! No name DW_AT_abstract_originxe "DW_AT_abstract_origin"(reference to INNER.AI.1.2) DW_AT_locationxe "DW_AT_location"(...) INNER.CI.1.3: DW_TAG_variable ! No name DW_AT_abstract_originxe "DW_AT_abstract_origin"(reference to INNER.AI.1.3) DW_AT_locationxe "DW_AT_location"(...) ... 0 ! Another concrete instance of INNER within OUTER ! for the call "INNER(31)" ... 0 Figure  SEQ Figure \* ARABIC 69. Inlining example #1: concrete instance Alternative #2: Inline OUTER, multiple INNERs In the second alternative we assume that subprogram INNER is not inlinable for some reason, but subprogram OUTER is inlinable. Each concrete inlined instance of OUTER has its own normal instance of INNER. The abstract instancexe "abstract instance:example" for OUTER, which includes INNER, is shown in  REF _Ref513876946 \h  \* MERGEFORMAT Figure 70. Note that the debugging information in this Figure differs from that in  REF _Ref513876786 \h  \* MERGEFORMAT Figure 68 in that INNER lacks a  HYPERLINK \l "DW_AT_inline" DW_AT_inlinexe "DW_AT_inline" attribute and therefore is not a distinct abstract instance. INNER is merely an out-of-line routine that is part of OUTERs abstract instance. This is reflected in the  REF _Ref513876946 \h  \* MERGEFORMAT Figure 70 by the fact that the labels for INNER use the substring OUTER instead of INNER. A resulting concrete inlined instancexe "concrete inlined instance:example" of OUTER is shown in  REF _Ref513877035 \h  \* MERGEFORMAT Figure 71. Notice in  REF _Ref513877035 \h  \* MERGEFORMAT Figure 71 that OUTER is expanded as a concrete inlined instance, and that INNER is nested within it as a concrete out-of-line subprogramxe "concrete out-of-line instance:example". Because INNER is cloned for each inline expansion of OUTER, only the invariant attributes of INNER (for example,  HYPERLINK \l "DW_AT_name" DW_AT_namexe "DW_AT_name") are specified in the abstract instance of OUTER, and the low-level, instance-specific attributes of INNER (for example,  HYPERLINK \l "DW_AT_low_pc" DW_AT_low_pc) are specified in each concrete instance of OUTER. The several calls of INNER within OUTER are compiled as normal calls to the instance of INNER that is specific to the same instance of OUTER that contains the calls. ! Abstract instance for OUTER ! OUTER.AI.2.1: DW_TAG_subprogramxe "DW_TAG_subprogram" DW_AT_namexe "DW_AT_name"("OUTER") DW_AT_inlinexe "DW_AT_inline"(DW_INL_declared_inlinedxe "DW_INL_declared_inlined") ! No low/high PCs OUTER.AI.2.2: DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" DW_AT_namexe "DW_AT_name"("OUTER_FORMAL") DW_AT_typexe "DW_AT_type"(reference to integer) ! No location OUTER.AI.2.3: DW_TAG_variablexe "DW_TAG_variable" DW_AT_namexe "DW_AT_name"("OUTER_LOCAL") DW_AT_typexe "DW_AT_type"(reference to integer) ! No location ! ! Nested out-of-line INNER subprogram ! OUTER.AI.2.4: DW_TAG_subprogramxe "DW_TAG_subprogram" DW_AT_namexe "DW_AT_name"("INNER") ! No DW_AT_inline ! No low/high PCs, frame_base, etc. OUTER.AI.2.5: DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" DW_AT_namexe "DW_AT_name"("INNER_FORMAL") DW_AT_typexe "DW_AT_type"(reference to integer) ! No location OUTER.AI.2.6: DW_TAG_variablexe "DW_TAG_variable" DW_AT_namexe "DW_AT_name"("INNER_LOCAL") DW_AT_typexe "DW_AT_type"(reference to integer) ! No location ... 0 ... 0 Figure  SEQ Figure \* ARABIC 70. Inlining example #2: abstract instance ! Concrete instance for call "OUTER(7)" ! OUTER.CI.2.1: DW_TAG_inlined_subroutinexe "DW_TAG_inlined_subroutine" ! No name DW_AT_abstract_originxe "DW_AT_abstract_origin"(reference to OUTER.AI.2.1) DW_AT_low_pcxe "DW_AT_low_pc"(...) DW_AT_high_pcxe "DW_AT_high_pc"(...) OUTER.CI.2.2: DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" ! No name DW_AT_abstract_originxe "DW_AT_abstract_origin"(reference to OUTER.AI.2.2) DW_AT_locationxe "DW_AT_location"(...) OUTER.CI.2.3: DW_TAG_variablexe "DW_TAG_variable" ! No name DW_AT_abstract_originxe "DW_AT_abstract_origin"(reference to OUTER.AI.2.3) DW_AT_locationxe "DW_AT_location"(...) ! ! Nested out-of-line INNER subprogram ! OUTER.CI.2.4: DW_TAG_subprogramxe "DW_TAG_subprogram" ! No name DW_AT_abstract_originxe "DW_AT_abstract_origin"(reference to OUTER.AI.2.4) DW_AT_low_pcxe "DW_AT_low_pc"(...) DW_AT_high_pcxe "DW_AT_high_pc"(...) DW_AT_frame_basexe "DW_AT_frame_base"(...) DW_AT_static_linkxe "DW_AT_static_link"(...) OUTER.CI.2.5: DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" ! No name DW_AT_abstract_originxe "DW_AT_abstract_origin"(reference to OUTER.AI.2.5) DW_AT_locationxe "DW_AT_location"(...) OUTER.CI.2.6: DW_TAG_variablexe "DW_TAG_variable" ! No name DW_AT_abstract_originxe "DW_AT_abstract_origin"(reference to OUTER.AT.2.6) DW_AT_locationxe "DW_AT_location"(...) ... 0 ... 0 Figure  SEQ Figure \* ARABIC 71. Inlining example #2: concrete instance Alternative #3: inline OUTER, one normal INNER In the third approach, one normal subprogram for INNER is compiled which is called from all concrete inlined instancesxe "concrete inlined instance:example" of OUTER. The abstract instancexe "abstract instance:example" for OUTER is shown in  REF _Ref513877090 \h  \* MERGEFORMAT Figure 72. The most distinctive aspect of that Figure is that subprogram INNER exists only within the abstract instance of OUTER, and not in OUTERs concrete instance. In the abstract instance of OUTER, the description of INNER has the full complement of attributes that would be expected for a normal subprogram. While attributes such as  HYPERLINK \l "DW_AT_low_pc" DW_AT_low_pc,  HYPERLINK \l "DW_AT_high_pc" DW_AT_high_pc,  HYPERLINK \l "DW_AT_location" DW_AT_location, and so on, typically are omitted from an abstract instance because they are not invariant across instances of the containing abstract instance, in this case those same attributes are included precisely because they are invariant--there is only one subprogram INNER to be described and every description is the same. A concrete inlined instance of OUTER is illustrated in  REF _Ref513877143 \h  \* MERGEFORMAT Figure 73. Notice in  REF _Ref513877143 \h  \* MERGEFORMAT Figure 73 that there is no DWARF representation for INNER at all; the representation of INNER does not vary across instances of OUTER and the abstract instance of OUTER includes the complete description of INNER, so that the description of INNER may be (and for reasons of space efficiency, should be) omitted from each concrete instance of OUTER. There is one aspect of this approach that is problematical from the DWARF perspective. The single compiled instance of INNER is assumed to access up-level variables of OUTER; however, those variables may well occur at varying positions within the frames that contain the concrete inlined instances. A compiler might implement this in several ways, including the use of additional compiler generated parameters that provide reference parameters for the up-level variables, or a compiler generated static link like parameter that points to the group of up-level entities, among other possibilities. In either of these cases, the DWARF description for the location attribute of each uplevel variable needs to be different if accessed from within INNER compared to when accessed from within the instances of OUTER. An implementation is likely to require vendor-specific DWARF attributes and/or debugging information entries to describe such cases. Note that in C++xe "C++", a member function of a class defined within a function definition does not require any vendor-specific extensionsxe "vendor extension" because the C++ language disallows access to entities that would give rise to this problem. (Neither extern variables nor static members require any form of static link for accessing purposes.) ! Abstract instance for OUTER ! OUTER.AI.3.1: DW_TAG_subprogramxe "DW_TAG_subprogram" DW_AT_namexe "DW_AT_name"("OUTER") DW_AT_inlinexe "DW_AT_inline"(DW_INL_declared_inlinedxe "DW_INL_declared_inlined") ! No low/high PCs OUTER.AI.3.2: DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" DW_AT_namexe "DW_AT_name"("OUTER_FORMAL") DW_AT_typexe "DW_AT_type"(reference to integer) ! No location OUTER.AI.3.3: DW_TAG_variablexe "DW_TAG_variable" DW_AT_namexe "DW_AT_name"("OUTER_LOCAL") DW_AT_typexe "DW_AT_type"(reference to integer) ! No location ! ! Normal INNER ! OUTER.AI.3.4: DW_TAG_subprogramxe "DW_TAG_subprogram" DW_AT_namexe "DW_AT_name"("INNER") DW_AT_low_pcxe "DW_AT_low_pc"(...) DW_AT_high_pcxe "DW_AT_high_pc"(...) DW_AT_frame_basexe "DW_AT_frame_base"(...) DW_AT_static_linkxe "DW_AT_static_link"(...) OUTER.AI.3.5: DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" DW_AT_namexe "DW_AT_name"("INNER_FORMAL") DW_AT_typexe "DW_AT_type"(reference to integer) DW_AT_locationxe "DW_AT_location"(...) OUTER.AI.3.6: DW_TAG_variablexe "DW_TAG_variable" DW_AT_namexe "DW_AT_name"("INNER_LOCAL") DW_AT_typexe "DW_AT_type"(reference to integer) DW_AT_locationxe "DW_AT_location"(...) ... 0 ... 0 Figure  SEQ Figure \* ARABIC 72. Inlining example #3: abstract instance ! Concrete instance for call "OUTER(7)" ! OUTER.CI.3.1: DW_TAG_inlined_subroutinexe "DW_TAG_inlined_subroutine" ! No name DW_AT_abstract_originxe "DW_AT_abstract_origin"(reference to OUTER.AI.3.1) DW_AT_low_pcxe "DW_AT_low_pc"(...) DW_AT_high_pcxe "DW_AT_high_pc"(...) DW_AT_frame_basexe "DW_AT_frame_base"(...) OUTER.CI.3.2: DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" ! No name DW_AT_abstract_originxe "DW_AT_abstract_origin"(reference to OUTER.AI.3.2) ! No type DW_AT_locationxe "DW_AT_location"(...) OUTER.CI.3.3: DW_TAG_variablexe "DW_TAG_variable" ! No name DW_AT_abstract_originxe "DW_AT_abstract_origin"(reference to OUTER.AI.3.3) ! No type DW_AT_locationxe "DW_AT_location"(...) ! No DW_TAG_subprogramxe "DW_TAG_subprogram" for "INNER" ... 0 Figure  SEQ Figure \* ARABIC 73. Inlining example #3: concrete instance Constant Expression Example C++ generalizes the notion of constant expressions to include constant expression user-defined literals and functions. constexpr double mass = 9.8; constexpr int square (int x) { return x * x; } float arr[square(9)]; // square() called and inlined Figure  SEQ Figure \* ARABIC 74. Constant expressions: C++ source These declarations can be represented as illustrated in  REF _Ref230691077 \h  \* MERGEFORMAT Figure 75. ! For variable mass ! 1$: DW_TAG_const_typexe "DW_TAG_const_type" DW_AT_typexe "DW_AT_type"(reference to "double") 2$: DW_TAG_variablexe "DW_TAG_variable" DW_AT_name("mass") DW_AT_type(reference to 1$) DW_AT_const_exprxe "DW_AT_const_expr"(true) DW_AT_const_valuexe "DW_AT_const_value"(9.8) ! Abstract instance for square ! 10$: DW_TAG_subprogramxe "DW_TAG_subprogram" DW_AT_namexe "DW_AT_name"("square") DW_AT_typexe "DW_AT_type"(reference to "int") DW_AT_inlinexe "DW_AT_inline"(DW_INL_inlined) 11$: DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" DW_AT_name("x") DW_AT_type(reference to "int") ! Concrete instance for square(9) ! 20$: DW_TAG_inlined_subroutinexe "DW_TAG_inlined_subroutine" DW_AT_abstract_originxe "DW_AT_abstract_origin"(reference to 10$) DW_AT_const_expr(present) DW_AT_const_value(81) DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" DW_AT_abstract_origin(reference to 11$) DW_AT_const_value(9) ! Anonymous array type for arr ! 30$: DW_TAG_array_typexe "DW_TAG_array_type" DW_AT_typexe "DW_AT_type"(reference to "float") DW_AT_byte_sizexe "DW_AT_byte_size"(324) ! 81*4 DW_TAG_subrange_typexe "DW_TAG_subrange_type" DW_AT_type(reference to "int") DW_AT_upper_boundxe "DW_AT_upper_bound"(reference to 20$) ! Variable arr ! 40$: DW_TAG_variablexe "DW_TAG_variable" DW_AT_namexe "DW_AT_name"("arr") DW_AT_typexe "DW_AT_type"(reference to 30$) Figure  SEQ Figure \* ARABIC 75. Constant expressions: DWARF description Unicode Character Example Unicode character encodingsxe "Unicode character encodings" can be described in DWARF as illustrated in  REF _Ref230694316 \h  \* MERGEFORMAT Figure 76. // C++ source // char16_txe "char16_t" chr_a = u'h'; char32_txe "char32_t" chr_b = U'h'; ! DWARF description ! 1$: DW_TAG_base_typexe "DW_TAG_base_type" DW_AT_namexe "DW_AT_name"("char16_t") DW_AT_encodingxe "DW_AT_encoding"(DW_ATE_UTFxe "DW_ATE_UTF") DW_AT_byte_sizexe "DW_AT_byte_size"(2) 2$: DW_TAG_base_typexe "DW_TAG_base_type" DW_AT_namexe "DW_AT_name"("char32_t") DW_AT_encoding(DW_ATE_UTF XE "DW_ATE_UTF" ) DW_AT_byte_sizexe "DW_AT_byte_size"(4) 3$: DW_TAG_variablexe "DW_TAG_variable" DW_AT_namexe "DW_AT_name"("chr_a") DW_AT_typexe "DW_AT_type"(reference to 1$) 4$: DW_TAG_variable DW_AT_namexe "DW_AT_name"("chr_b") DW_AT_typexe "DW_AT_type"(reference to 2$) Figure  SEQ Figure \* ARABIC 76. Unicode character type examples Type-Safe Enumeration Example C++xe "C++" type-safe enumerationsxe "type-safe enumeration" can be described in DWARF as illustrated in  REF _Ref237948397 \h  \* MERGEFORMAT Figure 77. // C++ source // enum classxe "enum class" \t "See type-safe enumeration" E { E1, E2=100 }; E e1; ! DWARF description ! 11$: DW_TAG_enumeration_typexe "DW_TAG_enumeration_type" DW_AT_namexe "DW_AT_name"("E") DW_AT_type(reference to "int") DW_AT_enum_classxe "DW_AT_enum_class"(present) 12$: DW_TAG_enumeratorxe "DW_TAG_enumerator" DW_AT_name("E1") DW_AT_const_valuexe "DW_AT_const_value"(0) 13$: DW_TAG_enumerator DW_AT_name("E2") DW_AT_const_value(100) 14$: DW_TAG_variablexe "DW_TAG_variable" DW_AT_namexe "DW_AT_name"("e1") DW_AT_typexe "DW_AT_type"(reference to 11$) Figure  SEQ Figure \* ARABIC 77. C++ type-safe enumeration example Template Example C++xe "C++" templatesxe "template example" can be described in DWARF as illustrated in  REF _Ref238029801 \h  \* MERGEFORMAT Figure 78. // C++ source // template struct wrapper { T comp; }; wrapper obj; ! DWARF description ! 11$: DW_TAG_structure_typexe "DW_TAG_structure_type" DW_AT_namexe "DW_AT_name"("wrapper") 12$: DW_TAG_template_type_parameterxe "DW_TAG_template_type_parameter" DW_AT_name("T") DW_AT_typexe "DW_AT_type"(reference to "int") 13$ DW_TAG_memberxe "DW_TAG_member" DW_AT_name("comp") DW_AT_type(reference to 12$) 14$: DW_TAG_variablexe "DW_TAG_variable" DW_AT_name("obj") DW_AT_type(reference to 11$) Figure  SEQ Figure \* ARABIC 78. C++ template example #1 The actual type of the component comp is int, but in the DWARF the type references the DW_TAG_template_type_parameterxe "DW_TAG_template_type_parameter" for T, which in turn references int. This implies that in the original template comp was of type T and that was replaced with int in the instance. There exist situations where it is not possible for the DWARF to imply anything about the nature of the original template. Consider the C++xe "C++" source in  REF _Ref241114729 \h  \* MERGEFORMAT Figure 79. // C++ source // template struct wrapper { T comp; }; template void consume(wrapper formal) { ... } wrapper obj; consume(obj); ! DWARF description ! 11$: DW_TAG_structure_typexe "DW_TAG_structure_type" DW_AT_namexe "DW_AT_name"("wrapper") 12$: DW_TAG_template_type_parameterxe "DW_TAG_template_type_parameter" DW_AT_name("T") DW_AT_type(reference to "int") 13$ DW_TAG_memberxe "DW_TAG_member" DW_AT_name("comp") DW_AT_type(reference to 12$) 14$: DW_TAG_variablexe "DW_TAG_variable" DW_AT_name("obj") DW_AT_type(reference to 11$) 21$: DW_TAG_subprogramxe "DW_TAG_subprogram" DW_AT_namexe "DW_AT_name"("consume") 22$: DW_TAG_template_type_parameterxe "DW_TAG_template_type_parameter" DW_AT_name("U") DW_AT_typexe "DW_AT_type"(reference to "int") 23$: DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" DW_AT_name("formal") DW_AT_type(reference to 11$) Figure  SEQ Figure \* ARABIC 79. C++ template example #2 In the DW_TAG_subprogram entry for the instance of consume, U is described as int. The type of formal is wrapper in the source. DWARF only represents instantiations of templates; there is no entry which represents wrapper, which is neither a template parameter nor a template instantiation. The type of formal is described as wrapper, the instantiation of wrapper, in the DW_AT_type attribute at 23$. There is no description of the relationship between template type parameter T at 12$ and U at 22$ which was used to instantiate wrapper. A consequence of this is that the DWARF information would not distinguish between the existing example and one where the formal of consume were declared in the source to be wrapper. Template Alias Examples C++xe "C++" template aliases can be described in DWARF as illustrated in  REF _Ref238036372 \h  \* MERGEFORMAT Figure 80 and  REF _Ref238036419 \h  \* MERGEFORMAT Figure 81 // C++ source // template struct Alpha { T tango; U uniform; }; template using Beta = Alpha; Beta b; ! DWARF representation for variable 'b' ! 20$: DW_TAG_structure_typexe "DW_TAG_structure_type" DW_AT_namexe "DW_AT_name"("Alpha") 21$: DW_TAG_template_type_parameterxe "DW_TAG_template_type_parameter" DW_AT_name("T") DW_AT_typexe "DW_AT_type"(reference to "long") 22$: DW_TAG_template_type_parameter DW_AT_name("U") DW_AT_type(reference to "long") 23$: DW_TAG_memberxe "DW_TAG_member" DW_AT_name("tango") DW_AT_type(reference to 21$) 24$: DW_TAG_member DW_AT_name("uniform") DW_AT_type(reference to 22$) 25$: DW_TAG_template_aliasxe "DW_TAG_template_alias" DW_AT_name("Beta") DW_AT_type(reference to 20$) 26$: DW_TAG_template_type_parameter DW_AT_name("V") DW_AT_type(reference to "long") 27$: DW_TAG_variablexe "DW_TAG_variable" DW_AT_name("b") DW_AT_type(reference to 25$) Figure  SEQ Figure \* ARABIC 80. Template alias example #1 // C++ source // template struct X { }; template struct Y { }; template using Z = Y; X> y; X> z; ! DWARF representation for X> ! 30$: DW_TAG_structure_typexe "DW_TAG_structure_type" // struct Y DW_AT_name("Y") 31$: DW_TAG_template_type_parameterxe "DW_TAG_template_type_parameter" DW_AT_name("TY") DW_AT_type(reference to "int") 32$: DW_TAG_structure_typexe "DW_TAG_structure_type" // struct X> DW_AT_name("X") 33$: DW_TAG_template_type_parameterxe "DW_TAG_template_type_parameter" DW_AT_name("TX") DW_AT_type(reference to 30$) ! DWARF representation for X> ! 40$: DW_TAG_template_aliasxe "DW_TAG_template_alias" // template using Z = Y; DW_AT_name("Z") DW_AT_type(reference to 30$) 41$: DW_TAG_template_type_parameter DW_AT_name("T") DW_AT_type(reference to "int") 42$: DW_TAG_structure_type // struct X> DW_AT_name("X") 43$: DW_TAG_template_type_parameter DW_AT_name("TX") DW_AT_type(reference to 40$) ! Note that 32$ and 42$ are actually the same type ! 50$: DW_TAG_variablexe "DW_TAG_variable" DW_AT_name("y") DW_AT_type(reference to $32) 51$: DW_TAG_variablexe "DW_TAG_variable" DW_AT_name("z") DW_AT_type(reference to $42) Figure  SEQ Figure \* ARABIC 81. Template alias example #2 -- DWARF Compression and Duplicate Elimination (informative) xe "DWARF compression"xe "compression" \t "See DWARF compression"xe "DWARF duplicate elimination"xe "duplicate elimination" \t "See DWARF duplicate elimination" DWARF can use a lot of disk space. This is especially true for C++xe "C++", where the depth and complexity of headers can mean that many, many (possibly thousands of) declarations are repeated in every compilation unit. C++ templates can also mean that some functions and their DWARF descriptions get duplicated. This Appendix describes techniques for using the DWARF representation in combination with features and characteristics of some common object file representations to reduce redundancy without losing information. It is worth emphasizing that none of these techniques are necessary to provide a complete and accurate DWARF description; they are solely concerned with reducing the size of DWARF information. The techniques described here depend more directly and more obviously on object file concepts and linker mechanisms than most other parts of DWARF. While the presentation tends to use the vocabulary of specific systems, this is primarily to aid in describing the techniques by appealing to well-known terminology. These techniques can be employed on any system that supports certain general functional capabilities (described below). Using Compilation Units Overview The general approach is to break up the debug information of a compilation into separate normal and partial compilation units, each consisting of one or more sections. By arranging that a sufficiently similar partitioning occurs in other compilations, a suitable system linker can delete redundant groups of sections when combining object files. The following uses some traditional section naming here but aside from the DWARF sections, the names are just meant to suggest traditional contents as a way of explaining the approach, not to be limiting. A traditional relocatable object output from a single compilation might contain sections named: .dataxe ".data" .textxe ".text" .debug_infoxe ".debug_info" .debug_abbrevxe ".debug_abbrev" .debug_linexe ".debug_line" .debug_arangesxe ".debug_aranges" A relocatable object from a compilation system attempting duplicate DWARF elimination might contain sections as in: .data .text .debug_info .debug_abbrev .debug_line .debug_aranges followed (or preceded, the order is not significant) by a series of section groups: ==== Section group 1 .debug_info .debug_abbrev .debug_line ==== ... ==== Section group N .debug_info .debug_abbrev .debug_line where each section group might or might not contain executable code (.text sections) or data (.data sections). A section groupxe "section group" is a named set of section contributions within an object file with the property that the entire set of section contributions must be retained or discarded as a whole; no partial elimination is allowed. Section groups can generally be handled by a linker in two ways: Given multiple identical (duplicate) section groups, one of them is chosen to be kept and used, while the rest are discarded. Given a section group that is not referenced from any section outside of the section group, the section group is discarded. Which handling applies may be indicated by the section group itself and/or selection of certain linker options. For example, if a linker determines that section group 1 from A.o and section group 3 from B.o are identical, it could discard one group and arrange that all references in A.o and B.o apply to the remaining one of the two identical section groups. This saves space. An important part of making it possible to redirect references to the surviving section group is the use of consistently chosen linker global symbols for referring to locations within each section group. It follows that references are simply to external names and the linker already knows how to match up references and definitions. What is minimally needed from the object file format and system linker (outside of DWARF itself, and normal object/linker facilities such as simple relocations) are: A means of referencing from inside one .debug_info compilation unit to another .debug_infoxe ".debug_info" compilation unit (DW_FORM_ref_addrxe "DW_FORM_ref_addr" provides this). A means of having multiple contributions to specific sections (for example, .debug_info, and so on) in a single object file. A means of identifying a section group (giving it a name). A means of identifying which sections go together to make up a section group, so that the group can be treated as a unit (kept or discarded). A means of indicating how each section group should be processed by the linker. The notion of section and section contribution used here corresponds closely to the similarly named concepts in the ELF object file representation. The notion of section group is an abstraction of common extensions of the ELF representation widely known as COMDATs or COMDAT sectionsxe "COMDAT" \t "See section group". (Other object file representations provide COMDAT-style mechanisms as well.) There are several variations in the COMDAT schemes in common use, any of which should be sufficient for the purposes of the DWARF duplicate elimination techniques described here. Naming and Usage Considerations A precise description of the means of deriving names usable by the linker to access DWARF entities is not part of this specification. Nonetheless, an outline of a usable approach is given here to make this more understandable and to guide implementors. Implementations should clearly document their naming conventions. In the following, it will be helpful to refer to the examples in  REF _Ref511545371 \h  \* MERGEFORMAT Figure 82 through  REF _Ref511545453 \h  \* MERGEFORMAT Figure 89 of Section REF _Ref511545555 \r \h  \* MERGEFORMAT E.1.3. Section Group Names Section groups must have a section group namexe "section group:name". For the subsequent C++xe "C++" example, a name like .. will suffice, where is some string specific to the producer, which has a language-designation embedded in the name when appropriate. (Alternatively, the language name could be embedded in the ). names the file, such as wa.h in the example. is a string generated to identify the specific wa.h header file in such a way that a 'matching' output from another compile generates the same , and a non-matching output (say because of #defines) generates a different . It may be useful to think of a as a kind of digital signature that allows a fast test for the equality of two section groups. So, for example, the section group corresponding to file wa.h above is given the name my.compiler.company.cpp.wa.h.123456. Debugging Information Entry Names xe "debugging information entry:global name for"Global labels for debugging information entries (need explained below) within a section group can be given names of the form ... such as my.compiler.company.wa.h.123456.987 where distinguishes this as a DWARF debug info name, and should identify the producer and, when appropriate, the language. and are as above. could be a number sequentially assigned to entities (tokens, perhaps) found during compilation. In general, every point in the section group .debug_infoxe ".debug_info" that could be referenced from outside by any compilation unit must normally have an external name generated for it in the linker symbol table, whether the current compilation references all those points or not. The completeness of the set of names generated is a quality-of-implementation issue. It is up to the producer to ensure that if in separate compilations would not match properly then a distinct is generated. Note that only section groups that are designated as duplicate-removal-applies actually require the ... external labels for debugging information entries as all other section group sections can use 'local' labels (section-relative relocations). (This is a consequence of separate compilation, not a rule imposed by this document.) Local labels use references with form DW_FORM_ref4xe "DW_FORM_ref4" or DW_FORM_ref8xe "DW_FORM_ref8". (These are affected by relocations so DW_FORM_ref_udataxe "DW_FORM_ref_udata", DW_FORM_ref1xe "DW_FORM_ref1" and DW_FORM_ref2xe "DW_FORM_ref2" are normally not usable and DW_FORM_ref_addrxe "DW_FORM_ref_addr" is not necessary for a local label.) Use of DW_TAG_compile_unit versus DW_TAG_partial_unit A section groupxe "section group" compilation unit that uses  HYPERLINK \l "DW_TAG_compile_unit" DW_TAG_compile_unitxe "DW_TAG_compile_unit" is like any other compilation unit, in that its contents are evaluated by consumers as though it were an ordinary compilation unit. An #include directive appearing outside any other declarations is a good candidate to be represented using  HYPERLINK \l "DW_TAG_compile_unit" DW_TAG_compile_unitxe "DW_TAG_compile_unit". However, an #include appearing inside a C++ namespace declaration or a function, for example, is not a good candidate because the entities included are not necessarily file level entities. This also applies to Fortranxe "Fortran" INCLUDE lines when declarations are included into a procedure or module context. Consequently a compiler must use  HYPERLINK \l "DW_TAG_partial_unit" DW_TAG_partial_unitxe "DW_TAG_partial_unit" (instead of  HYPERLINK \l "DW_TAG_compile_unit" DW_TAG_compile_unitxe "DW_TAG_compile_unit") in a section group whenever the section group contents are not necessarily globally visible. This directs consumers to ignore that compilation unit when scanning top level declarations and definitions. The DW_TAG_partial_unitxe "DW_TAG_partial_unit" compilation unit will be referenced from elsewhere and the referencing locations give the appropriate context for interpreting the partial compilation unit. A DW_TAG_partial_unitxe "DW_TAG_partial_unit" entry may have, as appropriate, any of the attributes assigned to a DW_TAG_compile_unitxe "DW_TAG_compile_unit". Use of DW_TAG_imported_unit A  HYPERLINK \l "DW_TAG_imported_unit" DW_TAG_imported_unitxe "DW_TAG_imported_unit" debugging information entry has an  HYPERLINK \l "DW_AT_import" DW_AT_importxe "DW_AT_import" attribute referencing a  HYPERLINK \l "DW_TAG_compile_unit" DW_TAG_compile_unitxe "DW_TAG_compile_unit" or  HYPERLINK \l "DW_TAG_partial_unit" DW_TAG_partial_unitxe "DW_TAG_partial_unit" debugging information entry. A DW_TAG_imported_unitxe "DW_TAG_imported_unit" debugging information entry refers to a DW_TAG_compile_unitxe "DW_TAG_compile_unit" or DW_TAG_partial_unitxe "DW_TAG_partial_unit" debugging information entry to specify that the DW_TAG_compile_unit or DW_TAG_partial_unit contents logically appear at the point of the DW_TAG_imported_unit entry. Use of DW_FORM_ref_addr Use  HYPERLINK \l "DW_FORM_ref_addr" DW_FORM_ref_addrxe "DW_FORM_ref_addr" to reference from one compilation unit's debugging information entries to those of another compilation unit. When referencing into a removable section group .debug_infoxe ".debug_info" from another .debug_info (from anywhere), the ... name should be used for an external symbol and a relocation generated based on that name. When referencing into a non-section group .debug_infoxe ".debug_info", from another .debug_info (from anywhere) DW_FORM_ref_addrxe "DW_FORM_ref_addr" is still the form to be used, but a section-relative relocation generated by use of a non-exported name (often called an internal name) may be used for references within the same object file. Examples xe "DWARF duplicate elimination:examples"This section provides several examples in order to have a concrete basis for discussion. In these examples, the focus is on the arrangement of DWARF information into sections (specifically the .debug_infoxe ".debug_info" section) and the naming conventions used to achieve references into section groupsxe "section group". In practice, all of the examples that follow involve DWARF sections other than just .debug_info (for example, .debug_line, .debug_aranges, or others); however, only the .debug_info section is shown to keep the figures compact and easier to read. The grouping of sections into a named set is shown, but the means for achieving this in terms of the underlying object language is not (and varies from system to system). C++ Example xe "DWARF duplicate elimination:C++ example"The C++xe "C++" source in  REF _Ref511545371 \h  \* MERGEFORMAT Figure 82 is used to illustrate the DWARF representation intended to allow duplicate elimination. ---- File wa.h ---- struct A { int i; }; ---- File wa.C ---- #include "wa.h"; int f(A &a) { return a.i + 2; } Figure  SEQ Figure \* ARABIC 82. Duplicate elimination example #1: C++ source  REF _Ref514567035 \h  \* MERGEFORMAT Figure 83 shows the section groupxe "section group" corresponding to the included file wa.h. ==== Section group name: my.compiler.company.cpp.wa.h.123456 == section .debug_info DW.cpp.wa.h.123456.1: ! linker global symbol DW_TAG_compile_unitxe "DW_TAG_compile_unit" DW_AT_languagexe "DW_AT_language"(DW_LANG_C_plus_plusxe "DW_LANG_C_plus_plus") ... ! other unit attributes DW.cpp.wa.h.123456.2: ! linker global symbol DW_TAG_base_typexe "DW_TAG_base_type" DW_AT_namexe "DW_AT_name"("int") DW.cpp.wa.h.123456.3: ! linker global symbol DW_TAG_structure_type DW_AT_NAME("A")xe "DW_TAG_structure_type" DW.cpp.wa.h.123456.4: ! linker global symbol DW_TAG_memberxe "DW_TAG_member" DW_AT_namexe "DW_AT_name"("i") DW_AT_typexe "DW_AT_type"(DW_FORM_refn to DW.cpp.wa.h.123456.2) ! (This is a local reference, so the more ! compact form DW_FORM_refn can be used) Figure  SEQ Figure \* ARABIC 83. Duplicate elimination example #1: DWARF section group  REF _Ref511546481 \h  \* MERGEFORMAT Figure 84 shows the normal DWARF sections, which are not part of any section group, and how they make use of the information in the section group shown above. == section .textxe ".text" [generated code for function f] == section .debug_info xe ".debug_info" DW_TAG_compile_unitxe "DW_TAG_compile_unit" .L1: ! local (non-linker) symbol DW_TAG_reference_typexe "DW_TAG_reference_type" DW_AT_typexe "DW_AT_type"(reference to DW.cpp.wa.h.123456.3) DW_TAG_subprogramxe "DW_TAG_subprogram" DW_AT_namexe "DW_AT_name"("f") DW_AT_typexe "DW_AT_type"(reference to DW.cpp.wa.h.123456.2) DW_TAG_variablexe "DW_TAG_variable" DW_AT_namexe "DW_AT_name"("a") DW_AT_typexe "DW_AT_type"(reference to .L1) ... Figure  SEQ Figure \* ARABIC 84. Duplicate elimination example #1: primary compilation unit This example uses  HYPERLINK \l "DW_TAG_compile_unit" DW_TAG_compile_unitxe "DW_TAG_compile_unit" for the section group, implying that the contents of the compilation unit are globally visible (in accordance with C++xe "C++" language rules).  HYPERLINK \l "DW_TAG_partial_unit" DW_TAG_partial_unitxe "DW_TAG_partial_unit" is not needed for the same reason. Fortran Example xe "DWARF duplicate elimination:Fortran example"For a Fortranxe "Fortran" example, consider  REF _Ref514567147 \h  \* MERGEFORMAT Figure 85. ---- File CommonStuff.fh ---- IMPLICIT INTEGER(A-Z) COMMON /Common1/ C(100) PARAMETER(SEVEN = 7) ---- File Func.f ---- FUNCTION FOO (N) INCLUDE 'CommonStuff.fh' FOO = C(N + SEVEN) RETURN END Figure  SEQ Figure \* ARABIC 85. Duplicate elimination example #2: Fortran source  REF _Ref514567198 \h  \* MERGEFORMAT Figure 86 shows the section groupxe "section group" corresponding to the included file CommonStuff.fh. ==== Section group name: my.f90.company.f90.CommonStuff.fh.654321 == section .debug_infoxe ".debug_info" DW.myf90.CommonStuff.fh.654321.1: ! linker global symbol DW_TAG_partial_unitxe "DW_TAG_partial_unit" ! ...compilation unit attributes, including... DW_AT_languagexe "DW_AT_language"(DW_LANG_Fortran90xe "DW_LANG_Fortran90") DW_AT_identifier_casexe "DW_AT_identifier_case"(DW_ID_case_insensitivexe "DW_ID_case_insensitive") DW.myf90.CommonStuff.fh.654321.2: ! linker global symbol 3$: DW_TAG_array_typexe "DW_TAG_array_type" ! unnamed DW_AT_typexe "DW_AT_type"(reference to DW.f90.F90$main.f.2) ! base type INTEGER DW_TAG_subrange_typexe "DW_TAG_subrange_type" DW_AT_typexe "DW_AT_type"(reference to DW.f90.F90$main.f.2) ! base type INTEGER) DW_AT_lower_boundxe "DW_AT_lower_bound"(constant 1) DW_AT_upper_boundxe "DW_AT_upper_bound"(constant 100) DW.myf90.CommonStuff.fh.654321.3: ! linker global symbol DW_TAG_common_blockxe "DW_TAG_common_block" DW_AT_namexe "DW_AT_name"("Common1") DW_AT_locationxe "DW_AT_location"(Address of common block Common1) DW_TAG_variablexe "DW_TAG_variable" DW_AT_namexe "DW_AT_name"("C") DW_AT_typexe "DW_AT_type"(reference to 3$) DW_AT_locationxe "DW_AT_location"(address of C) DW.myf90.CommonStuff.fh.654321.4: ! linker global symbol DW_TAG_constantxe "DW_TAG_constant" DW_AT_namexe "DW_AT_name"("SEVEN") DW_AT_typexe "DW_AT_type"(reference to DW.f90.F90$main.f.2) ! base type INTEGER DW_AT_const_valuexe "DW_AT_const_value"(constant 7) Figure  SEQ Figure \* ARABIC 86. Duplicate elimination example #2: DWARF section group  REF _Ref514567250 \h  \* MERGEFORMAT Figure 87 shows the sections for the primary compilation unit. == section .textxe ".text" [code for function Foo] == section .debug_infoxe ".debug_info" DW_TAG_compile_unitxe "DW_TAG_compile_unit" DW_TAG_subprogramxe "DW_TAG_subprogram" DW_AT_namexe "DW_AT_name"("Foo") DW_AT_typexe "DW_AT_type"(reference to DW.f90.F90$main.f.2) ! base type INTEGER DW_TAG_imported_unitxe "DW_TAG_imported_unit" DW_AT_importxe "DW_AT_import"(reference to DW.myf90.CommonStuff.fh.654321.1) DW_TAG_common_inclusionxe "DW_TAG_common_inclusion" ! For Common1 DW_AT_common_referencexe "DW_AT_common_reference"(reference to DW.myf90.CommonStuff.fh.654321.3) DW_TAG_variablexe "DW_TAG_variable" ! For function result DW_AT_namexe "DW_AT_name"("Foo") DW_AT_typexe "DW_AT_type"(reference to DW.f90.F90$main.f.2) ! base type INTEGER Figure  SEQ Figure \* ARABIC 87. Duplicate elimination example #2: primary unit A companion main program is shown in  REF _Ref514567301 \h  \* MERGEFORMAT Figure 88. ---- File Main.f ---- INCLUDE 'CommonStuff.fh' C(50) = 8 PRINT *, 'Result = ', FOO(50 - SEVEN) END Figure  SEQ Figure \* ARABIC 88. Duplicate elimination example #2: companion source That main program results in an object file that contained a duplicate of the section group named my.f90.company.f90.CommonStuff.fh.654321 corresponding to the included file as well as the remainder of the main subprogram as shown in  REF _Ref511545453 \h  \* MERGEFORMAT Figure 89. == section .debug_infoxe ".debug_info" DW_TAG_compile_unitxe "DW_TAG_compile_unit" DW_AT_namexe "DW_AT_name"(F90$main) DW_TAG_base_typexe "DW_TAG_base_type" DW_AT_namexe "DW_AT_name"("INTEGER") DW_AT_encodingxe "DW_AT_encoding"(DW_ATE_signedxe "DW_ATE_signed") DW_AT_byte_sizexe "DW_AT_byte_size"(...) DW_TAG_base_typexe "DW_TAG_base_type" ... ... ! other base types DW_TAG_subprogramxe "DW_TAG_subprogram" DW_AT_namexe "DW_AT_name"("F90$main") DW_TAG_imported_unitxe "DW_TAG_imported_unit" DW_AT_importxe "DW_AT_import"(reference to DW.myf90.CommonStuff.fh.654321.1) DW_TAG_common_inclusionxe "DW_TAG_common_inclusion" ! for Common1 DW_AT_common_referencexe "DW_AT_common_reference"(reference to DW.myf90.CommonStuff.fh.654321.3) ... Figure  SEQ Figure \* ARABIC 89. Duplicate elimination example #2: companion DWARF This example uses  HYPERLINK \l "DW_TAG_partial_unit" DW_TAG_partial_unitxe "DW_TAG_partial_unit" for the section group because the included declarations are not independently visible as global entities. C Example xe "DWARF duplicate elimination:C example"The C++ example in this Section might appear to be equally valid as a Cxe "C" example. However, it is prudent to include a  HYPERLINK \l "DW_TAG_imported_unit" DW_TAG_imported_unitxe "DW_TAG_imported_unit" in the primary unit (see  REF _Ref511546481 \h  \* MERGEFORMAT Figure 84) with an  HYPERLINK \l "DW_AT_import" DW_AT_importxe "DW_AT_import" attribute that refers to the proper unit in the section group. The Cxe "C" rules for consistency of global (file scope) symbols across compilations are less strict than for C++;xe "C++" inclusion of the import unit attribute assures that the declarations of the proper section group are considered before declarations from other compilations. Using Type Units A large portion of debug information is type information, and in a typical compilation environment, many types are duplicated many times. One method of controlling the amount of duplication is separating each type into a separate .debug_typesxe ".debug_types"xe "type unit" section and arranging for the linker to recognize and eliminate duplicates at the individual type level. Using this technique, each substantial type definition is placed in its own individual section, while the remainder of the DWARF information (non-type information, incomplete type declarations, and definitions of trivial types) is placed in the usual debug information section. In a typical implementation, the relocatable object file may contain one of each of these debug sections: .debug_abbrevxe ".debug_abbrev" .debug_infoxe ".debug_info" .debug_linexe ".debug_line" and any number of these additional sections: .debug_typesxe ".debug_types" As discussed in the previous section (Section  REF _Ref230762311 \n \h  \* MERGEFORMAT E.1), many linkers today support the concept of a COMDAT group or linkonce section. The general idea is that a key can be attached to a section or a group of sections, and the linker will include only one copy of a section group (or individual section) for any given key. For .debug_typesxe ".debug_types" sections, the key is the type signaturexe "type signature" formed from the algorithm given in Section  REF _Ref230753495 \n \h  \* MERGEFORMAT 7.27. Signature Computation Example As an examplexe "type signature:example computation", consider a C++xe "C++" header file containing the type definitions shown in  REF _Ref235514031 \h  \* MERGEFORMAT Figure 90. 1 namespace N { 2 3 struct B; 4 5 struct C { 6 int x; 7 int y; 8 }; 9 10 class A { 11 public: 12 A(int v); 13 int v(); 14 private: 15 int v_; 16 struct A *next; 17 struct B *bp; 18 struct C c; 19 }; 20 21 } Figure  SEQ Figure \* ARABIC 90. Type signature examples: C++ source Next, consider one possible representation of the DWARF information that describes the type struct C as shown in  REF _Ref235514119 \h  \* MERGEFORMAT Figure 91: DW_TAG_type_unitxe "DW_TAG_type_unit" DW_AT_languagexe "DW_AT_language": DW_LANG_C_plus_plusxe "DW_LANG_C_plus_plus" (4) DW_TAG_namespacexe "DW_TAG_namespace" DW_AT_namexe "DW_AT_name": "N" L1: DW_TAG_structure_typexe "DW_TAG_structure_type" DW_AT_namexe "DW_AT_name": "C" DW_AT_byte_sizexe "DW_AT_byte_size": 8 DW_AT_decl_filexe "DW_AT_decl_file": 1 DW_AT_decl_linexe "DW_AT_decl_line": 5 DW_TAG_memberxe "DW_TAG_member" DW_AT_namexe "DW_AT_name": "x" DW_AT_decl_filexe "DW_AT_decl_file": 1 DW_AT_decl_linexe "DW_AT_decl_line": 6 DW_AT_typexe "DW_AT_type": reference to L2 DW_AT_data_member_locationxe "DW_AT_data_member_location": 0 DW_TAG_memberxe "DW_TAG_member" DW_AT_namexe "DW_AT_name": "y" DW_AT_decl_filexe "DW_AT_decl_file": 1 DW_AT_decl_linexe "DW_AT_decl_line": 7 DW_AT_typexe "DW_AT_type": reference to L2 DW_AT_data_member_locationxe "DW_AT_data_member_location": 4 L2: DW_TAG_base_typexe "DW_TAG_base_type" DW_AT_byte_sizexe "DW_AT_byte_size": 4 DW_AT_encoding: DW_ATE_signed DW_AT_namexe "DW_AT_name": "int" Figure  SEQ Figure \* ARABIC 91. Type signature computation #1: DWARF representation In computing a signature for the type N::C, flatten the type description into a byte stream according to the procedure outlined in Section  REF _Ref230753495 \n \h  \* MERGEFORMAT 7.27. The result is shown in  REF _Ref235514187 \h  \* MERGEFORMAT Figure 92. // Step 2: 'C' DW_TAG_namespacexe "DW_TAG_namespace" "N" 0x43 0x39 0x4e 0x00 // Step 3: 'D' DW_TAG_structure_typexe "DW_TAG_structure_type" 0x44 0x13 // Step 4: 'A' DW_AT_namexe "DW_AT_name" DW_FORM_string "C" 0x41 0x03 0x08 0x43 0x00 // Step 4: 'A' DW_AT_byte_sizexe "DW_AT_byte_size" DW_FORM_sdata 8 0x41 0x0b 0x0d 0x08 // Step 7: First child ("x") // Step 3: 'D' DW_TAG_memberxe "DW_TAG_member" 0x44 0x0d // Step 4: 'A' DW_AT_namexe "DW_AT_name" DW_FORM_string "x" 0x41 0x03 0x08 0x78 0x00 // Step 4: 'A' DW_AT_data_member_locationxe "DW_AT_data_member_location" DW_FORM_sdata 0 0x41 0x38 0x0d 0x00 // Step 6: 'T' DW_AT_typexe "DW_AT_type" (type #2) 0x54 0x49 // Step 3: 'D' DW_TAG_base_typexe "DW_TAG_base_type" 0x44 0x24 // Step 4: 'A' DW_AT_namexe "DW_AT_name" DW_FORM_string "int" 0x41 0x03 0x08 0x69 0x6e 0x74 0x00 // Step 4: 'A' DW_AT_byte_sizexe "DW_AT_byte_size" DW_FORM_sdata 4 0x41 0x0b 0x0d 0x04 // Step 4: 'A' DW_AT_encoding DW_FORM_sdata DW_ATE_signed 0x41 0x3e 0x0d 0x05 // Step 7: End of DW_TAG_base_typexe "DW_TAG_base_type" "int" 0x00 // Step 7: End of DW_TAG_memberxe "DW_TAG_member" "x" 0x00 // Step 7: Second child ("y") // Step 3: 'D' DW_TAG_memberxe "DW_TAG_member" 0x44 0x0d // Step 4: 'A' DW_AT_namexe "DW_AT_name" DW_FORM_string "y" 0x41 0x03 0x08 0x78 0x00 // Step 4: 'A' DW_AT_data_member_locationxe "DW_AT_data_member_location" DW_FORM_sdata 4 0x41 0x38 0x0d 0x04 // Step 6: 'R' DW_AT_typexe "DW_AT_type" (type #2) 0x52 0x49 0x02 // Step 7: End of DW_TAG_memberxe "DW_TAG_member" "y" 0x00 // Step 7: End of DW_TAG_structure_typexe "DW_TAG_structure_type" "C" 0x00 Figure  SEQ Figure \* ARABIC 92. Type signature computation #1: flattened byte stream Running an MD5 hashxe "MD5 hash" over this byte stream, and taking the low-order 64 bits, yields the final signature: 0xd28081e8 dcf5070a. Next, consider a representation of the DWARF information that describes the type class A as shown in  REF _Ref235514240 \h  \* MERGEFORMAT Figure 93. DW_TAG_type_unitxe "DW_TAG_type_unit" DW_AT_languagexe "DW_AT_language": DW_LANG_C_plus_plusxe "DW_LANG_C_plus_plus" (4) DW_TAG_namespacexe "DW_TAG_namespace" DW_AT_namexe "DW_AT_name": "N" L1: DW_TAG_class_typexe "DW_TAG_class_type" DW_AT_namexe "DW_AT_name": "A" DW_AT_byte_sizexe "DW_AT_byte_size": 20 DW_AT_decl_filexe "DW_AT_decl_file": 1 DW_AT_decl_linexe "DW_AT_decl_line": 10 DW_TAG_memberxe "DW_TAG_member" DW_AT_namexe "DW_AT_name": "v_" DW_AT_decl_filexe "DW_AT_decl_file": 1 DW_AT_decl_linexe "DW_AT_decl_line": 15 DW_AT_typexe "DW_AT_type": reference to L2 DW_AT_data_member_locationxe "DW_AT_data_member_location": 0 DW_AT_accessibilityxe "DW_AT_accessibility": DW_ACCESS_private DW_TAG_memberxe "DW_TAG_member" DW_AT_namexe "DW_AT_name": "next" DW_AT_decl_filexe "DW_AT_decl_file": 1 DW_AT_decl_linexe "DW_AT_decl_line": 16 DW_AT_typexe "DW_AT_type": reference to L3 DW_AT_data_member_locationxe "DW_AT_data_member_location": 4 DW_AT_accessibilityxe "DW_AT_accessibility": DW_ACCESS_private DW_TAG_memberxe "DW_TAG_member" DW_AT_namexe "DW_AT_name": "bp" DW_AT_decl_filexe "DW_AT_decl_file": 1 DW_AT_decl_linexe "DW_AT_decl_line": 17 DW_AT_typexe "DW_AT_type": reference to L4 DW_AT_data_member_locationxe "DW_AT_data_member_location": 8 DW_AT_accessibilityxe "DW_AT_accessibility": DW_ACCESS_private DW_TAG_memberxe "DW_TAG_member" DW_AT_namexe "DW_AT_name": "c" DW_AT_decl_filexe "DW_AT_decl_file": 1 DW_AT_decl_linexe "DW_AT_decl_line": 18 DW_AT_typexe "DW_AT_type": 0xd28081e8 dcf5070a (signature for struct C) DW_AT_data_member_locationxe "DW_AT_data_member_location": 12 DW_AT_accessibilityxe "DW_AT_accessibility": DW_ACCESS_private DW_TAG_subprogramxe "DW_TAG_subprogram" DW_AT_externalxe "DW_AT_external": 1 DW_AT_namexe "DW_AT_name": "A" DW_AT_decl_filexe "DW_AT_decl_file": 1 DW_AT_decl_linexe "DW_AT_decl_line": 12 DW_AT_declaration XE "DW_AT_declaration" : 1  DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" DW_AT_typexe "DW_AT_type": reference to L3 DW_AT_artificialxe "DW_AT_artificial": 1 DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" DW_AT_typexe "DW_AT_type": reference to L2 DW_TAG_subprogramxe "DW_TAG_subprogram" DW_AT_externalxe "DW_AT_external": 1 DW_AT_namexe "DW_AT_name": "v" DW_AT_decl_filexe "DW_AT_decl_file": 1 DW_AT_decl_linexe "DW_AT_decl_line": 13 DW_AT_typexe "DW_AT_type": reference to L2 DW_AT_declaration XE "DW_AT_declaration" : 1 DW_TAG_formal_parameterxe "DW_TAG_formal_parameter" DW_AT_typexe "DW_AT_type": reference to L3 DW_AT_artificialxe "DW_AT_artificial": 1 L2: DW_TAG_base_typexe "DW_TAG_base_type" DW_AT_byte_sizexe "DW_AT_byte_size": 4 DW_AT_encoding: DW_ATE_signed DW_AT_namexe "DW_AT_name": "int" L3: DW_TAG_pointer_typexe "DW_TAG_pointer_type" DW_AT_typexe "DW_AT_type": reference to L1 L4: DW_TAG_pointer_typexe "DW_TAG_pointer_type" DW_AT_typexe "DW_AT_type": reference to L5 DW_TAG_namespacexe "DW_TAG_namespace" DW_AT_namexe "DW_AT_name": "N" L5: DW_TAG_structure_typexe "DW_TAG_structure_type" DW_AT_namexe "DW_AT_name": "B" DW_AT_declarationxe "DW_AT_declaration": 1 Figure  SEQ Figure \* ARABIC 93. Type signature computation #2: DWARF representation In this example, the structure types N::A and N::C have each been placed in separate type unitsxe "type unit". For N::A, the actual definition of the type begins at label L1. The definition involves references to the int base type and to two pointer types. The information for each of these referenced types is also included in this type unit, since base types and pointer types are trivial types that are not worth the overhead of a separate type unit. The last pointer type contains a reference to an incomplete type N::B, which is also included here as a declaration, since the complete type is unknown and its signature is therefore unavailable. There is also a reference to N::C, using DW_FORM_sig8 to refer to the type signaturexe "type signature" for that type. In computing a signature for the type N::A, flatten the type description into a byte stream according to the procedure outlined in Section  REF _Ref230753495 \n \h  \* MERGEFORMAT 7.27. The result is shown in  REF _Ref517025593 \h Figure 1. Figure 94, Type signature example #2: flattened byte stream, begins here. // Step 2: 'C' DW_TAG_namespacexe "DW_TAG_namespace" "N" 0x43 0x39 0x4e 0x00 // Step 3: 'D' DW_TAG_class_typexe "DW_TAG_class_type" 0x44 0x02 // Step 4: 'A' DW_AT_namexe "DW_AT_name" DW_FORM_string "A" 0x41 0x03 0x08 0x41 0x00 // Step 4: 'A' DW_AT_byte_sizexe "DW_AT_byte_size" DW_FORM_sdata 20 0x41 0x0b 0x0d 0x14 // Step 7: First child ("v_") // Step 3: 'D' DW_TAG_memberxe "DW_TAG_member" 0x44 0x0d // Step 4: 'A' DW_AT_namexe "DW_AT_name" DW_FORM_string "v_" 0x41 0x03 0x08 0x76 0x5f 0x00 // Step 4: 'A' DW_AT_accessibilityxe "DW_AT_accessibility" DW_FORM_sdata DW_ACCESS_private 0x41 0x32 0x0d 0x03 // Step 4: 'A' DW_AT_data_member_locationxe "DW_AT_data_member_location" DW_FORM_sdata 0 0x41 0x38 0x0d 0x00 // Step 6: 'T' DW_AT_typexe "DW_AT_type" (type #2) 0x54 0x49 // Step 3: 'D' DW_TAG_base_typexe "DW_TAG_base_type" 0x44 0x24 // Step 4: 'A' DW_AT_namexe "DW_AT_name" DW_FORM_string "int" 0x41 0x03 0x08 0x69 0x6e 0x74 0x00 // Step 4: 'A' DW_AT_byte_sizexe "DW_AT_byte_size" DW_FORM_sdata 4 0x41 0x0b 0x0d 0x04 // Step 4: 'A' DW_AT_encoding DW_FORM_sdata DW_ATE_signed 0x41 0x3e 0x0d 0x05 // Step 7: End of DW_TAG_base_typexe "DW_TAG_base_type" "int" 0x00 // Step 7: End of DW_TAG_memberxe "DW_TAG_member" "v_" 0x00 // Step 7: Second child ("next") // Step 3: 'D' DW_TAG_memberxe "DW_TAG_member" 0x44 0x0d // Step 4: 'A' DW_AT_namexe "DW_AT_name" DW_FORM_string "next" 0x41 0x03 0x08 0x6e 0x65 0x78 0x74 0x00 // Step 4: 'A' DW_AT_accessibilityxe "DW_AT_accessibility" DW_FORM_sdata DW_ACCESS_private 0x41 0x32 0x0d 0x03 // Step 4: 'A' DW_AT_data_member_locationxe "DW_AT_data_member_location" DW_FORM_sdata 4 0x41 0x38 0x0d 0x04 // Step 6: 'T' DW_AT_typexe "DW_AT_type" (type #3) 0x54 0x49 // Step 3: 'D' DW_TAG_pointer_typexe "DW_TAG_pointer_type" 0x44 0x0f // Step 5: 'N' DW_AT_typexe "DW_AT_type" 0x4e 0x49 // Step 5: 'C' DW_AT_namespace "N" 'E' 0x43 0x39 0x4e 0x00 0x45 // Step 5: "A" 0x41 0x00 // Step 7: End of DW_TAG_pointer_typexe "DW_TAG_pointer_type" 0x00 // Step 7: End of DW_TAG_memberxe "DW_TAG_member" "next" 0x00 // Step 7: Third child ("bp") // Step 3: 'D' DW_TAG_memberxe "DW_TAG_member" 0x44 0x0d // Step 4: 'A' DW_AT_namexe "DW_AT_name" DW_FORM_string "bp" 0x41 0x03 0x08 0x62 0x70 0x00 // Step 4: 'A' DW_AT_accessibilityxe "DW_AT_accessibility" DW_FORM_sdata DW_ACCESS_private 0x41 0x32 0x0d 0x03 // Step 4: 'A' DW_AT_data_member_locationxe "DW_AT_data_member_location" DW_FORM_sdata 8 0x41 0x38 0x0d 0x08 // Step 6: 'T' DW_AT_typexe "DW_AT_type" (type #4) 0x54 0x49 // Step 3: 'D' DW_TAG_pointer_typexe "DW_TAG_pointer_type" 0x44 0x0f // Step 5: 'N' DW_AT_typexe "DW_AT_type" 0x4e 0x49 // Step 5: 'C' DW_AT_namespace "N" 'E' 0x43 0x39 0x4e 0x00 0x45 // Step 5: "B" 0x42 0x00 // Step 7: End of DW_TAG_pointer_typexe "DW_TAG_pointer_type" 0x00 // Step 7: End of DW_TAG_memberxe "DW_TAG_member" "next" 0x00 // Step 7: Fourth child ("c") // Step 3: 'D' DW_TAG_memberxe "DW_TAG_member" 0x44 0x0d // Step 4: 'A' DW_AT_namexe "DW_AT_name" DW_FORM_string "c" 0x41 0x03 0x08 0x63 0x00 // Step 4: 'A' DW_AT_accessibilityxe "DW_AT_accessibility" DW_FORM_sdata DW_ACCESS_private 0x41 0x32 0x0d 0x03 // Step 4: 'A' DW_AT_data_member_locationxe "DW_AT_data_member_location" DW_FORM_sdata 12 0x41 0x38 0x0d 0x0c // Step 6: 'T' DW_AT_typexe "DW_AT_type" (type #5) 0x54 0x49 // Step 2: 'C' DW_TAG_namespacexe "DW_TAG_namespace" "N" 0x43 0x39 0x4e 0x00 // Step 3: 'D' DW_TAG_structure_typexe "DW_TAG_structure_type" 0x44 0x13 // Step 4: 'A' DW_AT_namexe "DW_AT_name" DW_FORM_string "C" 0x41 0x03 0x08 0x43 0x00 // Step 4: 'A' DW_AT_byte_sizexe "DW_AT_byte_size" DW_FORM_sdata 8 0x41 0x0b 0x0d 0x08 // Step 7: First child ("x") // Step 3: 'D' DW_TAG_memberxe "DW_TAG_member" 0x44 0x0d // Step 4: 'A' DW_AT_namexe "DW_AT_name" DW_FORM_string "x" 0x41 0x03 0x08 0x78 0x00 // Step 4: 'A' DW_AT_data_member_locationxe "DW_AT_data_member_location" DW_FORM_sdata 0 0x41 0x38 0x0d 0x00 // Step 6: 'R' DW_AT_typexe "DW_AT_type" (type #2) 0x52 0x49 0x02 // Step 7: End of DW_TAG_memberxe "DW_TAG_member" "x" 0x00 // Step 7: Second child ("y") // Step 3: 'D' DW_TAG_memberxe "DW_TAG_member" 0x44 0x0d // Step 4: 'A' DW_AT_namexe "DW_AT_name" DW_FORM_string "y" 0x41 0x03 0x08 0x79 0x00 // Step 4: 'A' DW_AT_data_member_locationxe "DW_AT_data_member_location" DW_FORM_sdata 4 0x41 0x38 0x0d 0x04 // Step 6: 'R' DW_AT_typexe "DW_AT_type" (type #2) 0x52 0x49 0x02 // Step 7: End of DW_TAG_memberxe "DW_TAG_member" "y" 0x00 // Step 7: End of DW_TAG_structure_typexe "DW_TAG_structure_type" "C" 0x00 // Step 7: End of DW_TAG_memberxe "DW_TAG_member" "c" 0x00 // Step 7: Fifth child ("A") // Step 3: 'S' DW_TAG_subprogramxe "DW_TAG_subprogram" "A" 0x53 0x2e 0x41 0x00 // Step 7: Sixth child ("v") // Step 3: 'S' DW_TAG_subprogramxe "DW_TAG_subprogram" "v" 0x53 0x2e 0x76 0x00 // Step 7: End of DW_TAG_structure_typexe "DW_TAG_structure_type" "A" 0x00 Figure  SEQ Figure \* ARABIC 94. Type signature example #2: flattened byte stream Running an MD5 hashxe "MD5 hash" over this byte stream, and taking the low-order 64 bits, yields the final signature: 0xd6d160f5 5589f6e9. A source file that includes this header file may declare a variable of type N::A, and its DWARF information may look that shown in  REF _Ref235514361 \h  \* MERGEFORMAT Figure 95. DW_TAG_compile_unitxe "DW_TAG_compile_unit" ... DW_TAG_subprogramxe "DW_TAG_subprogram" ... DW_TAG_variablexe "DW_TAG_variable" DW_AT_namexe "DW_AT_name": "a" DW_AT_typexe "DW_AT_type": (signature) 0xd6d160f5 5589f6e9 DW_AT_locationxe "DW_AT_location": ... ... Figure  SEQ Figure \* ARABIC 95. Type signature example usage Type Signature Computation Grammar  REF _Ref235514405 \h  \* MERGEFORMAT Figure 96 presents a semi-formal grammarxe "type signature:computation grammar" that may aid in understanding how the bytes of the flattened type description are formed during the type signature computation algorithm of Section  REF _Ref230753495 \r \h  \* MERGEFORMAT 7.27. signature : opt-context debug-entry attributes children opt-context // Step 2 : 'C' tag-code string opt-context : empty debug-entry // Step 3 : 'D' tag-code attributes // Steps 4, 5, 6 : attribute attributes : empty attribute : 'A' at-code form-encoded-value // Normal attributes : 'N' at-code opt-context 'E' string // Reference to type // by name : 'R' at-code back-ref // Back-reference // to visited type : 'T' at-code signature // Recursive type children // Step 7 : child children : '\0' child : 'S' tag-code string : signature tag-code : at-code : form-encoded-value : DW_FORM_sdata value : DW_FORM_flag value : DW_FORM_string string : DW_FORM_block block DW_FORM_string : '\x08' DW_FORM_block : '\x09' DW_FORM_flag : '\x0c' DW_FORM_sdata : '\x0d' value : block : // The ULEB128 gives the length of the block back-ref : string : empty : Figure  SEQ Figure \* ARABIC 96. Type signature computation grammar Summary of Compression Techniques #include compression C++xe "C++" has a much greater problem than Cxe "C" with the number and size of the headers included and the amount of data in each, but even with C there is substantial header file information duplication. A reasonable approach is to put each header file in its own section group, using the naming rules mentioned above. The section groups are marked to ensure duplicate removal. All data instances and code instances (even if they came from the header files above) are put into non-section group sections such as the base object file .debug_infoxe ".debug_info" section. Eliminating function duplication Function templates (C++)xe "C++" result in code for the same template instantiation being compiled into multiple archives or relocatable objects. The linker wants to keep only one of a given entity. The DWARF description, and everything else for this function, should be reduced to just a single copy. For each such code group (function template in this example) the compiler assigns a name for the group which will match all other instantiations of this function but match nothing else. The section groups are marked to ensure duplicate removal, so that the second and subsequent definitions seen by the static linker are simply discarded. References to other .debug_infoxe ".debug_info" sections follow the approach suggested above, but the naming rule might be slightly different in that the should be interpreted as a . Single-function-per-DWARF-compilation-unit Section groups can help make it easy for a linker to completely remove unused functions. Such section groups are not marked for duplicate removal, since the functions are not duplicates of anything. Each function is given a compilation unit and a section group. Each such compilation unit is complete, with its own text, data, and DWARF sections. There will also be a compilation unit that has the file-level declarations and definitions. Other per-function compilation unit DWARF information (.debug_infoxe ".debug_info") points to this common file-level compilation unit using  HYPERLINK \l "DW_TAG_imported_unit" DW_TAG_imported_unitxe "DW_TAG_imported_unit". Section groups can use DW_FORM_ref_addrxe "DW_FORM_ref_addr" and internal labels (section-relative relocations) to refer to the main object file sections, as the section groups here are either deleted as unused or kept. There is no possibility (aside from error) of a group from some other compilation being used in place of one of these groups. Inlining and out-of-line-instances Abstract instancesxe "abstract instance" and concrete-out-of-line instancesxe "concrete out-of-line instance" may be put in distinct compilation units using section groups. This makes possible some useful duplicate DWARF elimination. No special provision for eliminating class duplication resulting from template instantiation is made here, though nothing prevents eliminating such duplicates using section groups. Separate Type Units Each complete declaration of a globally-visible type can be placed in its own separate type sectionxe "type unit", with a group key derived from the type signaturexe "type signature". The linker can then remove all duplicate type declarations based on the key. DWARF Section Version Numbers (informative) Most DWARF sections have a version numberxe "version number" in the section header. This version number is not tied to the DWARF standard revision numbers, but instead is incremented when incompatible changes to that section are made. The DWARF standard that a producer is following is not explicitly encoded in the file. Version numbers in the section headers are represented as two byte unsigned integers.  REF _Ref109548925 \h  \* MERGEFORMAT Figure 97 shows what version numbers are in use for each section. There are sections with no version number encoded in them; they are only accessed via the .debug_info and .debug_types sections and so an incompatible change in those sections' format would be represented by a change in the .debug_info and .debug_types section version number. Section NameSection version number in DWARF Version 2xe "DWARF Version 2" (July 1993)Section version number in DWARF Version 3xe "DWARF Version 3" (December 2005)Section version number in DWARF Version 4 (this document).debug_abbrevxe ".debug_abbrev"---.debug_arangesxe ".debug_aranges"222.debug_framexe ".debug_frame"134.debug_infoxe ".debug_info"234.debug_linexe ".debug_line"234.debug_locxe ".debug_loc"---.debug_macinfoxe ".debug_macinfo"---.debug_pubnamesxe ".debug_pubnames"222.debug_pubtypesxe ".debug_pubtypes"x22.debug_rangesxe ".debug_ranges"x--.debug_strxe ".debug_str"---.debug_typesxe ".debug_types"xx4Figure  SEQ Figure \* ARABIC 97. Section version numbers Notes: "-" means that a version number is not applicable (the section's header does not include a version). "x" means that the section was not defined in that version of the DWARF standard. The version numbers for the .debug_info and .debug_typesxe ".debug_types" sections must be the same. For .debug_frame, section version 2 is unused. Higher numbers are reserved for future use. GNU Free Documentation License Version 1.3, 3 November 2008 Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.  HYPERLINK "http://fsf.org/" http://fsf.org/ Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. The "publisher" means any person or entity that distributes copies of the Document to the public. A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. State on the Title page the name of the publisher of the Modified Version, as the publisher. Preserve all the copyright notices of the Document. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. Include an unaltered copy of this License. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. Preserve any Warranty Disclaimers. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements". 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See  HYPERLINK "http://www.gnu.org/copyleft/" http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document. 11. RELICENSING "Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site. "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. "Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document. An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing. ADDENDUM: How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this: with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. Index  INDEX \e " " \c "2" \z "1033"  ... parameters See unspecified parameters entry .data 264 .debug_abbrev 141, 144, 145, 183, 215, 264, 276, 289 example 219 .debug_aranges 107, 140, 141, 177, 183, 215, 264, 289 .debug_frame 128, 130, 140, 141, 183, 289 example 240 .debug_info 7, 24, 105, 106, 107, 108, 140, 141, 142, 143, 145, 146, 149, 151, 176, 177, 183, 215, 264, 265, 267, 268, 269, 271, 273, 274, 275, 276, 287, 289 example 219 .debug_line 45, 108, 140, 141, 148, 183, 215, 264, 276, 289 .debug_loc 30, 148, 183, 215, 289 .debug_macinfo 45, 123, 125, 149, 183, 215, 289 .debug_pubnames 106, 140, 141, 142, 176, 183, 215, 289 .debug_pubtypes 106, 140, 141, 142, 176, 183, 215, 289 .debug_ranges 38, 149, 183, 215, 289 .debug_str 142, 150, 151, 183, 215, 289 .debug_types 7, 24, 105, 107, 140, 141, 142, 143, 144, 145, 146, 183, 276, 289 .text 264, 271, 274 See code alignment factor See data alignment factor 32-bit DWARF format 140 64-bit DWARF format 140 abbreviations table 143, 145 dynamic forms in 146 example 219 abstract instance 288 example 245, 248, 251 nested 63 abstract instance entry 59 abstract instance root 59 abstract instance tree 59, 61 abstract origin attribute 61, 63 accelerated access 105 by address 107 by name 106 access declaration entry 87 accessibility attribute 32, 87, 88, 92 encoding 170 activation, call frame 126 Ada 1, 9, 32, 41, 44, 79, 80, 81, 103, 222, 227, 228, 229 address dereference operator 19, 20 implicit push for member pointer 101 implicit push of base 20 size of an See size of an address address class 15, 147 address class attribute 34, 55, 81 encoding 173 address range in location list 31 in range list 39 address register in call frame information 127 in line number machine 109 address selection See base address selection address size See size of an address address space flat 34 multiple 19, 20 segmented 34, 107, 144, 177 address, uplevel See static link attribute address_size 107, 129, 144, 177, 178 alias declaration See imported declaration entry allocated attribute 102 anonymous union 69, 88 ARM instruction set architecture 108 array declaration of type 83 descriptor for 221 element ordering 83 element type 83 array type entry 83 examples 221 artificial attribute 34 associated attribute 102 attribute duplication 7 attribute ordering 7 attribute value classes 7 attributes 7 list of 9 base address selection entry in location list 30, 31, 168 in range list 38, 39, 182 base type entry 75 base types attribute 47 basic_block 110, 111, 116, 119 beginning of a data member 88 beginning of an object 88, 89 big-endian encoding See endianity attribute binary scale attribute 79 bit fields 89, 230 bit offset attribute (V3) 76, 91 bit size attrbute 75 bit size attribute 89, 98, 99, 101 bit size attribute (V3) 76, 91 bit stride attribute 83, 97, 100 block class 15, 147 block entry See try block entry, See lexical block entry builtin type See base type entry byte size attrbute 75 byte size attribute 89, 96, 98, 99, 101 byte size attribute (V3) 91 byte stride attribute 97, 100 C 1, 4, 35, 44, 47, 54, 55, 65, 69, 71, 75, 80, 81, 82, 84, 85, 89, 96, 97, 99, 123, 221, 222, 275, 287 C++ 1, 4, 32, 33, 34, 37, 41, 44, 49, 50, 52, 57, 59, 61, 62, 64, 65, 66, 69, 70, 72, 80, 81, 82, 84, 85, 86, 87, 88, 89, 92, 93, 96, 97, 99, 100, 105, 106, 107, 123, 251, 256, 257, 260, 263, 266, 269, 271, 275, 277, 287 call column attribute 60 call file attribute 60 call frame information encoding 180 examples 239 call line attribute 60 calling convention attribute 54 encoding 174 case sensitivity 46 catch block entry 66 char16_t 255 char32_t 255 CIE See common information entry CIE_id 129, 141, 242 CIE_pointer 129, 130, 141 class template instantiation (entry) 93 class type entry 84 as class template instantiation 93 classes of attribute value 7, See also attribute encodings COBOL 1, 4, 99 code_alignment_factor 130, 132 column position of declaration 36 COMDAT See section group common (block) reference attribute 56 common block See Fortran, common block common block entry 73 common information entry 129 compilation directory attribute 46 compilation unit 43 for template instantiation 94 header 143 normal 43 partial 43 type 48 composite location description 28 compression See DWARF compression concrete inlined instance example 245, 248, 251 nested 63 concrete inlined instance entry 61 concrete inlined instance root 61 concrete inlined instance tree 61 concrete out-of-line instance 62, 288 example 248 of inlined subprogram 63 condition entry 95 condition, COBOL level-88 95 const qualified type 81 constant class 15, 147 constant entry 69 constant expression attribute 60, 72 constant type entry 81 constant value attribute 71, 93, 96 constexpr 59, 61, 72 containing type attribute 100 contiguous address range 38 count attribute 81, 99 default 99 D 99 data bit offset attribute 75, 89 data location attribute 102 data member See member entry (data) data member location attribute 86, 88 debug_abbrev_offset 141, 144, 215 debug_info_length 141 debug_info_offset 141 debugging information entry 7 global name for 266 ownership relation 16 decimal scale attribute 78, 79 decimal sign attribute 78 DECL 191 declaration attribute 35, 49, 69, 85 declaration column attribute 36 declaration coordinates 36, 191, See also DW_AT_decl_file, DW_AT_decl_line, DW_AT_decl_column in concrete instance 61 declaration file attribute 36 declaration line attribute 36 default value attribute 70 default_is_stmt 111, 113 derived type (C++) See inheritance entry description attribute 41 descriptor, array 221 DIE See debugging information entry digit count attribute 78, 79, discontiguous address ranges See non-contiguous address ranges discriminant (entry) 94 discriminant attribute 94 discriminant list attribute 94 encoding 176 discriminant value attribute 94 discriminator 111, 116, 119, 122 duplicate elimination See DWARF duplicate elimination DW_ACCESS_private 32, 170 DW_ACCESS_protected 32, 170 DW_ACCESS_public 32, 170 DW_ADDR_far16 35 DW_ADDR_far32 35 DW_ADDR_huge16 35 DW_ADDR_near16 35 DW_ADDR_near32 35 DW_ADDR_none 34, 35, 173 DW_AT_abstract_origin 9, 61, 62, 63, 156, 191, 192, 193, 196, 197, 198, 199, 200, 202, 203, 204, 205, 206, 207, 208, 209, 210, 247, 250, 253, 254 DW_AT_accessibility 9, 32, 87, 88, 92, 156, 170, 185, 191, 193, 195, 196, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210, 211, 280, 282, 283 DW_AT_address_class 9, 34, 55, 81, 156, 185, 195, 202, 203, 205, 206, 211 DW_AT_allocated 9, 40, 84, 102, 103, 158, 185, 191, 192, 193, 194, 196, 197, 201, 202, 203, 204, 206, 207, 208, 209, 211, 224 DW_AT_artificial 7, 9, 34, 64, 92, 156, 185, 197, 205, 209, 236, 281 DW_AT_associated 9, 40, 84, 102, 158, 185, 191, 192, 193, 194, 196, 197, 201, 202, 203, 204, 206, 207, 208, 209, 211, 223 DW_AT_base_types 9, 47, 156, 194, 201 DW_AT_binary_scale 9, 79, 158, 185, 192 DW_AT_bit_offset 9, 40, 90, 91, 155, 185, 192, 200 DW_AT_bit_offset (V3) 76, 91 DW_AT_bit_size 9, 40, 41, 75, 83, 85, 89, 91, 98, 99, 101, 155, 185, 191, 192, 193, 196, 197, 200, 203, 204, 206, 209, 230, 231 DW_AT_bit_size (V3) 76, 91 DW_AT_bit_stride 9, 40, 41, 83, 97, 100, 156, 185, 191, 196, 206, 231 DW_AT_byte_size 9, 40, 41, 75, 76, 83, 85, 89, 90, 91, 96, 98, 99, 101, 155, 185, 191, 192, 193, 196, 197, 200, 203, 204, 206, 209, 220, 224, 254, 255, 275, 277, 278, 279, 280, 281, 282, 284 DW_AT_byte_size (V3) 76, 91 DW_AT_byte_stride 9, 40, 41, 83, 97, 100, 158, 185, 196, 206, 226 DW_AT_call_column 9, 60, 158, 198 DW_AT_call_file 9, 60, 158, 198 DW_AT_call_line 10, 60, 158, 198 DW_AT_calling_convention 10, 54, 156, 174, 205 DW_AT_common_reference 10, 56, 155, 193, 274, 275 DW_AT_comp_dir 10, 46, 115, 122, 155, 194, 201, 220 DW_AT_const_expr 10, 60, 61, 72, 159, 185, 198, 210, 254 DW_AT_const_value 10, 60, 61, 71, 93, 96, 103, 155, 185, 195, 196, 207, 210, 247, 254, 256, 273 DW_AT_containing_type 10, 100, 156, 185, 202 DW_AT_count 10, 40, 81, 99, 156, 185, 203, 206 DW_AT_data_bit_offset 10, 75, 76, 88, 89, 90, 91, 159, 185, 192, 200, 230, 231 DW_AT_data_location 10, 84, 102, 158, 185, 191, 192, 193, 194, 196, 197, 201, 202, 203, 204, 206, 207, 208, 209, 211, 222, 223, 224, 225, 226, 228 DW_AT_data_member_location 10, 20, 86, 88, 89, 91, 156, 185, 198, 200, 224, 229, 277, 278, 279, 280, 282, 283, 284 DW_AT_data_member_location (V3) 91 DW_AT_decimal_scale 10, 78, 79, 158, 185, 192 DW_AT_decimal_sign 10, 78, 158, 169, 185, 192 DW_AT_decl_column 10, 36, 156, 188, 191, See also declaration coordinates DW_AT_decl_file 10, 36, 157, 188, 191, 277, 278, 280, 281, See also declaration coordinates DW_AT_decl_line 10, 36, 157, 188, 191, 277, 278, 280, 281, See also declaration coordinates DW_AT_declaration 10, 35, 36, 49, 69, 85, 157, 187, 188, 191, 193, 195, 196, 200, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 236, 281 DW_AT_default_value 10, 70, 156, 185, 197 DW_AT_description 7, 10, 41, 158, 188, 191, 192, 193, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210 DW_AT_digit_count 11, 78, 79, 158, 185, 192 DW_AT_discr 11, 94, 95, 155, 185, 210 DW_AT_discr_list 11, 94, 95, 157, 176, 185, 210 DW_AT_discr_value 11, 94, 95, 155, 185, 210 DW_AT_elemental 11, 54, 159, 205 DW_AT_encoding 11, 75, 157, 168, 186, 192, 220, 255, 275 DW_AT_endianity 11, 72, 75, 159, 170, 186, 192, 195, 197, 210 DW_AT_entry_pc 11, 34, 38, 40, 49, 55, 60, 158, 198, 200, 205 DW_AT_enum_class 11, 96, 159, 186, 196, 256 DW_AT_explicit 11, 92, 159, 186, 205 DW_AT_extension 11, 49, 158, 201, 234 DW_AT_external 11, 53, 69, 70, 157, 195, 205, 210, 281 DW_AT_frame_base 11, 18, 29, 56, 57, 157, 195, 205, 250, 252, 253 DW_AT_friend 11, 87, 157, 187, 197 DW_AT_hi_user 159 DW_AT_high_pc 11, 34, 37, 38, 44, 49, 55, 60, 65, 66, 155, 192, 194, 198, 199, 200, 201, 205, 208, 211, 220, 233, 234, 247, 250, 252, 253 DW_AT_identifier_case 11, 46, 157, 174, 194, 201, 273 DW_AT_import 11, 47, 50, 51, 155, 198, 234, 268, 274, 275 DW_AT_inline 12, 58, 59, 156, 175, 205, 246, 248, 249, 252, 254 DW_AT_is_optional 12, 70, 156, 186, 197 DW_AT_language 12, 44, 48, 83, 155, 171, 194, 201, 208, 220, 270, 273, 277, 280 DW_AT_linkage_name 12, 37, 41, 53, 72, 73, 159, 193, 195, 205, 210 DW_AT_lo_user 159 DW_AT_location 12, 24, 37, 60, 66, 69, 73, 155, 186, 193, 195, 197, 210, 211, 225, 229, 231, 233, 234, 236, 247, 250, 252, 253, 273, 285 DW_AT_low_pc 12, 34, 37, 38, 40, 44, 49, 55, 59, 60, 65, 66, 155, 192, 194, 195, 198, 199, 200, 201, 205, 208, 211, 220, 233, 234, 247, 250, 252, 253 DW_AT_lower_bound 12, 40, 99, 156, 171, 186, 206, 223, 224, 228, 229, 231, 273 DW_AT_macro_info 12, 45, 157, 194, 201 DW_AT_main_subprogram 3, 12, 47, 53, 159, 194, 201, 205 DW_AT_mutable 12, 88, 158, 186, 200 DW_AT_name 12, 36, 37, 41, 44, 46, 49, 51, 53, 58, 62, 65, 66, 69, 73, 75, 80, 81, 82, 83, 84, 86, 87, 88, 93, 95, 96, 97, 98, 99, 100, 101, 103, 106, 107, 115, 122, 155, 184, 185, 187, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 220, 224, 225, 228, 229, 230, 231, 233, 234, 235, 236, 246, 248, 249, 252, 254, 255, 256, 257, 258, 260, 270, 271, 273, 274, 275, 277, 278, 279, 280, 281, 282, 283, 284, 285 DW_AT_namelist_item 12, 73, 157, 201 DW_AT_object_pointer 12, 92, 159, 189, 205, 236 DW_AT_ordering 12, 83, 155, 175, 186, 191 DW_AT_picture_string 12, 78, 158, 186, 192 DW_AT_priority 12, 49, 157, 200 DW_AT_producer 12, 46, 156, 194, 201, 220 DW_AT_prototyped 12, 54, 97, 156, 186, 205, 206 DW_AT_pure 12, 55, 159, 205 DW_AT_ranges 12, 34, 37, 38, 44, 49, 55, 60, 65, 66, 158, 192, 194, 198, 199, 200, 201, 205, 208, 211 DW_AT_recursive 13, 54, 55, 159, 205 DW_AT_return_addr 13, 56, 60, 156, 195, 198, 205 DW_AT_segment 13, 34, 55, 60, 70, 157, 186, 192, 193, 194, 195, 197, 198, 199, 200, 201, 205, 208, 210, 211 DW_AT_sibling 13, 16, 36, 155, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211 DW_AT_signature 13, 85, 159, 193, 196, 204, 207, 209 DW_AT_small 13, 79, 158, 186, 192 DW_AT_specification 13, 36, 50, 59, 70, 85, 92, 93, 157, 187, 191, 193, 196, 200, 204, 205, 209, 210, 234 DW_AT_start_scope 13, 37, 38, 60, 71, 75, 156, 191, 193, 195, 196, 197, 198, 199, 201, 203, 204, 205, 206, 207, 208, 209, 210 DW_AT_static_link 13, 56, 57, 157, 195, 205, 247, 250, 252 DW_AT_stmt_list 13, 45, 155, 194, 201, 220 DW_AT_string_length 13, 98, 155, 186, 204 DW_AT_threads_scaled 13, 99, 159, 186, 206 DW_AT_trampoline 13, 64, 158, 198, 205 DW_AT_type 13, 32, 55, 57, 58, 66, 70, 72, 81, 82, 83, 86, 88, 93, 94, 95, 96, 97, 98, 99, 100, 101, 103, 157, 187, 191, 194, 195, 196, 197, 198, 200, 201, 202, 203, 205, 206, 207, 208, 210, 211, 220, 223, 224, 225, 228, 229, 230, 231, 233, 234, 235, 236, 246, 249, 252, 254, 255, 256, 257, 258, 260, 270, 271, 273, 274, 277, 278, 279, 280, 281, 282, 283, 284, 285 DW_AT_upper_bound 13, 40, 99, 156, 186, 206, 223, 224, 228, 229, 231, 254, 273 DW_AT_use_location 13, 100, 101, 157, 186, 202 DW_AT_use_UTF8 13, 47, 150, 158, 186, 194, 201 DW_AT_variable_parameter 13, 70, 157, 186, 197 DW_AT_virtuality 13, 33, 87, 92, 157, 171, 186, 198, 205 DW_AT_visibility 14, 33, 155, 171, 186, 191, 193, 195, 196, 197, 200, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211 DW_AT_vtable_elem_location 14, 92, 157, 186, 205 DW_ATE_address 77, 168 DW_ATE_boolean 77, 168 DW_ATE_complex_float 77, 168 DW_ATE_decimal_float 77, 169 DW_ATE_edited 77, 78, 168 DW_ATE_float 77, 168 DW_ATE_hi_user 169 DW_ATE_imaginary_float 77, 168 DW_ATE_lo_user 169 DW_ATE_numeric_string 77, 78, 79, 168 DW_ATE_packed_decimal 77, 78, 79, 168 DW_ATE_signed 75, 77, 168, 275 DW_ATE_signed_char 77, 168 DW_ATE_signed_fixed 77, 78, 169 DW_ATE_unsigned 77, 168, 220 DW_ATE_unsigned_char 77, 168, 220 DW_ATE_unsigned_fixed 77, 78, 169 DW_ATE_UTF 77, 78, 169, 255 DW_CC_hi_user 174 DW_CC_lo_user 174 DW_CC_nocall 54, 174 DW_CC_normal 54, 174 DW_CC_program 54, 174 DW_CFA_advance_loc 132, 136, 137, 181, 243 DW_CFA_advance_loc1 132, 181 DW_CFA_advance_loc2 132, 181 DW_CFA_advance_loc4 132, 181 DW_CFA_def_cfa 131, 132, 133, 181, 242, 243 DW_CFA_def_cfa_expression 131, 133, 181 DW_CFA_def_cfa_offset 133, 181, 243 DW_CFA_def_cfa_offset_sf 133, 182 DW_CFA_def_cfa_register 133, 181, 243 DW_CFA_def_cfa_sf 133, 182 DW_CFA_expression 131, 135, 181 DW_CFA_hi_user 182 DW_CFA_lo_user 182 DW_CFA_nop 130, 131, 136, 181, 242, 243 DW_CFA_offset 134, 181, 243 DW_CFA_offset_extended 134, 181, 182 DW_CFA_offset_extended_sf 134, 182 DW_CFA_register 135, 181, 242 DW_CFA_remember_state 136, 181 DW_CFA_restore 136, 181, 243 DW_CFA_restore_extended 136, 181 DW_CFA_restore_state 136, 181 DW_CFA_same_value 134, 181, 242 DW_CFA_set_loc 132, 136, 137, 181 DW_CFA_undefined 134, 137, 181, 242 DW_CFA_val_expression 131, 135, 182 DW_CFA_val_offset 134, 135, 182 DW_CFA_val_offset_sf 135, 182 DW_CHILDREN_no 146, 154, 220 DW_CHILDREN_yes 146, 154, 220 DW_DS_leading_overpunch 80, 169 DW_DS_leading_separate 80, 169 DW_DS_trailing_overpunch 80, 169 DW_DS_trailing_separate 80, 169 DW_DS_unsigned 80, 169 DW_DSC_label 95, 176 DW_DSC_range 95, 176 DW_END_big 72, 170 DW_END_default 72, 170 DW_END_hi_user 170 DW_END_little 72, 170 DW_END_lo_user 170 DW_FORM_addr 147, 160, 168, 182, 220 DW_FORM_block 135, 147, 160, 187 DW_FORM_block1 147, 160 DW_FORM_block2 147, 160 DW_FORM_block4 147, 160 DW_FORM_data1 147, 160, 220 DW_FORM_data2 147, 160 DW_FORM_data4 3, 146, 147, 148, 160, 215 DW_FORM_data8 3, 146, 147, 148, 160 DW_FORM_exprloc 133, 148, 161 DW_FORM_flag 148, 160, 187 DW_FORM_flag_present 148, 161 DW_FORM_indirect 146, 161, 220 DW_FORM_ref_addr 24, 142, 149, 150, 160, 265, 267, 268, 288 DW_FORM_ref_sig8 145, 161 DW_FORM_ref_udata 149, 161, 267 DW_FORM_ref1 149, 160, 267 DW_FORM_ref2 24, 149, 160, 267 DW_FORM_ref4 24, 149, 160, 220, 267 DW_FORM_ref8 149, 160, 267 DW_FORM_sdata 147, 160, 187 DW_FORM_sec_offset 3, 142, 146, 148, 149, 161, 220 DW_FORM_string 150, 160, 187, 220 DW_FORM_strp 142, 150, 160, 215 DW_FORM_udata 147, 160 DW_ID_case_insensitive 46, 174, 273 DW_ID_case_sensitive 46, 174 DW_ID_down_case 46, 174 DW_ID_up_case 46, 174 DW_INL_declared_inlined 59, 175, 246, 249, 252 DW_INL_declared_not_inlined 59, 175 DW_INL_inlined 59, 175 DW_INL_not_inlined 59, 175 DW_LANG_Ada83 44, 172 DW_LANG_Ada95 44, 172 DW_LANG_C 44, 172, 220 DW_LANG_C_plus_plus 44, 172, 270, 277, 280 DW_LANG_C89 44, 172, 220 DW_LANG_C99 44, 172 DW_LANG_Cobol74 44, 172 DW_LANG_Cobol85 44, 172 DW_LANG_Fortran77 44, 172 DW_LANG_Fortran90 44, 172, 273 DW_LANG_Fortran95 45, 172 DW_LANG_hi_user 173 DW_LANG_Java 45, 172 DW_LANG_lo_user 173 DW_LANG_Modula2 45, 172 DW_LANG_ObjC 45, 173 DW_LANG_ObjC_plus_plus 45, 173 DW_LANG_Pascal83 45, 172 DW_LANG_PLI 45, 172 DW_LANG_Python 45, 173 DW_LANG_UPC 173 DW_LNE_define_file 115, 122, 179 DW_LNE_end_sequence 121, 179, 238 DW_LNE_hi_user 179 DW_LNE_lo_user 179 DW_LNE_set_address 121, 179 DW_LNE_set_discriminator 122, 179 DW_LNS_advance_line 119, 178 DW_LNS_advance_pc 119, 120, 178, 238 DW_LNS_const_add_pc 120, 178 DW_LNS_copy 119, 178 DW_LNS_fixed_advance_pc 111, 120, 178, 238 DW_LNS_hi_user omission 139 DW_LNS_lo_user omission 139 DW_LNS_negate_stmt 113, 119, 178 DW_LNS_set_basic_block 119, 178 DW_LNS_set_column 119, 178 DW_LNS_set_epilogue_begin 121, 179 DW_LNS_set_file 119, 178 DW_LNS_set_isa 121, 179 DW_LNS_set_prologue_end 120, 178 DW_MACINFO_define 123, 124, 125, 180 DW_MACINFO_end_file 123, 124, 180 DW_MACINFO_start_file 123, 124, 125, 180 DW_MACINFO_undef 123, 125, 180 DW_MACINFO_vendor_ext 123, 124, 180 DW_OP_abs 21, 164 DW_OP_addr 17, 29, 163 DW_OP_and 21, 164, 223, 224 DW_OP_bit_piece 29, 167 DW_OP_bra 23, 165 DW_OP_breg0 18, 56, 166 DW_OP_breg1 18, 30, 166 DW_OP_breg11 29 DW_OP_breg2 30 DW_OP_breg3 30 DW_OP_breg31 18, 166 DW_OP_breg4 30 DW_OP_bregx 18, 27, 29, 166 DW_OP_call_frame_cfa 21, 131, 167 DW_OP_call_ref 24, 37, 131, 167, 188, 215 DW_OP_call2 24, 37, 131, 167 DW_OP_call4 24, 37, 131, 167 DW_OP_const1s 18, 164 DW_OP_const1u 17, 164 DW_OP_const2s 18, 164 DW_OP_const2u 17, 164 DW_OP_const4s 18, 164 DW_OP_const4u 17, 164 DW_OP_const8s 18, 164 DW_OP_const8u 17, 164 DW_OP_consts 18, 164 DW_OP_constu 18, 164 DW_OP_deref 19, 29, 163, 223, 224 DW_OP_deref_size 19, 166 DW_OP_div 21, 164 DW_OP_drop 18, 25, 164 DW_OP_dup 18, 25, 164 DW_OP_eq 23, 165 DW_OP_fbreg 18, 29, 30, 166 DW_OP_form_tls_address 20, 167 DW_OP_ge 23, 165 DW_OP_gt 23, 165 DW_OP_hi_user 167 DW_OP_implicit_value 28, 167 DW_OP_le 23, 165 DW_OP_lit0 17, 166 DW_OP_lit1 17, 30, 166, 223 DW_OP_lit2 17, 224 DW_OP_lit31 17, 166 DW_OP_litn 17, 22, 223, 224, 229 DW_OP_lo_user 167 DW_OP_lt 23, 165 DW_OP_minus 21, 165 DW_OP_mod 21, 165 DW_OP_mul 21, 165 DW_OP_ne 23, 165 DW_OP_neg 22, 165 DW_OP_nop 24, 166 DW_OP_not 22, 165 DW_OP_or 22, 165 DW_OP_over 19, 25, 164 DW_OP_pick 19, 25, 164 DW_OP_piece 28, 30, 166 DW_OP_plus 22, 30, 165, 223, 224, 229 DW_OP_plus_uconst 22, 30, 165 DW_OP_push_object_address 20, 88, 102, 131, 167, 223, 224, 225, 226 DW_OP_reg0 27, 30, 56, 166 DW_OP_reg1 27, 166 DW_OP_reg10 30 DW_OP_reg3 29, 30 DW_OP_reg31 27, 166 DW_OP_regx 27, 29, 166 DW_OP_rot 19, 25, 164 DW_OP_shl 22, 165 DW_OP_shr 22, 165 DW_OP_shra 22, 165 DW_OP_skip 23, 165 DW_OP_stack_value 28, 30, 167 DW_OP_swap 19, 25, 164 DW_OP_xderef 19, 164 DW_OP_xderef_size 20, 166 DW_OP_xor 22, 165 DW_ORD_col_major 83, 175 DW_ORD_row_major 83, 175 DW_TAG_access_declaration 8, 87, 152, 191 DW_TAG_array_type 8, 83, 151, 191, 223, 224, 228, 229, 231, 254, 273 DW_TAG_base_type 8, 75, 82, 152, 192, 220, 230, 233, 235, 255, 270, 275, 278, 279, 281, 282 DW_TAG_catch_block 8, 66, 152, 192 DW_TAG_class_type 8, 84, 93, 151, 193, 235, 280, 282 DW_TAG_common_block 8, 41, 73, 152, 193, 273 DW_TAG_common_inclusion 8, 56, 152, 193, 274, 275 DW_TAG_compile_unit 8, 43, 143, 151, 194, 220, 267, 268, 270, 271, 274, 275, 285 DW_TAG_condition 8, 95, 153, 194 DW_TAG_const_type 8, 81, 82, 152, 194, 235, 254 DW_TAG_constant 8, 41, 69, 79, 95, 152, 195, 273 DW_TAG_dwarf_procedure 8, 37, 153, 195 DW_TAG_entry_point 8, 41, 53, 151, 195 DW_TAG_enumeration_type 8, 84, 96, 151, 196, 256 DW_TAG_enumerator 8, 96, 152, 196, 256 DW_TAG_file_type 8, 101, 152, 197 DW_TAG_formal_parameter 8, 67, 69, 95, 97, 151, 197, 236, 246, 247, 249, 250, 252, 253, 254, 258, 281 DW_TAG_friend 8, 87, 152, 187, 197 DW_TAG_hi_user 139, 154 DW_TAG_imported_declaration 8, 50, 151, 198, 234 DW_TAG_imported_module 8, 51, 153, 198, 234 DW_TAG_imported_unit 8, 47, 153, 198, 268, 274, 275, 287 DW_TAG_inheritance 8, 86, 152, 198 DW_TAG_inlined_subroutine 8, 53, 60, 61, 63, 64, 152, 198, 246, 247, 250, 253, 254 DW_TAG_interface_type 8, 86, 153, 199 DW_TAG_label 8, 65, 151, 199 DW_TAG_lexical_block 8, 65, 151, 199 DW_TAG_lo_user 139, 154 DW_TAG_member 8, 70, 88, 95, 151, 200, 224, 228, 229, 230, 231, 257, 258, 260, 270, 277, 278, 279, 280, 282, 283, 284 DW_TAG_module 8, 49, 152, 200 DW_TAG_namelist 8, 73, 153, 200 DW_TAG_namelist_item 8, 73, 153, 201 DW_TAG_namespace 8, 49, 153, 201, 233, 234, 277, 279, 280, 281, 282, 283 DW_TAG_packed_type 8, 81, 153, 201 DW_TAG_partial_unit 8, 43, 143, 153, 201, 268, 271, 273, 275 DW_TAG_pointer_type 8, 81, 82, 151, 187, 202, 220, 235, 281, 283 DW_TAG_ptr_to_member_type 8, 100, 152, 187, 202 DW_TAG_reference_type 8, 81, 151, 187, 202, 271 DW_TAG_restrict_type 8, 81, 82, 153, 202 DW_TAG_rvalue_reference_type 8, 81, 154, 187, 203 DW_TAG_set_type 8, 98, 152, 203 DW_TAG_shared_type 8, 81, 154, 203 DW_TAG_string_type 8, 98, 151, 204 DW_TAG_structure_type 8, 84, 93, 151, 204, 224, 229, 230, 231, 257, 258, 260, 261, 270, 277, 279, 281, 284 DW_TAG_subprogram 8, 41, 53, 58, 59, 61, 63, 64, 92, 153, 187, 205, 233, 234, 236, 246, 247, 249, 250, 252, 253, 254, 258, 271, 274, 275, 281, 284, 285 DW_TAG_subrange_type 8, 84, 95, 99, 152, 171, 206, 223, 224, 228, 229, 231, 254, 273 DW_TAG_subroutine_type 8, 97, 151, 206 DW_TAG_template_alias 8, 103, 154, 207, 260, 261 DW_TAG_template_type_parameter 8, 58, 93, 103, 153, 207, 257, 258, 260, 261 DW_TAG_template_value_parameter 8, 93, 103, 153, 207 DW_TAG_thrown_type 8, 57, 153, 207 DW_TAG_try_block 8, 66, 153, 208 DW_TAG_type_unit 8, 48, 154, 208, 277, 280 DW_TAG_typedef 8, 82, 151, 208, 220 DW_TAG_union_type 8, 84, 93, 152, 209 DW_TAG_unspecified_parameters 8, 56, 67, 97, 152, 209 DW_TAG_unspecified_type 8, 80, 153, 209, 235 DW_TAG_variable 8, 41, 61, 69, 82, 95, 153, 210, 225, 228, 229, 231, 233, 234, 246, 247, 249, 250, 252, 253, 254, 255, 256, 257, 258, 260, 261, 271, 273, 274, 285 DW_TAG_variant 8, 94, 152, 153, 210 DW_TAG_variant_part 8, 94, 153, 210 DW_TAG_volatile_type 8, 81, 82, 153, 211 DW_TAG_with_stmt 8, 66, 152, 211 DW_VIRTUALITY_none 33, 171 DW_VIRTUALITY_pure_virtual 33, 171 DW_VIRTUALITY_virtual 33, 171 DW_VIS_exported 33, 171 DW_VIS_local 33, 171 DW_VIS_qualified 33, 171 DWARF compression 263 DWARF duplicate elimination 263 C example 275 C++ example 269 examples 269 Fortran example 272 DWARF expression 17, See also location description arithmetic operations 21 control flow operations 23 examples 25 literal encodings 17 logical operations 21 operator encodings 163 special operations 24 stack operations 17 DWARF procedure 37 DWARF procedure entry 37 DWARF section names, list of 183 DWARF Version 2 4, 5, 114, 140, 289 DWARF Version 3 1, 2, 3, 4, 38, 55, 76, 91, 114, 117, 289 elemental attribute 54 empty location description 28 encoding attribute 75 encoding 168 end of list entry in location list 31, 168 in range list 38, 182 end_sequence 110, 111, 121 endianity attribute 72, 75 entity 7 entry PC attribute 34 and abstract instance 60 for inlined subprogram 60 for module initialization 49 for subroutine 55 entry point entry 53 enum class See type-safe enumeration enumeration literal See enumerator entry enumeration type entry 96 as array dimension 84, 97 enumerator entry 96 epilogue 116, 121, 126, 127, 136, 179, 240 epilogue_begin 110, 111, 121 epilogue_end 119 error value 140 exception, thrown See thrown type entry explicit attribute 92 exprloc class 15, 26, 148 extended type (Java) See inheritance entry extensibility See vendor extensibility extension attribute 49 external attribute 53, 69 FDE See frame description entry file containing declaration 36 file type entry 101 file_names 115 flag class 15, 148 formal parameter 55 formal parameter entry 69, 97 in catch block 67 with default value 70 formal type parameter See template type parameter entry Fortran 1, 4, 44, 47, 52, 53, 54, 73, 98, 99, 102, 221, 268, 272 common block 56, 73 main program 54 module (Fortran 90) 49 use statement 51, 52 frame base attribute 56 frame description entry 130 friend attribute 87 friend entry 87 function entry See subroutine entry fundamental type See base type entry global namespace See namespace (C++), global header_length 141 hidden indirection See data location attribute high PC attribute 34, 37, 38, 44, 49, 55, 60, 65, 66 and abstract instance 60 identifier case attribute 46 encoding 174 identifier names 36 implementing type (Java) See inheritance entry implicit location description 27 import attribute 47, 50, 51 imported declaration entry 50 imported module entry 51 imported unit entry 43, 47 include_directories 114, 115, 122 incomplete class/structure/union 85 incomplete declaration 35 incomplete type 85 inheritance entry 86 initial length 143, 144 initial length field 106, 107, 112, 129, 130, 176, 177 encoding 140 inline attribute 58, 59 encoding 175 inlined subprogram call examples 244 inlined subprogram entry 53, 60 in concrete instance 61 interface type entry 86 is optional attribute 70 is_stmt 110, 111, 113, 119 isa 17, 111, 121 Java 4, 45, 84, 86, 99 label entry 65 language attribute 44, 83 language name encoding 171 LEB128 examples 162 signed, decoding of 218 signed, encoding as 161, 217 unsigned, decoding of 218 unsigned, encoding as 162, 217 level-88 condition, COBOL 95 lexical block entry 65 line number information See also statement list attribute line number of declaration 36 line number opcodes extended opcode encoding 179 standard opcode encoding 178 line_base 113, 116, 117, 118, 237 line_range 113, 116, 117, 118, 237 lineptr 151 lineptr class 15, 148 linkage name attribute 41 Little Endian Base 128 See LEB128 little-endian encoding See endian attribute location attribute 37, 66, 69, 73 and abstract instance 60 location description 30 location description 26, See also DWARF expression composite 28 empty 28 implicit 27 memory 27 simple 26 single 26 location description use in location list 31 location description 88 location list 26, 30, 56, 148, 167, 215 base address selection entry 31 end of list entry 31 entry 30 loclistptr 151 loclistptr class 15, 26, 148 lookup by address 107 by name 106 low PC attribute 34, 37, 38, 44, 49, 55, 60, 65, 66 and abstract instance 59 lower bound attribute 99 default 99, 171 macinfo types 123 encoding 180 macptr 151 macptr class 15, 149 macro formal parameter list 124 macro information 123 macro information attribute 45 main subprogram attribute 47, 53 mangled names 41 maximum_operations_per_instruction 112, 113, 117, 118 MD5 hash 184, 188, 189, 280, 284 member entry (data) 88 as discriminant 94 member function entry 92 memory location description 27 minimum_instruction_length 112, 113, 117, 118, 120, 237 MIPS instruction set architecture 108 Modula-2 33, 45, 49, 66, 99 definition module 49 module entry 49 mutable attribute 88 name attribute 36, 41, 44, 46, 49, 51, 53, 58, 62, 65, 66, 69, 73, 75, 80, 81, 82, 83, 84, 86, 87, 88, 93, 96, 97, 98, 99, 100, 101, 106 namelist entry 73 namelist item attribute 73 namelist item entry 73 names identifier 36 mangled 41 namespace (C++) 49 alias 51 example 232 global 50 std 50 unnamed 50 using declaration 51 using directive 52 namespace declaration entry 49 namespace extension entry 49 nested abstract instance 63 nested concrete inline instance 63 non-contiguous address ranges 38 non-defining declaration 35 normal compilation unit 43 object pointer attribute 92 Objective C 45, 92, 99 Objective C++ 45 Objective C++, 99 op_index 110, 111, 112, 113, 116, 117, 119, 120, 121 opcode_base 114, 116, 117, 237 operation advance 117, 119 operation pointer 110, 113, 116, 117 optional parameter 70 ordering attribute 83 encoding 175 out-of-line instance See concrete out-of-line instance packed type entry 81 parameter See macro formal parameter list, See this parameter, See variable parameter attribute, See optional parameter attribute, See unspecified parameters entry, See template value parameter entry, See template type parameter entry, See formal parameter entry partial compilation unit 43 Pascal 45, 66, 81, 84, 98, 99, 101 PL/I 99 pointer to member type entry 100 pointer type entry 81 priority attribute 49 producer attribute 46 PROGRAM statement 47, 53 prologue 4, 116, 120, 121, 126, 127, 178, 240 prologue_end 110, 111, 119, 120 prototyped attribute 54, 97 pure attribute 55 range list 38, 182, 215 rangelistptr 151 rangelistptr class 15, 149 ranges attribute 34, 38, 44, 49, 55, 60, 65, 66 and abstract instance 60 recursive attribute 55 reference class 15, 149 reference type entry 81 lvalue See reference type entry rvalue See rvalue reference type entry renamed declaration See imported declaration entry restrict qualified type 81 restricted type entry 81 return address attribute 56 and abstract instance 60 return type of subroutine 55 rvalue reference type entry 81 sbyte 105, 113, 184 section group 264, 267, 269, 270, 273 name 266 section length in .debug_aranges header 107 in .debug_pubnames header 106, 177 in .debug_pubtypes header 106, 177 use in headers 141 section offset alignment of 183 in .debug_info header 144 in .debug_pubnames header 106, 176, 177 in .debug_pubnames offset/name pair 106 in .debug_pubtypes header 106 in .debug_pubtypes name/offset pair 106 in class lineptr value 148 in class loclistptr value 148 in class macptr value 149 in class rangelistptr value 149 in class reference value 149 in class string value 150 in FDE header 130 in macro information attribute 45 in statement list attribute 45 use in headers 141 segment attribute 34, 55 and abstract instance 60 and data segment 70 segment_size 107, 129, 131, 132, 177, 178 segmented addressing See address space, See address space self pointer attribute See object pointer attribute set type entry 98 shared qualified type 81 shared qualified type entry 81 sibling attribute 16 simple location description 26 single location description 26 size of an address 16, 17, 19, 20, 30, 31, 39, 98, 107, 144, 177, 178 small attribute 79 specification attribute 36, 70, 85, 92 standard_opcode_lengths 114 start scope attribute 71, 75 and abstract instance 60 statement list attribute 45 static link attribute 57 stride attribute See bit stride attribute or byte stride attribute string class 15, 150 string length attribute 98 string type entry 98 structure type entry 84 subprogram entry 53 as member function 92 use for template instantiation 58 use in inlined subprogram 58 subrange type entry 99 as array dimension 84 subroutine type entry 97 tag 7 tag names See also debugging information entry list of 7 Template alias entry 103 template example 257 template instantiation 58 and special compilation unit 94 template type parameter entry 58, 93 template value parameter entry 93 this parameter 34, 64 this pointer attribute See object pointer attribute thread-local storage 20 threads scaled attribute 99 thrown exception See thrown type entry thrown type entry 57 trampoline (subroutine) entry 64 trampoline attribute 64 try block entry 66 type attribute 32, 55, 57, 58, 66, 70, 81, 82, 83, 86, 88, 93, 94, 97, 98, 100, 101 type modifier entry See shared type entry, See volatile type entry, See reference type entry, See restricted type entry, See pointer type entry, See packed type entry, See constant type entry type safe enumeration types 96 type signature 13, 150, 184, 188, 189, 276, 282, 288 computation grammar 285 example computation 277 type unit 43, 48, 85, 144, 145, 150, 184, 188, 276, 281, 288 type_offset 141, 145 type_signature 145 typedef entry 82 type-safe enumeration 256 ubyte 105, 107, 111, 112, 113, 114, 116, 129, 130, 131, 132, 144, 177, 184 uhalf 105, 106, 107, 112, 120, 132, 143, 144, 176, 177, 184 unallocated variable 69 Unicode character encodings 255 union type entry 84 unit See compilation unit unit_length 106, 107, 112, 143, 144, 176, 177 unnamed namespace See namespace (C++), unnamed unspecified parameters attribute 56 unspecified parameters entry 97 in catch block 67 unspecified type entry 80 UPC 81, 99 uplevel address See static link attribute upper bound attribute 99 default 99 use location attribute 100 use statement See Fortran, use statement, See Fortran, use statement use UTF-8 attribute 47, See also UTF-8 using declaration See namespace (C++), using declaration using directive See namespace (C++), using directive UTF-8 4, 13, 47, 129, 150 uword 105, 132, 184 variable entry 69 examples 221 in concrete instance 61 variable length data 161, See also LEB128 variable parameter attribute 70 variant entry 94 variant part entry 94 vendor extensibility 2, 114, 139 vendor extension 251, See also vendor extensibility for macro information 124 vendor id 139 vendor specifc extensions See vendor extensibility version number 289 address lookup table 107, 177 call frame information 129, 180, 242 debug information 143, 144, 220 line number information 112, 178, 237 name lookup table 106, 176 virtuality attribute 33, 87, 92 encoding 171 visibility attribute 33 encoding 171 void type See unspecified type entry volatile qualified type 81 volatile type entry 81 vtable element location attribute 92 with statement entry 66       STYLEREF "Heading 1" \* MERGEFORMAT INTRODUCTION June 10, 2010 Page  PAGE iii DWARF Debugging Information Format, Version 4 Page  PAGE 300 June 10, 2010 June 10, 2010 Page  PAGE 299 SECTION  STYLEREF "Heading 1" \n \* MERGEFORMAT 6--  STYLEREF "Heading 1" \* MERGEFORMAT OTHER DEBUGGING INFORMATION June 10, 2010 Page  PAGE 301 APPENDIX AATTRIBUTES BY TAG VALUE (INFORMATIVE) APPENDIX BDEBUG SECTION RELATIONSHIPS (INFORMATIVE) APPENDIX DEXALPLES (INFORMATIVE) APPENDIX DEXAMPLES (INFORMATIVE) DWARF Debugging Information Format, Version 4 APPENDIX E--DWARF COMPRESSION & DUPLICATE ELIMINATION (INFORMATIVE) GNU Free Documentation License Index INDEX To compilation unit (a) .debug_frame .debug_abbrev .debug_aranges To abbreviations (c) .debug_str DW_FORM_strp (d) .debug_loc DW_OP_call_ref (e) .debug_info .debug_types DW_AT_location (f) and others DW_AT_ranges (g) and others .debug_ranges DW_AT_macinfo (h) To compilation unit (b) DW_AT_stmt_list (i) .debug_line .debug_pubnames .debug_pubtypes .debug_macinfo /012XYZ  " 4 5 I J K L h i j k 뽲ͽ{xxj{xhah jUj1>*B*Uph0J j0JU; j;UCJaJ>*CJOJQJaJCJ aJ $j0B*OJQJU^JphB*OJQJ^JphjB*OJQJU^Jph0JOJQJ^Jj 0OJQJU^J OJQJ^JjOJQJU^J jUCJ$aJ$$/1 JN~ m n { " 5dd^dd5dd5$dda$$dda$Bdd K " 4 c w Ke2I d*J9 $ 8 $ 7 C$dd@&a$     ) * + , A B C ] ^ _ ` a b c d e ỳwm:CJmHnHuj3UmHnHujUmHnHumHnHu&js3>*B*UmHnHphu mHnHu0JmHnHuj0JUmHnHuj2Ujy2>*B*Uph0J 5;CJ j0JU jUj1U*e     + , - . U V W q ȼȮȼФȼȂȼФnȼ&ja6>*B*UmHnHphuj5UmHnHu&jg5>*B*UmHnHphu:CJmHnHuj4UmHnHujUmHnHumHnHuj0JUmHnHu&jm4>*B*UmHnHphu0JmHnHu mHnHu(q r s t u v w x y )*+EFGHIJKLMijѿѿޗѿѿunkk0J j0JUj8UmHnHu&jU8>*B*UmHnHphuj7UmHnHu&j[7>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHumHnHujUmHnHuj6UmHnHu*jklmn     -./0CDûûuûaû&jC;>*B*UmHnHphu:CJmHnHuj:UmHnHujUmHnHumHnHu&jI:>*B*UmHnHphu mHnHu0JmHnHuj0JUmHnHuj9U jU 5;CJ0J j0JUjO9>*B*Uph&DE_`abcdefg+,-/01234PQооооtоj=UmHnHu&j7=>*B*UmHnHphuj<UmHnHu&j=<>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHuj;UmHnHumHnHujUmHnHu,QRShij&'(Bϵ߫ץבσyץe&j%@>*B*UmHnHphu6CJmHnHuj?UmHnHu&j+?>*B*UmHnHphu mHnHu:CJmHnHuj>UmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&j1>>*B*UmHnHphu&BCDFGHIJKghij     *+ѿѿޗэѿyѿkѿjBUmHnHu&jB>*B*UmHnHphu:CJmHnHujAUmHnHu&jA>*B*UmHnHphu mHnHu0JmHnHu6CJmHnHuj0JUmHnHumHnHujUmHnHuj@UmHnHu*+,-ABC]^_abcdef #ϵ߫ץבσyץe&jE>*B*UmHnHphu:CJmHnHujDUmHnHu&j D>*B*UmHnHphu mHnHu6CJmHnHujCUmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&jC>*B*UmHnHphu&#$%'()*+,HIJKijk ѿѿޗѿѿuѿjxGUmHnHu&jF>*B*UmHnHphuj~FUmHnHu&jF>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHumHnHujUmHnHujEUmHnHu*'()CDEGHIJKLhijkϵ߫ץבσ߫ץo&jI>*B*UmHnHphujlIUmHnHu&jH>*B*UmHnHphu mHnHu:CJmHnHujrHUmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&jG>*B*UmHnHphu&6789YZ[uvwyz{|}~ѿѿޗэѿyѿkэѿjZLUmHnHu&jK>*B*UmHnHphu6CJmHnHuj`KUmHnHu&jJ>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHumHnHujUmHnHujfJUmHnHu*|X;i v%]$S579 $ 8 $ 567QRSUVWXYZvwxyϵ߫ץבσ߫ץo&jN>*B*UmHnHphujNNUmHnHu&jM>*B*UmHnHphu mHnHu:CJmHnHujTMUmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&jL>*B*UmHnHphu&;<=>\]^xyz|}~ѿѿޗѿѿukѿ6CJmHnHuj*B*UmHnHphujBPUmHnHu&jO>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHumHnHujUmHnHujHOUmHnHu*45689:;<=YZ[\ϵ߫ץבσ߫ץo&jS>*B*UmHnHphuj0SUmHnHu&jR>*B*UmHnHphu mHnHu6CJmHnHuj6RUmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&jQ>*B*UmHnHphu&FGHbcdfghijkѿѿޗѿѿuѿjVUmHnHu&jU>*B*UmHnHphuj$UUmHnHu&jT>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHumHnHujUmHnHuj*TUmHnHu* !">?@ASTUopqstuvwxϵ߫ץבσ߫|yyk|yeyc 5;CJjX>*B*Uph0J j0JUjXUmHnHu&jW>*B*UmHnHphu mHnHu:CJmHnHujWUmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&jV>*B*UmHnHphu& "#$%&'CDEFwxyͳͫՇsͫej[UmHnHu&jZ>*B*UmHnHphu:CJmHnHujZUmHnHujUmHnHumHnHu&jY>*B*UmHnHphu mHnHu0JmHnHuj0JUmHnHu 5;CJ j0JUj YU jU':;<VWXZ[\]^_{|}~ῳῳoῳ&jq]>*B*UmHnHphuj\UmHnHu&jw\>*B*UmHnHphuj[UmHnHujUmHnHumHnHu&j}[>*B*UmHnHphu mHnHu0JmHnHuj0JUmHnHu6CJmHnHu+!"#$%&BCDE\]^xyz|}~ѿѿޗэѿyѿkэѿj_UmHnHu&je_>*B*UmHnHphu6CJmHnHuj^UmHnHu&jk^>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHumHnHujUmHnHuj]UmHnHu*012LMNPQRSTUqrstϵ߫ץבσ߫ץo&jSb>*B*UmHnHphujaUmHnHu&jYa>*B*UmHnHphu mHnHu6CJmHnHuj`UmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&j_`>*B*UmHnHphu&./0234567STUVѿѿޗэѿyѿkэѿjdUmHnHu&jGd>*B*UmHnHphu6CJmHnHujcUmHnHu&jMc>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHumHnHujUmHnHujbUmHnHu*         2 3 4 5 m n o ϵ߫ץבσ߫ץo&j5g>*B*UmHnHphujfUmHnHu&j;f>*B*UmHnHphu mHnHu6CJmHnHujeUmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&jAe>*B*UmHnHphu& S!!("}""/###Y$$%h%%&s&&$''(o((I)))X*78 $ 9 $  !!!!0!1!2!L!M!N!P!Q!R!S!T!U!q!r!s!t!!!!!!!!!!!!!!!ѿѿޗѿѿuѿjiUmHnHu&j)i>*B*UmHnHphujhUmHnHu&j/h>*B*UmHnHphu mHnHu0JmHnHu6CJmHnHuj0JUmHnHumHnHujUmHnHujgUmHnHu*!!!"""!"""#"%"&"'"(")"*"F"G"H"I"Z"["\"v"w"x"z"{"|"}"~""""""""""ϵ߫ץבσ߫ץo&jl>*B*UmHnHphujkUmHnHu&jk>*B*UmHnHphu mHnHu6CJmHnHujjUmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&j#j>*B*UmHnHphu&""""""""""""" # ##(#)#*#,#-#.#/#0#1#M#N#O#P#j#k#l############ѿѿޗѿѿuѿjnUmHnHu&j n>*B*UmHnHphujmUmHnHu&jm>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHumHnHujUmHnHujlUmHnHu*###############$$$$$$6$7$8$R$S$T$V$W$X$Y$Z$[$w$x$y$z$$$ϵ߫|vb&jp>*B*UmHnHphu mHnHuj|pU jU 5;CJjo>*B*Uph0J j0JU:CJmHnHujoUmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&jo>*B*UmHnHphu&$$$$$$$$$$$$$$$$$$ % % % %%%%%%.%/%0%1%E%F%G%a%b%c%e%f%g%h%i%ооооtm j0JUjjsUmHnHu&jr>*B*UmHnHphujprUmHnHu&jq>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHujvqUmHnHumHnHujUmHnHu)i%j%%%%%%%%%%%%%%%%%%%%%%%%%% & &&&&&&&&1&2&3&ļļvļb&ju>*B*UmHnHphu:CJmHnHuj^uUmHnHujUmHnHumHnHu&jt>*B*UmHnHphu mHnHu0JmHnHuj0JUmHnHujdtU jU 5;CJ j0JUjs>*B*Uph0J&3&4&P&Q&R&l&m&n&p&q&r&s&t&u&&&&&&&&&&&&&&&&&&&&&''''''!'"'#'$'%'&'B'ujLxUmHnHu&jw>*B*UmHnHphujRwUmHnHu&jv>*B*UmHnHphu mHnHu:CJmHnHujXvUmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu.B'C'D'E'{'|'}'''''''''''''''''( ( ( ( (((((-(.(/(0(L(M(N(h(δ֪΂xd&jz>*B*UmHnHphu6CJmHnHuj@zUmHnHu&jy>*B*UmHnHphu mHnHu:CJmHnHujFyUmHnHujUmHnHumHnHuj0JUmHnHu&jx>*B*UmHnHphu0JmHnHu'h(i(j(l(m(n(o(p(q((((((((((((((((( ) ) ) )&)')()B)C)D)F)G)H)I)J)K)g)h)ѿѿޗѿѿuѿj.}UmHnHu&j|>*B*UmHnHphuj4|UmHnHu&j{>*B*UmHnHphu mHnHu0JmHnHu6CJmHnHuj0JUmHnHumHnHujUmHnHuj:{UmHnHu*h)i)j)w)x)y))))))))))))))))))))))))))****5*6*7*Q*ϵ߫ץבσ߫ץo&j>*B*UmHnHphuj"UmHnHu&j~>*B*UmHnHphu mHnHu6CJmHnHuj(~UmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&j}>*B*UmHnHphu&Q*R*S*U*V*W*X*Y*Z*v*w*x*y********************+++++++++6+7+ѿѿޗѿѿuѿjUmHnHu&j>*B*UmHnHphujUmHnHu&j>*B*UmHnHphu mHnHu0JmHnHu6CJmHnHuj0JUmHnHumHnHujUmHnHujUmHnHu*X**+q++0,,,B--.f..,///I000^11222L333\4478 $ 9 $ 7+8+9+N+O+P+j+k+l+n+o+p+q+r+s+++++++++++++++++++++ ,,,),ϵ߫ץבσ߫ץo&j>*B*UmHnHphujUmHnHu&j>*B*UmHnHphu mHnHu:CJmHnHuj UmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&j>*B*UmHnHphu&),*,+,-,.,/,0,1,2,N,O,P,Q,h,i,j,,,,,,,,,,,,,,,,,,,,,,,,,,--ѿѿޗѿѿuѿjUmHnHu&ju>*B*UmHnHphujUmHnHu&j{>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHumHnHujUmHnHujUmHnHu*---- -!-;-<-=-?-@-A-B-C-D-`-a-b-c---------------------ϵ߫ץבσ߫ץo&jc>*B*UmHnHphujUmHnHu&ji>*B*UmHnHphu mHnHu:CJmHnHujUmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&jo>*B*UmHnHphu&---......#.$.%.&.B.C.D.^._.`.c.d.e.f.g.h...................ѿѿޗѿѿukѿ6CJmHnHujԋUmHnHu&jW>*B*UmHnHphujڊUmHnHu&j]>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHumHnHujUmHnHujUmHnHu*.../ / /$/%/&/)/*/+/,/-/./J/K/L/M/h/i/j///////////////ϵ߫ץבσyrooarojE>*B*Uph0J j0JU:CJmHnHujȍUmHnHu&jK>*B*UmHnHphu mHnHu6CJmHnHujΌUmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&jQ>*B*UmHnHphu#////////////// 0 000%0&0'0A0B0C0F0G0H0I0J0K0g0h0i0j0~00000ʰʨ҄pʨbjUmHnHu&j9>*B*UmHnHphu:CJmHnHujUmHnHujUmHnHumHnHu&j?>*B*UmHnHphu mHnHu0JmHnHuj0JUmHnHu j0JUjŽU jU0J 5;CJ&0000000000000000000000011111:1;1<1V1W1X1[1\1]1^1_1`1|1}1̲̐x:CJmHnHujUmHnHu&j->*B*UmHnHphujUmHnHu&j3>*B*UmHnHphu mHnHu0JmHnHu6CJmHnHuj0JUmHnHumHnHujUmHnHu)}1~11111111111111111111122222222242526272]2^2_2y2ϵ߫ץבσ߫ץo&j>*B*UmHnHphujUmHnHu&j!>*B*UmHnHphu mHnHu6CJmHnHujUmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&j'>*B*UmHnHphu&y2z2{2~22222222222222222222223 3 3 3(3)3*3D3E3F3I3J3K3L3M3N3j3k3ѿѿޗѿѿuѿjUmHnHu&j>*B*UmHnHphujUmHnHu&j>*B*UmHnHphu mHnHu0JmHnHu6CJmHnHuj0JUmHnHumHnHujUmHnHujUmHnHu*k3l3m3333333333333333333333333333444448494:4T4ϵ߫ץבσyץe&j>*B*UmHnHphu6CJmHnHujUmHnHu&j>*B*UmHnHphu mHnHu:CJmHnHujUmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&j >*B*UmHnHphu&T4U4V4Y4Z4[4\4]4^4z4{4|4}444444444444444445550515255565758595:5V5W5ѿѿޗѿѿuѿjnUmHnHu&j>*B*UmHnHphujtUmHnHu&j>*B*UmHnHphu mHnHu0JmHnHu6CJmHnHuj0JUmHnHumHnHujUmHnHujzUmHnHu*48556g663777B888g997:::S;;<<<>===Y>> ?g?78 $ 9 $ W5X5Y5s5t5u55555555555555555555666666#6$6%6&6C6D6E6_6ϵ߫ץבσyץe&jߞ>*B*UmHnHphu6CJmHnHujbUmHnHu&j>*B*UmHnHphu mHnHu:CJmHnHujhUmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&j>*B*UmHnHphu&_6`6a6d6e6f6g6h6i666666666666666666666777+7,7-7071727374757Q7R7ѿѿޗѿѿunkk0J j0JUjPUmHnHu&jӠ>*B*UmHnHphujVUmHnHu&jٟ>*B*UmHnHphu mHnHu0JmHnHu6CJmHnHuj0JUmHnHumHnHujUmHnHuj\UmHnHu*R7S7T7U7V7i7j7k777777777777777777777777778 8 8 888ûûuûaû&j>*B*UmHnHphu:CJmHnHujDUmHnHujUmHnHumHnHu&jǢ>*B*UmHnHphu mHnHu0JmHnHuj0JUmHnHujJU jU 5;CJ0J j0JUj͡>*B*Uph&8 8:8;8<8?8@8A8B8C8D8`8a8b8c8u8v8w8888888888888888888888888ооЌоxоjЌj2UmHnHu&j>*B*UmHnHphu6CJmHnHuj8UmHnHu&j>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHuj>UmHnHumHnHujUmHnHu)889999C9D9E9_9`9a9d9e9f9g9h9i999999999999999999999:::/:ȼȮȼФȼȂȼФnȼ&j>*B*UmHnHphuj&UmHnHu&j>*B*UmHnHphu:CJmHnHuj,UmHnHujUmHnHumHnHuj0JUmHnHu&j>*B*UmHnHphu mHnHu0JmHnHu)/:0:1:4:5:6:7:8:9:U:V:W:X:j:k:l::::::::::::::::::::::::::;;ѿѿޗэѿyѿkэѿjUmHnHu&j>*B*UmHnHphu6CJmHnHujUmHnHu&j>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHumHnHujUmHnHuj UmHnHu*;;;/;0;1;K;L;M;P;Q;R;S;T;U;q;r;s;t;;;;;;;;;;;;;;;;;;;;<ϵ߫ץבσ߫ץo&j>*B*UmHnHphujUmHnHu&j>*B*UmHnHphu mHnHu6CJmHnHujUmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&j>*B*UmHnHphu&<<< < < <<<<,<-<.</<^<_<`<z<{<|<<<<<<<<<<<<<<<<<<<<<<<<<ѿѿޗѿѿukѿ6CJmHnHujUmHnHu&jy>*B*UmHnHphujUmHnHu&j>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHumHnHujUmHnHujUmHnHu*<<<===6=7=8=;=<===>=?=@=\=]=^=_=s=t=u==================ϵ߫ץבσ߫ץo&jg>*B*UmHnHphujUmHnHu&jm>*B*UmHnHphu mHnHu6CJmHnHujUmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&js>*B*UmHnHphu&=========>>>>5>6>7>Q>R>S>V>W>X>Y>Z>[>w>x>y>z>>>>>>>>>>>>>>>ѿѿޗѿѿuѿjشUmHnHu&j[>*B*UmHnHphuj޳UmHnHu&ja>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHumHnHujUmHnHujUmHnHu*>>>>>>??? ? ? ? ???+?,?-?.?C?D?E?_?`?a?d?e?f?g?h?i?????????ϵ߫ץבσ߫ץo&jI>*B*UmHnHphuj̶UmHnHu&jO>*B*UmHnHphu mHnHu:CJmHnHujҵUmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&jU>*B*UmHnHphu&????????????????@@@@@ @!@"@#@?@@@A@B@c@d@e@@@@@@@@@@@@ѿѿޗѿѿuѿjUmHnHu&j=>*B*UmHnHphujUmHnHu&jC>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHumHnHujUmHnHujƷUmHnHu*g??!@@@5AAAJBBCfCC3DDDuEEyFF\GGHjHHI}IIHJ8 $ 78 $ @@@@@@@@@@@@@@@@@@@AAA-A.A/A2A3A4A5A6A7ASATAUAVAmAnAoAAϵ߫ץבσ߫ץo&j+>*B*UmHnHphujUmHnHu&j1>*B*UmHnHphu mHnHu:CJmHnHujUmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&j7>*B*UmHnHphu&AAAAAAAAAAAAAAAAAAAAAAAAA B B BB&B'B(BBBCBDBGBHBIBJBKBLBhBiBѿѿޗѿѿuѿjUmHnHu&j>*B*UmHnHphujUmHnHu&j%>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHumHnHujUmHnHujUmHnHu*iBjBkBBBBBBBBBBBBBBBBBBBBBBCCCCCCC$C%C&C'CBCCCDC^Cϵ߫ץבσ߫ץo&j >*B*UmHnHphujUmHnHu&j>*B*UmHnHphu mHnHu:CJmHnHujUmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&j>*B*UmHnHphu&^C_C`CcCdCeCfCgChCCCCCCCCCCCCCCCCCCCCCDDD+D,D-D0D1D2D3D4D5DQDRDѿѿޗѿѿuѿj~UmHnHu&j>*B*UmHnHphujUmHnHu&j>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHumHnHujUmHnHujUmHnHu*RDSDTDuDvDwDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEQERESEmEϵ߫ץבσ߫|yyk|yibi jUj>*B*Uph0J j0JUjrUmHnHu&j>*B*UmHnHphu mHnHu:CJmHnHujxUmHnHujUmHnHumHnHu0JmHnHuj0JUmHnHu&j>*B*UmHnHphu&mEnEoErEsEtEuEvEwEEEEEEEEEEEEEEEEEFFFFUFVFWFqFrFsFvFwFxFyFzF{FFFFFFFFFFFFFFFF޺ޤj0JUmHnHujZUj>*B*Uphj`Uj>*B*UphjfUj>*B*Uph0J 5;CJ j0JU jUjlU7FFGGGGGG8G9G:GTGUGVGYGZG[G\G]G^GzG{G|G}GGGGGGGGGGGGGGGGGGGGGn&j>*B*UmHnHphujNUmHnHu&j>*B*UmHnHphujTUmHnHujUmHnHumHnHu:CJmHnHuj0JUmHnHu&j>*B*UmHnHphu mHnHu0JmHnHu+GGGG H HHHHHHHH2H3H4H5H:H;HFHGHHHbHcHdHgHhHiHjHkHlHHHHHHHHHHHHHHHHȾȾtj<UmHnHu&j>*B*UmHnHphujBUmHnHu&j>*B*UmHnHphu mHnHu:CJmHnHuj0JUmHnHujHUmHnHujUmHnHumHnHu0JmHnHu-HHHHHHHHHHHHHIIIIIIIII;IIAIBIYIZI[IuIvIwIzI{I|I}I~IIIIIIῳῳo&j>*B*UmHnHphuj0UmHnHu&j>*B*UmHnHphuj6UmHnHujUmHnHumHnHu&j>*B*UmHnHphu mHnHu0JmHnHuj0JUmHnHu:CJmHnHu+IIIIIIIIIIIIIIIIJJJJJ$J%J&J@JAJBJEJFJGJHJIJJJfJgJhJiJlJmJ~JJJJJJJپپtjUmHnHu&j>*B*UmHnHphuj$UmHnHu&j>*B*UmHnHphu mHnHuj0JUmHnHuj*UmHnHujUmHnHumHnHu:CJmHnHu0JmHnHu-JJJJJJJJJJJJJJJKKKKKKKKK6K7K8K9K>K?KlKmKnKKKKKKKKKKKKԺԲԐԲjUmHnHu&j>*B*UmHnHphujUmHnHumHnHu&j>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHujUmHnHu+HJJKK LmLL6MMM}NN0OOOFPPQQQORR1SS TTTTC$dda$C78 $ KKKKKKKKLLLLLL L L L'L(L)L*L-L.LILJLKLeLfLgLjLkLlLmLnLoLLLLLLLLLLŹūŹץבŹŃŹץoŹ&j>*B*UmHnHphujUmHnHu&j>*B*UmHnHphu mHnHuj UmHnHujUmHnHumHnHu:CJmHnHu0JmHnHuj0JUmHnHu&j>*B*UmHnHphu+LLLLLLLLLLLLLLLLMMM.M/M0M3M4M5M6M7M8MTMUMVMWM[M\MlMmMnMMMMMMMMMMMѿѿǿѿѿǿuѿjUmHnHu&jw>*B*UmHnHphujUmHnHu&j}>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHujUmHnHujUmHnHumHnHu.MMMMMMMMMMMMMMMMMMNNNNYNZN[NuNvNwNzN{N|N}N~NNNNNNNĸĪĸ̣{ua&je>*B*UmHnHphu mHnHu 5;CJjU jUjk>*B*Uph0J j0JUjUmHnHujUmHnHumHnHu:CJmHnHuj0JUmHnHu&jq>*B*UmHnHphu0JmHnHu&NNNNNNNNNNNNNNNNNNOO O OO(O)O*O-O.O/O0O1O2ONOOOPOQOVOWOvOwOxOOOOOOOڿڿuڿjUmHnHu&jY>*B*UmHnHphujUmHnHu&j_>*B*UmHnHphu mHnHuj0JUmHnHujUmHnHujUmHnHumHnHu0JmHnHu:CJmHnHu.OOOOOOOOOOOOOOOOOOOOOO P P PPPP"P#P$P>P?P@PCPDPEPFPGPHPdPePfPgPῳῳo&jG>*B*UmHnHphujUmHnHu&jM>*B*UmHnHphujUmHnHujUmHnHumHnHu&jS>*B*UmHnHphu mHnHu0JmHnHuj0JUmHnHu:CJmHnHu+gPlPmPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQ9Q:Q;Q*B*UmHnHphujUmHnHu&jA>*B*UmHnHphu mHnHuj0JUmHnHujUmHnHujUmHnHumHnHu:CJmHnHu0JmHnHu-QQQQQQQQQQQQQQQQQQQQQQQQRRRR R R+R,R-RGRHRIRLRMRNRORPRQRmRnRԺԲԐԲjUmHnHu&j/>*B*UmHnHphujUmHnHumHnHu&j5>*B*UmHnHphu mHnHu0JmHnHu:CJmHnHuj0JUmHnHujUmHnHu+nRoRpRuRvRRRRRRRRRRRRRRRRRRR SSS)S*S+S.S/S0S1S2S3SOSPSQSRSWSXSkSlSmSŹūŹץבŹŃŹץoŹ&j>*B*UmHnHphujUmHnHu&j#>*B*UmHnHphu mHnHujUmHnHujUmHnHumHnHu:CJmHnHu0JmHnHuj0JUmHnHu&j)>*B*UmHnHphu+mSSSSSSSSSSSSSSSSSTTT T T T T T"T2T3THTIT]T^TxTyTzT{T|T}TTT}r}dr}r}rjUmHnHujUmHnHu mHnHu jUCJaJ j;U 5;CJjU jU0J\j>*B*Uph0J j0JU:CJmHnHuj0JUmHnHujUmHnHujUmHnHumHnHu'TTTTTTTTTTTTTTTT T!T2T}TTT=UyUUU6VwVV@ $ C$dda$TTTTTTTTTTTTTTTUU7U8U9U;U___!`s``&a}aa)b|bbcfcc d^dd eceef{ffIgghbh@ $ 7_8_9_<_=_>_a_b_|_}_~_____________````` `!`Q`R`l`m`n`q`r`s`````````aaa a!a$ajUmHnHuj UmHnHujUmHnHujUmHnHujUmHnHujUmHnHu:CJmHnHu mHnHujUmHnHujUmHnHu3$a%a&a[a\avawaxa{a|a}aaaaaaaaabb"b#b$b'b(b)bZb[bubvbwbzb{b|bbbbbbbbbbb c c ccccDcEc_cjuUmHnHujUmHnHuj{UmHnHujUmHnHujUmHnHujUmHnHu mHnHu:CJmHnHujUmHnHu5_c`cacdcecfcccccccccccddd d d dk?k@kCkDkEkhkikkkkkkkkkkkkkkkkklj'UmHnHujUmHnHuj-UmHnHujUmHnHuj3UmHnHuj UmHnHu mHnHu:CJmHnHujUmHnHu5llllll;lnAnjUmHnHujUmHnHujUmHnHujUmHnHujUmHnHuj!UmHnHu:CJmHnHu mHnHujUmHnHujUmHnHu3AnBnCn}n~nnnnnnnnnnnnnnn<֙pH 5 & Fudd5$$dd @5ddH8Ԟ*˟+u¡4x$$ & F> hdd^5$$dd & F= hdd^- & F= hdd^5dd @5 & Fu5 5 & FuddOߟ ()34ABѡҡ  <=_`pqtuäĤǤȤͤΤ ,ߥ- B*phjB*Uph0JjGB*UphjB*Uphj)B*Uph B*phjB*Uph jUDxѩ'ëīūƫǫȫɫʫ˫̫ͫΫϫЫѫҫ$$dd/dd5dd @$ & F> hdd^$$ & F> hdd^-.BC$]^rsVWdg"#+,UVlmz{|İŰHIJabhiǶǞj6Uj0J6U0J6j6U j6U6B*mHnHphujB*UphjB*Uph B*ph60J% jU>ҫӫԫի֫׫ث٫ګ۫ܫݫޫ߫Aȱ]ms55dd @ddDZ !-.2>?@mn}~ԲղhiųƳܳݳƶǶ׶ض߶߽߶߶߶j4B*UphB*mHnHphujB*Uph B*phjB*Uph jU0Jj0JU0J0J%j0J%U0J%6j0J6U0J6 j6Uj26U3!#GPdegh̷ͷзѷ!"BCDTUVklopۺ۫Ҕۺ۫҃ۺ۫ j B*CJUaJph jF B*CJUaJph CJaJjB*CJUaJph 0JCJaJ jB*CJUaJphB*CJaJphjB*CJUaJph6 jUjB*Uph,fgϷз !no¸øjk͹ι$%qD8PD\\4 dd$If:$$IfTl4T4 la $$dd$If5ddøĸ89:MNOghklʹ˹ιϹ !"˼Ἣ˼Ἒ˼Ἁ˼x jt#B*CJUaJph j"B*CJUaJph jZ"B*CJUaJph j!B*CJUaJphB*CJaJph CJaJjB*CJUaJph 0JCJaJjB*CJUaJph jN!B*CJUaJph/"%&FGHXYZoprsúĺ 567MNOjkmnu j&B*CJUaJph j%B*CJUaJph j%B*CJUaJph CJaJ j$B*CJUaJphjB*CJUaJph 0JCJaJ j#B*CJUaJphjB*CJUaJphB*CJaJph.qrºú lm#$tu¼ü%&jkٽڽD,|PŌD8Ōżŀ dd$If:$$IfTl4T4 la» !$%FGHYZ[qruvüļ"#&'DԫԚԉ j5(B*CJUaJph j'B*CJUaJph j-'B*CJUaJph 0JCJaJ j&B*CJUaJphB*CJaJph CJaJjB*CJUaJphjB*CJUaJph/DEFSTUghklֽ׽ڽ۽678:;abcwxy̾;˼Ἣ˼Ἒ˕ἄ˼s j*B*CJUaJph jk*B*CJUaJphCJaJ j)B*CJUaJph jC)B*CJUaJphB*CJaJph CJaJjB*CJUaJph 0JCJaJjB*CJUaJph j(B*CJUaJph-ڽ9:QRGHvlPhh,h:$$IfTl4T4 la dd$If;ξ./0NORSuvwɿʿ˿׿ؿٿ)*+DEHIfӻӻӻӻ j-B*CJUaJph j,B*CJUaJphCJaJ j,B*CJUaJph 0JCJaJ j}+B*CJUaJphjB*CJUaJphB*CJaJph CJaJjB*CJUaJph0fghuvwBCDXYZstwx˼Ἣ˼Ἒ˼Ἁ˼x j/B*CJUaJph j/B*CJUaJph j.B*CJUaJph j.B*CJUaJphB*CJaJph CJaJjB*CJUaJph 0JCJaJjB*CJUaJph j-B*CJUaJph/vwqr12\]<P`\Ťtl,TP dd$If:$$IfTl4T4 la@ABUVWoprs./23X}B*CJaJph j1B*CJUaJph j41B*CJUaJph j0B*CJUaJph CJaJjB*CJUaJph 0JCJaJ j$0B*CJUaJphjB*CJUaJphB*CJaJph+XYZopq789Z[]^}~˼Ἣ˼Ἒ˘˼ἇ˼v˘ j4B*CJUaJph j4B*CJUaJph jj3B*CJUaJph j2B*CJUaJphB*CJaJph CJaJjB*CJUaJph 0JCJaJjB*CJUaJph jR2B*CJUaJph. !"456MNQRwxy$%&:;<UVYZw j17B*CJUaJph j6B*CJUaJph j!6B*CJUaJph j5B*CJUaJph CJaJ 0JCJaJ j 5B*CJUaJphjB*CJUaJphB*CJaJphjB*CJUaJph.PQXY &'tDh`P8 :$$IfTl4T4 la dd$IfHIJhij :;<[\]ͼ͓ܺܵͤܺw j9B*CJUaJphB*CJaJph j8B*CJUaJph jM8B*CJUaJphCJaJ j7B*CJUaJphB*CJaJph CJaJjB*CJUaJphjB*CJUaJph 0JCJaJ.] #$'(FGHVWXklopӻӻӻӻ{yqy{0JyCJaJj0JCJUaJ j;B*CJUaJph j6;B*CJUaJph j:B*CJUaJph 0JCJaJ j,:B*CJUaJphjB*CJUaJphB*CJaJphjB*CJUaJph CJaJ,'no7801~LD, \h84dd:$$IfTl4T4 la dd$IfABC`ab  4589W j=B*CJUaJphCJaJ jb=B*CJUaJph j<B*CJUaJph CJaJjB*CJUaJph 0JCJaJ j@<B*CJUaJphjB*CJUaJphB*CJaJph,WXYghi|}-.12RSTdef{|˼Ἣ˼Ἒ˼Ἁ˼~|6 mHnHu jU j@B*CJUaJph j|?B*CJUaJph j>B*CJUaJphB*CJaJph CJaJjB*CJUaJph 0JCJaJjB*CJUaJph jt>B*CJUaJph.)3KL~6 5$$dd$IfL$$IfTD440 ?"W ,4 Da5$$$dd$Ifa$5$a$4$dda$'()23Kab|}~ 45JKcdef2̹̹̹Ք̹jUBCJUaJj0JCJUaJjACJUaJj%ACJUaJ 0JCJaJj@CJUaJjCJUaJ CJaJjCJUaJCJaJ 5CJaJ66j6U467eKLz5z{ 5|}T H 5dd$IfK$$IfTD40 ?"W ,4 Da234IJ_`xyz{ 3456\]^xy 3456]^_z{޵ީޝޑjECJUaJjNECJUaJjDCJUaJj0DCJUaJjCCJUaJ CJaJjCJUaJCJaJ 0JCJaJjCJUaJjBCJUaJ9 %&'(RST|}23CDWXYZjEICJUaJjHCJUaJj!HCJUaJjGCJUaJjFCJUaJ 0JCJaJjhFCJUaJjCJUaJCJaJjCJUaJ CJaJ9'~45Y!"H 8K$$IfTD40 ?"W ,4 Da 5dd$If012VWXY 12FGHIrst}jTLCJUaJjKCJUaJ jKB*CJUaJph jmJB*CJUaJphB*CJaJphjB*CJUaJph 0JCJaJjICJUaJjCJUaJCJaJ CJaJjCJUaJ1PQRS{|}~ 567abst()*PQk̡̰̕ѡ̡̰̉ѡ̡̰}ѡj]OCJUaJjNCJUaJjGNCJUaJjCJUaJ CJaJjCJUaJ jMB*CJUaJphCJaJ 0JCJaJ jLB*CJUaJphB*CJaJphjB*CJUaJph1 cdRSVW{(K$$IfTD40 ?"W ,4 Da 5dd$Ifkl@ABTUefyz{|!"#$LMNghijjRCJUaJj:RCJUaJjQCJUaJjQCJUaJjPCJUaJ 0JCJaJjOCJUaJjCJUaJCJaJ CJaJjCJUaJ9tu!ef()W{|8 l 5dd$IfK$$IfTD40 ?"W ,4 Da &'()RSTrs !"HIJcd{| jUCJUaJj!UCJUaJjTCJUaJjSCJUaJ 0JCJaJjfSCJUaJjCJUaJ CJaJjCJUaJCJaJ: &'<=UVWX'()*^_`yzD޵ީޝޏB*CJaJphjB*CJUaJphjXCJUaJjXCJUaJjqWCJUaJjVCJUaJ CJaJjCJUaJCJaJ 0JCJaJjCJUaJjCVCJUaJ3|cdVW}]^LK$$IfTD40 ?"W ,4 Da 5dd$IfDEFabcuv 012TUfg{|}~!"#[\qr̲̦ڲ̲̚ڲ̲̎ڲ̲̂ڲj[CJUaJj[CJUaJjvZCJUaJjYCJUaJjCJUaJ CJaJjCJUaJCJaJB*CJaJph 0JCJaJjB*CJUaJph jRYB*CJUaJph3r+,-KL_`vwxy <=KL\]abwxyz鳪ͳj]CJUaJ jK]B*CJUaJphB*CJaJphjB*CJUaJphj\CJUaJ 0JCJaJj%\CJUaJjCJUaJCJaJjCJUaJ CJaJ6MNx>?y>?e0 K$$IfTD40 ?"W ,4 Da 5dd$If()*<=NOcdef-.BCDEl޳㳪ލ޳j`CJUaJ j_B*CJUaJphB*CJaJphjB*CJUaJphj^CJUaJ CJaJjCJUaJCJaJ 0JCJaJjCJUaJje^CJUaJ1D+z{<p 5dd$IfK$$IfTD40 ?"W ,4 Dalmn !"=>?@ijk)*+,R̲̦ڲ̲̚ڲ̲̎ڲ̲̀ڲjbCJUaJjNbCJUaJjaCJUaJj4aCJUaJjCJUaJ CJaJjCJUaJCJaJB*CJaJph 0JCJaJjB*CJUaJph j`B*CJUaJph2RSTxyz DEFYZ[\&'()̲̦ڲ̲̚ڲ̲̎ڲ̲̂ڲ̲jeCJUaJjeCJUaJjzdCJUaJjcCJUaJjCJUaJ CJaJjCJUaJCJaJB*CJaJph 0JCJaJjB*CJUaJph jncB*CJUaJph3(de OPptt`K$$IfTD40 ?"W ,4 Da 5dd$If)MNObcrs 789MN\]nopq AjhCJUaJjKhCJUaJjgCJUaJj+gCJUaJjfCJUaJ CJaJjCJUaJ 0JCJaJjCJUaJjfCJUaJCJaJ7ABC^_`a ./0BCVWmnop&'+=>޵ީޝޑǏj$lCJUaJjkCJUaJjkCJUaJjjCJUaJ CJaJjCJUaJjiCJUaJCJaJ 0JCJaJjCJUaJj_iCJUaJ8DEo@ijK$$IfTD40 ?"W ,4 Da 5dd$If>?@AklmBCDfg{|./0ABkljnCJUaJjZnCJUaJjmCJUaJjBmCJUaJ CJaJ 0JCJaJjlCJUaJjCJUaJCJaJjCJUaJ9UV<=_CDrBClL 5dd$IfK$$IfTD40 ?"W ,4 Da :;<JK]^_` !"ABWXpqrs黰ѡѡ}ѡjqCJUaJjOqCJUaJjpCJUaJjCJUaJ CJaJjCJUaJCJaJ j#pB*CJUaJph 0JCJaJ joB*CJUaJphB*CJaJphjB*CJUaJph1s $@ABQRefgh /01@ATUVߛߛ~ jtB*CJUaJphj}sCJUaJ0JCJOJQJaJ jrB*CJUaJphB*CJaJphjB*CJUaJph CJaJjCJUaJ 0JCJaJjCJUaJjQrCJUaJCJaJ1Cg12V!bcK$$IfTD40 ?"W ,4 Da 5dd$IfVW~  !"JKL`amn}~ 4񧞍ާjvCJUaJ jFvB*CJUaJphB*CJaJphjB*CJUaJphjuCJUaJj,uCJUaJ CJaJjCJUaJ 0JCJaJjtCJUaJCJaJjCJUaJ245FG[\]^()89KLMNrst!"#$EɸұjxCJUaJjrxCJUaJjwCJUaJ 0JCJaJ jVwB*CJUaJphB*CJaJphjB*CJUaJph CJaJjCJUaJCJaJjCJUaJ567]*+M#jk, 5$dd$IfK$$IfTD40 ?"W ,4 Da 5dd$IfEFGhijz{`atu 456Ѱ̡̕ڡ̡̉ڡ̡}ڡj1{CJUaJjzCJUaJj zCJUaJjCJUaJ CJaJjB*CJUaJphjCJUaJCJaJB*CJaJph 0JCJaJjB*CJUaJph jyB*CJUaJph1bc 6}~jkK$$IfTD40 ?"W ,4 Da 5dd$If67`ab{| JKLhi89:KLXYhiޜj}CJUaJ0JCJOJQJ^JaJjq}CJUaJj|CJUaJjQ|CJUaJ CJaJjCJUaJ 0JCJaJj{CJUaJCJaJjCJUaJ8MNj]^ hit  $ 5dd$IfK$$IfTD40 ?"W ,4 DaijkBCD[\]^pq 567RSW߆j0JCJUaJjǀCJUaJj0CJUaJCJOJQJ^JaJjCJUaJ CJaJjCJUaJjCJUaJ 0JCJaJj~CJUaJjCJUaJCJaJ2W\]^fgCDEZ[\]:;<UVrϸϬϠϔψjCJUaJjCJUaJjCJUaJjCJUaJjZCJUaJjCJUaJCJaJjCJUaJ 0JCJaJj0JCJUaJ CJaJ0JCJaJ5WX+D@$$$dd$Ifa$4$dda$ 5$dd$IfK$$IfTD40 ?"W ,4 Da 5dd$If rs DEFefgnop<=]^_ghi|}ɶɯɶɯɶɯ B*phjB*UphjԅUj[U jU0JjބU5 mHnHu jU 0JCJaJj;CJUaJjCJUaJCJaJ CJaJjCJUaJ4DE;<~2 hhH[ $$dd$IfD$$IfC40o$d4 Ca $$dd$IfE$$IfC440o$d4 Ca )*-.  :;WXY]^_noIJijkuvw;<=CDEVWj9UjUjAUjćUjMU jU0JjІU jUjB*Uph B*phjSB*Uph@ 9:pHIXKL8L@ $$dd$IfD$$IfC40o$d4 CaLMlmnwxy      K 8 o p    $%DEFSTUghrsmn<Ȼ6jOUjB*Uph B*phjB*Uph6 mHnHuj;U0JjU jU jUC   K 8  5 1<e5$dd6ddd5dd @4$dda$D$$IfC40o$d4 Ca $$dd$IfJK[\abeHInop#%5jB*Uph B*phjB*Uph60JjmU jU jUj̋6B*Uph 6B*phj6B*Uph6 0J6]j0J6U] 0J6]6ewEU1 }!!""$o%:&K&& F$ & Fdd F & Fdd F & Fdddd5$$dd$dd5dd @%KLU_`opq|}1;<KL%&89;HI[\]kl~       * + = > @ \ ] o p q r      ! !!!}!6j6U6j5U5 jUX}!!!!!!"""""""""""""S#T#t#u#v######$$$$$$$$$$$$$$$$$%%%o%z%{%%%%%%%%%%:&K&&&&'յjU6 B*phjB*Uph0JjB*Uph B*phjB*Uph 0JB*phjU jUj5U5@''M'W'X'g'h''''''z((((()).)/)J)T)U)d)e)* *!*/*0*+++,+-+}+~+++),*,A,B,[,k,l,,,,,,,,,,W.X.o.p. ///*/+/////R0S0n0o0b1c1z1{11111111 20JjU jU jU5j5UT&M''z(J)*+[, /1x59=}@@bB4CCD?EE~FDGG F$$ & Fdd5$$dddd F$ & Fdd F & Fdd F & Fdd 22222a2b22233!3"34444x555555Q777 8 84858a8b8c8}8~88888889999999-9.9I9J99999˽ڢj6B*Uph 6B*phj6B*Uph 0J6j0J6U0J6j6U j6Uj6U6j5U5 jU0J jUj}U79H;t;|;<<=>>*>+>>>>>>>>>>>>?? ?0?1?}@@@@@@@bBkBlBzB{B4C=C>CLCMCCCCCCCCDDDDD?EHEIEWEXEEFFFF~FFFFFDGʼ jU0J6j6U j6Uj B*Uph B*phjB*Uphj5U50J66GDGMGNG\G]GGGGGGHHIHSHTHcHdHHHHHHxIIII J J JJJJ$J%J&J'J(J)JCJDJEJOJPJQJ`JaJcJeJnJoJ}J~JMKVKWKeKfK@LJLKLZL[LaMjMkMyMzMMMNNNHNINNN jUj6U6j6U0J6j*6U j6U6j5U5KGIHHeJMK@LaMNNNUOsOO^PQR3T\ F$ & F-dd F & Fhdd^hF$$ & F, hdd^ F$$ & F-dd5$$dddd F$$ & Fdd F$ & Fdd F & FddNNNNNNNNNNNNNNNNNNNO O OOO"O#O0O1OPPPPPPPPQQQ Q5Q6QCQDQZQ[QhQiQQQQQQQQQQRRRRR3T>T?TOTPTRT]T^TnToTqTTTTT|V}VVVVVjB*Uph B*phjB*Uph jU5j5URVVVW W WWWWWW W-W.W2W>W?W@WAWXX|X}XXXXXXXXXXXXXXXXXXXYYY(Y)Y*Y:Y;Yl?lnnnnnnoooooooooopٵ5 jU0JB*phj0JUjUjB*Uph3f 0JB*ph3fjB*Uph3f B*ph3fjB*Uph3fj6U60J jUjU7lnnGodopp7qrGstuv*wIw@xx7z{{|}5 & F $$ & Fdd5$$$dd & FCdd5dd$$5dd 5 & Fkddpp*p+p.p/p7qrsGstttttttttttttuuuuuuuuuvvvvvvv wwww&w'w)w*wiwjwwwwwxxyy+y,y6z7zIz^z_zuzvz{{||=|>|ʼ jUj6B*Uph 6B*phj6B*Uphj6Uj5U56 jUjyUG>|||:};}^}`}}}HDTWXgh|}܆݆ކ| !"123NOPQklmwxyƈLjȈ҈ӈj UjU CJOJQJ6CJOJQJ0JjU jU0J6j6U j6U6j5U5 jUCJ@} HD|3OP12$$ # ~= z9! $$ v% # ~= z9! v% 2dd^ 2 & FWdd2dd F$$ & FWdd5ddӈԈ0123NOP\]^opt͉̉Ήω  89:JKLP`ab./0KLMXéÛ}jU0Jy6CJOJQJ6CJOJQJj6CJOJQJU0J6CJOJQJju6CJOJQJUj6CJOJQJUjU0JjU jU CJOJQJ6CJOJQJ jU12t͉Ή./dʍ12 # ~= z9!^ $ v% # ~= z9! v%$$ # ~= z9! $$ v%XYZjkrs567HIJ`ad !"#>?@KLM]^ab|}~ƍǍʍ2j֢Uj_UjUjoUjU6CJOJQJ0JjqU jU jUC23OPQ[\`jklmno͎Ύώڎێߎ +,-.34QùùùùjCJOJQJUj?CJOJQJUjƣCJOJQJU0JCJOJQJ0Jj0JCJOJQJU0JCJOJQJjOCJOJQJU CJOJQJjCJOJQJU2QRS^_cnopqtIJghituvǐȐː̐湱湣斔湆斔x湖jCJOJQJUj#CJOJQJUjCJOJQJUjCJOJQJU6CJOJQJ CJOJQJ0JCJOJQJ0Jj0JCJOJQJU0JCJOJQJjCJOJQJUj1CJOJQJU)2tHIV F$$ & Fdd5$$dd5dddd$ # ~= z9!^$ # ~= z9!$$ # ~= z9!^)*+<=>TUVǑȑ!"#FGHYZ[\wnY(jB*CJOJQJUaJph0JCJOJQJjCJOJQJUjCJOJQJUjCJOJQJU6CJOJQJ CJOJQJ%jB*CJOJQJUaJph0JCJOJQJaJ(jB*CJOJQJUaJphB*CJOJQJaJph"jB*CJOJQJUaJph"\rstҒӒԒߒ !"2367SѼޱޞ~u𗌗gu𗌗jCJOJQJU0JCJOJQJj CJOJQJUjCJOJQJU CJOJQJ%jB*CJOJQJUaJph0JCJOJQJaJ(jB*CJOJQJUaJphB*CJOJQJaJph"jB*CJOJQJUaJphjCJOJQJU"STU_`abqrs“Óē ɵɵs``XQ jU6CJOJQJ%jB*CJOJQJUaJph(jB*CJOJQJUaJph0JCJOJQJaJ(jvB*CJOJQJUaJphB*CJOJQJaJph"jB*CJOJQJUaJphjCJOJQJU CJOJQJ0JCJOJQJjCJOJQJUjCJOJQJU q{OQloҗӗ,-DEJKbcvA^_56FGLMP՟ןKߡ -.{:;j6B*UphjtB*Uph B*phjB*Uph660J%j0J%U0J% jUHAPK{/0Z $$dd$If @ 5 & FEdd 5$$ & FEdd5$$dd5$dd5dd F & Fdd F & Fdd;TUeflm%&'67ABUV34NOPZ[/JKORST\]ef0ghޙŕřޙřjU6j6Uj\B*Uph B*phjB*UphjU jU0JjnU jU6j6B*Uphj6B*Uph 6B*ph7ũƩ%&<=MNUVWjkªڪ۪/RS`a =>^_`pqr !0û˰jjB*Uph0JjUj6U6 mHnHu jUB*mHnHphujjB*Uph B*phjB*Uph jU@ܪݪ/ $DEkl̬̼tt3$$IfTH4`4 Ha5$$dd @ 4$$dda$ $$dd$If3$$IfTH4H  4 Ha 01BCTUij|}\îĮŮڮۮBCYZjkrstկ֯5678^2ķĬB*mHnHphujjB*Uph B*phjB*Uph0JjU6j6U6 mHnHu jU jUDlɭʭ\wدٯkk3$$IfTH4 4 Ha5$$dd5$dd @ 4$$dda$3$$IfTH4`4 Ha $$dd$If K^ ѷ*ºƽ+06?$$$dd$Ifa$5$dd5dd5$$dd @ 4$$dda$3$$IfTH4 4 Ha26@AEITUcdhklmnoòIJݲ޲789FGHZ[ef|~/0MNO\]nojϲUjRUjձUjjU jU0JjU jU6CJOJQJj6U60J%6DõĵƵǵ   "#ABCOPQfhyz~ȶʶݶ޶ηϷ%&ظٸQRijjUj>UjUjBUjdzU0JjJU jU jUK*º9:]^_rstɻʻʼ̼μ ƽ+?@LM^_noȾɾؾپƿǿݿ޿߿ mHnHu6j6U556jUj>U jUjU60J jUj8UG?@)e}xri5$$dd5dd @ 4$$dda$$$$dd$Ifa$ $$dd$IfY$$IfTH4F({ KpS     4 Ha ߿e &'EFmn  #$?YZlm0JjUjUjU0Jj,U jU6j6U6 mHnHu jUH ?P?V<;5$dd5$$dd @dd$$dd$dddd5dd $$ v%VWsuCDcdetuv+.LMRStuv./089MNmno~j(UjUj0UjU0Jj.U jU6 jU6j6UHLMlmn}~ABYZoq!j6U6jLUjǽU0JjFU jUjB*Uph B*phjB*Uph jUD!D^^77FK +dd$dddd & FAdd$$dddd @5dd=>XYZdefuv  89=OPQGHhijxyz»»zj6B*Uph B*phjB*Uph jU0JjU jUj:6B*Uph 6B*phj6B*Uph0J%6CJOJQJ0J%60J6jþ6U j6U6j6U60   45{| &'(345EFHIfghstu'(89@A`ajB*Uphj@UjUjNU0JjU jU jUjB*Uph B*phC  !"ABCPQRhj|}776j6B*Uph0J6jR6B*Uph 6B*phj6B*Uph6jUjZUjU jU0J jUjdU;   UVvwxUVjk;<_`qr567CDUVWabwxjU66 jUjRU0Jj0JU0J jUjUI  !"89#$q~34MNrsWX*ԽԽԽԽԽԽԽԽjB*Uph6 jU0Jj0JU0JjB*Uph0JjLB*Uph B*phjB*Uph@u9(*LZA$$dd @5dd 5 & F]dd 5$$ & F]dd5$$dd$dd$dd2dd 5$ & F\dd 5 & F\dd$$dddd  #$LUVgh ab}~  +,NOP`a-.OPQ`abvݥݛj6U0J6j6U j6Uj6UjUjPU0JjU jU jU6jN6B*Uph 6B*phj6B*Uph8[ G[Qd2Ak l m   dd55dd 5 & F1dd 5$$ & F1dd5$$dd5$dd @vwyz89:HIJ]^`a#$%;<>?bj6Uj@6Uj6Uj@6Uj6U0J6j:6U j6U6j6U@bcduvw-./G[WXtuvߵjBU jU0JjU jU6CJOJQJ0Jj0J6UjF6Uj6U6j6U0J6 j6Uj>6U889P$%>?OPTU+,OPQbcgxyz{  AkltuԺٷԣٷ㛗6j6UjB*Uph B*ph0JjDB*UphjB*Uph B*phjB*Uph6 jU jU0Jj0JU8()9:>?@   &')*KLM\]apqrsuvݻŷj6B*Uph0J B*phj0J6Ujf6B*Uph0J6j6U j6U jUj6U6jL6B*Uph 6B*phj6B*Uph4         A B C R S W f g h i k l m D E ^ _ o p u v       ? @ U V     ֶ6 jUjtB*Uph B*phjB*Uphj6B*Uph0J6jn6B*Uph 6B*ph6j6B*Uph0J B*phj0J6U7   K Q,9do 5$dd$Ifa$2ddD & Fp5$$dddd5dd @       d e         '(EGde/034Q56RST`abwyּjUjbUjB*UphjhB*Uph B*phjB*Uph0JjU jU6 jUD"#$012GIZ[ 0156 ./HIYZ`afgqrؾرjUj^UjB*UphjRB*UphjB*Uph B*phjB*UphjZU jU jU0J?'(:;CDLM]^lm$%./GH׿5B*mHnHphujB*Uph B*phjB*UphjTU jU0J jUJ<STn]] ]K$$IfTH0{ 64 Ha 5dd$IfL$$IfTH40{ 64 Ha   I`aX<K$$IfTH0{ 64 Ha 5dd$IfHPQYZqr)*@AMNZ[qr   12>?OPhi  /0CD5mHnHu mHnHu jU jUYB_`3QR  \K$$IfTH0{ 64 Ha 5dd$IfELMYlm!D & Fp4$a$5$dda$ 5dd$IfK$$IfTH0{ 64 Ha   @ H b d x y     !!!!!!!<"="f"g"w"x"{"|"""""""""""""##L#M#5$C$D$H$V$W$X$$$$$$jB*UphjbUjB*Uph B*phjB*Uph0J%CJOJQJj0J%U0J%6 jU0J jUjDU<!"#$,&'h)))**N*O****,.M//00(|4$a$3$$IfTH4  4 Ha 2dd$IfD & Fp2dd$$$$$$%%%"%#%$%H%J%]%^%.&/&M&N&O&]&^&_&v&x&&&''(((-(.(/(M(O(d(f((((((((((B)C)Y)Z)[)b)c)d)h)i))))))))))jU mHnHujtUjUjtUjU jU0JjvU jU B*phjB*UphC))))))))****%*&*'*6*7*8*L*M*O*P*v*w*x****************++++++++++++++++,,,,..'.(.c/d///1020R0S0T0d0e0f0jUj U5 mHnHujzUjU jU0Jj|U jUKf0000000000001111112222333+3,3?3@3A3K3L3d3e334 4 4(4)4P4Q4a4b4g4h4444444445555555湵ר6j6U6jB*Uph0Jj0JUj UjxB*Uph B*phjB*Uph0JjU jU jU<022k45%7]8s8G:<;W;<.>H?@XBbCAEiEEEG I$dd$dd @55$$$dddddd5dd2D & Fp2dd55566u6v6|6}6$7k7l777777888899-9.9R9S9q9r9s9999999999;;;; < <:=;=P=Q=Y>Z>m>n>??+?,?I?IYIZI[IeIfIgIzI|IIIIIII9J:JVJWJXJdJeJfJ{J}JJJJJJjU0JjU jU jU0J6j6U j6U6j6U6F IJ{MDOVOEPS?TTWvXY[\I]s]<^`bc-e]ghii$dddd5$dd5$$dddddd55ddJJJJJJJJJJKK&K'K(K4K5K6KKKMK^K_KLL-L.L>L?LCLDLZL[L{L|L}LLLLLLLLLLGMHMaMbMrMsMwMxMMMMMMMMMMMNNNNϭj|UjB*UphjUjB*Uph B*phjB*UphjU jU0J jUj UAN@NANZN[N\NeNfNVOYOZObOcOOOOOEPPPQPqPrPPPPPPP QQAQBQcQdQeQtQuQQQQQQQQRRSSS'S(S7S8S9SCSDSWSXS?TFTGTKTNTOTPTT~UUU B*phjB*UphjU0Jj0JUjpU jU6j6U60JjU jUDUUUUUUUUW W!W)W*W;Wvyvzvvvvwx4zzP||)~|5$dd5dddd $dd$IfD$$If40p} 3# 4 a $$dd$IfwwwZx[xrxsxxxxxxxxxx y y,y-y.y?y@yAyWyXyyyyyyyyyyyyyz zzz+z,z-z1z2z4zzzzzzzzzz {!{;{<{j6B*Uph 6B*phj6B*Uph6jUjU0JjU jUjB*Uph B*phjB*Uph jU<<{F{G{e{f{P|W|X|\|c|d|e|}|~|||)~J~K~s~t~u~~~~~~~~~~~~ LMcdtu|~µªjUj'UB*mHnHphujB*Uph B*phjB*Uphj7U0JjU jU6j6U6 jU<)~GH73؅dž5dd5$dd4$dda$3$$IfTH44 Ha $$dd$If5$$dd$%&234EFOPfgijЀр()*<=pq؅+,LMN^_`y{jUjU6j6U0J6j6U j6U6 mHnHujU jU0J jUDÆĆdž҆ӆ߆  WX\]^_ΈψЈ߈݉މ߉ΊϊЊߊ:;UjUjU jU0Jj0JUjU6 0J6]j6U6 jU0JEʋPuȐz5=žc F & Fdd F$$ & Fdd5$$dd5$dd$dd$dd5ddddUVWabcrs}~    PōƍǍ܍ލ"#$:<NOhide~jhB*Uph B*phjB*UphjUjpUjU6j6U6 jU0J jUj~U@܏ݏޏ  34ÐĐŐݐސ  "#st)+=>CDghi|}~jUj\UjUjdB*Uph B*ph jU0JjU jUjB*UphF?@APQ>?dfؘ٘OPlmϙЙљ 23LMNWXԚ՚12STjUjB*Uph B*phjB*UphjzUjU660JjbU jU jUDTUfgh~opĜŜޜߜž89IJ @ABRSTij٠ڠ  #$FGKXYZ  -./@ABXYj6Uj6U60J6j6U j6Uj6U6j U jU0J jUEY /01BCDZ[`a*+LMN_`awxҤԤ    23<=>NOPefklͻܹܹͻͻj)UjU jU0Jj!U jUj6U6j6U0J6j6U j6U6Bcl¦E`^zPQ Bpq F$$ & Fdd5$$dddd5dd F & Fdd F$$ & Fdd$$ddddlE`fgknopnoԪתɫʫݫޫ   z"jUjU0Jj1U jU jU6j6U0J6 j6Uj6U6F"#$XZpqno>?acưǰȰװذ  ԱձֱдѴҴ"#DEFWXY<=YZ[ghiz{j Uj! Uj Uj U0JjU6 jU jULȷɷʷڷ۷"#:;QRbcjlmq01DESTjkmn~úĺҺӺjkҺj0J6U0J6j6U6 mHnHu5B*mHnHphuj B*Uph B*phjB*Uphj U0Jj! U jU jUWYnojC)Uj(UjQ(U0Jj'U jU jU6j6U6L"#$:<NOhihiﱹ6j6U6j/+Uj*Uj;*B*Uph B*phjB*Uphj)U jU jU0JD(*?@"#$012GIZ[`a~*+-.23ķj-Uj!-B*Uph B*phjB*Uphj,Uj),U0Jj+U jU jU6E3`ab           !!0!2!E!H!f!h!{!~!!!!!!!!!!!!!""/"0""""""" # #&#(#D#E#Y#Z#m#o#############ѻj6U0J6j.6U j6U6CJOJQJ6 jU0J jUj/.UJyz{|}~1"E"#$$%&'2dd F & Fdd @dd5dd##$$$$$$$$$$$$$$$%%%%%%%%%%&&&&&'&(&;&<&F&G&^&_&l&m&&&&&&&&&&&&&'''''''''''((((((+(,(6(7(Q(R((j0U6jC0Uj/U jU0JjM/U jU6j6UL'(r)+,-7.|0D23y5n69<e=u>mAnA9BsCCCC & F v%^ i^`i & F F & FOdd F$ & Fdd2dd F & Fdd(((((((()) ) )#)$))))))))*******+*******++j+k+++++++--.-/-0-=->-?-Q-R-\-]-----------ϵj3UjM3Uj2B*Uphj72B*Uph B*phjB*Uphj1U jU0Jj31U jUA-------z.{......../////&/'/C/D/W/X/q/r/s/|/}///000#0$0%07080000000011222"2#2'252627282d2e222222222j6U0Jj0JUjE6Uj5Uj?5Uj4U0JjA4U jU jUF233333 4 4 4*4+45464W4X4e4f4z4{4|44444{5|555555555555566666P6Q6h6i6m6p6q666666666667777 7<7=7^7_7x7y7z777j9j9Uj;9Uj8UjK8Uj7U jU0JjM7U jUJj9999999999: :;;;0;1;V;W;o;p;q;w;x;;;;;;;;;;;;;;;<e=g=h=========@>B>C>D>^>_>j@k@@@@@@@BBBj<B*Uph B*phjB*Uphj <Uj;Uj-;Uj:U jU0Jj9:U jU6BBB.B/B5B6B9BcCdCjCkCsCCDDD DdDeD}D~DDDEEE FFFFF3F4F5F@FAFYFZFGGGGGGGGGGGGGGGTHUHdHeHyH¹5B*mHnHphuj >B*Uph jU0Jj0JU0Jj=U jU0J%66j6U6jB*Uph B*phj=B*Uph9CCCCCCDEGGG 5$dd$Ifa$ F & FOdd2dd & F v%^ GGGIHJHfHHHH%I&IeI4J{{{{{{vp2dd4$a$ 5dd$Ify$$IfTl0F  t0644 lah yHzHHHHHHHHHHH II#I$I-I.IDIEIGIHIFJGJ\J]JgJhJJJJJJJJJJJJ KKiKoKpKtKwKxKyKKKKKKKKKKKKKLLnLpLqLLLLLLL˽0Jj?U0J6j>6U j6Uj6U6j0JU0J mHnHu jU6 jUF4JiKnL^__>_?_X_Y_i_j_n_o________n`o`~```````````aaaaaaaa$b%b>b?bObPbTbUbodddee e!e&e'efؿɻأjI6B*Uph 6B*phj6B*Uphj|IB*Uph0J6jH6U j6U6CJOJQJ6jHB*Uph B*phjB*Uph jU8fffgggYgZgngoggggggggghhhhhhiiii9i:iDiEicidiiiiiiiii[k\kpkqkkkkkkkkkkk4l5lNlOl_l`lylzlllllllllllll5j#KB*UphjJB*Uph B*phjB*Uph66j6UKlll mmmmmmm!n"nBn`nannnn\p $$dd$IfL$$IfTH40 .64 Ha$$$dd$Ifa$ll m mHmIm}m~mmmmmmmmmmmmm.n/n@nAnwnxnnnnnnn o o!o"oEoFoZo[ooooooooopp-p.pLpMp_p`ppppppppp,q-qHqIqsqtqqqqqqqqqqqs6 mHnHu jUjKB*Uph B*phjB*Uph jUPnnnn#o5o6o\ouovooooooo/p>p?papL$$IfTH40 .64 Ha $$dd$IfapopppppppqqJqhqiqqqqqqrD\D5dd 4$$$dda$L$$IfTH40 .64 Ha $$dd$Ifsssssssssss tt(t)tCtDtuu)u*u=u>uTuUumunuuuuuuuuuuuuuuuvvmvnvvvvvvvvqwrwwwwwwwjWMUB*mHnHphujLB*Uph B*phjB*Uph0Jj0JU0JjSLU jU jU6]j6U]6];qrsumwFx{y|~Á 5$$$dd$Ifa$5$dd5dd5$$wwwwwwwJxKxpxqxrxxxxxxxxxx!{"{4{5{{{{{{{{{{{||}}$}%}?}@}X}Y}c}d}}}}}}}~~,~-~~~~~~./9:TUހ߀j6U6jeNU0J0JjMU jU jUj0JUOde%&>?IJfgʂ˂noop̆͆)*+5DEUVxyj6U6jOUjiOU0Jj0JU0JjNU jU jUL͈Έ stuvef|}͌Ό78΍ύٍڍ  ߏ B*phjB*Uph0JjkPU6 mHnHu jU jU56 0J6]Hψ؈وZ[߉]^{{{{{{{{{ $$dd$Ifw$$IfTl0O $ t0644 la]^7Q4V{rmhff````5dd55$$ @4$dda$w$$IfTl0O $ t0644 la $$dd$If  !BCSTWXؑۑ $&CF]_|̒Β֓דkl0JjRU jUB*mHnHphujRB*Uph6 jUj{QB*UphjB*Uph B*phjPB*Uph@”Ô\]wxyǕȕ–ԖՖ֖ז123MNRS—×ЗїϷϪԷϝԷjTB*UphjqTB*UphjB*UphjSB*Uph B*phjB*UphjsSU0JjRU jU jU>ї   #$./KL,-.@ABYZghęř*8IJbdz{}~śƛۛܛ  ܿײܿ5jVB*UphjB*Uphj"VB*Uph B*phjB*Uph jU0J jUjUUER)*.78|țD $dd$IfK$$IfTH40 X 4l4 Ha$$$dd$Ifa$5ddțɛ ?@FݝȞT`4<t $dd$IfI$$IfTH0 X 4l4 Ha '(01STkmΜϜ(*DEIJRS۝ܝޝߝ;<\^ƞǞ9;RSWX`awxŸğݟޟ./9:PQSThk6 mHnHu jU6 jUZߟ12iƠJoԢGH{ $ v%dd $ v% $$ v%5dd 4$$dda$I$$IfTH0 X 4l4 Ha $dd$IfƠJRStuvӡԡա<=>QRSklmnТѢҢӢ  j?RSTlmnoȴj[UjP[UjZU 0J%6j0J%6Uj@Z6Uj0J%6U j0J%6aJ0JjYU j0J%U0J%60J%0J%j0J%U;Hs<pZ[k[1Dq dd$If5dd5$dd @ $$ v%åĥťޥߥ !123HI[   :;UVWabcrs}~)*DEFPQRablm[ȪɪѪҪ1Dӫԫ̭̭j6U6j^]Uj\U jU jUjd\U j0J%6aJ0J%0J%j0J%U j0J%U0JDԫ#$9;QRĬŬ߬έϭ56=>VWXhi®îޮ߮/0FGWX_abѯү !ȻȰj_UB*mHnHphuj>_B*Uph B*phjB*Uphj^UjL^U0Jj]U jU jUB!89°˰̰noűDZޱ߱'(>?EFghiyz{ѳҳ/1gh|}ɼη j6U B*phj6aB*Uph B*phjB*Uphj`U0Jj:`U mHnHu jU jUEðİTA715dd 4$$dda$Z$$IfTl4    |  0    4 la dd$IfZ$$IfTl4    |  0    4 laT/E@ܺ'1 "'sgkz $$5$$dddd @5$dd55ddشٴEPQuvwӶԶ   #$%SUqr@WX\]^_78YZ[jklϹйչֹ۹ɵɹjcUjLcU6j6UjbU0Jj0bU jU6jaB*Uph B*phjB*Uph jUAֹ*+LMfgwx|}ºúӺԺٺں#$%&+,0345ABFLMN459<=>GHLPQR@AEFGH׽泻泻泻泻泻泻泻6j6U6jVeB*UphjdB*Uph B*phjB*Uph jU0J jUjPdUE()>@VW!"#-./>?IJ]^34HI\]uv45IJTUz{ !234JKUVpqs6jfUjJfB*Uph B*phjB*Uph0JjeU jU jUI:;³׳ץשץש³׳׳jhU6j6U6 jUjJhU jU0JjgB*UphjB*UphjB*Uph B*phjLgB*Uph<k)*CDTUXY\s{|"!"ôÖj^jU6j6U0J%CJOJQJ 6B*phji6B*Uph0J%6B*CJOJQJph%j0J%6B*CJOJQJUph0J%6CJOJQJ0J%66 jU0J jUj\iU3z\s"qg 9&dddd$$dd$dd5dd  $$"56 g()KNab]^tv/01:;JKuvw0jkUjLkU0JjjU jU6j6U6 jUN012FG 789LMNfgqryz  #$&򾼾򾼾6j6Uj'nU jUjmUjl6B*Uph 6B*phj6B*Uph60J jUjXlUB)*+567FGQRef*+NOPcde}~ ,-.?@JK`atuwx'()89CDWjpU6j%pUjoUj!oU jU0J jUjnULV77f2M5 & F5$$ & F5$$5$2^5 & F55$dd$dd5ddddWXrs234GHIablmVWvwxUVuw78RS*+,KLVjrU0Jj0JUjrUjqU0JjqU jU jULVWz{tu,-45:;?YZ[2MNhistͿͷԨԷڏڷjB*Uph0JjSt6B*Uph 6B*phj6B*Uph6j6U0J6js6U j6U60Jj0JU0Jj%sU jU>* jU3UVuvw  $%PQjk{|89STrs23NOʫʫʫʫʫʫj6U6jgvB*UphjuU jU0JjguU jUjB*UphjtB*Uph B*phCR'/0Wt|_1wx{$$5$${5O/0t/0STdehiWXlm}~c d h w x y   4 5 ? @ ] ^ x y         juwB*Uph B*phjB*Uph6jv6B*Uph 6B*phj6B*Uphj6U6CJ]aJCJaJ0J66@GH`MDP       x28^85 & F 88^85h^h5{{$$       # $ = > N O S T         # $ = > N O S T  ~+,PQ 23HIcdV jU0JjoxB*UphjwB*Uph B*phjB*Uph6j6UJx?OhcDc#!""dd5$dd5dd5$$dd$dd5^5 & F5$$^5$$ & F5$$5VWxyzZ[tu,-*+KLM]^_tu()<=>HI`a贈0Jj0JUjzUjwzUjyUjqyB*Uph B*phjB*Uph jU0JjxU jU@()#%EHeg+,ABC   j}U j6Uj|U0J60Jj0JUj|U jU0J jUjy{UF  $ % A B U V o p q z { E!F!i!j!k!~!!!!!"""""""/$M$N$w$x$$$$$$$$$%%%%;%<%=%>%e%f%g%|%}%~%%%%%%%%%%%%%_'`''jUj*Uj~U6j6U6j~U0Jj}U jU jUG"/$&)-%/02)243 558<< $$dd$Ifdd -$ & F9dd $ & F9dd & F9dd5dd''''''''''((0(1(2(<(=(>(M(N(X(Y(l(m())5)6)7)A)B)C)R)S)])^)q)r)t*u**********+++++ +!+4+5+++++, , , ,,,&,',:,;,,,,,jUj@UjɁUjRUjۀU jU0J jUj<UK,,,,,,,,,--]/^///////E1F1o1p1q111222222222222 4 43444Y4Z4u4v4w44444444444444444{5|5555555555555e6f6x6z66jUjFUj̓Uj<U jU0J jUQ66&7'7H7I7J7U7V7f7g7m7n7o777777788 99999+9,9192939H9I9S9T9t9u9;;&;';(;9;:;;;Q;R;-<.<F<G<H<X<Y<<<<<<<<j2B*Uph B*phjB*UphjUj:UjU0Jj0JU0Jj2U jU jU=<<<<<<<<<<<===== =A=c=d==================>> >>>:>;>[>\>]>m>n>?????@@DBlBnBBBBBBB9Dÿ⥭j6U6jUj4U0Jj0JU0JjU mHnHu jU jUjB*UphB*mHnHphuA<<<<A=>C935dd 4$$dda$X$$IfTl     0    4 la dd$IfX$$IfTl     0    4 la>??DBDhGI.KGKKJLNMOOO(PPR TUXX[Z@\f^5$dd 5 & Fdd5$$dd$dddd @5dd9D:DVDWDXDbDcDrDsDtDEEFEgEhEiExEyEEEEEEEEEEEEEEEEFFFFFF:F;FGGGGGGGGGGGGGGGHHHöȫ jUjUj@UjB*UphjB*Uph B*phjB*Uphj2UjU0Jj0JU0Jj:U jU9H+H,HHHHHHHHHHHI-KGKK L L(L*LFLGLLLLLLLLLLL M MMMMMMMMMMMMMMMNNNN3N4N5NENFNNNNNNNNNNN{O|OOOcPj.UjUj:UjÌU60Jj0JU0JjLU jU jUHcPdPyPzPPPQQQQQQQQQ,R-RIRJRoRpRRRRRRRRRR#S$S9S;SQSRS&T'TATBTCTMTNTOT^T_TiTjT}T~TUU?U@UAURUSUTUjUkUuUvUUUGVHVvVwVWW*W,WBWCWWWXWqWsWWWWjU0JjU jU0J66j6U6 jUPWWXX&X'X+X,XXXXXXXXDYEYIYJYKYLYTYUYYY\Y]Y^Y[ZZZZZZZu[v[[[[[[[[[[[[[\\\\\\\\\\\\\\f^j^k^o^p^q^r^_f_g_ȽȽjU0JjU jU jU6j6U6jB*Uph B*phjB*UphGf^_``5b~ccdf*jkk]lmnpqrstv|xxx{|}5$dd @ & F:dd5$$dd5ddg____________________aa/a0a1aHaIaJaeagaaaaaaaaaaaaaaabbbbbbbbbbcc5c8cVcXczc{ccddd&d'd(ddLeMecej6U66jUjUjUjU jU0J jUj UHceee|e}eee f fffff)f*f4f5fHfIfffffgggg-g.g8g9gUgVggghhh#h$h%h9h:hDhEh]h^hbhchhhhhhhhhhhhhhhiiiȻͰȣjB*UphjB*Uphj B*Uph B*phjB*UphjUjU0JjU jU jU@iiiiiiijjujvjjjjjjjjjjjjjjjkkkkkk+k,k6k7kNkOkjkkkkkkkkkkkkkklll]lllllll$m%m?m㤬6j6U6jB*UphjB*UphjB*Uph0JjU jU jU B*ph B*phjB*Uph>?m@mAmKmLmMm\m]mgmhm{m|mnnnnn(n)n*n9n:nDnEnXnYnooooooooooooooooppp)p*p+p>p?pIpJpapbp|p}ppppppppǺ̯Ǣ̝ B*phjB*UphjB*UphjB*Uph B*phjB*UphjUjU jU0J jUjU>pqrtrurrrrrrrsss$s%s&s5s6s@sAsTsUsssstt t t tttuuuuuuuuuuuuuuvv v.v/v0vCvDvNvOvfvgvvvvvvŸʭŠjB*UphjB*UphjsB*Uph B*phjB*UphjUj{U0JjU jU jU6?vvvvvwwAwBwCwWwXwqwrwsw}w~wwwwwxx0x8x|xxx y y+y,y-y>y?y@yZy\yrysyxyyyyyyyyyyyyy3z4zUzVzWzhzizzzzjUjUjU 0J6]60J jU0Jj0JU0JjoU jU B*ph B*phjB*Uph=zzzzzzzzzzzz{{{{{{{{{{W|X|^|_|d|e|m|n|q|r|x|y|||||||||||||||||}} }!}*}+}7}8}B}C}P}Q}Y}Z}e}f}o}p}y}z}|}}}}}}}~~e~6jB*Uph B*phjB*Uph jU0J jUjUO|}}n~Gmτ܅ .D:Td$ F$ & Fdd F$$ & Fdd F$$ & Fdd 5$$dd^5$dd @5$$dd5dde~l~12KMbcՂւEFGmo˄̄678BCDST^_rs%&'67ABUVކ߆jsU0JjUj6U j6U6jU jU jU6J78BCabuv,-OPQcde|}.DHIklmNOqrs܋݋-.[\:Tckr1ԸԸԸԸ0J%6jUjUjsU6jUjwU jU0J jUjUH12TUVhijݎގnoԏՏ  +,ʐː̐֐אؐbcđőȑj}UjU0JjU jU jU0J%66j6U0J6j6U6 j6UECڒRƛhߜWFw5$$dddddd$dd$$dd$5dd5$$dd @ȑɑ12MNghxy}~ʓ˓̓ߓ!"st+,Iᥡԝ j6U6jU60Jj0JUjU jU B*phj}B*Uph jUjB*Uph0JjB*Uph B*phjB*Uph5IJKdef-.TUnoɗʗΗ՗֗חRVWxyzØĘ678HIJ_`jkƛɻjU jU0JjU jUj6B*Uph 6B*phj6B*Uph66j6U0J6 j6Uj 6U=hƜǜל؜ܜݜޜUVW~hi}~ϠРtu̡͡üü0JjB*Uph jUj6B*Uph 6B*phj6B*Uph6 B*phj"B*Uph B*phjB*Uph6j6U;ϢТѢۢܢ  <=>\]^]^֦צҧӧPQtuv޴ޥޑ0J%jJB*Uph jUjB*Uphj B*Uph0Jj0JU0JjB*Uph B*phjB*Uph B*phjB*Uph6wȥ./01234567S-W7dddd @ 5 & F8dd5dddd55 & F!"#?@PQTU\]ghopz{īūޫ߫[\`cde7ҸҤ6j6U6jۮB*Uph jUjLB*UphjϭB*Uph B*phjB*Uph0Jj0JU0J0J%j0J%U;7̳γ%459HIJKiyz~y߶#$%345NO׷ B*phjB*Uph0JjXU jUjCJOJQJU CJOJQJ0J66j6U60J0J%CJOJQJ0J%j0J%U0J% jU:߶Q5im*-F$$ & Fhdd^h F$$ & Fdddd5$dd5dd 5hdd^h2dd 5 & F)dd 5$$hdd^h 5$$ & F)dd5$$dd׷ط   '(23STmn~  789:gh ;=jkWοοο΢Φοο΢Φ j0JU0J%j0J%U0J%j`B*Uph jUCJOJQJjCJOJQJU CJOJQJjB*Uph B*phjB*Uph=WXȻɻͼμϼټڼۼ  $3`a{|}?@bdz{ʿ˿Ͽݿ޿߿*+Ȼj˱U0JjCJOJQJU CJOJQJ0J%j0J%UjTU0J%0JjݰU jU jUB &'@AQR\] :EFJUVW[ghlxyzλΪλΚΞΪΎΪj0JU0J0J%j0J%U0J%0Jj˲B*Uph jUCJOJQJ0JyjCJOJQJU CJOJQJjNB*Uph B*phjB*Uph8](hI^u  I$ & F3dd5$dd @5dd F & Fhdd^h F & Fdd2dd F$$ & Fdd45st!"&234](qr*+PQZ٥j6UjHB*Uph B*phjB*Uph0J%j0J%U0J%6CJOJQJjCJOJQJU CJOJQJ jUAZ[KV]  iqrsw<@GLTxX\%Xdefjvwxhuvz+,0>?@j0JU0J|0Jj0J6U jU0J0J66j6UP^ a]wiXXh5$pdd^p`5$$pdd^p`5$$dd$dd 5pdd^p 5pdd^p`dd5dd5$ddhSK^q=idd $ ~v% $$ ~v%5$$dd 5p^p` 5$pdd^p5$$pdd^p` 5pdd^p`@S $123 #+,-78<KO^dqxy}"./0IJ[\wx| jU CJOJQJ0J%j0J%U0J%60Jj0JU0JQZ[efNOvwxepquʺʬͺ B*phjB*UphjVCJOJQJU j0J%Uj0J%U0J%0JjųU jU jU6 CJOJQJ0Jj0JU0J88^#  F$$ & Fdd F & Fdd2dd F$$ & Fdd5dddd 5pdd^p`5$pdd^p`5$$dd$dd 23LMNXYTUyz|  /01DE|}ƣƣjB*UphjpU0JjUjbUj۵Uj^U jU jU0J%j0J%U0J%jB*Uph B*phjB*Uph8ry~237YZ[78<VWX!015DEFMNXYu|}+:h0J%660Jj0JU0J jU0J%j0J%U0J%Rdp!\1x TF$ & F) hhdd^h2$ddF$$ & F) hhdd^h2ddF & F) hhdd^h22$$2$$ & F) hhdd^hho   "#-.xjk  jU0J%j0J%U0J%6j6U60J%6T  $789$%89&t-@ !,0<   n ~       žŴ50J6j6U j6U60Jj0JU0J jU0JjU jU0J%j0J%U0J%DT20E<  n ~    F & Fdddd5dddd2 & FQ hdd^2$ddF$$ & F) hhdd^h2dd    3 4 I P U ] ^ b j k l        % - . ; < A _ g h l t u v }          D I J Q V ^ _ c k l m z mqENOS\]^ 0J%6j0J%6U0J%60J%j0J%U0J%0Jj0JU0Jj6U6K    W   z %}{   5 $ v%5$$dd5$dd5dd F$$ & Fdd F & Fdd%x}~&015?@ARh  !"st015?@ADUVZ䮞j0J%6CJOJQJU0J%6CJOJQJ jUj6U0J%j0J%U0Jj0JU0J0J% 0J%6j0J%6U60J%6=Zklm|}  234?P%+<=ARSTظ篬0J%6CJOJQJ]j0JU0J0J%CJOJQJj6U0J 0J6j0J6U0J660J%j0J%U0J%j0J%6CJOJQJU6; #459JKLMO_klpz{|*+,PQUwxy  7ʼ 0J6]j6U60J6j0J%6CJOJQJU0J%6CJOJQJ0J%j0J%U0J%F78<^_`muvz)237@ABu)KLPjklx^%m%n%й鵧j0J%6U560J%60J%6CJOJQJ0J%j0J%U0J%6j6U0J 0J6]6 0J6]j0J6U]B<Z U   !U!!!"U"""#U###$U$${{$$5$$dd5$dd $ v%dd$$%2%%%;&Y&'' )8)))**R+~+7,k,- F & Frdd F$ & FrddF$ & Fhdd^h2dd F$$ & Frdd5$$dddd5dd{n%r%{%|%}%%%%%%%%%%%%%;&F&G&W&X&Y&h&i&y&z&& ' '''''<'G'H'L'W'X'Y'Z'g'h'l'x'y'z'{'~''''''''''''''''((0J%CJOJQJ0J%j0J%U0J%0Jj0JU0J jU j0J%U jU560J%6j0J%6U 0J%6B(W(X(\(m(n(o(((((((((((((((()) )))5)6)8)O)P)h)i)))))))))**%*&*j*n***********++1+R+d+e+|+}+~+++++++++¹j0J%U0J%5jB*Uph B*phjB*Uph0Jj0JU0J6 jUI++++7,M,N,i,j,k,,,,,,,,,,,,-$-%-=->-?-V-W-o-p----------.//////////%0<0=0Y0Z0[0v0w00000000011 1$1˽˵6j6U0J6j36U j6U60Jj0JU0J0J% jU5j0J%U0J%F-?-.%0[0 2334637B889:;W<{<=-=dd F$$ & FDddF$$ & Fhdd^h F & Fhdd^h F & Frdd2dd2$dd F$$ & Frdd$1,1-1.1p1s1111111111 2,2-2N2O2P2a2b2c2y2z2 3 3.3/303A3B333333333333 4 444-4.4U4a4b4f4r4s4t44_7`7m7n7B8[8տܱܯܿܯj5U jU5j=6U6j6U0J6j6U j6U60J%j0J%U0J%>*j0JU0J?[8\8z8{88888888888888888999::::::<<<<"<#<'</<0<1<W<e<f<y<z<{<<<<<<<<<<<<=-=S=f=g===========>Ǿj0JU0Jj6U60J%j0J%U0J%0J jU50Jyj5UG-=S==?@4AAAKBCADD EFMHfH(I{II L5$dd @5dd2 2 & Fdd1$$ & F2 hdd^2$dd2dd F$$ & Fdd5$$dd>>>>>>>>=?>?V?W????@@@@@0@1@@@ AAAA!A"A#A4AAAAAAABB-B.B?C@CSCTCCCCCCCC:EMENEREeEfEgEF(FFF G GGGGG(H,HMHֻ۷ۻ0J%j0J%U60Jj0JU0J0J%5 jUj»B*Uph B*phjB*UphHMHfHHHHHHHHH I I I(I1I2IKILIMIPIQI{IIIIIIIIIIIIII L L"L#L;L(5 1$$ & F dd2$dd2dd F$$ & Fdd5$$dddd5dd dd^`*-FGKށтׂقڂ)*~̃̓҃Ӄ>DEIOPQmnĿĿĿĿċ B*phjpB*UphCJOJQJjCJOJQJUjB*Uph B*phjB*Uphj0J%6U0JjhU jU CJOJQJ0J%6 jU66%&FGpq  01;<359MNR]^_`lmq}~6BCG̿0J60J%j0J%U0J%0J%CJOJQJ CJOJQJjB*Uph B*phjB*Uph jUjCJOJQJU OJQJCJOJQJ<׈`6^j@8@-d F$$ & Fzdd$$dd2$dd F & Fdd F$$ & Fdd2 & F22ddGSTUV]^ŠÊNJ܊݊ފBC\]^efj.*+56֎׎؎+1FGcd¹ܮܻjU0J%0JjU6 jU j6UCJOJQJ^JaJjU jU CJOJQJjCJOJQJUCJOJQJ@̏͏Ώ^d'(,789:UVxyΑڑۑ-=̒͒Β@M“͓̓+,٪迷j0J%CJU0J%CJjB*UphCJOJQJjCJOJQJUjB*Uph B*phjB*Uph CJOJQJ jU jU0J?()?@   12K\]rv˽系0J%0Jj5U5j6B*Uph 6B*phj6B*Uph6j.U0JjU jU jUD4ѭ vҲ δ1ĸ2 F & Fhdd^h2dd F$$ & FbddddF$ & Fhdd^hıűhiҲ   )*HI)*z̴ʹδص/01aķŷٷڷ¸øĸٸڸQRq0J%CJOJQJ0J%j5U0JjU50JjRU jU jUKqrsιϹй&'RScdij̻ͻ-.34ʾ˾ɿʿ !ʼ沺ʤ沺0J%j6B*Uphj5U5j^6B*Uph 6B*phj6B*Uph6jU jU0J jUj^U?!$dd F & Ffdddd F$ & Fddd F$$ & Fddd$$dd$dd2dd F$ & Fbdd2$dd F$$ & FbddF$ & Fhdd^h !:;UV34  (-:  -./ABCZ[]^|}~ӽޯӽj6U6j6U0J6j6U j6U0J%660J jU50JjU jUEvV|}~$xxxxdd F & FUdd5$$dd/045STUcdexy89WXYghi|}<=qr 56|\]vwy <=򾷩j]U jU jUj6B*Uph 6B*phj6B*Uphj+6Uj6U0J6j%6U j6U6j6U6:G\+v%5$dddd F & FTdd F$$ & FTdd5$$dd @5dddddd=>DEGHefglmop   456<=?@]^_deij j6U6 0J%CJaJj1UjUj=UjUjGUjUjQUjU0J jUB%&':;@A_`aopq+    wު޲ު޲0JCJOJQJjCJOJQJU CJOJQJ jU 0J%CJaJj+6Uj6U0J6 j6Uj6U6B   !#&'67;JKLfg{|./23BC[\ j6U6jB*Uph B*phjB*Uph jU0JCJOJQJjCJOJQJU CJOJQJ0Jj0JUA=jmhF$$ & F  0dd^`0  dd^ F$ & F6dd hdd^h & F5 hdd^ F$$ & F6dd$$dddd @5dd5$$dd23EFG[\jk^hk{| ,.>@TVjlp|}0Jj>*U>*6 CJOJQJ0JjB*Uph B*phjB*Uph0Jj9U jU jUF#$%&45FQ\]int+:;LWbdu +6CDP[ghj0JU60J CJOJQJj>*U0JW&'2>?abcuvw   !ABCQRShitطj0JUjCJOJQJU j0JU0JjGUjU CJOJQJ0JjAU jU0JCJOJQJ jU>*?HSTXcdeMPQy)*:;BCmnAMNRż jUjAB*Uph B*phjB*Uph0J%j0J%U0J%6>*65>*0Jj0JU0JCJOJQJjCJOJQJU CJOJQJ:!;qw0> F & Ftdd2dd F$$ & Ftdd$$5dd5$$dd @ F & Fdd F$$ & F6ddR^_`}Q\]almn  R]^bmno·ʮjU0J%j0J%U0JjeU jU0J0J% jUjB*Uph B*phjB*Uphj0JU0J@')fqz{56XYijmnqxy}89IJTUw쿽ե쿽򲽲jUjB*Uph jU0Jj0JUjB*Uph B*phjB*UphjU0J0J jUjwU>./\ijn{|}#$%89de%&67:;>JKO[\]deop24RUdeKL60Jj0JU0JjB*Uph B*phjB*Uphj2UjU0JjU jU0J%j0J%U0J% jU;>rb  h   ?yZv5$dd$dd2$5$$ & F F$ & Fdd F & Fdd2 F$$ & Fdd5$$$2dd F$ & FtddLZ[htuy@LMQ]^_     V a j k        % & H I Y Z ] ^ b i j n ѾѾjB*Uph B*phjB*UphjVU0JjUjHU jU0J%j0J%U0J%0Jj0JU0J jU00000 1 1)1*1:1;1>1?1f1g111jB*UphjB*Uph6 jUjB*Uph B*phjB*UphK)9*+9+5-.#0?01133H6j649N9;$<>~???BFdd2$dd 2$dd^2$dd-$$dd2dd0$$dd1111111112222<2=2V2W2333333333333344J4U4]4^444I5J5e5f5g5z5{55555555 6 6/606@6A6D6E6R6S6h6i6666jB*Uphj&UjU jUCJOJQJjCJOJQJU CJOJQJ jUjB*Uph B*phB666666666 7777K7L777778898:8;8N8O88888888889999 9 9 99 92939:9;9L9M9j9w9x9}999999999: ::7:8::;;;;jUjJUjUj<U jU CJOJQJ jUjCJOJQJUCJOJQJG;0;1;b;c;~;;;;;;;;;;;;; < <"<#<?<L<M<Q<^<_<`<|<}<<<<<<<=======> >:>;>V>W>X>k>l>>>>>>>>>?͹jB*UphjUjvUCJOJQJj0JU0J jUjB*Uph B*phjB*Uphj`U jU=????????mAnAAAAAAAAAAAAAAA\B]BsBtB;CFCGCWCXC2D3DHDIDrD}D~DDDEEFFFFFLFMFqFrFsFFFFFFFFFʿʿj!B*Uph B*phjB*UphjU0JjU jUCJOJQJjCJOJQJU CJOJQJj0JU0J jU=FFFFF\G]GrGsGPH[HHXIYIgIhIIIIIIIIIIIJJ&JKKKKKlLmLLLLLLLLLLLLMM;M_E_F_jUjUjUjUjiUjU jU0Jj[U jUH]]]C^H^I^^^^^^^?_D_E__H`T<T $dd$Ifa$ dd$If $dd$IfK$$IfTH40g4 Ha$$dd$Ifa$F_g_h_i_z_{_|_______________ ` ` ````-`.`5`6`U`V`W`f`g`h`|`}`````````````````aaa/a0a1aHaIaPaQarasaケj&UjU0Jj0JUjUjUjUjU jU0J jUjUB______/`4`5`~``````JaOaPaaH$<`T dd$IfK$$IfTH40g4 Ha $dd$Ifa$sataaaaaaaaaaaaaabb!b"bQbRbSbrbsbtbbbbbbbbbbbbbbbccc+c,c-cBcCcJcKcncocpccccccccccccccccccddj~U0Jj0JUjUjrUjUjJUjU jU0J jUFaaab b!bbbbbbbDcIcJccccd`H< dd$IfK$$IfTH40g4 Ha $dd$Ifa$dd dadfdgdddd'e,e-eeeeeee?fxxP dd$IfK$$IfTH40g4 Ha $dd$Ifa$d d d.d/d0dDdEdFd_d`dgdhdddddddddddddd e e e%e&e-e.ePeQeRegeheieeeeeeeeeeeeeeef f f f!f"f=f>fEfFfofpfqffffffffj9 UjUj'UjUjUjU jU0JjU jUH?fDfEffffg g gegjgkggggtPh$$dd$Ifa$ $dd$If dd$IfK$$IfTH40g4 Ha $dd$Ifa$fffffffgg g g2g3g4gHgIgJgcgdgkglgggggggggggggggghhhhh@hAhBhRhShWhghhhihjhshthhhhhhhhhhhhjB*Uphjs#U0Jj"U0Jj0JUja"Uj!UjS!U jU0J jUj U?ghhhmhrhshhhhJiOiPiiiiiih88K$$IfTH40g4 Ha$$$dd$Ifa$ $$dd$Ifhiii*i+i-i.iHiIiPiQioipiqiiiiiiiiiiiiiiii j j#j$j&j'j9jYjZjxjyjzjjjjjjjjjjjjjjjjjjkkkkοӿοӿαοӿοӿαj&Uj%U5 mHnHuj%U jUj$U jUjB*Uph0JjB*Uphj$B*Uph B*ph>iij7j8j9jRjXj$$$dd$Ifa$dd4$dda$ 5$$$dda$K$$IfTH40g4 HaXjYjjjjjjj6k7kdkskykk0<ttt$$dd$Ifa$ $$dda$dd 4$$dda$$$$dd$Ifa$ $$dd$IfD$$IfTH0S  `4 Ha k6k7kdkkkkkkkkkkkkkkkklllll7l8lRlSlTl^l_l`lolpllllllllllllllllmmmmmBmCmcmdmemumvmwmmmmmmmmj)Uj)Uj(Uj(Uj'Uj'U jU0Jj&U jU56 mHnHuDkkkkkkP0Y$$IfTH4F C_ T     4 Ha$$dd$Ifa$ $dd$IfZ$$IfTH44F C_ T     4 Hakl"l6l7lqlvl~llllllm X $dd$IfY$$IfTH4F C_ T     4 Ha$$dd$Ifa$ $dd$If m#mAmBmmmmmmmnnenjnrnsnn\8Y$$IfTH4F C_ T     4 Ha $dd$If$$dd$Ifa$mmmmmmnnnMnNnOncndnsntnnnnnnnnnnnnnnnnnoooooLoMoNoaobosotooooooooooooooooppp p p p!p2p0Jj0JUjw,Uj+Uj+Uj+Uj*Uj*U jU jU0JFnnnno ooocohorosooooo"ppX8Y$$IfTH4F C_ T     4 Ha $dd$If$$dd$Ifa$"p'p1p2p~pppppppp4q9qMqNqqpDY$$IfTH4F C_ T     4 Ha $dd$If$$dd$Ifa$2p3pSpTpUpepfpgp|p}pppppppppppppqqqqqq2q3qNqOquqvqwqqqqqqqqqqqqqqrrrr3r4r5rFrGrHr^r_r~rrrrrrrrrrrrsj0Uj/Uj/Uj.Uj-Uj-U jU0Jj,U jUHqqqqrrrr`rer}r~rrrrrPY$$IfTH4F C_ T     4 Ha $dd$If$$dd$Ifa$sss#s$s%s=s>sPsQsmsnsos{s|s}sssssssssssssssttt0t1t2tHtItmtnttttttttttttttttt u uuu;uwawbwcwvwwwxwwwwwwwwwwwwwxx(x)x*x:x;xUj>Uj=Uj=Uj<Uj<U jU0Jj;U jUH9|||||||||1}6}A}B}}}}}DhY$$IfTH4F C_ T     4 Ha $dd$Ifa$ dd$If}}}}}}}}~~+~,~-~@~A~B~Z~[~l~m~~~~~~~~~~~~~~~~~ !DEFYZ[st   '(:;]j;BUjAUj-AUj@Uj1@Uj?U jU0J jUj%?UF}}}~~\~a~k~l~~~~~  \tY$$IfTH4F C_ T     4 Ha $dd$Ifa$ dd$If uz).9:,Y$$IfTH4F C_ T     4 Ha $dd$Ifa$ dd$If]^_qrsπЀр 789IJK`arsځہ)*+?@deՂւ*+:;YjEUjgEUjDUjODUjCUj9CU jU0J jUjBUF bgqr܁AFcdpY$$IfTH4F C_ T     4 Ha $dd$Ifa$ dd$IfdԂՂ,19:XLY$$IfTH4F C_ T     4 Ha $dd$Ifa$ dd$IfYZ[lmnʃ˃̃ڃۃ܃ !"012EFRStuv̄̈́΄ڄۄ܄%&'789NOwxƅDžׅ؅jkIUjHUjmHUjGUjmGUjFU jU0J jUjsFUFGLQRPUvwlTY$$IfTH4F C_ T     4 Ha $dd$Ifa$ dd$Ifwȅͅօׅ"'01|܆hhxY$$IfTH4F C_ T     4 Ha$$dd$Ifa$ $dd$If    !12STUdefz{†ÆĆچۆ"#$;<=LMrst҇Ӈԇ߇Ǻ̯Ǔ̯jLB*UphjKU B*phjB*UphjwKB*Uph B*phjB*UphjJUjqJU jU0J jUjIU:=BKLW\ef<Y$$IfTH4F C_ T     4 Ha$$dd$Ifa$ $dd$If()*<=>UVfgƈLj-.MNO\]^pq}~Չ։ഥӥഥӥjOB*UphjOU jUjNU jUj NB*UphjMB*UphjB*Uph0JjMB*UphjB*Uph B*ph8fňƈ %,-rw|}׉܉@LY$$IfTH4F C_ T     4 Ha$$dd$Ifa$ $dd$If()56\]^rstŠÊҊӊ,-.BCOPlmnxyzɋʋˋߋϞϞj"RU jUjQUj*QB*Uph0Jj0JUjPU jUjPB*Uph B*phjB*UphjB*Uph0J:*/45DINOhXY$$IfTH4F C_ T     4 Ha$$dd$Ifa$ $dd$IfO9>HIX~n~t~n~$$$dd$Ifa$ $$dd$IfY$$IfTH4F C_ T     4 Ha$$dd$Ifa$ $dd$If  !56IJqrsی܌݌!"DEFVWYZop|}ʍˍ׍؍'0J B*phj0JUjDUB*Uph B*phjB*UphjTUj>TUjSUj$SU jU0J jUjRU;I !qv{|̍э֍llY$$IfTH4F C_ T     4 Ha$$$dd$Ifa$ $$dd$If֍׍-29:~ώ֎ێDD}n}$$dd$Ifa$ $dd$If$$$dd$Ifa$ $$dd$IfY$$IfTH4F C_ T     4 Ha '()*:;YZ[hij|}͎Ύ/FGHdefrstǏȏɏ܏ݏ   /0>?\jWUjԐِTLLL$$$dd$Ifa$ $$dd$If_$$IfTH4F O6    4 Ha\]^klmҐӐ%&78VWXfgh{|̑͑ۑܑ    ./LMN[\]opj,[UjZUj0ZUjYUj4YUjXU jU0J jUj:XUFِ',67}ΑӑڑLuPu@u$$$dd$Ifa$ $$dd$If_$$IfTH4F O6    4 Ha $$dd$If ڑۑ!&-.qvƒ̒͒LL0L $dd$Ifa$ dd$If_$$IfTH4F O6    4 Ha͒Β !=>?KLM^_no“  ;<=IJK\]opݔj^Uj^Uj]Uj]Uj\Uj$\U jU0J jUj[UF `emn ^8LtD $dd$Ifa$_$$IfTH4F O6    4 Ha dd$If^cnoQVabDDD_$$IfTH4F O6    4 Ha dd$If $dd$Ifa$ݔޔߔ./0<=>OPbc•Õ   !HIYZ_`de  ĿĿj,bUjaUjaB*Uph B*phjB*Uphj`Uj`Uj_U jU0J jUj_U@b•cxkx $dd$Ifa$ dd$If_$$IfTH4F O6    4 Ha$$$dd$Ifa$ $$dd$Ifcd $dd$Ifa$ dd$If_$$IfTH4F O 6    4 Ha38@Ad5$a$ $dd$Ifa$ dd$If_$$IfTH4F O6    4 Ha12ABfgh|}ɗʗ˗ۗܗ&'=>@ArsޘޚߚBCYZjkrjcB*Uph B*phjB*Uph66 mHnHu0JB*phj0JUj0cU0JjbU jU jU>\]rޚB cԡ $$$dd$Ifa$dd5$$dd5dd @44$a$rtu /0AC/1ѠҠӠڠܠݠ()*134acd}~ԡա klöî̶ږ}56j*e6B*Uph 6B*phj6B*Uph0J%B*CJOJQJphjdUj0J%CJOJQJU0J%CJOJQJ mHnHuj0dU0J% jU jUjB*UphB*mHnHphu1   "#'.126=@A(8<<< $$dd$IfY$$IfTH4F ^    4 HaAELOPV^cd΢Psss$$$dd$Ifa$ 4$$$dda$ 4$$dda$Y$$IfTH4F ^    4 Ha $$dd$If ϢYZpqstNOwxyȥɥʥ٥ڥ )*+678HISTqrsjgUjfU jU0Jj$fU6j6U6B*mHnHphujeB*UphjB*Uph B*ph0J%CJOJQJ5 mHnHu jU8΢ϢѢӢآ٢ܢ  (8DL< $$dd$IfY$$IfTH4F> T^(    4 Ha &,-18;<AKQRL<XY$$IfTH4F> T^(    4 Ha $$dd$IfRɣۣy$$$dd$Ifa$ 5$$$dda$5$$dd5dddd @dd4$dda$ ۥ tt$$$dd$Ifa$ $$dd$Ifm$$IfTH44\ %#?  4 Ha  JOQRS||p||p|| $dd$Ifa$ dd$Ifl$$IfTH4\ %#?  4 HasͦΦϦܦݦަ  )*+89:LMghçħ =>?LMN`a{|רبjjUjjUjiUjiUjhUjhUjgU jU jU0JH  NSUfg§ç p||p||p| $dd$Ifa$l$$IfTH4\ %#?  4 Ha dd$If  bgiz{èŨ֨ר|p|p|pl$$IfTH4\ %#?  4 Ha dd$If $dd$Ifa$34PQR^_`qr˩̩  '(BCDNOP_`jkȪɪʪԪժ֪ *+,;jmUjUmUjlUjglUjkUjwkU0JjjU jU jUH!23sxzͩҩԩ|h|h|l$$IfTH4\ %#?  4 Ha dd$If $dd$Ifa$#%&'afhij| | l$$IfTH4\ %#?  4 Ha $dd$Ifa$ dd$If=BDEF}X|| |||| $dd$Ifa$ dd$Ifl$$IfTH4\ %#?  4 Ha;<FG`abklm{|īūϫЫ)*+456DEOPijktuvʬˬլ֬  j qUjpUjpUjoUj3oUjnU0JjCnU jU jUHƫ˫ͫΫϫ  FK$||||| $dd$Ifa$l$$IfTH4\ %#?  4 Ha dd$IfKMNO̬ѬӬԬլ |||l$$IfTH4\ %#?  4 Ha dd$If $dd$Ifa$ LQSTU||<|l$$IfTH4\ %#?  4 Ha dd$If $dd$Ifa$/01:;<JKUVopqz{ɭʭ˭٭ڭ !"<=>HIJYZdeˮ̮jNtUjsUjRsUjrUjjrU0Jj0JUjqU jU0JjqU jUBۭ ![`bc|| l$$IfTH4\ %#?  4 Ha $dd$Ifa$ dd$Ifcdʮˮ   BGI|||||| $dd$Ifa$ dd$Ifl$$IfTH4\ %#?  4 Ha  %&'012@AKLfghrsïįůӯԯޯ߯89RST]^_mn°̰jwUjvUj$vUjuU0Jj0JUj8uUjtU jU0J jUFIJKկگܯݯޯL||||h| $dd$Ifa$l$$IfTH4\ %#?  4 Ha dd$If78otvðȰʰ˰̰|\||l$$IfTH4\ %#?  4 Ha dd$If $dd$Ifa$̰Ͱ  "#$,-.;<FG_`aijkxyٱڱ۱$%&56TUqrs}~j9zUjyUjOyUjxUjixUjwU jU0JjwU jUH =BDEFz|||l$$IfTH4\ %#?  4 Ha dd$If $dd$Ifa$7||o $$dd$Ifl$$IfTH4\ %#?  4 Ha $dd$Ifa$ dd$If 7<>ײܲ޲߲v l$$IfTH4\ %#?  4 Ha $$dd$If$$$dd$Ifa$IJŲƲղֲ#$./IJKUVWfgȳɳ/01<=>NOYZuvwȴɴjz}Uj}Uj|Uj|Uj{Uj'{U jU0J jUjzUF߲%*,-$vvl__l $dd$Ifa$ dd$If$$$dd$Ifa$ $$dd$Ifl$$IfTH4\ %#?  4 Ha -.hmodzh|| $dd$Ifa$ dd$Ifl$$IfTH4\ %#?  4 Hadzȳ   || $dd$Ifa$ dd$Ifl$$IfTH4\ %#?  4 Ha  PUWX$|||| $dd$Ifa$ dd$Ifl$$IfTH4\ %#?  4 Ha XYvv$$$dd$Ifa$ $$dd$Ifl$$IfTH4\ %#?  4 Ha/01<=>NObc~ŵƵǵѵҵӵ'()9:STopq|}~Ŷƶ+,LjǀUjNUjUj^Uj~Ujl~U jU0J jUj}UFPUWXvv$$$dd$Ifa$ $$dd$Ifl$$IfTH4\ %#?  4 HaXY^_`ab$vv l__l $dd$Ifa$ dd$If$$$dd$Ifa$ $$dd$Ifl$$IfTH4\ %#?  4 Ha P|| $dd$Ifa$ dd$Ifl$$IfTH4\ %#?  4 Ha;@BRSĶŶ T|||||| $dd$Ifa$ dd$Ifl$$IfTH4\ %#?  4 Ha *+w|~KP||||| $dd$Ifa$l$$IfTH4\ %#?  4 Ha dd$IfLMN^_`uv·ӷԷշ./09:;IJTUƸǸ"#@ABMNO_`~ĹŹjDUj˃UjRUjUjHUjÁU jU0J jUj@UFPRST¸ĸŸƸ  !"a||p|pl$$IfTH4\ %#?  4 Ha dd$If $dd$Ifa$afh}~ƹ˹͹INPQR|||l$$IfTH4\ %#?  4 Ha dd$If $dd$Ifa$*+,GHRSyz{׺غٺ01WXYmn;<=JKL^_hijUjnUjUj^Uj݅U0Jj0JUjRU jU0J jUjÄUBR/0vv@l$$IfTH4\ %#?  4 Ha$$$dd$Ifa$ $$dd$If `efghpvv0vv0$$$dd$Ifa$l$$IfTH4\ %#?  4 Ha $$dd$If Լռ#$56klOPab  #$&pq9:Z[\jklj݉U5j`U0JjUjdB*Uph B*phjB*Uph mHnHu jU jUFͼ  "xvja_YSdddd4$dda$ 5$$$dda$l$$IfTH4\ %#?  4 Ha $$dd$If$$$dd$Ifa$ xMy'E2898z $$dd$IfN$$IfTH440k S64 Ha$$$dd$Ifa$5$$dd @5dddd +01sxy0x~ ~$~` $dd$Ifa$ dd$If$$$dd$Ifa$ $$dd$IfL$$IfTH40k S64 Ha)*12PQR^_`qryz:;<KLMabijjfUjUj^UjUjfUjۊU jU0Jj\U jUHchi',-8<x, dd$IfL$$IfTH40k S64 Ha $dd$Ifa$  %&-.UVWlm"#567>?defyz%&';<UVj-UjUjUjUj U0Jj0JUjU jU0J jUjUB8=>X]^t~~0$$$dd$Ifa$ $$dd$If dd$IfL$$IfTH40k S64 Ha $dd$Ifa$VW^_{|} !"56]^tuwx+,?@GIJMkljU5 B*phj%U mHnHujU jUj/U0JB*phj0JU0JjU jUB7<=VLMdj0dd4$a$$a$L$$IfTH40k S64 Ha$$$dd$Ifa$ $$dd$If jk!"8{k{k{k{k$$$dd$Ifa$ $$dd$Ifw$$IfTl0O  t0644 la "#MNOghi 789UVde{|~   &'JKR B*phjB*Uph0Jj0JUjoU mHnHujޕUjOUjU0Jj+U jU jU@W\]WXio{kb`[[kk$$4$dda$$$$dd$Ifa$ $$dd$Ifw$$IfTl0O  t0644 la RTUXpq !"/0BCDYZmn;<=PQRjklmߨ߰jcU mHnHu jUjUjoU0Jj0JU0JjU jU5 B*phjB*UphB*mHnHphu?opEJKot8{k{k,{k{k$$$dd$Ifa$ $$dd$Ifw$$IfTl0  t0644 la tu{kfd_Vk5$$dd @4$a$$$$dd$Ifa$ $$dd$Ifw$$IfTl0  t0644 la #$%567LMTUz{|&')*ѿѿѿѧѿjU mHnHujuUjU jU0JjiU jU5B*mHnHphujB*UphjB*Uph B*ph9NSTDEPt\|vdd4$dda$ $dd$Ifa$ dd$If $$dd$IfF$$IfTH40H  `4 Ha$$$dd$Ifa$ EV?TZ[<A<Hw $dd$Ifa$ dd$If $$dd$IfF$$IfTH40@ ( `4 Ha$$$dd$Ifa$5$$dd @   <=?[\xyz#$%:;IJ`acd{1ɾɾɾɨɨɾjyU mHnHujUjuU0JjU jU5 jUB*mHnHphujB*Uph B*phj}B*Uph=AB{xL`F$$IfTH40  `4 Ha$$$dd$Ifa$5$$dd @4$dda$F$$IfTH40@ ( `4 Ha12BCJLMOPuvx)*+EFMNxyzɾɾɾɨɾГЗ0Jj0JUj$U mHnHujUjU0JjyU jU5 jUB*mHnHphujB*Uph B*phjB*Uph:GLMTe`a5$dd @5 4$$$dda$F$$IfTH40  `4 Ha$$$dd$Ifa$ $$dd$If!"#56WX  &'(^`a0JB*phj0JB*Uphj4U0Jj0JU0JjUj B*Uph jUB*mHnHphujB*Uph B*phjB*Uph jU4aou $dd$Ifa$$IfTH44F{ 6    4 Ha$$dd$Ifa$a012?@BCUVab567FGH\]jkjUj4UjUj*UjUj8U jU0JjU jU5GW^`a <|T $dd$Ifa$ dd$If_$$IfTH4F{ 6    4 Ha`gijhTddX dd$If_$$IfTH4F{ 6    4 Ha $dd$Ifa$=>?OPQfgrs/01<=>NOZ[z{| B*phjB*UphjUj>UjçUjBUjU jU0Jj:U jU@hoqrPWYZL0$D dd$If_$$IfTH4F{ 6    4 Ha $dd$Ifa$Z   NUWX,0{ $$dd$If_$$IfTH4F{ 6    4 Ha $dd$Ifa$ dd$If  +,-89:JKXYwxy,-.9:;MNYZuvwjUj<UjUj2U0JjU jU jUjB*Uph B*phj4B*Uph>  OVXY,(P $$dd$If_$$IfTH4F{ 6    4 Ha$$$dd$Ifa$'()=>HIghixyz$%ABCOPQbcjk )*BCYZj魠jB*Uph B*phjUjU mHnHuj$UjU jU jU0JjB*Uphj*B*Uph??FGHDDv 5$$$dda$_$$IfTH4F{ 6    4 Ha$$$dd$Ifa$ $$dd$If bx|$| $$dd$IfF$$IfTH40U  `4 Ha$$$dd$Ifa$5$$dd5dd @ 4$$dda$jkrtuxy =>?LMN`ahi"#9:<=֭j<U mHnHujUj,UjU0Jj$U jU5 jUB*mHnHphu B*phjB*UphAbghYZw<|5$$dd @dd 4$$$dda$ $$dd$IfF$$IfTH40U  `4 Ha$$$dd$Ifa$45EFMOPST)*12NOP\]^opwxɾɾɾɾɾj:UjUjDUjDzU0JjLU jU5 jUB*mHnHphujϱB*Uph B*phjB*Uph>+01qvw  L$((4$dda$$$$dd$Ifa$ $$dd$IfF$$IfTH40 ~f `4 Ha)*,- 456NOqrs ;<=]^ѹjUj4UjU5B*mHnHphuj0B*Uph B*phjB*Uph0JjU mHnHu jU jU>LMZ6GMN_de`0 $$dd$IfF$$IfTH40  `4 Ha$$$dd$Ifa$5$$dd @^ef<=cdestu345EFG\]deɼɱjhUjU5B*mHnHphujhB*Uph B*phjB*UphjݷU mHnHu jU0JjLU jU> 5$$dd @dd 4$$$dda$F$$IfTH40  `4 Ha$$$dd$Ifa$^cd)/HH~5$$dd @$dd 4$$dda$$$$dd$Ifa$ $$dd$IfD$$IfTH0X  `4 Ha >?@PQRgh01MNO[\]novwXghl{ѹ0J%j0J%U0J%jfUjU5B*mHnHphujnB*Uph B*phjB*Uph jU0JjU mHnHu jU;/0puvG|p 5$$ & F*dd5$$dd @dd 4$$$dda$$$$dd$Ifa$ $$dd$IfF$$IfTH40 `4 Ha {|})*+DE9DMNrst +,<=@ADK˹jzB*Uph B*phjB*UphjUjlU jU0JjU jUjCJOJQJU CJOJQJ0Jj0JU0Jj0J%U7GDKkZ%%F^ 5$$ & F+dd 5 & F+dd @5dd 5$$ & F*dd 5 & F*dd2ddKLPW_qryz HInyz~!"PQSwxyjUj U0JjU jU0J%j0J%U0J% CJOJQJj B*Uph B*phjB*Uph jU OJQJCJOJQJjCJOJQJU3"#PR+,PQRef/0RScdgh  ./0ZejgB*UphjUjEU0JjU jU0J%j0J%U0J% jU CJOJQJjB*Uph B*phj/B*Uph6efjuvwyz\] "#GR"#]^w OJQJCJOJQJ CJOJQJjB*Uph B*phjB*UphjU0JjU jU0JjU jU0JjCJOJQJU8wxy IJnopMNpq0JjCJOJQJUjDB*Uph B*phjB*UphjUj"U0JjU0J%j0J%U0J% jU CJOJQJ jUjU6XYuv#$(456  $%pqB*mHnHphujPB*UphjB*Uph B*phjB*Uph0Jj0JU0JCJOJQJjCJOJQJU CJOJQJ jU;^Vbhi  $$dd$IfG$$IfTH440 dL `4 Ha$$$dd$Ifa$5$$dd5dd "#TUVij%&':;<TU\]|}~#$%789PQXYjZUjUjTUjUjFU0JjU jU5 jUjB*UphEV[\RWXTl<T` $dd$Ifa$ dd$IfF$$IfTH40 dL `4 Ha?@AXYZvw~"#$=>?]_lmtu@A B*ph mHnHujUjUjUjUjpU jU0J jUjUEx}~nstl8$$$dd$Ifa$ $$dd$If $dd$Ifa$ dd$IfF$$IfTH40 dL `4 Ha  wLlK$$IfTH40U @ `4 Ha]$$$dd$Ifa$$$dd4$dda$F$$IfTH40 dL `4 HaABXYijqstwx    < = > P Q R i j q r                 - . 7 8 V W X f g h { ɾɾɾɾɾjUjCUjUj5U0JjU jU5 jUB*mHnHphuj/B*Uph B*phjB*Uph>   k p q    1 6 7 }     ``00K$$IfTH40U @ `4 Ha]$$$dd$Ifa$ $$dd$If{ |                        ! ; <                   ! 2 3 4 J K R S s t u        ʽʲj[UjU5B*mHnHphujYB*Uph B*phjB*UphjU mHnHu0JjQU jU jU?   2 D D    $$$dd$Ifa$5$$dd @4$dda$$a$K$$IfTH40U @ `4 Ha]  L Q R     Z_`THl4$dda$$$$dd$Ifa$ $$dd$IfF$$IfTH40 + `4 Ha         )*+>?@XY`a@ABUV&DEop B*phjB*Uph CJOJQJjUjU0J%jU mHnHujUjkU jU0J jUjU>(p|$$$dd$Ifa$5dd5$$dd @ ()9:ACDFGnop &'(567IJjkjUj(UjU0Jj$U jU5 jUB*mHnHphujB*UphjB*Uph B*phj*B*Uph<|ueeuu$$$dd$Ifa$ $$dd$If}$$IfH4r8 Q$ c4 HaKOXhijvffvvX\O $dd$Ifa$ dd$If$$$dd$Ifa$ $$dd$If{$$IfHr8 Q$ c4 Ha GIll`{$$IfHr8 Q$ c4 Ha dd$If $dd$Ifa$  !"012EFYZ}~12UVWjkl$%LMNefg)jXUjUj8UjUj&UjU jU0JjU jUHINWXYll{$$IfHr8 Q$ c4 Ha dd$If $dd$Ifa$ !/01ll{$$IfHr8 Q$ c4 Ha dd$If $dd$Ifa$ #$ll{$$IfHr8 Q$ c4 Ha dd$If $dd$Ifa$ VX]opqll{$$IfHr8 Q$ c4 Ha dd$If $dd$Ifa$ )*+<=>TUqr   "#$>?JKopqCDE\]^z{  7j UjxUjUjnUjUj`U jU0J jUjUF@BGHIJll{$$IfHr8 Q$ c4 Ha dd$If $dd$Ifa$  |~ll{$$IfHr8 Q$ c4 Ha dd$If $dd$Ifa$ ~   tvll{$$IfHr8 Q$ c4 Ha dd$If $dd$Ifa$ 789RSTrs !78STWXYwxEFG_`a~()*jUj]UjUjEU0Jj0JUjUj+U jU0J jUjUBv{y{ll{$$IfHr8 Q$ c4 Ha dd$If $dd$Ifa$ { ll{$$IfHr8 Q$ c4 Ha dd$If $dd$Ifa$ []ll{$$IfHr8 Q$ c4 Ha dd$If $dd$Ifa$ *>?CWXYZst*+67UVWefgz{#$=>NOUV  % & [ jB*Uph B*phjB*Uph mHnHujuU jUjUjmU jU0JB*ph0Jj0JU0J>]bjrs,.ll@{$$IfHr8 Q$ c4 Ha dd$If $dd$Ifa$ .3456|~l@lc4$dda${$$IfHr8 Q$ c4 Ha dd$If $dd$Ifa$ = ^! "&"$&'()+5++,,$$$dd$Ifa$ 5$ & F7dd2dd 5 & F7dd 5 & FNdd5$$dd5dd$$dd @[ \       4!5!F!G!!!!!!""""k"x"y"}""""""""""""""""""""""""""""#######!#+#,#-#/#=#>#B#P#Q#R#T#c#d#h#w#x#y#{##0J0J%j0J%U0J%jmB*Uph B*phjB*Uph jUN#######################$$$H$I$j$k$$$$$$$$%%%%%&&&J&K&L&_&`&'''''''())))))))+++ B*phjB*UphjU6jUjqU0JjU jU jU0J0Jj0JUB++++++++,,,&,',E,F,P,Q,q,r,|,},,,,,,,,,,,1-2-E-F-----....F.G.T.U.0001 1 1~2222222222222222οɴɴjU0JjU0J mHnHu jU jU5B*mHnHphujB*Uph B*phjB*UphD,,(,?,@,R,k,l,~,,,,,,--!- @4$dda$ $$dd$If$$$dd$Ifa$F$$IfTH403\ 4 Ha!--./S11~223h334O4449555"6p667]778}88(95^5$$ & F5 & F52223333738393L3M3e3f3g3h3i333333333333333333444$4%4&46474L4M4N4O4P4t4u4v4444444444444444445jUjUjUjUj U0Jj0JU0JjU jU jUC555"5#565758595:5\5]5^5n5o55555555555555555556 66 6!6"6#6E6F6G6W6X6m6n6o6p6q666666666666667777777<7jUj&UjUj UjUjU0Jj0JU0J jUjUF<7=7>7I7J7Z7[7\7]7^777777777777777788888>8?8@8Z8[8z8{8|8}8~88888888888888 99%9&9'9(9)9N9O9P9c9d9|9}9~9999jnUjUj^UjUj>UjU0Jj0JU0J jUj8UF(999:]:::D;;;(<p<<=N===5>z>>+?|??@~@@AA2^5^999999999999999 : ::::2:3:4:D:E:Z:[:\:]:^:::::::::::::::::::::;;;+;,;A;B;C;D;E;f;g;h;w;x;;;򻹻jUj|U jUjUjxUjUj|U0Jj0JU0J jUjUB;;;;;;;;;;;;;;;;;<<%<&<'<(<)<I<J<K<Y<Z<m<n<o<p<q<<<<<<<<<<<<<<<<====='=(=)=7=8=K=L=M=N=O=u=v=w=====jUjUjUjUjUjU0Jj0JU0JjU jUF==============>>>!>">2>3>4>5>6>U>V>W>d>e>w>x>y>z>{>>>>>>>>>>>>>>??(?)?*?+?,?O?P?Q?b?c?y?z?{?|?}????????j!UjUjUjUj UjU0Jj0JU0JjU jUF???????@@@@@@@C@D@E@]@^@{@|@}@~@@@@@@@@@@@@@@@AAAAAAAGAHAIAcAdAAAAEEEEEEEEEEEEFFFjU jUjWUjUj=UjUj'U0Jj0JU0JjU jUBABBhDFuKKMNQQRMSSTUV2WWX#YYYZx[\n]5 & F5 & F5$55 & F5$ & F2^F F!F"F3F4F6F7FWFXFYFgFhFiF|F}FFFFFFFFFFFFFGGG#G$G%G=G>G@GAGhGiGjGGGGGGGGGGGGGGHHHH=H>H?HXHYHZHxHyH~HHHHHHHjUjUjaUjUjKUjUjOU jU jU0JHHHHHHHIIIIIII I$I%ICIDIEIQIRISIdIeIwIxIIIIIIIIIJJJJJJJJJJKKKKKK=L>LBLLLMLNLLLLLLLMMMMMM$O%OJOKOLO_O`OaOyOzOj U0Jjw Uj Uj U0Jj U jU jUMzOOOOOOOOOPPQQQQQQRRR;Sk[k\k]kjkkkok|k}k~kkkkk j0JU0JB*phj0JUjUj&UjUj*UjU jU0J jUjU>kkkkkkkkkkkkkk lll%l&l'l(lBlClDlNlOlPl_l`lalblllllllllllllllllll mm$m%m&m*m+m,m-mNmOmPm_m`mamumvmwmjUjUj*UjUj0UjU jU jU0J j0JUj"B*UphBwmxmmmmmmmmmmmmmmmmmmnnnnnnn:n;n?@Afgh}~ "#$%ABCOPQbcdej<Ujz<Uj;Ujp;Uj:Ujn:U jU0J jUj9UF567ABCRSTUstuǁȁɁځہ܁݁    "#BCDSTUijklj@Uj @Uj?Uj?Uj>Uj=U jU0J jUjt=UF؂قڂ"#$%ABCMNO^_`aȃɃʃۃ܃݃ܿjCUjjCUjBUjvBUj BUjB*UphjAB*Uph B*phjB*Uph jU0J jUj AU;>?ڍۍ~q~~p~ $$dd$Ifv$$IfTH407044 la dd$If -./CDEFhijz{|΄τЄ $%&'DEFSTUghijŅƅDžօׅ؅ոjFUjpFUjEUjB*Uphj|EB*Uph B*phjB*UphjDUjpDU jU jU0J?؅=>?RSTlmno߆    012CDE[\]^LJ漟jB*UphjIB*Uph B*phjB*UphjfIUjHUj\HUjGU0JjhGU jU jU>LJȇɇׇ؇ه'(,>?@ABC]^_ijkz{|}  )*+567jLUjfLUjKUjrKU0JB*ph B*phj0JUjJB*Uph B*phjB*Uph jU0J jUjlJU97FGHIijk{|}׉؉ى'()<=?@bcdvwxߊ456GHI_`abjnPUjOUjzOUjNUjtNUjMU0JjbMU jU jUHҋӋԋ ,-.?@AB\]^hijyz{|ȌɌʌˌjtSUjRUjxRUjQU0JB*ph B*phj0JUjvQB*Uph B*phjB*Uph jU0J jUjPU9   +,-:;<NOPQrstƍǍȍ׍؍ۍ܍:;OPfghlmnoǎȎɎʎ@jVUjfVUjUUjjUUjTUjnTU0JjSU jU jUHۍO s \rDrrrv$$IfTH407044 la dd$If $dd$If @ABQRSghij؏ُڏ"#$456KLMNmno~Ȑɐʐ  789:[j~ZUjZUjYUjXUjXUjWU jU0J jUj|WUF[\]nopבّؑڑ%&'(BCDNOP_`abƒǒȒגԷj]U0JB*phj0JUj ]Uj\UjB*Uphj\B*Uph B*phjB*Uphj[U jU0J jUj[U7גْؒ*+,-EFGHijk|}~Гѓғӓ !BCDUVWmnstjaUj`Uj`Uj_Uj_Uj^Uj ^B*Uph0J j0JU jU jUCǔȔɔߔ0123MNOYZ[jklmҕӕԕ   !"&'()NOPefg̖͖jzdUjcUjcUjbUjbUj bUjaU jU jU0JH͖Ζϖ=>?MNObcdeӗԗ՗()*;<=STUVpqr|}~ИјҘӘjhUjgUjgUj~fUjeUj~eU jU0JjdU jUHӘ  !"<=>HIJYZ[\|}~љҙә ./04567\]^stuĚŚƚݚޚߚ j0JUjkUjjUjjUjiUj|iUjiU jU0J jUjhUD./01TUVijkԛ՛֛כ    !"CDEVWXnopqjnUjnUjB*UphjmB*Uph B*phjB*UphjmUjlU jU jU0J j0JUj lB*Uph:ќҜӜݜޜߜ1234QRS`abtuvwٝڝ۝456CDEWX\]stuyz{|jrUjqUj qUjpUjpUjoU jU0Jj#oU jUFԞ՞֞מ456CDEWX[\ƟǟΟϟ&'(@ABCfghyz{jvUjuUjuUjtUj tUjsUjsU jU0J jUjrUD\Z[ΟV~ r~l~t~ $dd$Ifv$$IfTH407044 la dd$If ѠҠӠԠ   +,-:;<NOPQrstʡˡ̡!"#$BCDPQRcdefjyUj yUjxUjxUjwUjwUjvU jU0J jUH΢ϢТ#$%9:;TUVWuvwУѣң  345HIJbcde̤ͤΤϤj }Uj|Uj|Uj{Uj{UjzU0JjzU jU jUG,-.89:IJKLlmn~åĥťޥߥ 345JKLfghiۦܦݦ&jUj9UjUjUj~Uj~U jU0J jUj}UF { Up~~~~ ~~ dd$Ifv$$IfTH407044 la &'(789MNOPrstΧϧЧ&'()EFGSTUfghįܿjUj?Uj‚UjCUjB*UphjB*Uph B*phjB*Uph jU0J jUj?U<̨ͨΨߨ&'(:;<=Z[\ijk}~̩ͩΩϩABCXYZtu{|jUj?UjUj9UjUj7UjU jU0J jUj5UDӪԪժ&'(>?@A[\]ghixyz{߫  +,-9:;LMUVlmnrstuͬjUjUj1UjUj/UjUj3U jU0J jUHͬάϬЬ !=>?KLM^_`a{|}ǭȭɭۭܭݭޭ*+,-JKLYZ[mnqrǮȮѮjUjUjUjUjUj)U0JjU jU jUHpqѮ" || dd$Ifx$$IfTH4P07044 laѮҮ-./IJKLopqɯʯ˯ݯޯ߯    :;<FGHWXYZxyzjUjUjUjUjU jUjU0Jj%U jUEȰɰʰܰݰް߰    #$ABCPQRdest˱̱ͱ  1234RSTbcdwxyzjUjzUjUjnUjUjUj U jU0J jUjUD"#srsõ߹?@|rteeT rrLr $$dd$If dd$If $dd$Ifv$$IfTH407044 la ²ò JKLfghֳ׳سٳ'()*IJKXYZlmnoƴǴȴմjUj%UjUj#UjUjUjzU jU0J jUHմִ״#$%&FGHXYZopstõĵڵ۵ܵ5678YZ[lmnնֶ׶j UjUjUjUjUjU0JjU jU jUH׶ض   =>?LMN`abcɷʷ˷ڷ۷ܷݷ    !"#ABCOPQbcdeŸjvUjUj|UjUjUj U jU0JjU jUHŸƸǸԸոٸ%&'(@ABCcdeuvw¹ùĹعٹ߹?@AVW[pqrjhUjUj|UjU jUjpB*Uph j0JU0JB*phj0JU0J jUjU?rstuɺʺ˺̺567ABFPQRSTUrstʻ˻̻    !";<?@VjzUjUjzU0Jyj0JUjUj~U jU0JjU jUBVWX\]^_ѼҼӼ-./DEKLbcdhijkݽ޽߽#$%/0jjUjUjdUjUjvUjU jUjpU0J jUjUD?Kؾپ0@~~~~l r $dd$Ifv$$IfTH407044 la dd$If 01@ABCbcdqrs־׾پھ)*01RSTcdeyz{|ǿȿɿʿ != B*phjB*UphjnUjUjjUjUj^U0JjU jU jUB=>?IJKZ[\]z{|%&>?@AabcstujUjnUjUjbUjU jUjnU jUjB*Uph0JjB*UphjB*Uph>   !"#$IJK`ab|}~$%&234EFGHhijz{|"jUjUjvUjUj|UjUjrU jU0J jUH"#$3456TUVdefyz{|#$%456JKLMmno}~)*+jUjUj UjUj UjU0JjU jU jUH+CDEFghixyz3456RST^_`opqrǺ̯0JB*phj0JUjUjB*Uphj)B*Uph B*phjB*UphjUjU0JjU jU jU9567UVde{|}1234UVWfgh|}~jUj+UjUj!UjUj)UjU jU0J jUjUDdtu5Y~~ ~~(~~ ~~l~ dd$Ifv$$IfTH407044 la   %&'(MNObcd|}~9:;EFGVWXYvwx j9UjUjEUjUjIUjĿUj;U jU0J jUH  %&'(HIJZ[\qruv)*+,MNO^_`tuvw8 B*phjB*Uphj]UjUjYUjUjCU0JjU jU jUC89:DEFUVWXuvw./56WXYhij~jUj]UjUjQUjU jUj]U jUjB*Uph0JjB*UphjB*Uph>   #$%&BCDNOP_`ab-.2NOPQYZpqrvwxyjoU0JB*phj0JUjUj]UjUjB*UphjiB*Uph B*phjB*Uph jU jU0J9 ABCSTUijkl -./ABCD`abjUjoUjUjoUjU0JB*phj0JUjkU jU0J jUjU@blmn}~345OPQRuvw&'(=>?@`abpqrjiUjUjeUjUjOUjUjcU jU jU0JH   %&'(IJK\]^tuvw#$%678NOPQnop}~jUjsUjUjwUjUjiU jU0JjU jUH@ABTUVmntu   +,-89=HIJK桼0JB*phj0JUjB*Uph B*phjB*UphjwUjUjoUjU jU0J jUjuU<tab!"78 ~ ~~Xrr~H+ $dd$Ifv$$IfTH407044 la dd$If KLMrst#$%&BCDNOP_`bc̴ߴ̴ߴ̴ߴߋ jUjgUjB*UphjsB*UphjB*UphjB*UphjB*Uph0JB*phj0JU0JjsU jU B*ph6  :;<=`abuvw)*+,LMN\]^qrstjUjsUjUjoUjU jUjYU0J jUjUD567HIJ`abc   ./01RSTefg}~jUjUj}UjUjUjU jU0J jUjsUF "#HIJ_`a{|*+,?@AYZ[\}~jUjUjUjUjUjUjU jU0J jUjUD%&':;<=\]^mno)*+,OPQbcdz{|},j$UjUj0UjUj&UjUjU jU0J jUH,-.BCDEjkl   459:[\]nop"#$%HIJ]^_wxyjUj&UjUj6UjUj.U0JjU jU jUHyzCDE]^_|}~@ABQRSghij?jB*UphjB*Uph B*phjB*Uphj`UjUjHUjU jU0Jj<U jU>+,-@ABCcdeuvw6ܿjUjfUjUjdUjB*UphjB*Uph B*phjB*Uph jU0J jUjfU<678JKOabcdef   ()*456EFGHnopȹȹȹ颕銷jB*UphjzB*Uph B*phjUj`U jUjU jU0JB*ph B*phj0JU0JjB*Uphj^B*Uph4   '()*HIJVWXijkl#$%234FGHIfghuvwjUjUjUjzUjUjU jU0J jUjUF-./0QRSdef|}~'()9:;PQRSstujUjUjUj UjUjU jU0J jUjzUF  /01EFG`auv()*BCDEfghwxyjUj1UjUj'UjUj/UjU jU0J jUj UD  u89c_`~~~~~~~~ dd$Ifv$$IfTH407044 la #$%&HIJZ[\qrst $%&123CDEFklm"j9UjUj+UjUj7UjUj3U jU0J jUH"#$:;<=^_`qrs /01EFG`abc}~   jUj9UjUj7UjUjCU0JjU jU jUH 569:`abxyz CDEXYZrstu789IJK`abcj[ Uj UjQ Uj Uj; Uj U0JjA U jU jUH ,-.?@AWXYZtuv   !"#DEFWXYopqrjUjkUjUjqUj Ujg U jU0J jUj UF!"#89=RSTUcdz{|0123TUVefg{|juUjUj_UjU0Jj0JUjgUjU jU0J jUjmUB|}~ !"#DEFWXYopqr)*+=>?@abjB*Uph B*phjB*UphjUj UjUjUjyU jU0JjU jU@bcrst456FGH]^`a012HIJKej UjUjUj}UjU jUjU jUjB*Uph0JjB*UphBefgqrs345TUVz{&'(>?@A[\jUjUjUjUjUjUjU jU0J jUjUDP0I  N rrdrrlv$$IfTH407044 la dd$If $dd$If \]ghixyz{012IJPQghimnop ./0CDE]jq!Uj Ujm Uj Uj{UjUjU jU0J jUH]^_`}~()01GHIMNOPuvw   +,-.Lj$Uji$Uj#Ujq#Uj"Ujw"U0Jj!U jU jUGLMNZ[\mnop&'(;<IJ`abfghi:;j(UjM(Uj'UjU'Uj&UjY&Uj%U jU0J jUja%UD;<KLMabcd *+,=>?UVWX{|}      # $ % & G H I Z ja,Uj+Ujm+Uj*Ujc*Uj)UjW)U jU0J jUHZ [ \ r s t u                     # $ % 5 6 7 L M N O o p q                         : ; < Q R S m n o j/Ujo/Uj.Ujk.Uj-Uj]-U0Jj,U jU jUHN    !"12~(r~~@~r $dd$Ifv$$IfTH407044 la dd$If o p                     2 3 4 D E I Y Z [ \ ] ^ ~                       ) * + C D E F g j2Ujs2Uj1U0JB*phj0JUjq1Uj0U jU0Jjg0U jU@g h i z { |                  =>?LMN`abc&'(9:;QRSTtj6Uj5Uj{5Uj4Uj4Uj4U jU0J jUj}3UFtuv./04567\]^stu   "#LMNefgj:Uj":Uj9Uj"9Uj8Uj*8Uj7U jU0J jUj 7UD /023RSTcdeyz ,-.ABC[\]^j>B*Uph B*phjB*Uphj=Uj=Uj<Uj<Uj;U jUj;U0J jU@/01GHIJmno)*+,PQRj.AB*Uphj@Uj.@B*Uph B*phj?Uj$?U jUj>U jUjB*Uph0JjB*Uph=Rdei{|}~,-.@ABC`abopqj.DUjCUj(CUjBUj4BU jUjAU jUjB*Uph0J B*phj0JU0J?'()*DEFPQRabcd@ABUVWopqrjGUj GUjFUj,FUjEUj*EU0JjDU jU jUH p || dd$Ifx$$IfTH407044 la<=>JK[\`abwxyz   123FGH`ahij8KUjJUj@JUjIUj:IUjHU jU0Jj0JU0Jj2HU jUB  hBCJK!!!!~~ ~~ ~~uodd4$dda$ dd$Ifv$$IfTH407044 la 5689Z[\mno"#$./0?@CDhij~ !"jNUj>NUjMUj&?&O&P&T&g&h&l&&&&&&&&& '''&'a'b's't''''''''''''''((-(.((عع jU0Jj0JUCJOJQJ0JjCJOJQJU CJOJQJ 5CJaJ mHnHu jUI(((((()))))D)E)W)X)^)i)))))))))**** */*0*6*A**********-+8++++++++++,,,---------...$.%.&./ľ mHnHu jU5CJOJQJjCJOJQJU0Jj0JU0J jU CJOJQJG, ,Y,,,----->-k-----.&.0.H.n.z.|...N/W/4$a$ & F v%p^EddddW/j////0Q0d0n0000001"1-191;1[111111 $$ & F v%p^$$4$a$ & F v%p^/0000000000111111111+2-2.2P2Q2R2333333344445555 5"5#5X5Y5y5z5555555556667и5CJCJOJQJjCJOJQJU CJOJQJB*mHnHphuj6WB*Uph B*phjB*Uph< jU5 mHnHu jU0J'<B*ph;11,2-2R2^2i2222223A3g3x3z333333 & F v%pdd^ & F v%p^dd4$dda$ $$ & F v%pdd^3/40414K444D666666666666667+7 $$$dda$  dd5dd u ddEddddRdd4$dda$7*7+7,7274757Z7[7\7|7777777777777 8 888:8;8<8N8O8P8g8h8n8p88888888888888888889 9909<9=9E9F9f9{9¼¼jXCJUj,XCJUCJ 0JCJj0JCJU0JCJjWCJU jCJUjCJU6CJCJ5CJ CJOJQJ@+7,7~777m8n8u8888888 9,HF$$IfTH408 @@ 4 Ha $$dd$If dd$If 9 9999<9=9i9j9k9i]PPP $$dd$If $$$dda$F$$IfTH408 @@ 4 Ha dd$IfF$$IfTH408 @@ 4 Ha k9p9q9r9~9999999H<=8 dd$IfddF$$IfTH408 @@ 4 Ha $$dd$If {9}9999999999 : : :#:$:%:&:E:F:G:V:W:X:l:m:n:o::::::::::::::::::::: ;;;;;;2;3;4;5;S;T;U;j[CJUj:[CJUjZCJUjDZCJUjYCJUCJjCJU0JCJj:YCJU jCJU CJOJQJ5CJCJ6CJ=== =!="=4=5=6=7=S=T=U=a=b=c=t=u=v=w===================>>>*>+>,>A>B>C>D>b>c>d>r>ٌٖقjaCJUj$aCJUj`CJU 0JCJaJ j&`B*CJUaJphB*CJaJphjB*CJUaJphj_CJUCJCJjCJU0JCJ jCJUj._CJU3===T?@@@@2A3A4A8BBBBBBB|p dd$IfY$$IfT4Fp @ p    4 ar>s>t>>>>>>>>>>>>>>>>>>>>>?? ? ?)?*?+?:?;?AAAAAAAABBB#B$B%B4B5B;BL?LALeLiLzL|LLLLLMMOO#P$P%P8P9PQPRPSPঝ0Jj0JU0JjjU566CJOJQJ CJOJQJj{jB*Uph jU mHnHu jUjB*UphB*mHnHphu B*phU?UUUVUcUdUeUfUUUUUUUUUUUUU/V0V>V?VYVZVrVsVVVVV6B*mHnHphujkB*Uph B*phjB*Uph CJOJQJ CJOJQJ jUKR9SSS T:TuTTT@UUUVAVVEWWWW-XlXXXY.YPYuY  dddd p$$ & F/ddVVVVVVW3W4WCWDWYWZWjWkWWWWWXXXXGXHX^X_XXXXXXXXXXX>Y?YNYOYaYbYrYsYYYYYYYYYZZZZZZZZZZZZZZ[['[([)[*[v\w\\\\\\\\\\\*]+]=]>]R]S]b]c]]]]]6 jU`uYYY)ZKZvZZZ[1[Y[~[[[3\X\Y\\\]?]m]]] ^L^^^^ $$ ]]]]] ^ ^^^3^4^C^D^_^`^o^p^^^^^^^__[_\_k_l_______``)`*`7`8`9`:`r`s```````````aaaa-a.aFaGaaaaaaaaaaabbbb,b-b=b>b\b]bvbwbbbbbbbcc4c5cScTc6 jU`^_L_~__````akab@bxbbbcUccccdTddddde.e`e Tcgchcucvcwcxcccccccccccdd3d4dRdSdfdgdtdudvdwdddddddddddeeee"e#e=e>eMeNeseteeeeeeeeegggghhhhhiiii iiimm6n2oooobpppq(s)s?ssstt@t{ttt $$ $$^$$dd v dd5dd3dd.dd-dd2dd-$$dd 5hdd^httttt.u:wyYyyz|}}}~L~M~~~~-  $$$$ .$ & F4dd.$$dd$$dd$dddd4$dda$ $$^uuuu u uuuuu.u2uuuuuuu!v-vvvvv:w>w}ww$y%y;y%~4~5~f~g~}~~~~~~~~~~~~~+,@APQ%&67FG_`opԀՀـ )*WXno"#BCUVjkz{  45KL0J6 jU^-h'P A|ȁɁ,WɂMڃ $$ Lmnruvw'(78tuDŽȄ%&56RSbc̅ͅ+,;<^_st!"89;<ABFIJKjoB*Uph B*phjB*Uph mHnHu jU6 jUPڃ]?ׅ>?FGuچghxL~{5v dd4$dda$ $$dd  $$ $%;<>?hj-.3467OPTdef}~ŒÌnj׌،ٌ;ԦܢܦԦܢܦԦܢܦԦܢܦ0Jj0JUjpB*UphjoB*Uph mHnHu jU0JCJaJ jUB*mHnHphujB*Uph B*ph@~ˆ݈A؉ hij67gڌ XV54$a${;<@UVWnos}~эҍ֍237ABC{|",-.OPT^_`PQUbcd0J0Jj0JU^VՎ5sڏۏ7eՐ֐.h\ƒǒ"Aoߓ4{$${DEISTUÑ͑Αϑ@AEVWXxy}’Z[_lmnʓ˓̓  ҔӔה•0J0Jj0JU^4mXq D]ٖ<=kҗefx u$ dd54$a${•͕̕Εwx|TUYhij 679:јҘ٘ۘܘ˛̛Λϛ(ǺǯB*mHnHphujpB*Uph B*phjB*Uph jU mHnHu jUCJaJ0Jj0JU0JEx/0}45_`TUUVW $$ $$dd5dd4$dda$ ^5$$dd()9:ACDkl؜ٜ&'<=LMopם؝ #$45DEɞʞٞڞ;<RS@ARSkl~ƠǠܠݠ$%EF jUB*mHnHphujB*Uph B*phjdd4$dda$  $$Fnoߡ&'OPpq*+:;TUfg78XYӤԤ-.STijBCTUyzǦȦצئ9:PQjk jUbkoҧӧ4;<RSUVĩũ̩Ωϩ348BCDstxذj0JUj6rB*Uph0JB*mHnHphujqB*Uph B*phjB*Uph mHnHu jU jU0JB>V34M\Ȫ%4m-@y4$a$5$$ u$ ddRSWjklث٫ݫ  ^_cvwx"345OPT^_`ɭʭέz{ѮҮӮ0Jj0JU0J^Ȭ6jATڮQϯ !fٰ%^αOb$$./3=>?GHLcdeŰưǰ  "#$EFJ[\]wx|ʲ˲ϲ߲ <=AKLM&'+<=>_`duv0J0Jj0JU^_ͳ ?xj"9:;<C $$= ^= 5$$5$$dd u$ dd4$a$vwŴƴʴԴմ̵ִ͵ѵ۵ܵݵ9ABXY[\-.578<|fgιϹ߹Լ jUOJQJB*mHnHphujrB*Uph B*phjB*Uph mHnHu jU0J0Jj0JUECM`v|̷-CV\o~׸ظHԹ  & F v%p^5dd 4$$$dda$ $$ & F v%p= ^= )*89YZijSTqrv/0¼ӼԼ j2tCJOJQJUCJOJQJjCJOJQJU0JCJOJQJjsCJOJQJU CJOJQJjCJOJQJU56B*mHnHphuj0sB*Uph B*phjB*Uph jU. OuvMXY:2M 5$$ & F?dd u$ dd$$  dd^dd4$dda$$$ xdd^5$$dd & F v%p^ "#$<=MTUklnoĽŽ̽νϽYHIpqrؿqjNvCJOJQJUjuCJOJQJU5B*mHnHphuj@uB*Uph B*phjB*Uph mHnHu jU CJOJQJCJOJQJjCJOJQJU0JCJOJQJjCJOJQJUjtCJOJQJU,ؿٿڿ@ABYZ():ABXY[\ 01ֺ֬柗0J jU mHnHu jUCJOJQJjCJOJQJUjxCJOJQJUjxCJOJQJUjpwCJOJQJU CJOJQJ0JCJOJQJjCJOJQJUjvCJOJQJU2d1qr0j$Q~ $$ & F v%ph^h5$$dd5$dd 5 & F@dd0dd 5 & F?dd!"89;</079:]ij "#ߺߑߺ߄ߺ5>*jzB*UphjKzB*UphCJOJQJjCJOJQJU CJOJQJB*mHnHphujyB*UphjyB*Uph B*phjB*Uph mHnHu jU jU2uv%*b -fdd$$dd $$ & F v%p^$^$dd5$$ddRdd4$dda$mn#+BC()*=>Z[|}~+,寽嘽劽jI|CJOJQJUj{CJOJQJU0JCJOJQJjE{CJOJQJUjCJOJQJU OJQJCJOJQJjCJOJQJU CJOJQJ5 5>*CJ mHnHu jU6,LMN^_vw123DE]^*+jCJOJQJUjaCJOJQJUj~CJOJQJUjW~CJOJQJUj}CJOJQJUjO}CJOJQJU0JCJOJQJjCJOJQJUj|CJOJQJU CJOJQJ/+,@A\]wxy   &'7>?UVXYj́B*Uph B*phjB*Uph mHnHu jUjUCJOJQJUjހCJOJQJU0JCJOJQJjgCJOJQJUjCJOJQJU CJOJQJCJOJQJjCJOJQJU/7O}OP $$ $$dd5$$dd u$ dd$$ & F p!d$$ p!hdd^hdd4$dda$$$ ^hdd^h#$36MNlm|123EFG^_wxʿʱʿʅvlv0JCJOJQJj0JCJOJQJUjЂCJOJQJUCJOJQJjCJOJQJU0JCJOJQJjICJOJQJUjCJOJQJU CJOJQJ5 5>*CJ6 jU B*phjB*UphB*mHnHphu*./BC`abopq/1DEghi{|tjCJOJQJUjeCJOJQJUCJH*OJQJjCJOJQJUjaCJOJQJUCJOJQJjCJOJQJUjCJOJQJU0JCJOJQJj]CJOJQJUjCJOJQJU CJOJQJ-)*56STUbcuw'(JKL^_jkдЬОАЂjCJOJQJUjCJOJQJUjCJOJQJUCJH*OJQJjCJOJQJUj}CJOJQJU CJOJQJCJOJQJjCJOJQJUjCJOJQJU0JCJOJQJ0)*56TUVdepq#$ֺ֬֞֐ւj8CJOJQJUjCJOJQJUj$CJOJQJUjCJOJQJUjCJOJQJUjCJOJQJU CJOJQJ0JCJOJQJjCJOJQJUjCJOJQJU.$%45EF`ablm}12HIYZacd\b<=[\ CJOJQJB*mHnHphuj&B*Uph B*phjB*Uph jU mHnHu jU0JCJOJQJjCJOJQJUjCJOJQJU CJOJQJCJOJQJjCJOJQJU2&'WYkm23~5$$dd5dddd4$dda$ $$c{Z  %W  $$ v$$ ddpdd5dd 5 & FMdd2dd 5$$ & FMdd\,-ST^_uv>?UVmn}~:;WXstjB*UphjB*Uph jUj B*UphB*mHnHphujB*Uph B*phjB*UphBY5p$Z^<{    $$34OP_`ABXYtu?@\]|}%&:;Z[jk45SThi"#BCUV67MN mHnHu jU jU] i69G)\j#R` Bdd4$dda$ dd $$N{|'(;<rsw56TU 23Z[qr !_`st;<OP?OPnojB*Uph B*phjB*Uph mHnHu jU0J jULBPVp9x=zVj|} $$?mj%2 t  O m {  $$5dd v dd4$dda$12BCJLMdeNOefvw~56LM]^eghjtu&jB*UphjB*Uph jUj B*Uph0Jj0JU0JjU jUjB*Uph B*phjB*UphB*mHnHphu7&'QRz{  =>OPhi  ! L M \ ] ' ( , 6 7 8         ) *        jU0Jj0JU0JjU jU jUS{     4 V     d    A c w        ' 1 5dd4$dda$ $$dd $$   < = L M           ) *        ` a           : ; M N         9 : M N } ~       ) * = >       0 1 i j { |   . / j k mHnHu jU jU]1 ?    ! T b    T b    D R      M 5 C  $$  E S  E Y k {  - G  C  [ ]      5dd v dd4$dda$ $$ * + > ? r s * + > ? y z    ! ( * + u v                    ~   jUjmU0JjUB*mHnHphujuB*Uph B*phjB*Uph mHnHu jU jUC                                      ( ) A B ^ _         % & 5 6                    CJOJQJ jUjB*UphB*mHnHphujB*Uph B*phjiB*UphJ a     M k y   ( F T o }    + b    2 r    9  $$    $ % H I [ \           0 1 P Q ` a         " # 7 8 W X g h         G H ^ _ a b      N O i j ! ! ! ! T! U! q! r! ! ! ! ! "" #" 6" 7" f" g" {" |" " mHnHu jU jU]9 x    ! 1 ? @        - #! 1! s! ! ! " =" pdd4$dda$ $$dd $$=" K" }" " " # G# H# # # # # # # $ $ $ $ $ % ]% ^% % ' 5$$`5$$4$a${^5u 4$dda$ $$dd $$" " " " ,# -# @# A# j# k# # # # # # # # # # $ % % % 6% 7% 9% :% % % % % % % % % % % & & & & & & +& ,& 0& :& ;& <& J& K& Q& R& g& h& l& {& |& }& & & & & & & & & & & ' 0J^J0Jj0JUB*mHnHphujcB*Uph B*phjB*Uph0J mHnHu jU jUE' ' ' ' ' ' b' c' g' x' y' z' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 0( 1( 5( L( M( N( ^( _( `( a( ( ( ( ( ( ( ( ( ( ( ) ) ) *) +) ,) ) ) ) ) ) ) 8* 9* =* N* O* P* `* a* e* o* p* q* * * * * * * * * * * * * * 0J^J0J0Jj0JU\' ( ) \+ + A, \, , , , - - 4- Z- [- o- q- - - . K. x. . . / =/ k/ {$$u$ 4$a$5$$5* * * * + + + + 1+ 2+ 6+ G+ H+ I+ + + + + + + + + + + + + + + + + + + + + + + + + + , , , , w, x, , , , , , , , , , , , , - - $- %- <- =- J- K- - - - - - ǺǯB*mHnHphujB*Uph B*phjB*Uph jU mHnHu jU0J^J0Jj0JU0JE- - - - - - - - . . . . 1. 2. F. G. `. a. e. u. v. w. . . . . . . . . . . . . . . . / / / &/ '/ ;/ 1 B1 L1 R1 U1 l1 m1 1 1 1 1 1 1 1 1 1 1 1 1 H2 I2 M2 ]2 ^2 _2 2 2 2 2 2 2 2 2 2 2 2 2 l3 m3 q3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 mHnHu jU60Jj0JU0JB*mHnHphuj]B*Uph B*phjB*UphH23 W3 3 3 3 3 .4 /4 @4 4 4 4 4 4 5 5 5 55 65 75 K5 M5 5 5 6 .6 n6 {$$u 4$a$$${$$ 4 C4 D4 L4 M4 W4 X4 m4 n4 4 4 4 4 4 4 4 4 4 4 l5 m5 q5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 H6 I6 M6 W6 X6 Y6 6 6 6 6 6 6 7 7 7 7 7 7 f7 m7 n7 7 7 7 7 7 7 7 7 8 8 <8 =8 CJaJ mHnHu jU0Jj0JU0JB*mHnHphujڗB*Uph B*phjB*Uph jUEn6 6 6 6 7 <7 f7 7 7 8 9 9 9 9 9 9 9 9 : /: 5: @: E: [: l: m: n: : : 5$5{4$a${$=8 B8 C8 ^8 a8 8 8 8 8 8 8 \9 ]9 e9 f9 q9 r9 9 9 9 9 9 9 9 9 9 : : : : : : : : : : : : ; ; $; B; C; D; ; ; ; ; ; ; ,< -< 1< @< A< B< < < < < < < < < < < < < = != %= C= D= E= = = = 0Jj0JUB*mHnHphujWB*Uph B*phjB*Uph jU0JL: : : E; e; ; ; ; < C< b< < < < < F= f= = = > ;> <> x> y> @ cA {A u$ 5$4$a${$= = = = = = = = = = <> C> D> Z> [> ]> ^> > > > > > > > > > > S? ]? ? ? ? ? ? ? f@ g@ s@ t@ @ @ *A 1A TA aA ~A A A A A A A A A A A A A A A B B &B 'B .B 0B 1B ̴̴̧̿jQB*UphB*mHnHphujԘB*Uph B*phjB*Uph jU mHnHu jU0Jj0JU0JB{A 2B 3B AB DB eB tB B B B B B B B B B B B 3C bC C C D 6D TD D D D D {$$5$$1B 2B C C C 0C 1C 2C GC HC LC VC WC XC C C C C C C C C C C C C D D D D D D }E ~E E E E E hF iF mF |F }F ~F F F F F F F F F G G G G G G [H \H `H ~H H H H H H I I I sI tI xI I I I &J 'J +J @J AJ BJ WL XL \L kL lL mL L L L mHnHu jU0Jj0JU0JZD E 7E bE E E E F %F SF F F F F F G G G 2G SG uG G G G G G G H 3H {$4$a${{$$3H H H H 1I KI I I I I J J J J J J K 7K K K K K L L @L BL {L L L L {${L L L L 7M >M ?M UM VM XM YM M M M M M M M M N N e Re e f f f (g g 5$$ & FGdd 5 & FGdd & F $$dd5$$dd5$$5$ddv  5 & FIdd5dd^ ^ ^ ^ ^ ^ ^ Z_ f_ ` a a a a a a b d d d d d d d d d d d d d d d d d d d d e e "e #e 3e 4e 9e :e =e >e Re e e e e e ½½½½½½½½½5jȚB*UphjKB*Uph B*phB*mHnHphujΙB*Uph B*phjB*Uph6j6U6 CJOJQJ jUjCJOJQJUCJOJQJ4e e e e f +f f f (g 4g ,h h h h i 3i 5i Xi Yi i i j j k k k "k 2k >k k k k k k l l l m 1o co do uo vo o o o o o o o o o o p p p p .p /p \p ]p rp sp p p p p p p q q 6q 7q 8q Kq Ǽ0JjEU jUj6UCJOJQJjCJOJQJU560J CJOJQJ jUJg g ,h h 5i 6i Xi j Ej Nj zj j k 2k k l m m n 5 & FHdd 5$$ & FHdd5$$dd dd55dd5 & FJ hdd^5$$ & FJ hdd^n Ln n 1o p p p q ls s u `v w w "w x (z *z Bz { ~{ { | r} {} v  dd5$dd55dd $$ddKq Lq Mq eq fq q q Wr Xr }r ~r r r r r r r r r s s s s t t 0t 1t 2t Et Ft Gt _t `t mt nt t t t t t t t t u u u u uv vv v v v v w w w "w $w %w Kw Lw Mw aw bw cw |w }w w w w w w w jUjiU5jUjWU0JjΛU0J jU jUHw w w w w w w !x "x #x 6x 7x Ox Px Qx Ux Vx {x |x }x x x x x x x x x x 7y 8y Py Qy hy iy y y *z Bz Fz Gz iz jz kz {z |z z z z 1{ <{ ={ M{ N{ \{ g{ | ?| J| K| [| \| Ҝj0J6U0J66CJOJQJjCJOJQJU CJOJQJjU5 jUjU0JjoU jU0Jj0JU=\| k| v| | | | | q} {} |} } } h~ s~ t~ ~ ~ ~ ~ ~ ~ B M \ g i w   ˀ ̀ Ӏ Ԁ ܀ ݀           L M c d t u öëÓjB*Uph mHnHu jUB*mHnHphujB*Uph B*phjB*Uph5jCJOJQJU CJOJQJ jUj6U0J66:{} ~  u ΁ ԁ ށ J K L Ղ ւ 5$$ $dd4$dda$ $$5$55$dd5$$ddu | ~  ς ӂ ~  ǃ ȃ ܃ ݃ n o & ' ( ) * + E F Dž ȅ ׅ ؅   † Æ ņ Ɔ   ' ( / 1 2 ۇ ܇ jB*Uph mHnHu jU6OJQJ^J CJOJQJ jUjB*UphB*mHnHphu B*phF   3 4 c # R G w ޅ 4 v ˇ  5$$dd $dd4$dda$ $ $$܇ ( ) 9 : V W o p ҈ ӈ @ A W X s t  - . = > b c r s  . / 0 C D \ ] ^ Ջ ֋ ދ ߋ    , - E F G l p 5 j6UjU0Jj0JU0Jj{U mHnHu jU jUL  ( ; q Ԉ # Y ى  D k l   8 9 W w 5$$dd5$$5dd4$dda$ $$ ̌ ͌      ) * @ A C D w x y Î Ď ֎ ׎ n o  ׏ ؏ G H [ \ n o Đ Ő ܐ ݐ _ ` v w CJOJQJB*mHnHphuj B*Uph jU mHnHujB*Uph B*phjB*Uph jUEw ʍ   ! " w x % & W X - $$dddd4$dda$ $$dd $$  B x L ˒  a b ֓ b ͔  T U D \   $$ 0 1 J K j k z {   : ; Q R ԓ Փ  + , ? @ Ɣ ǔ 0 1 D E ە ܕ   ! } ~ – Ė Ŗ   & ' ɾB*CJOJQJphjB*Uph B*phjB*Uph CJOJQJ mHnHu jU jUK g h ϗ З  < o ֘  W י , f g < U  $$5$$dd4$dda$ $$dd' . 0 1 x y ͗ Η   # $ : ; V W f g   6 7 H I Ǚ ș     њ Қ    ] ^ t u w x ϛ Л    jB*Uph mHnHu jUOJQJ jUjB*UphB*mHnHphu B*phKU V    A S   / 0 f ̞  Z ʟ   $$5$$dd dd4$dda$ $$dd G o ϝ Н     - . K L d e | } ʞ ˞ ! " 5 6 D E W X y z ȟ ɟ ! " 8 9 T U d e Ҡ Ӡ F G c d  jUB*mHnHphujB*Uph B*phjB*Uph CJOJQJ mHnHu jUJʟ ޟ  : r  t ɡ    n o B C M ( F W ֧ V z { u dd5$55dd4$dda$   6 7 9 : m բ ֢ ע B M N x y ţ ƣ ǣ ȣ    3 4 M N O i j ̰̣װ̙jB*Uph B*phjB*UphjB*UphjB*Uph B*phjB*Uph B*ph50Jj0JU0JjU mHnHu jU jU0 Ť Ƥ Ǥ Ӥ Ԥ ( . / 3 4 5 6 F = I J [ ] k l V e f j w x y  ÿ渫0Jj0JU0J6B*phj6B*Uph 6B*ph0Jj0JU0JjB*UphjB*Uph B*phjB*UphB*mHnHphu9 7 U   & . ? G Y k } ƭ ڭ  3 J T {$$5$$v$ 5{ 9 : S T d e h i | ë ī ׫ ث     / 0 4 5 b c ۬ ܬ     e l m ! " 8 mHnHu jUB*mHnHphujB*UphjB*Uph jU0J0Jj B*Uph B*phjB*Uphj0JU8T \ e V W ޯ 3 7 o Ͱ 3 ] - x ϲ  9 r {{$5$54$a${${$$8 9 I J Q S T W i j n ~  į ׯ د ٯ     ! + , - R S W l m n ǰ Ȱ ɰ    - . / H I M Z [ \ s t x 0Jj0JU0JB*mHnHphujB*Uph B*phjB*UphN ڱ ۱ ߱     S T X r s t Dz Ȳ ɲ  $ 3 4 5 O P T ^ _ ` ճ ֳ ڳ      V W [ e f g o v w S mHnHu jU0J0Jj0JUWr  D o Ǵ ȴ ҵ ӵ  " c m Ķ  : o } ܷ ; S {$$5$$54$a${S T m n ~  ŵ Ƶ ͵ ϵ е ӵ   F G K ` a b Z [ _ l m n  ( ) * p q u  ¸ Ƹ ָ ׸ ظ 0Jj0JU0JB*mHnHphuj{B*UphjB*Uph B*phjB*UphI ٸ 3 ^ ǹ % m z ݺ  b  ޻ / B ~ ϼ Լ - . 54$a${$$     O P T d e f     = > B L M N ˻ ̻ ͻ    " # $ e f j w x y ȼ ɼ ʼ Լ ۼ ܼ A B O P " # 9 : ̿jB*Uph B*phjB*Uph jU mHnHu jU0Jj0JU0JK: J K R T U X j k o  ž ؾ پ ھ    " , - . O P T e f g | } ¿    ' ( ) C D H U V W n o s } ~  0Jj0JU0JB*mHnHphujB*Uph B*phS W X ߾ 4 8 h ǿ . X * u  Q X {$${5      P Q U o p q       7 8 < K L M l m q    * + / B C D m n r       1 2 6 0J0Jj0JU^  T  C x  P  / d  P 2 e {${{$$6 @ A B z {        , - 1 ; < = ^ _ c r s t * + / I J K o p t    ' ( ) J K O ^ _ `  0Jj0JU0J^    - . 2 < = > l m q    / 0 1 L M Q _ ` a { |    " # $ S T Y j l m      0Jj0JU0J j0JU[ 6 q ! % Q > B t  : e 54$a${$${ 9 : > N O P h i m | } ~      * + , Y Z ^ q r s   " 7 8 9 N O S ] ^ _ T U c d jU mHnHu jU0Jj0JU0JW = > ] ^ b r s t E F J Y Z [     m n r  T U ιιιιιιιιι0Jj0JU0J6CJOJQJ60J mHnHujB*UphjuB*Uph B*phjB*UphF > y  ' m % G  7 p ~  B {{$5$$a$U Y c d e  h i m | } ~ 3 4 8 H I J % & * 4 5 6  $ > ? @ ( ) - 7 8 9 = > B O P Q 0Jj0JU0J^ Q ^  M y Q i  : L {  Y b {${  (  Q _ * K b t   / d r 2 J { N O S f g h 5 6 : D E F O P T a b c    w x | 0 1 5 E F G 0Jj0JU0J^ L h * w U z  B ]  + u  ! {${ P Q U d e f 0 1 5 ? @ A & ' + 5 6 7      P Q U _ ` a F G K U V W       R S W d e f + , 0 A B C 0J0Jj0JU^! b } " / k t  H `   H I y {$5$ 54$a${$${   $ % {   * + ; < C E F I ^ _ c v w x    ! % / 0 1 i j n | } ~ ̴̿B*mHnHphujoB*Uph B*phjB*Uph jU mHnHu jU0Jj0JU0JG  S 3 4 > p q { / ( Px 4 <X !!t"(#{ / ( Px 4 <X !!t"(#5v 4$a${     " # B C j k    + , 0 1 4 l s t   ! "    $ % i j r s   < ) * С6CJOJQJjCJOJQJU CJOJQJ mHnHu jU0JjiB*Uph jUB*mHnHphujB*Uph B*phjB*Uph;  ' ( 2 l qqq{ / ( Px 4 <X !!t"(#{ 2 ( Px 4 <X !!t"(#{ / ( Px 4 <X !!t"(#{$$ / ( Px 4 <X !!t"(#{$$ / ( Px 4 <X !!t"(# ) * = R ] ^ d ~  $ { / ( Px 4 <X !!t"(#{ / ( Px 4 <X !!t"(#{ 2 ( Px 4 <X !!t"(#$ > ? N [ \ j w x {$ / ( Px 4 <X !!t"(#{ / ( Px 4 <X !!t"(#   ( 8 9 @ _ ` f l m 0 Q 5dd v dd u dd54$a${ / ( Px 4 <X !!t"(#{$ / ( Px 4 <X !!t"(#a$ < ?  5v  v dd5$$dd v$ dd5dd* P Q R f g h   . / R S u v ! / 0 b c v w  - . A B d o t      V W k l        $ % & ӻ0Jj0JU0JB*mHnHphujqB*Uph B*phjB*Uph\6 jU0J jUjUC     - y     $$Ifa$$If5ddEdddd5  & ( * , - Q S U b\SSSb\SS $$Ifa$$If$$IfTl\u5$ t0644 la & - ; < O P Q X d e v w x                          & ' ; < = D S T h i j q ~                          ' ( ) E t ) * G 6 jU mHnHu jU0Jj0JU0JSU W X x z | ~    YSYS$If$$IfTl\u5$ t0644 la $$Ifa$           YSYS$If$$IfTl\u5$ t0644 la $$Ifa$           YSY$If$$IfTl\u5$ t0644 la $$Ifa$  = ? A C D j l n p S$$IfTl\u5$ t0644 la $$Ifa$$If p q         b\SSSb\SS $$Ifa$$If$$IfTl\u5$ t0644 la          YSYN4$a$$If$$IfTl\u5$ t0644 la $$Ifa$  '   E t       ) Z [     e f  n pddp$dda$ 5 & F ^ 5ddG H I X Y R R 6R 7R 8R TR UR _ _ _ _ _ _ _ 0` 7` ` ` Fa Ma c c $c 'c e e e e e f f f f g g ig lg h h i i j j j j k k 'm *m +m 4m 7m 8m xm {m |m m m m m n n n n o o Eo Ho =p ºººº]mHnHu6]mHnHuOJQJmHnHu6mHnHu mHnHu5CJ jU0J jUjUIn    F  ?   #  q r  ! N" O" f" $ u% @& ' N) #* $* 5* + p$$dd{pdd+ - V. . . K/ 0 0 0 ~2 =4 #5 5 @6 6 6 .8 k8 9 ; < < < D> ? Y@ A pdd p$$ & FRdd p & FRddA A A C D D 8D E 5F G G G G J K K K L >N ?N O O P P Q WR PU QU RU p$dd{pddRU bU cU 'X (X pX X X Y Y Z Z Z Z [ [ \ ] ] ^ ^ _ _ _ _ _ _ pdd^p$ddpdd{{$_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 0` <` r` ` ` Fa Ra a a a X  W  .^`$@&a$ddpdda b Nb sb b b b c >c Vc nc c c c c c c c d 5d Vd md |d d d d d d -e X  W  -e 5e Qe ve e e e e e f f *f ;f Yf tf f f f f f g 2g Wg g g g g g g X  W  g h h 0h Dh Qh ih h h h h h h h i 4i Gi _i ~i i i i j j 4j Ij lj j j W  X  j j j k 0k Xk tk k k l l m m +m 8m Om om |m m m m m m m n 7n Kn nn n X  W  n n n n o 8o _o uo o o o o o o p p 1p Sp mp p p p p p q &q ?q Rq oq X  W  =p @p r r Kt Nt #u &u lu ou u u Dv Gv Hv v v w w w ,w 0w >w Bw Pw Tw bw   j m s u ȧ ɧ ¸ ø Ǹ H Z һ ջ   ) , x { Y \ s v  j m B*mHnHphu\mHnHu5\mHnHu]mHnHu6]mHnHu mHnHu6mHnHuNoq q q q q q r %r Cr _r vr r r r r r s /s Es [s ys s s s s s t *t t X  W  t t t t t u 9u Ru hu u u u v v ;v Hv hv v v v v w w 0w Bw Tw fw w x W  X  x x x my y ,z Rz zz z z J{ e{ { j| | | | } +} Z} } } } Y~ ~ ~   - W  - [ Ӏ /  B ǂ  I u σ K w „ ; ^ p 0 j ҆ " W  " e w D h 9 ^  - ] y ߌ  5 ( ]  g ͏ W   " I  4 c ˒ B s ۓ  < O u Ք  4 V r W   ֕   ; X Ж  3 S f y  # B _  W   ( H f  ! 8 M b u Ț  & > V r ֛  - W  - L œ ݜ ; W ̝  $ < R מ   E ^ r W   ۟  2 J _ ~   Ҡ  ( ; W y ء  4 P q W   Ϣ ! F h ԣ  1 C [ s Ť  - J g } W   ե   , A c | ̦   ) ; X i |   ) W  ) ; L ^ p ٨  a | ĩ ۩   ( ; Y p ʪ W  ʪ R ѫ  3 e ׬  8 _ ޭ f Ү 7 Z ӯ  - W  -  O r P y ˲  |  i B e յ 1 ^ W  ^  % I r ѷ   5 K k y ݸ   2 H _ u X  W   ֹ 4 K i  ͺ  " ; U r   / Z w X  W   ּ  C Z t ǽ ֽ  - C { о $ @ T d X  W   ڿ  P i  1 J e  < I a n X  W  m n       Q Y w z    "   Z \ ] ` c d y |   3 6 U X y | % (   ) , R U $ ' r P T } OJQJmHnHu\mHnHu5\mHnHu6mHnHu6]mHnHu mHnHu]mHnHuN  ( ? N h  " 9 s  $ 0 F ` X  W    4 A J V ` j t    . K R a m  X  W   " B X w  * C b      X  W   * 4 ; F [ n & A ] t  + A W d W  X    5 K a z   : j  D _ x X  W   # , ; X {  ; Y  + = _ ~ X  W    ; o R e  V k  3 I X  W  I b h . P f + C V j + @ S X  W  }  # & ; > R U V Y S V     "       N \ ] c d g h q 0J,mHnHu0J, j0J,U5 jU]mHnHu6]mHnHu mHnHu6mHnHuOS d ~   = Q k  8 C m  Q X  W    5 F \ }  = b   : U l .^`X  W     N O P Q + !$*Q R S T U V W x y z {    ! " # $ % & I J K L + !$h]h+h]h++ !$*    3 5 : ; A B E F 9  " + , ? A J K a b z     8 ; H L CJaJCJ50J,B*mHnHphujB*Uph B*ph mHnHu jU0J,mHnHu j0J,U@L M N : ; < = *$a$*  65*$a$* , - > ? K L _ ` a n { | DC$Eƀ$a$ & F6    ( 8 9 I J K L .^`5DC$Eƀ8 0000&PP/ =!"#$%; 0 0000&PP/ =!"#$%8 0 000&PP/ =!"#$%5 0 00&PP/ =!"#$%6 00&PP/ =!"#$% P5 0 00&PP/ =!"#$%5 0 00&PP/ =!"#$%5 0 00&PP/ =!"#$%5 0 00&PP/ =!"#$%5 0 00&PP/ =!"#$%5 0 00&PP/ =!"#$%5 0 00&PP/ =!"#$%5 0 00&PP/ =!"#$%5 0 00&PP/ =!"#$%5 0 00&PP/ =!"#$%9 0 00&PP/ =!"#$% P5 0 00&PP/ =!"#$%2 00&PP/ =!"#$%5 0 00&PP/ =!"#$%5 0 00&PP/ =!"#$%5 0 00&PP/ =!"#$%5 0 00&PP/ =!"#$%5 0 00&PP/ =!"#$%9 0 00&PP/ =!"#$% P5 0 00&PP/ =!"#$% 0Dd M D  3 A"bq/܂7+T^^M/D{nE/܂7+T^^PNG  IHDR& )PLTEmI1TSQQ~um򋔣3GVj9Rd!VDf}zvAG| x i5eEP5%cVQ\k4{yyS,nq9Tm6Mwt㫕zqPrdˉkދvg|GkO-xb"'+v;a``uq-Zn̸x- ^p~W bi֖`4^~yO|Z^>|zcUr(3<\3Jqg(v@#,3{Y?9"ov~unifKFDq_k7{n㟬o~K&f϶^ 5*$T'c2S`=%`hq^yS0ohʍT4nσH6p/Rn_d t𭮯hH gp~vY3{rppe;k931k`0% e8T?tmxBawjH ^?>{pق?{>g50.-fR~Un}K^&oֲo:n }bKGDH cmPPJCmp0712Hs+IDATx^|{Xg70$2z( IJBVR@cX1z* C钢lI[&Z]Wվ|:tUܺ0=-s]*o>r_:;5IIN4&~<:IщDoG}ۉߤ0M4M?hלS=NА J NEo154@,?azt"d£ CR$B)r"[}dHL\hYx'R0,2WTaX{zzXp[y B` @G=R 2!+ZՌgYlLTۭtFHLOWʥ<HDS kiBH?-ʖlۤxRdRl+0i|[S24k9G5:VVsLv]GhuF0 5"Vuݬ8Fr1=/XP ס>^͒to1U$*/O&WqxjJl< P<Cg=C$Ri>f[,C1e"+Vn@(Gd6s#},-.nyQ& X%**h Te*սEFE^!Vx"n D/[lT݋m#ԵңA}T Q+V\14Ue (8Q'ɊYh `~UsVPKԝ3EauGBh@B ؐX|!E`Z@␬L"_%(!^MD>ŁUV*#^4ylV.| >Uotf]z "Mwf0my$-TzQy*BD|Zks`w5(,Ձzo>orRȀV`[qqP&>,cpux@wJ])LlOҜ< iP`XfVB|_L }`|tzAUQlVj%d*T^xi|?N-$e*\Bp$J^T(b`\6O>^VeiŅT;/i2%Ee@zfdj\Ht4|7iہm٫UO: Ă-e{b-ڄevb6'[B_^'Q|TZ0?i@}lNl=EDx ոvCT? 610Q}+2#C˿Pv3s&6d4˰nzŨ | ha}-f JУ٤T"Rgcb).Aǯ 'f *hb^M_Z\OuhP\3/gbur%E HaoAyT(Cێ;Λs[=ZvTt'.'FEiҲBH(7@o#kM$@&3W&ӁA2 Zcr2,~}^ɧF ƥ ׸f^,*VF^k 01_@ylm"q mz1NʎWh+Bm6&=@ Ab8)ga`Z9;EcI%tl؇i,Gޘdye,l6}as=o@BY@@M:'D1e#"!,x؜2.C&ifWg!s^@AkA<T Y*Eg50%ԋ4CrrpؙTG!CmO4*j:)CN>@O@ד+67y"B-=q D =J7F`_; )dUn!-`PwtAIUuVFGjqHд sѳI%c tr(B}{fPT%9Lq6D u ]6(MH b)>Z]W졋28h~nLLfSAvi!wbMvCMF]xmȑjeTf@sA N]M,oQHvN+w|SS+O@II TDM3[#(ǓP 7d|{>HߡPqz&rpMZ|8MvQ>>, P*ښz"5 N~ɥ%A tЏϡBvӬ؞uRP!H(*J4lAZA 5k^:RK—kU'sdAulmeG$.PV˶0n:ُ@QFKї*-O {p3d4M<$ut!As)?_[6LẗޅEC 9|:h[CϣPD&!G1S/aq\vj߂t9j"_HbX]rgڴ&.6hoTA}N]jq=BμίC'ݳʕ7yX\aC&>/"sb+;.0,$6!E K\fja,f;0I5 9ٻn2壍Olܗ2{dK0b/#GBfZN2CPP`:VC q]? y]!%G-{á?=xm"f޼I6n j%C_;tۡ:^ڝBMHX?$f>C*Ӡ{o R*TjeFid!Zc,/7??H{y=Q.s`!rG܄φfy{OMGz[y ŘJI֭C@ _] r 0e-CP6Cw]tK~f; -?]Wdɞ~eߟ1#?~'6wӷط#+~{`IrKABԑ 4xl|'[sH>W="(ٿ_x啟nӟw^ }g^xې=+>pɿ8ǡ=Pazw]2pQmaB.e t!FYm%2 ^wf }򩷘[u;R>_{?^yqo8oC<ĴGIp t*:33{c&S]f@\W]9i螷7w-^ tO|S~~˕7 l;@S׭9N / ^~Q Mcwf# ]Z\ SR؏^@KF͜9n#ħ% :11qUؖN$DU<=ȹEuN)|0#8r%e뽽WV:婧\YbgJ z.;mgEI}fN2EY6ȏ8K P ebfxϘ{{O*{./޼d%u|@IHBEjB&H%28_{K;ĪH:N̽w.֥><)gxէ }aS'&6l^mSd"0.չVfT,b Ɉ|E^ul4DTް)[AN2=<"|몔եեդ$%lg柩]>sfb Vhn$3Y:346HN(tM*0+ )b7!P"wU^}dWu xL}|o߭tY~)A~.Z EWhn) A㭷5Q&_P mkI2t ls. hpiX:ժAfNA_uƻzkkQdKPmTTfcl y+HrDj mAs%Sn_>оwv|>Z?zeihO>KETK!BMk^OYNQȬ1JG|s68x񳭟Tά\ hs=FPMkFDw) 9j!B8ATBVd@ƣ B*m tUrLuΣ 52f>2e(PYq-|ڟ>h%= EMP%$_}ӬYxdEuicU*΂Vhih7~7S MY֙3%N)ڂ$_G:laDLط,s=eBהS~@\:{=F,RYa֮G9hУE=x_(ˤ\>`|CZ-^┹kev~f嗻W,]9+-8@&AGS1^ߩeAJXڶb虧Ή'y3.:=eڈ!όaM9 AA2 h z'i6Kj'Q8۹w$Fʙ5$`{:sfxuܹ.a)IXIY<,C7Q&ѝI yjԽgtZvn/I9,]ڻ3= FkCĞȭJjj蚇xHӉ,yGUu@͙?Jς, FU*3τːMhdʮ׀_'ԢR ,r{!P^|Th J/Ʀ+X~,ߨ>YL!WL.JTǁir?ݟ0"S93b)KZrxgt!}k'-ZӲ$hCFZBWE l=@=r>0CH42OndDCCtpv8Lʪ.? _Z~1S,i6 4  +--.=!LJnnA((UN"r50fL.9UTC/[punF[VuY?%|}{x%Hͬ{{l ޼y͛ I8,\EcnNA#+#v\V3^parCy ^c^K;^%' "`Z#v7bگ(aO17o[29h!)#K jvLl,!Y(=vC!lgU/<D{iko5pivҲ_U''F|3fx/l|w=K/+a[7/sɒť!3bܨcL$˃(h>*#&dXC~uSsc͖-fomˎӧ]K^xҭ_ZD,l>)?974ya8[A,ja)ghT{PJQᨉ/Y\Z]]pa qGÑrFD$_y䅺ªGs`f8PnԸ ~ Ήc #%,s(!R5:rsBh|*g$ ;` ۾ K^7M`qm .wԇ6AbEL @0UHF8y62MCoa5!aV-cPY~` ~KC]wq0S3dZ j͂Œ Yw:B p`[K6.2=X.V~(?V?-5=Qq>mN}!;73 UL6҆S&ȪZ(-}da>2>1<"q$QmK<'c(F7 hQf[{4d]lkQB 8mŶK$,B14˖aUͦlPT#|<۔u*oN2P"Pꄁ)l[bmivYV&~kkkwn_\z`st#cHvճ;G %(Lm|kl9v&@ V)!MO 1\ʡoDS#x3GZ^U4|Wp]`?tzݳoK@o;(x@o٨$^yntVyr|~Y!RNvROs`r1^QAE z=v|*@PH ^/8{ETBDQL8}i?< =% l{X}}//MXm$ӗYؖPRM6EvTr]J,°p{|d(Ǹ^ /|6;o5]DW+|%7bI`#Ȕ$'n}5[AZ10HSۆ4iqvv@-r!YLNMO!*Cqs-/c_@pppXج?3@~?Pܹ . 8EeaK8p+t4Ure:ȉCA .)ruSF`vQ7Cgg| ‰s[3mګ)a>tÇ]1p1&|Lq=E43LV Rj&iI/12\(i?;%{553DParJjd:re@ M=K1Ha_m& 3Tsݸ eҲ4=ҧeC؏.PHyiaΑ,$/#^t^Q`Bo6Yub%>pF|?w_A:Bm"}ϯuA:(Lz9:nӬ= #- n$qzFZO;8-!P,I)5;`qc#wq7 K0F8ԡeHG,Xq 1Dy-̓M"&p{D3!ALe&{hlv7@'31r#퍒3d}җۼYU"Q+78XPa/IM:PQM:+a&`^ ~[2ɌudA]9v,LSK'EzDΡu)!(i؝SzZC5U0Pu'0j-l9:e-D  sL5"̌};aEø>7<`ݢ 9@if+g|xpQ*k!9 inkye1 'k~jS٤Ή&D}ny`3tRd6Bg8G?zv6LXZ 4?[wz>!?&Λ %r w뻚hD8>EiBlÔh<u: &{ -|4uf TUe?!}3[AB45L4Ƃuf7/WmiPr{ipsd'm1+m5Ls@LGV@!/wVf4{4hdknވ˾~ږaTj#ڏï8i፠3˨Ԋ:/ #ҡGG^ucff]ՉΣL.SX3PaѺT*N DFȅ1G vVXGK]7h`їBw3X:H nU C.#A *G, Ǿje@%I =tp/^vwbμBS% Ƃ 20Ƣi5l"/Eg1 *߃_ZJ3GKgjV ENzdߠk9~r-k,j.[0Ÿ2_`۸a ᰰ.㕶 Rlr ROCj9s8)P+DlB:\ sP+TJBT9`:ֶqաV401H;/q59Ei 17K퍟 8_0ӛ$p8ǘ9`:%#}c9έg N1RNmbHqчt 8O=&ZjqjxR[灨iXi8PF/4 2tZGzwvvi*ѱpN'EW=*P+NΒ5aQHh%*ml4=͝C_}Uܑ9Ա@ l\5AE ?2EbAVz,CŹ,L"%Ї< s>}| L>4- lc/@$…=#WOǢRFW+U,(h9ئFV/V4@m#Wyl๻a!󩕖a`tf1‚uf0,V?V(ty-GGF%O M &MUL5 YZ8[U).n܇:Ӏ ]`B"g֮yZ=GIO [ao0tNE2YmЃ-g5@- `PhREj׻RݒB=:0.os엘0uҥ.^4tǼ`c&):IщDoG'):M$E'}IDS`7ɣh L&ytM$NRt)0IN4&~<:IщDoG'):M$E'}IDS`7ɣh L&ytM$NRt)0щꬶV+\IENDB`DyK yK Jhttp://www.dwarfstd.org/yX;H,]ą'cDyK yK Jhttp://www.dwarfstd.org/yX;H,]ą'c}DyK _Toc263955183}DyK _Toc263955183}DyK _Toc263955184}DyK _Toc263955184}DyK _Toc263955185}DyK _Toc263955185}DyK _Toc263955186}DyK _Toc263955186}DyK _Toc263955187}DyK _Toc263955187}DyK _Toc263955188}DyK _Toc263955188}DyK _Toc263955189}DyK _Toc263955189}DyK _Toc263955190}DyK _Toc263955190}DyK _Toc263955191}DyK _Toc263955191}DyK _Toc263955192}DyK _Toc263955192}DyK _Toc263955193}DyK _Toc263955193}DyK _Toc263955194}DyK _Toc263955194}DyK _Toc263955195}DyK _Toc263955195}DyK _Toc263955196}DyK _Toc263955196}DyK _Toc263955197}DyK _Toc263955197}DyK _Toc263955198}DyK _Toc263955198}DyK _Toc263955199}DyK _Toc263955199}DyK _Toc263955200}DyK _Toc263955200}DyK _Toc263955201}DyK _Toc263955201}DyK _Toc263955202}DyK _Toc263955202}DyK _Toc263955203}DyK _Toc263955203}DyK _Toc263955204}DyK _Toc263955204}DyK _Toc263955205}DyK _Toc263955205}DyK _Toc263955206}DyK _Toc263955206}DyK _Toc263955207}DyK _Toc263955207}DyK _Toc263955208}DyK _Toc263955208}DyK _Toc263955209}DyK _Toc263955209}DyK _Toc263955210}DyK _Toc263955210}DyK _Toc263955211}DyK _Toc263955211}DyK _Toc263955212}DyK _Toc263955212}DyK _Toc263955213}DyK _Toc263955213}DyK _Toc263955214}DyK _Toc263955214}DyK _Toc263955215}DyK _Toc263955215}DyK _Toc263955216}DyK _Toc263955216}DyK _Toc263955217}DyK _Toc263955217}DyK _Toc263955218}DyK _Toc263955218}DyK _Toc263955219}DyK _Toc263955219}DyK _Toc263955220}DyK _Toc263955220}DyK _Toc263955221}DyK _Toc263955221}DyK _Toc263955222}DyK _Toc263955222}DyK _Toc263955223}DyK _Toc263955223}DyK _Toc263955224}DyK _Toc263955224}DyK _Toc263955225}DyK _Toc263955225}DyK _Toc263955226}DyK _Toc263955226}DyK _Toc263955227}DyK _Toc263955227}DyK _Toc263955228}DyK _Toc263955228}DyK _Toc263955229}DyK _Toc263955229}DyK _Toc263955230}DyK _Toc263955230}DyK _Toc263955231}DyK _Toc263955231}DyK _Toc263955232}DyK _Toc263955232}DyK _Toc263955233}DyK _Toc263955233}DyK _Toc263955234}DyK _Toc263955234}DyK _Toc263955235}DyK _Toc263955235}DyK _Toc263955236}DyK _Toc263955236}DyK _Toc263955237}DyK _Toc263955237}DyK _Toc263955238}DyK _Toc263955238}DyK _Toc263955239}DyK _Toc263955239}DyK _Toc263955240}DyK _Toc263955240}DyK _Toc263955241}DyK _Toc263955241}DyK _Toc263955242}DyK _Toc263955242}DyK _Toc263955243}DyK _Toc263955243}DyK _Toc263955244}DyK _Toc263955244}DyK _Toc263955245}DyK _Toc263955245}DyK _Toc263955246}DyK _Toc263955246}DyK _Toc263955247}DyK _Toc263955247}DyK _Toc263955248}DyK _Toc263955248}DyK _Toc263955249}DyK _Toc263955249}DyK _Toc263955250}DyK _Toc263955250}DyK _Toc263955251}DyK _Toc263955251}DyK _Toc263955252}DyK _Toc263955252}DyK _Toc263955253}DyK _Toc263955253}DyK _Toc263955254}DyK _Toc263955254}DyK _Toc263955255}DyK _Toc263955255}DyK _Toc263955256}DyK _Toc263955256}DyK _Toc263955257}DyK _Toc263955257}DyK _Toc263955258}DyK _Toc263955258}DyK _Toc263955259}DyK _Toc263955259}DyK _Toc263955260}DyK _Toc263955260}DyK _Toc263955261}DyK _Toc263955261}DyK _Toc263955262}DyK _Toc263955262}DyK _Toc263955263}DyK _Toc263955263}DyK _Toc263955264}DyK _Toc263955264}DyK _Toc263955265}DyK _Toc263955265}DyK _Toc263955266}DyK _Toc263955266}DyK _Toc263955267}DyK _Toc263955267}DyK _Toc263955268}DyK _Toc263955268}DyK _Toc263955269}DyK _Toc263955269}DyK _Toc263955270}DyK _Toc263955270}DyK _Toc263955271}DyK _Toc263955271}DyK _Toc263955272}DyK _Toc263955272}DyK _Toc263955273}DyK _Toc263955273}DyK _Toc263955274}DyK _Toc263955274}DyK _Toc263955275}DyK _Toc263955275}DyK _Toc263955276}DyK _Toc263955276}DyK _Toc263955277}DyK _Toc263955277}DyK _Toc263955278}DyK _Toc263955278}DyK _Toc263955279}DyK _Toc263955279}DyK _Toc263955280}DyK _Toc263955280}DyK _Toc263955281}DyK _Toc263955281}DyK _Toc263955282}DyK _Toc263955282}DyK _Toc263955283}DyK _Toc263955283}DyK _Toc263955284}DyK _Toc263955284}DyK _Toc263955285}DyK _Toc263955285}DyK _Toc263955286}DyK _Toc263955286}DyK _Toc263955287}DyK _Toc263955287}DyK _Toc263955288}DyK _Toc263955288}DyK _Toc263955289}DyK _Toc263955289}DyK _Toc263955290}DyK _Toc263955290}DyK _Toc263955291}DyK _Toc263955291}DyK _Toc263955292}DyK _Toc263955292}DyK _Toc263955293}DyK _Toc263955293}DyK _Toc263955294}DyK _Toc263955294}DyK _Toc263955295}DyK _Toc263955295}DyK _Toc263955296}DyK _Toc263955296}DyK _Toc263955297}DyK _Toc263955297}DyK _Toc263955298}DyK _Toc263955298}DyK _Toc263955299}DyK _Toc263955299}DyK _Toc263955300}DyK _Toc263955300}DyK _Toc263955301}DyK _Toc263955301}DyK _Toc263955302}DyK _Toc263955302}DyK _Toc263955303}DyK _Toc263955303}DyK _Toc263955304}DyK _Toc263955304}DyK _Toc263955305}DyK _Toc263955305}DyK _Toc263955306}DyK _Toc263955306}DyK _Toc263955307}DyK _Toc263955307}DyK _Toc263955308}DyK _Toc263955308}DyK _Toc263955309}DyK _Toc263955309}DyK _Toc263955310}DyK _Toc263955310}DyK _Toc263955311}DyK _Toc263955311}DyK _Toc263955312}DyK _Toc263955312}DyK _Toc263955313}DyK _Toc263955313}DyK _Toc263955314}DyK _Toc263955314}DyK _Toc263955315}DyK _Toc263955315}DyK _Toc263955316}DyK _Toc263955316}DyK _Toc263955317}DyK _Toc263955317}DyK _Toc263955318}DyK _Toc263955318}DyK _Toc263955319}DyK _Toc263955319}DyK _Toc263955320}DyK _Toc263955320}DyK _Toc263955321}DyK _Toc263955321}DyK _Toc263955322}DyK _Toc263955322}DyK _Toc263955323}DyK _Toc263955323}DyK _Toc263955324}DyK _Toc263955324}DyK _Toc263955325}DyK _Toc263955325}DyK _Toc263955326}DyK _Toc263955326}DyK _Toc263955327}DyK _Toc263955327}DyK _Toc263955328}DyK _Toc263955328}DyK _Toc263955329}DyK _Toc263955329}DyK _Toc263955330}DyK _Toc263955330}DyK _Toc263955331}DyK _Toc263955331}DyK _Toc263955332}DyK _Toc263955332}DyK _Toc263955333}DyK _Toc263955333}DyK _Toc263955334}DyK _Toc263955334}DyK _Toc263955335}DyK _Toc263955335}DyK _Toc263955336}DyK _Toc263955336}DyK _Toc263955337}DyK _Toc263955337}DyK _Toc263955338}DyK _Toc263955338}DyK _Toc263955339}DyK _Toc263955339}DyK _Toc263955340}DyK _Toc263955340}DyK _Toc263955341}DyK _Toc263955341}DyK _Toc263955342}DyK _Toc263955342}DyK _Toc263955343}DyK _Toc263955343}DyK _Toc263955344}DyK _Toc263955344}DyK _Toc263955345}DyK _Toc263955345}DyK _Toc263955346}DyK _Toc263955346}DyK _Toc263955347}DyK _Toc263955347}DyK _Toc263955348}DyK _Toc263955348}DyK _Toc263955349}DyK _Toc263955349}DyK _Toc263955350}DyK _Toc263955350}DyK _Toc263955351}DyK _Toc263955351}DyK _Toc263955352}DyK _Toc263955352}DyK _Toc263955353}DyK _Toc263955353}DyK _Toc263955354}DyK _Toc263955354}DyK _Toc263955355}DyK _Toc263955355}DyK _Toc263955356}DyK _Toc263955356}DyK _Toc263955357}DyK _Toc263955357}DyK _Toc263955358}DyK _Toc263955358}DyK _Toc263955359}DyK _Toc263955359}DyK _Toc263955360}DyK _Toc263955360}DyK _Toc263955361}DyK _Toc263955361}DyK _Toc263955362}DyK _Toc263955362}DyK _Toc263955363}DyK _Toc263955363}DyK _Toc263955364}DyK _Toc263955364}DyK _Toc263955365}DyK _Toc263955365}DyK _Toc263955366}DyK _Toc263955366}DyK _Toc263955367}DyK _Toc263955367}DyK _Toc263955368}DyK _Toc263955368}DyK _Toc263955369}DyK _Toc263955369}DyK _Toc263955370}DyK _Toc263955370}DyK _Toc263955371}DyK _Toc263955371}DyK _Toc263955372}DyK _Toc263955373}DyK _Toc263955374}DyK _Toc263955375}DyK _Toc263955376}DyK _Toc263955377}DyK _Toc263955378}DyK _Toc263955379}DyK _Toc263955380}DyK _Toc263955381}DyK _Toc263955382}DyK _Toc263955383}DyK _Toc263955384}DyK _Toc263955385}DyK _Toc263955386}DyK _Toc263955387}DyK _Toc263955388}DyK _Toc263955389}DyK _Toc263955390}DyK _Toc263955391}DyK _Toc263955392}DyK _Toc263955393}DyK _Toc263955394}DyK _Toc263955395}DyK _Toc263955396}DyK _Toc263955397}DyK _Toc263955398}DyK _Toc263955399}DyK _Toc263955400}DyK _Toc263955401}DyK _Toc263955402}DyK _Toc263955403}DyK _Toc263955404}DyK _Toc263955405}DyK _Toc263955406}DyK _Toc263955407}DyK _Toc263955408}DyK _Toc263955409}DyK _Toc263955410}DyK _Toc263955411}DyK _Toc263955412}DyK _Toc263955413}DyK _Toc263955428}DyK _Toc263955429}DyK _Toc263955430}DyK _Toc263955431}DyK _Toc263955432}DyK _Toc263955433}DyK _Toc263955434}DyK _Toc263955435}DyK _Toc263955436}DyK _Toc263955437}DyK _Toc263955438}DyK _Toc263955439}DyK _Toc263955440}DyK _Toc263955441}DyK _Toc263955442}DyK _Toc263955443}DyK _Toc263955444}DyK _Toc263955445}DyK _Toc263955446}DyK _Toc263955447}DyK _Toc263955448}DyK _Toc263955449}DyK _Toc263955450}DyK _Toc263955451}DyK _Toc263955452}DyK _Toc263955453}DyK _Toc263955454}DyK _Toc263955455}DyK _Toc263955456}DyK _Toc263955457}DyK _Toc263955458}DyK _Toc263955459}DyK _Toc263955460}DyK _Toc263955461}DyK _Toc263955462}DyK _Toc263955463}DyK _Toc263955464}DyK _Toc263955465}DyK _Toc263955466}DyK _Toc263955467}DyK _Toc263955468}DyK _Toc263955469}DyK _Toc263955470}DyK _Toc263955471}DyK _Toc263955472}DyK _Toc263955473}DyK _Toc263955474}DyK _Toc263955475}DyK _Toc263955476}DyK _Toc263955477}DyK _Toc263955478}DyK _Toc263955479}DyK _Toc263955480}DyK _Toc263955481}DyK _Toc263955482DyK yK Jhttp://www.dwarfstd.org/yX;H,]ą'cDyK BM7_4_File_ConstraintsDyK BM7_4_File_ConstraintsDyK BM7_5_4_Attribute_EncodingsDyK )BM6_4_1_Structure_of_Call_Frame_Informat}DyK _Ref114556188DyK DW_AT_artificialDyK BM2_12_Declaration_CoordinatesDyK DW_AT_description}DyK _Ref241122105}DyK _Ref479512005DyK DW_TAG_access_declarationDyK DW_TAG_array_typeDyK DW_TAG_base_typeDyK DW_TAG_catch_blockDyK DW_TAG_class_typeDyK DW_TAG_common_blockDyK DW_TAG_common_inclusionDyK DW_TAG_compile_unitDyK DW_TAG_conditionDyK DW_TAG_const_typeDyK DW_TAG_constantDyK DW_TAG_dwarf_procedureDyK DW_TAG_entry_pointDyK DW_TAG_enumeration_typeDyK DW_TAG_enumeratorDyK DW_TAG_file_typeDyK DW_TAG_formal_parameter}DyK DW_TAG_friendDyK DW_TAG_imported_declarationDyK DW_TAG_imported_moduleDyK DW_TAG_imported_unitDyK DW_TAG_inheritanceDyK DW_TAG_inlined_subroutineDyK DW_TAG_interface{DyK  DW_TAG_labelDyK DW_TAG_lexical_block}DyK DW_TAG_member}DyK DW_TAG_moduleDyK DW_TAG_namelistDyK DW_TAG_namelist_itemDyK DW_TAG_namespaceDyK DW_TAG_packed_typeDyK DW_TAG_partial_unitDyK DW_TAG_pointer_typeDyK DW_TAG_ptr_to_member_typeDyK DW_TAG_reference_typeDyK DW_TAG_restrict_typeDyK DW_TAG_rvalue_reference_typeDyK DW_TAG_set_typeDyK DW_TAG_shared_typeDyK DW_TAG_string_typeDyK DW_TAG_structure_typeDyK DW_TAG_subprogramDyK DW_TAG_subrange_typeDyK DW_TAG_subroutine_typeDyK DW_TAG_template_aliasDyK DW_TAG_template_type_parameterDyK DW_TAG_template_type_parameterDyK  DW_TAG_template_value_parameterDyK DW_TAG_thrown_typeDyK DW_TAG_try_blockDyK DW_TAG_typedefDyK DW_TAG_type_unit_defDyK DW_TAG_union_typeDyK DW_TAG_unspecified_parametersDyK DW_TAG_unspecified_typeDyK DW_TAG_variableDyK DW_TAG_variantDyK DW_TAG_variant_partDyK DW_TAG_volatile_typeDyK DW_TAG_with_stmtDyK DW_AT_abstract_origin_inlineDyK DW_AT_abstract_origin_outlineDyK DW_AT_accessibility_declDyK DW_AT_accessibility_base_classDyK %DW_AT_accessibility_inherited_memberDyK DW_AT_address_class_ptrDyK DW_AT_address_class_subrDyK DW_AT_allocated_typeDyK DW_AT_artificial_declDyK DW_AT_associated_typeDyK DW_AT_base_types_usageDyK DW_AT_binary_scale_usageDyK DW_AT_bit_offset_base_typeDyK DW_AT_bit_offset_memberDyK DW_AT_bit_size_base_typeDyK DW_AT_bit_size_memberDyK DW_AT_bit_stride_array_usageDyK &DW_AT_bit_stride_array_subrange_usageDyK "DW_AT_bit_stride_array_enum_usageDyK DW_AT_byte_size_base_typeDyK DW_AT_byte_stride_array_usageDyK 'DW_AT_byte_stride_array_subrange_usageDyK #DW_AT_byte_stride_array_enum_usageDyK DW_AT_call_column_defDyK DW_AT_call_file_defDyK DW_AT_call_line_defDyK DW_AT_calling_convention_subrDyK DW_AT_common_reference_usageDyK DW_AT_comp_dir_unitDyK DW_AT_const_value_objectDyK DW_AT_const_value_enumDyK DW_AT_const_value_templ_paramDyK DW_AT_const_expr_objectDyK DW_AT_const_expr_inlineDyK DW_AT_containing_type_usageDyK DW_AT_count_subrangeDyK DW_AT_bit_offset_base_typeDyK DW_AT_data_bit_offset_memberDyK DW_AT_data_location_typeDyK "DW_AT_data_member_location_normalDyK #DW_AT_data_member_location_derivedDyK DW_AT_decimal_scale_usageDyK DW_AT_decimal_sign_usageDyK DW_AT_decl_column_usageDyK DW_AT_decl_file_usageDyK DW_AT_decl_line_usageDyK DW_AT_declaration_non_defDyK DW_AT_default_value_paramDyK DW_AT_description_usageDyK DW_AT_digit_count_usageDyK DW_AT_discr_variantDyK DW_AT_discr_list_usageDyK DW_AT_discr_value_usageDyK DW_AT_elemental_usageDyK BM7_8_Base_Type_EncodingsDyK DW_AT_endianity_usageDyK DW_AT_entry_pc_mod_initDyK DW_AT_entry_pc_subrDyK DW_AT_entry_pc_inl_subrDyK DW_AT_enum_class_usageDyK DW_AT_explicit_usageDyK DW_AT_extensionDyK DW_AT_external_subrDyK DW_AT_external_objDyK DW_AT_frame_base_subrDyK DW_AT_friend_usageDyK code_address_or_rangeDyK DW_AT_identifier_case_usageDyK DW_AT_import_usageDyK DW_AT_import_unitDyK DW_AT_import_namespaceDyK DW_AT_import_usingDyK DW_AT_import_using_directiveDyK DW_AT_inline_abstractDyK DW_AT_inline_subrDyK DW_AT_is_optional_paramDyK DW_AT_language_usageDyK DW_AT_linkage_name_usageDyK data_object_locationDyK code_address_or_rangeDyK DW_AT_lower_bound_subrangeDyK DW_AT_macro_info_usageDyK !DW_AT_main_subprogram_subp_usageDyK !DW_AT_main_subprogram_unit_usageDyK DW_AT_mutable_usageDyK DW_AT_name_declDyK DW_AT_name_pathDyK DW_AT_namelist_item_usageDyK DW_AT_object_pointer_usageDyK DW_AT_ordering_usageDyK DW_AT_picture_string_usageDyK DW_AT_priority_moduleDyK DW_AT_producer_usageDyK DW_AT_prototyped_entryDyK DW_AT_pure_usageDyK code_address_or_rangeDyK DW_AT_recursive_usageDyK DW_AT_return_addr_subrDyK DW_AT_segment_addrDyK DW_AT_sibling_relationDyK DW_AT_small_usageDyK DW_AT_specification_defDyK DW_AT_start_scope_objectDyK DW_AT_start_scope_typeDyK DW_AT_static_link_usageDyK DW_AT_stmt_list_usageDyK DW_AT_string_length_typeDyK DW_AT_threads_scaledDyK trampoline_attributeDyK DW_AT_type_of_declDyK DW_AT_type_of_returnDyK DW_AT_upper_bound_subrangeDyK DW_AT_use_location_ptr_memDyK DW_AT_use_utf8_comp_unitDyK DW_AT_variable_parameter_usageDyK DW_AT_virtuality_usageDyK DW_AT_virtuality_inheritedDyK DW_AT_virtuality_subrDyK DW_AT_visibility_usageDyK !DW_AT_vtable_elem_location_usage}DyK address_formsyDyK  block_formsDyK constant_forms}DyK _Ref478434289}DyK exprloc_formswDyK  flag_forms}DyK lineptr_forms}DyK loclist_forms{DyK  macptr_formsDyK rangelist_formsDyK reference_forms{DyK  string_formsDyK BM7_5_3_Abbreviation_Tables}DyK DW_AT_siblingDyK  BM6_2_2_State_Machine_RegistersDyK location_expressionDyK BM2_4_Location_DescriptionsyDyK  DW_OP_fbregDyK DW_AT_frame_baseyDyK  DW_OP_bregxyDyK  DW_OP_deref{DyK  DW_OP_xderefDyK DW_AT_data_member_location}DyK _Ref513880569DyK BM6_4_Call_Frame_InformationDyK DW_AT_frame_basewDyK  DW_OP_litNwDyK  DW_OP_plusDyK BM7_4_File_Constraints{DyK  DW_FORM_ref2{DyK  DW_FORM_ref4DyK DW_FORM_ref_addrDyK BM7_5_4_Attribute_EncodingsDyK DW_AT_locationDyK DW_AT_locationDyK BM2_4_3_3_Stack_OperationsuDyK  DW_OP_dupwDyK  DW_OP_dropwDyK  DW_OP_pickwDyK  DW_OP_overwDyK  DW_OP_swapuDyK  DW_OP_rotDyK DWARF_expressionqDyK exprlocqDyK loclistDyK DWARF_expressionDyK $BM2_4_3_2_Register_Based_AddressingyDyK  DW_OP_piecewDyK  DW_OP_regNwDyK  DW_OP_regxwDyK  DW_OP_addryDyK  DW_OP_bregNyDyK  DW_OP_fbregDyK DW_AT_frame_baseyDyK  DW_OP_bregxyDyK  DW_OP_derefDyK DW_OP_plus_uconstwDyK  DW_OP_regNyDyK  DW_OP_piecewDyK  DW_OP_regNyDyK  DW_OP_piecewDyK  DW_OP_reg0yDyK  DW_OP_pieceyDyK  DW_OP_pieceyDyK  DW_OP_fbregyDyK  DW_OP_pieceyDyK  DW_OP_breg1yDyK  DW_OP_breg1wDyK  DW_OP_plusDyK DW_OP_stack_valuewDyK  DW_OP_lit1DyK DW_OP_stack_valueyDyK  DW_OP_pieceyDyK  DW_OP_breg1yDyK  DW_OP_breg1wDyK  DW_OP_plusDyK DW_OP_stack_valueyDyK  DW_OP_piece}DyK _Ref516902159}DyK _Ref495310701wDyK  DW_AT_typewDyK  DW_AT_typeDyK BM5__TYPE_ENTRIESDyK DW_AT_accessibility}DyK _Ref477604457DyK DW_AT_visibility}DyK _Ref488719756DyK DW_AT_virtuality}DyK _Ref477604545DyK DW_AT_artificialkDyK flag}DyK DW_AT_segment}DyK DW_AT_segment{DyK  DW_AT_low_pc}DyK DW_AT_high_pc{DyK  DW_AT_rangesDyK DW_AT_entry_pc}DyK DW_AT_segment}DyK DW_AT_segment}DyK DW_AT_segment}DyK DW_AT_segmentDyK DW_AT_address_classsDyK  constant{DyK  DW_ADDR_noneDyK DW_AT_declarationkDyK flagDyK DW_AT_specificationDyK DW_AT_specificationDyK DW_AT_decl_fileDyK DW_AT_decl_lineDyK DW_AT_decl_columnsDyK  constantDyK DW_AT_decl_fileDyK BM6_2_Line_Number_InformationDyK DW_AT_decl_lineDyK DW_AT_decl_columnwDyK  DW_AT_namewDyK  DW_AT_name}DyK _Ref237860526DyK DW_AT_locationDyK BM2_4_Location_DescriptionsDyK DW_AT_locationyDyK  DW_OP_call2yDyK  DW_OP_call4DyK DW_OP_call_refDyK "BM2_4_3_5_Control_Flow_Operations{DyK  DW_AT_low_pc{DyK  DW_AT_low_pc}DyK DW_AT_high_pc{DyK  DW_AT_rangesDyK DW_AT_start_scope{DyK  DW_AT_low_pcDyK DW_AT_entry_pc{DyK  DW_AT_rangesDyK DW_AT_start_scope}DyK _Ref516902159DyK BM2_4_6_Location_ListssDyK  constantuDyK  referenceqDyK exprlocDyK DWARF_expressionDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_bit_offsetDyK DW_AT_bit_sizeDyK DW_AT_byte_sizeyDyK  DW_AT_countDyK DW_AT_lower_boundDyK DW_AT_byte_strideDyK DW_AT_bit_strideDyK DW_AT_upper_boundwDyK  DW_AT_nameDyK DW_AT_description}DyK _Ref519589220DyK DW_AT_byte_strideDyK DW_AT_bit_strideDyK BM2_13_Identifier_NamesDyK DW_TAG_common_blockDyK DW_TAG_constantDyK DW_TAG_entry_pointDyK DW_TAG_subprogramDyK DW_TAG_variable}DyK _Ref235444914wDyK  Appendix E}DyK _Ref230762311}DyK _Ref510511675{DyK  DW_AT_low_pc}DyK DW_AT_high_pc{DyK  DW_AT_ranges}DyK _Ref495373534DyK BM2_4_6_Location_Lists}DyK _Ref495310701wDyK  DW_AT_nameDyK DW_AT_languagesDyK  constant}DyK _Ref249157670DyK DW_AT_stmt_listDyK BM6_2_Line_Number_InformationDyK DW_AT_macro_infoDyK BM6_3_Macro_InformationDyK DW_AT_comp_dirDyK DW_AT_producerDyK DW_AT_identifier_casesDyK  constant}DyK _Ref249157629DyK DW_ID_case_sensitive}DyK DW_ID_up_caseDyK DW_ID_down_caseDyK DW_ID_case_insensitivewDyK  DW_AT_nameDyK DW_AT_base_typesuDyK  referenceDyK BM5_1_Base_Type_EntriesDyK DW_AT_use_utf8DyK BM7_5_4_Attribute_Encodings{DyK  DW_AT_low_pc{DyK  DW_AT_import}DyK _Ref249157670DyK DW_AT_declarationwDyK  DW_AT_name{DyK  DW_AT_low_pc}DyK DW_AT_high_pc{DyK  DW_AT_ranges}DyK _Ref495373534DyK DW_AT_entry_pc}DyK _Ref495374861DyK DW_AT_priorityuDyK  referenceDyK DW_AT_extensionwDyK  DW_AT_nameDyK DW_AT_specification}DyK _Ref513880648{DyK  DW_AT_importuDyK  referencewDyK  DW_AT_nameDyK #BM4_3_Imported_Declaration_Entries}DyK _Ref513880648DyK DW_TAG_inlined_subroutinewDyK  DW_AT_name}DyK _Ref237860526DyK DW_TAG_subprogramDyK DW_AT_externalkDyK flagDyK )BM5_5_5_Structure_Member_Function_EntrieDyK DW_AT_calling_conventionsDyK  constant}DyK _Ref483709616{DyK  DW_CC_normal}DyK DW_CC_program{DyK  DW_CC_nocall}DyK DW_CC_programDyK DW_AT_prototypedkDyK flagDyK DW_AT_elementalwDyK  DW_AT_pureDyK DW_AT_recursivewDyK  DW_AT_type{DyK  DW_AT_low_pc}DyK DW_AT_high_pc{DyK  DW_AT_ranges}DyK _Ref495373534DyK DW_AT_entry_pc}DyK _Ref495374861{DyK  DW_AT_low_pc}DyK DW_AT_segmentDyK DW_AT_address_classDyK DW_AT_address_classDyK DW_AT_common_referenceuDyK  referenceDyK BM4_2_Common_Block_EntriesDyK DW_AT_return_addrDyK DW_AT_frame_baseDyK DW_AT_frame_baseDyK DW_AT_frame_baseDyK DW_AT_static_linkDyK DW_AT_static_linkDyK DW_AT_frame_baseDyK DW_AT_static_linkDyK DW_AT_frame_baseDyK DW_AT_frame_baseDyK DW_AT_static_linkwDyK  DW_AT_typeuDyK  referenceDyK DW_TAG_subprogramwDyK  DW_AT_namewDyK  DW_AT_typeDyK declaration_coordinatesDyK DW_TAG_subprogram{DyK  DW_AT_inlinesDyK  constant{DyK  DW_AT_inline}DyK _Ref478443568{DyK  DW_AT_inline{DyK  DW_AT_inline{DyK  DW_AT_low_pc}DyK DW_AT_high_pc{DyK  DW_AT_rangesDyK DW_AT_entry_pc_inl_subrDyK DW_AT_locationDyK DW_AT_return_addrDyK DW_AT_start_scope}DyK DW_AT_segment}DyK _Ref513879102{DyK  DW_AT_low_pc}DyK DW_AT_high_pc{DyK  DW_AT_ranges}DyK _Ref495373534DyK DW_AT_entry_pc}DyK _Ref495374861DyK DW_AT_call_fileDyK DW_AT_call_lineDyK DW_AT_call_columnDyK BM2_12_Declaration_CoordinatesDyK DW_AT_const_valueDyK DW_AT_const_valueDyK DW_TAG_inlined_subroutineDyK DW_TAG_inlined_subroutineDyK DW_AT_abstract_originuDyK  referenceDyK declaration_coordinatesDyK DW_AT_abstract_originDyK DW_TAG_variableDyK DW_TAG_variableDyK DW_TAG_inlined_subroutineDyK DW_TAG_subprogramDyK DW_AT_abstract_originwDyK  DW_AT_nameDyK DW_AT_abstract_originDyK DW_AT_abstract_originDyK DW_AT_abstract_origin_inlineDyK DW_TAG_inlined_subroutineDyK BM3_3_8_1_Abstract_InstancesDyK %BM3_3_8_2_Concrete_Inlined_InstancesDyK )BM3_3_8_3_Out_of_Line_Instances_of_Inlin}DyK _Ref211071638DyK DW_TAG_subprogramDyK DW_TAG_inlined_subroutineDyK DW_AT_trampolineDyK DW_AT_artificial{DyK  DW_AT_low_pc}DyK DW_AT_high_pc{DyK  DW_AT_ranges}DyK _Ref495373534wDyK  DW_AT_name{DyK  DW_AT_low_pcwDyK  DW_AT_name{DyK  DW_AT_low_pc}DyK DW_AT_high_pc{DyK  DW_AT_ranges}DyK _Ref495373534wDyK  DW_AT_typeDyK DW_AT_location{DyK  DW_AT_low_pc}DyK DW_AT_high_pc{DyK  DW_AT_ranges}DyK _Ref495373534DyK DW_TAG_formal_parameterDyK DW_TAG_unspecified_parametersDyK DW_TAG_constantwDyK  DW_AT_nameDyK DW_AT_externalkDyK flagDyK DW_AT_declarationDyK DW_AT_locationDyK DW_AT_declarationDyK BM2_4_Location_Descriptions}DyK _Ref479475074}DyK DW_AT_segmentwDyK  DW_AT_typeDyK DW_AT_specificationuDyK  reference}DyK DW_TAG_memberDyK DW_AT_specificationDyK DW_AT_externalDyK DW_AT_specificationDyK DW_AT_variable_parameterkDyK flagDyK DW_AT_is_optionalkDyK flagDyK DW_AT_default_valueuDyK  referenceDyK DW_AT_const_valueoDyK stringsDyK  constantmDyK blockDyK DW_AT_start_scope}DyK _Ref495310701}DyK _Ref495310701DyK DW_AT_endianity}DyK _Ref111361081wDyK  DW_AT_typeDyK DW_AT_linkage_name}DyK _Ref237860526wDyK  DW_AT_name}DyK _Ref237860526DyK DW_AT_locationwDyK  DW_AT_nameDyK DW_AT_namelist_itemuDyK  referenceDyK DW_AT_start_scopeDyK BM4_1_Data_Object_EntrieswDyK  DW_AT_nameDyK DW_AT_encodingsDyK  constantDyK DW_AT_encoding}DyK _Ref478443608DyK DW_AT_endianityDyK BM4_1_Data_Object_EntriesDyK DW_AT_byte_sizeDyK DW_AT_bit_size}DyK _Ref230675141}DyK DW_ATE_signed}DyK _Ref519589220DyK &BM5_5_4_Structure_Data_Member_Entries}DyK _Ref519589220}DyK _Ref519589220DyK )BM2_10_Target_Specific_Addressing_InformDyK DW_AT_decimal_sign}DyK _Ref104351054DyK DW_AT_digit_countDyK DW_AT_decimal_scaleDyK DW_AT_picture_stringyDyK  DW_AT_smallDyK DW_TAG_constantDyK DW_TAG_constantwDyK  DW_AT_nameDyK BM5_2_Type_Modifier_EntriesDyK BM5_3_Typedef_Entries}DyK _Ref478443641wDyK  DW_AT_namewDyK  DW_AT_typeuDyK  referenceDyK DW_TAG_pointer_typeDyK DW_TAG_reference_typeDyK DW_TAG_rvalue_reference_typeDyK DW_AT_address_classDyK DW_TAG_shared_typeyDyK  DW_AT_countDyK DW_TAG_variableDyK DW_TAG_volatile_typeDyK DW_TAG_pointer_typeDyK DW_TAG_const_typeDyK DW_TAG_base_typeDyK DW_TAG_variableDyK DW_TAG_restrict_typeDyK DW_TAG_const_typeDyK DW_TAG_pointer_typeDyK DW_TAG_volatile_typeDyK DW_TAG_base_typewDyK  DW_AT_namewDyK  DW_AT_typewDyK  DW_AT_nameDyK DW_AT_orderingsDyK  constant}DyK _Ref478443672DyK DW_AT_languagewDyK  DW_AT_typeDyK DW_AT_stride_size}DyK _Ref519589220}DyK _Ref230675141DyK DW_TAG_subrange_typeDyK DW_TAG_enumeration_typeDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_data_location}DyK _Ref480964356}DyK _Ref513880723wDyK  DW_AT_name}DyK _Ref230675141DyK DW_AT_declaration}DyK _Ref235444914DyK DW_AT_signatureDyK DW_AT_specificationDyK DW_AT_specificationDyK DW_AT_declaration}DyK _Ref230762311wDyK  DW_AT_namewDyK  DW_AT_typeuDyK  referenceDyK DW_AT_data_member_locationDyK BM2_4_Location_DescriptionsDyK &BM5_5_4_Structure_Data_Member_EntriesDyK DW_AT_accessibilityDyK DW_AT_virtualitywDyK  DW_AT_nameDyK DW_AT_accessibility{DyK  DW_AT_frienduDyK  referencewDyK  DW_AT_namewDyK  DW_AT_typeDyK DW_AT_accessibility}DyK DW_AT_mutableDyK DW_AT_data_member_locationDyK BM2_4_Location_DescriptionsDyK DW_OP_push_object_addressDyK BM2_4_3_3_Stack_Operations}DyK _Ref519589220DyK DW_AT_byte_sizeDyK DW_AT_bit_size}DyK _Ref519589220DyK BM5_1_Base_Type_Entries}DyK _Ref519589220}DyK _Ref519589220}DyK _Ref519589220DyK DW_TAG_subprogram}DyK _Ref516898420DyK DW_AT_accessibilityDyK DW_AT_virtualityDyK DW_AT_explicitDyK DW_AT_vtable_elem_locationDyK DW_AT_object_pointerDyK DW_AT_artificialDyK DW_AT_specificationuDyK  referenceDyK DW_AT_specificationDyK DW_TAG_class_typeDyK DW_TAG_structure_typeDyK DW_TAG_union_typeDyK DW_TAG_template_type_parameterwDyK  DW_AT_namewDyK  DW_AT_typewDyK  DW_AT_namewDyK  DW_AT_typeDyK DW_AT_const_valueDyK declaration_coordinatesyDyK  DW_AT_discruDyK  referencewDyK  DW_AT_typeDyK DW_AT_discr_valueDyK DW_AT_discr_listDyK DW_AT_discr_valuesDyK  constant}DyK _Ref478443711DyK DW_AT_discr_valueDyK DW_AT_discr_listDyK DW_AT_discr_listwDyK  DW_AT_nameDyK DW_TAG_variable}DyK DW_TAG_memberDyK DW_TAG_formal_parameterDyK DW_TAG_constantDyK DW_TAG_subrange_typewDyK  DW_AT_typewDyK  DW_AT_nameDyK DW_AT_byte_sizesDyK  constantwDyK  DW_AT_typewDyK  DW_AT_nameDyK DW_AT_const_value}DyK _Ref519589220wDyK  DW_AT_namewDyK  DW_AT_typeDyK DW_AT_prototypedkDyK flagDyK DW_TAG_formal_parameterwDyK  DW_AT_typeDyK DW_TAG_unspecified_parameterswDyK  DW_AT_nameDyK DW_AT_string_lengthDyK DW_AT_byte_sizeDyK DW_AT_bit_size}DyK _Ref230675141DyK DW_AT_byte_sizeDyK DW_AT_bit_size}DyK _Ref230675141wDyK  DW_AT_namewDyK  DW_AT_typeDyK DW_AT_byte_sizeDyK DW_AT_bit_size}DyK _Ref230675141wDyK  DW_AT_namewDyK  DW_AT_typeDyK DW_AT_byte_sizeDyK DW_AT_bit_size}DyK _Ref519589220DyK DW_AT_threads_scaledDyK DW_AT_lower_boundDyK DW_AT_upper_boundDyK DW_AT_upper_boundyDyK  DW_AT_count}DyK _Ref519589220}DyK _Ref230675141wDyK  DW_AT_namewDyK  DW_AT_typeDyK DW_AT_containing_typeuDyK  referenceDyK DW_AT_use_locationDyK DW_AT_use_locationDyK DW_AT_use_locationDyK DW_AT_use_locationDyK DW_AT_use_locationwDyK  DW_AT_namewDyK  DW_AT_typeDyK DW_AT_byte_sizeDyK DW_AT_bit_size}DyK _Ref519589220DyK DW_AT_data_locationDyK location_expressionDyK DW_OP_push_object_address}DyK _Ref513880807DyK DW_AT_allocatedDyK DW_AT_associated}DyK _Ref519589220}DyK _Ref513880859wDyK  DW_AT_namewDyK  DW_AT_typeDyK DW_TAG_template_type_parameterDyK  DW_TAG_template_value_parameterDyK DW_AT_const_value}DyK _Ref519667129DyK BM7_4_File_Constraints}DyK _Ref483181048DyK initial_length_field}DyK _Ref519667129}DyK _Ref249090119wDyK  DW_AT_namewDyK  DW_AT_nameDyK initial_location}DyK _Ref519667129}DyK _Ref114543352}DyK _Ref516902159DyK DW_LNS_fixed_advance_pcDyK initial_length_field}DyK _Ref519667129}DyK _Ref114543352DyK bit32_dwarf_formatDyK bit32_dwarf_formatDyK bit32_dwarf_formatDyK bit64_dwarf_formatDyK BM7_4_File_ConstraintsDyK declaration_coordinatesDyK DW_LNE_define_fileDyK BM6_2_5_1_Special_OpcodesDyK DW_LNS_advance_pcDyK DW_LNS_advance_pcDyK DW_LNS_advance_pcDyK  BM6_2_2_State_Machine_Registers}DyK _Ref249153948}DyK _Ref516902159DyK DW_MACINFO_defineDyK DW_MACINFO_undefDyK DW_MACINFO_start_fileDyK DW_MACINFO_end_fileDyK DW_MACINFO_vendor_extDyK BM7_1_Vendor_ExtensibilityDyK DW_MACINFO_start_fileDyK DW_MACINFO_end_fileDyK DW_MACINFO_defineDyK DW_MACINFO_undefDyK DW_MACINFO_defineDyK DW_MACINFO_undefDyK DW_MACINFO_defineDyK DW_MACINFO_undefDyK DW_MACINFO_defineDyK DW_MACINFO_undefDyK DW_MACINFO_start_fileDyK DWARF_expressionDyK DWARF_expressionDyK initial_length_field}DyK _Ref519667129DyK BM7_4_File_ConstraintsDyK BM7_23_Call_Frame_Information}DyK _Ref249090505wDyK  DW_CFA_nopDyK initial_length_field}DyK _Ref519667129DyK BM7_4_File_ConstraintswDyK  DW_CFA_nopDyK BM7_23_Call_Frame_InformationDyK BM2_4_3_Addressing_OperationsyDyK  DW_OP_call2yDyK  DW_OP_call4DyK DW_OP_call_refDyK DW_OP_push_object_addressDyK DW_OP_call_frame_cfaDyK DW_CFA_def_cfa_expressionDyK DW_CFA_expressionDyK DW_CFA_val_expressionDyK DW_CFA_advance_locDyK DW_CFA_advance_locDyK DW_CFA_advance_locDyK DW_CFA_def_cfaDyK DW_CFA_def_cfa_offset}DyK DW_FORM_blockDyK DWARF_expressionDyK  BM6_4_2_Call_Frame_Instructions}DyK DW_CFA_offsetDyK DW_CFA_offset_extended}DyK DW_FORM_blockDyK DWARF_expressionDyK  BM6_4_2_Call_Frame_InstructionsDyK  BM6_4_2_Call_Frame_InstructionsDyK DW_CFA_restoreDyK DW_CFA_advance_locDyK DW_CFA_set_locDyK DW_CFA_advance_locDyK DW_CFA_set_locDyK DW_CFA_set_locDyK )Appendix_5____Call_Frame_Information_Exa{DyK  DW_TAG_lo_hiyDyK  DW_AT_lo_hi{DyK  DW_END_lo_hi{DyK  DW_ATE_lo_hiyDyK  DW_OP_lo_hi}DyK DW_LANG_lo_hi{DyK  DW_LNE_lo_hiyDyK  DW_CC_lo_hi{DyK  DW_CFA_lo_hiDyK DW_TAG_lo_userDyK DW_TAG_hi_userDyK BM7_4_File_ConstraintsDyK initial_length_field}DyK _Ref519667129DyK DW_FORM_ref_addrDyK sec_offset_forms{DyK  DW_FORM_strpDyK DW_OP_call_refDyK  BM7_5_1_Compilation_Unit_HeaderDyK type_unit_headerDyK initial_length_fieldDyK bit32_dwarf_formatDyK bit32_dwarf_formatDyK bit64_dwarf_formatDyK BM7_4_File_Constraints}DyK _Ref114543352DyK section_offsetDyK bit32_dwarf_formatDyK bit64_safe_DWARF_descriptionDyK bit64_dwarf_formatDyK BM7_4_File_ConstraintsDyK bit32_dwarf_formatDyK bit32_dwarf_formatDyK bit64_dwarf_formatDyK BM7_4_File_Constraints}DyK _Ref114543352DyK bit32_dwarf_formatDyK bit64_safe_DWARF_descriptionDyK bit64_dwarf_formatDyK BM7_4_File_ConstraintsDyK bit32_dwarf_formatDyK bit64_dwarf_formatDyK BM7_4_File_Constraints}DyK _Ref519657692}DyK _Ref478443886DyK )BM2_3_Relationship_of_Debugging_Informat}DyK _Ref493924693}DyK _Ref235518114}DyK _Ref235518114DyK  BM7_5_1_Compilation_Unit_HeaderDyK DWARF_expressionDyK BM2_4_Location_DescriptionsDyK bit32_dwarf_formatDyK bit64_dwarf_formatDyK BM7_4_File_ConstraintsDyK bit32_dwarf_formatDyK bit64_dwarf_formatDyK BM7_4_File_ConstraintsDyK bit32_dwarf_formatDyK bit64_dwarf_formatDyK BM7_4_File_ConstraintsDyK bit32_dwarf_formatDyK bit64_dwarf_formatDyK BM7_4_File_ConstraintsDyK bit32_dwarf_formatDyK bit64_dwarf_formatDyK BM7_4_File_Constraints}DyK _Ref230753495DyK bit32_dwarf_formatDyK bit64_safe_DWARF_descriptionDyK bit64_dwarf_formatDyK BM7_4_File_ConstraintsDyK DW_AT_use_utf8}DyK _Ref235518113DyK DW_TAG_array_typeDyK DW_TAG_class_typeDyK DW_TAG_entry_pointDyK DW_TAG_enumeration_typeDyK DW_TAG_formal_parameterDyK DW_TAG_imported_declaration{DyK  DW_TAG_labelDyK DW_TAG_lexical_block}DyK DW_TAG_memberDyK DW_TAG_pointer_typeDyK DW_TAG_reference_typeDyK DW_TAG_compile_unitDyK DW_TAG_string_typeDyK DW_TAG_structure_typeDyK DW_TAG_subroutine_typeDyK DW_TAG_typedefDyK DW_TAG_union_typeDyK DW_TAG_unspecified_parametersDyK DW_TAG_variantDyK DW_TAG_common_blockDyK DW_TAG_common_inclusionDyK DW_TAG_inheritanceDyK DW_TAG_inlined_subroutine}DyK DW_TAG_moduleDyK DW_TAG_ptr_to_member_typeDyK DW_TAG_set_typeDyK DW_TAG_subrange_typeDyK DW_TAG_with_stmtDyK DW_TAG_access_declarationDyK DW_TAG_base_typeDyK DW_TAG_catch_blockDyK DW_TAG_const_typeDyK DW_TAG_constantDyK DW_TAG_enumeratorDyK DW_TAG_file_type}DyK DW_TAG_friendDyK DW_TAG_namelistDyK DW_TAG_namelist_itemDyK DW_TAG_packed_typeDyK DW_TAG_subprogramDyK DW_TAG_template_type_parameterDyK  DW_TAG_template_value_parameterDyK DW_TAG_thrown_typeDyK DW_TAG_try_blockDyK DW_TAG_variant_partDyK DW_TAG_variableDyK DW_TAG_volatile_typeDyK DW_TAG_dwarf_procedureDyK DW_TAG_restrict_typeDyK DW_TAG_interfaceDyK DW_TAG_namespaceDyK DW_TAG_imported_moduleDyK DW_TAG_unspecified_typeDyK DW_TAG_partial_unitDyK DW_TAG_imported_unitDyK DW_TAG_conditionDyK DW_TAG_shared_typeDyK DW_TAG_type_unit_defDyK DW_TAG_rvalue_reference_typeDyK DW_TAG_template_alias{DyK  DW_XXX_lo_hi{DyK  DW_XXX_lo_hiDyK DW_CHILDREN_noDyK DW_CHILDREN_yes}DyK DW_AT_siblingDyK DW_AT_locationwDyK  DW_AT_nameDyK DW_AT_orderingDyK DW_AT_byte_sizeDyK DW_AT_bit_offsetDyK DW_AT_bit_sizeDyK DW_AT_stmt_list{DyK  DW_AT_low_pc}DyK DW_AT_high_pcDyK DW_AT_languageyDyK  DW_AT_discrDyK DW_AT_discr_valueDyK DW_AT_visibility{DyK  DW_AT_importDyK DW_AT_string_lengthDyK DW_AT_common_referenceDyK DW_AT_comp_dirDyK DW_AT_const_valueDyK DW_AT_containing_typeDyK DW_AT_default_value{DyK  DW_AT_inlineDyK DW_AT_is_optionalDyK DW_AT_lower_boundDyK DW_AT_producerDyK DW_AT_prototypedDyK DW_AT_return_addrDyK DW_AT_start_scopeDyK DW_AT_bit_strideDyK DW_AT_upper_boundDyK DW_AT_abstract_originDyK DW_AT_accessibilityDyK DW_AT_address_classDyK DW_AT_artificialDyK DW_AT_base_typesDyK DW_AT_calling_conventionyDyK  DW_AT_countDyK DW_AT_data_member_locationDyK DW_AT_decl_columnDyK DW_AT_decl_fileDyK DW_AT_decl_lineDyK DW_AT_declarationDyK DW_AT_discr_listDyK DW_AT_encodingDyK DW_AT_externalDyK DW_AT_frame_base{DyK  DW_AT_friendDyK DW_AT_identifier_caseDyK DW_AT_macro_infoDyK DW_AT_namelist_itemDyK DW_AT_priority}DyK DW_AT_segmentDyK DW_AT_specificationDyK DW_AT_static_linkwDyK  DW_AT_typeDyK DW_AT_use_locationDyK DW_AT_variable_parameterDyK DW_AT_virtualityDyK DW_AT_vtable_elem_locationDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_data_location{DyK  DW_AT_strideDyK DW_AT_entry_pcDyK DW_AT_use_utf8DyK DW_AT_extension{DyK  DW_AT_rangesDyK DW_AT_trampolineDyK DW_AT_call_columnDyK DW_AT_call_fileDyK DW_AT_call_lineDyK DW_AT_descriptionDyK DW_AT_binary_scaleDyK DW_AT_decimal_scaleyDyK  DW_AT_smallDyK DW_AT_decimal_signDyK DW_AT_digit_countDyK DW_AT_picture_string}DyK DW_AT_mutableDyK DW_AT_threads_scaledDyK DW_AT_explicitDyK DW_AT_object_pointerDyK DW_AT_endianityDyK DW_AT_elementalwDyK  DW_AT_pureDyK DW_AT_recursiveDyK DW_AT_signatureDyK DW_AT_main_subprogramDyK DW_AT_data_bit_offsetDyK DW_AT_const_exprDyK DW_AT_enum_classDyK DW_AT_linkage_name{DyK  DW_XXX_lo_hi{DyK  DW_XXX_lo_hi{DyK  DW_FORM_addrDyK DW_FORM_block2DyK DW_FORM_block4}DyK DW_FORM_data2}DyK DW_FORM_data4}DyK DW_FORM_data8DyK DW_FORM_string}DyK DW_FORM_blockDyK DW_FORM_block1}DyK DW_FORM_data1{DyK  DW_FORM_flag}DyK DW_FORM_sdata{DyK  DW_FORM_strp}DyK DW_FORM_udataDyK DW_FORM_ref_addr{DyK  DW_FORM_ref1{DyK  DW_FORM_ref2{DyK  DW_FORM_ref4{DyK  DW_FORM_ref8DyK DW_FORM_ref_udataDyK DW_FORM_indirectDyK BM7_5_3_Abbreviation_TablesDyK sec_offset_forms}DyK exprloc_formsDyK flag_present_formsDyK DW_FORM_ref_sig8}DyK _Ref478444053}DyK _Ref478444053}DyK _Ref478376471}DyK _Ref478376678}DyK _Ref519657898wDyK  DW_OP_addryDyK  DW_OP_deref}DyK DW_OP_const1u}DyK DW_OP_const1s}DyK DW_OP_const2u}DyK DW_OP_const2s}DyK DW_OP_const4u}DyK DW_OP_const4s}DyK DW_OP_const8u}DyK DW_OP_const8s{DyK  DW_OP_constu{DyK  DW_OP_constsuDyK  DW_OP_dupwDyK  DW_OP_dropwDyK  DW_OP_overwDyK  DW_OP_pickwDyK  DW_OP_swapuDyK  DW_OP_rot{DyK  DW_OP_xderefuDyK  DW_OP_absuDyK  DW_OP_anduDyK  DW_OP_divyDyK  DW_OP_minusuDyK  DW_OP_moduDyK  DW_OP_muluDyK  DW_OP_neguDyK  DW_OP_notsDyK  DW_OP_orwDyK  DW_OP_plusDyK DW_OP_plus_uconstuDyK  DW_OP_shluDyK  DW_OP_shrwDyK  DW_OP_shrauDyK  DW_OP_xorwDyK  DW_OP_skipuDyK  DW_OP_brasDyK  DW_OP_eqsDyK  DW_OP_gesDyK  DW_OP_gtsDyK  DW_OP_lesDyK  DW_OP_ltsDyK  DW_OP_newDyK  DW_OP_litNwDyK  DW_OP_lit0wDyK  DW_OP_litNwDyK  DW_OP_litNwDyK  DW_OP_regNwDyK  DW_OP_reg0wDyK  DW_OP_regNwDyK  DW_OP_regNyDyK  DW_OP_bregNyDyK  DW_OP_bregNyDyK  DW_OP_bregNyDyK  DW_OP_bregNwDyK  DW_OP_regxyDyK  DW_OP_fbregyDyK  DW_OP_bregxyDyK  DW_OP_pieceDyK DW_OP_deref_sizeDyK DW_OP_xderef_sizeuDyK  DW_OP_nopDyK DW_OP_push_object_addressyDyK  DW_OP_call2yDyK  DW_OP_call4DyK DW_OP_call_refDyK DW_OP_form_tls_addressDyK DW_OP_call_frame_cfaDyK DW_OP_bit_pieceDyK DW_OP_implicit_valueDyK DW_OP_stack_value{DyK  DW_XXX_lo_hi{DyK  DW_XXX_lo_hi}DyK _Ref516902159DyK DW_AT_encoding}DyK _Ref264184383DyK DW_ATE_addressDyK DW_ATE_booleanDyK DW_ATE_complex_float{DyK  DW_ATE_float}DyK DW_ATE_signedDyK DW_ATE_signed_charDyK DW_ATE_unsignedDyK DW_ATE_unsigned_charDyK DW_ATE_imaginary_floatDyK DW_ATE_packed_decimalDyK DW_ATE_numeric_string}DyK DW_ATE_editedDyK DW_ATE_signed_fixedDyK DW_ATE_unsigned_fixedDyK DW_ATE_decimal_floatwDyK  DW_ATE_utf{DyK  DW_XXX_lo_hi{DyK  DW_XXX_lo_hiDyK DW_AT_decimal_signDyK DW_DS_unsignedDyK DW_DS_leading_overpunchDyK DW_DS_trailing_overpunchDyK DW_DS_leading_separateDyK DW_DS_trailing_separateDyK DW_AT_endianityDyK DW_END_defaultwDyK  DW_END_big}DyK DW_END_littleDyK DW_AT_accessibility}DyK _Ref478376859DyK DW_ACCESS_publicDyK DW_ACCESS_protectedDyK DW_ACCESS_privateDyK DW_AT_visibility}DyK _Ref478376876{DyK  DW_VIS_localDyK DW_VIS_exportedDyK DW_VIS_qualifiedDyK DW_AT_virtuality}DyK _Ref478376892DyK DW_VIRTUALITY_noneDyK DW_VIRTUALITY_virtualDyK DW_VIRTUALITY_pure_virtualDyK DW_AT_language}DyK _Ref519658001}DyK _Ref519658001DyK DW_AT_lower_bound_subrangeDyK DW_TAG_subrange_typeyDyK  DW_LANG_C89uDyK  DW_LANG_C}DyK DW_LANG_Ada83DyK DW_LANG_C_plus_plusDyK DW_LANG_Cobol74DyK DW_LANG_Cobol85DyK DW_LANG_Fortran77DyK DW_LANG_Fortran90DyK DW_LANG_Pascal83DyK DW_LANG_Modula2{DyK  DW_LANG_JavayDyK  DW_LANG_C99}DyK DW_LANG_Ada95DyK DW_LANG_Fortran95yDyK  DW_LANG_PLI{DyK  DW_LANG_ObjCDyK DW_LANG_ObjC_plus_plusyDyK  DW_LANG_UPCuDyK  DW_LANG_DDyK DW_LANG_Python{DyK  DW_XXX_lo_hi{DyK  DW_XXX_lo_hi{DyK  DW_ADDR_noneDyK DW_AT_identifier_case}DyK _Ref478376968DyK DW_ID_case_sensitive}DyK DW_ID_up_caseDyK DW_ID_down_caseDyK DW_ID_case_insensitiveDyK DW_AT_calling_convention}DyK _Ref478376989{DyK  DW_CC_normal}DyK DW_CC_program{DyK  DW_CC_nocall{DyK  DW_XXX_lo_hi{DyK  DW_XXX_lo_hi{DyK  DW_AT_inline}DyK _Ref478377006DyK DW_INL_not_inlinedDyK DW_INL_inlinedDyK DW_INL_declared_not_inlinedDyK DW_INL_declared_inlinedDyK DW_AT_ordering_usage}DyK _Ref478377021DyK DW_ORD_row_majorDyK DW_ORD_col_majorDyK DW_AT_discr_list}DyK _Ref478377046{DyK  DW_DSC_label{DyK  DW_DSC_rangeDyK initial_length_fieldDyK bit32_dwarf_formatDyK bit64_dwarf_formatDyK BM7_4_File_Constraints}DyK _Ref114543352DyK bit32_dwarf_formatDyK bit64_safe_DWARF_descriptionDyK bit64_dwarf_formatDyK BM7_4_File_ConstraintsDyK bit32_dwarf_formatDyK bit64_safe_DWARF_descriptionDyK bit64_dwarf_formatDyK BM7_4_File_ConstraintsDyK initial_length_fieldDyK bit32_dwarf_formatDyK bit64_dwarf_formatDyK BM7_4_File_Constraints}DyK _Ref114543352DyK bit32_dwarf_formatDyK bit64_safe_DWARF_descriptionDyK bit64_dwarf_formatDyK BM7_4_File_Constraints}DyK _Ref114543352}DyK _Ref519658061yDyK  DW_LNS_copyDyK DW_LNS_advance_pcDyK DW_LNS_advance_lineDyK DW_LNS_set_fileDyK DW_LNS_set_columnDyK DW_LNS_negate_stmtDyK DW_LNS_set_basic_blockDyK DW_LNS_const_add_pcDyK DW_LNS_fixed_advance_pcDyK DW_LNS_set_prologue_endDyK DW_LNS_set_epilogue_beginDyK DW_LNS_set_isa}DyK _Ref528997817DyK DW_LNE_end_sequenceDyK DW_LNE_set_addressDyK DW_LNE_define_fileDyK DW_LNE_set_discriminator{DyK  DW_XXX_lo_hi{DyK  DW_XXX_lo_hiDyK DW_MACINFO_vendor_ext}DyK _Ref478377193DyK DW_MACINFO_defineDyK DW_MACINFO_undefDyK DW_MACINFO_start_fileDyK DW_MACINFO_end_fileDyK DW_MACINFO_vendor_extDyK bit32_dwarf_formatDyK bit64_safe_DWARF_descriptionDyK bit64_dwarf_format}DyK _Ref114543352}DyK _Ref519658101DyK DW_CFA_advance_loc}DyK DW_CFA_offsetDyK DW_CFA_restorewDyK  DW_CFA_nopDyK DW_CFA_set_locDyK DW_CFA_advance_loc1DyK DW_CFA_advance_loc2DyK DW_CFA_advance_loc4DyK DW_CFA_offset_extendedDyK DW_CFA_restore_extendedDyK DW_CFA_undefinedDyK DW_CFA_same_valueDyK DW_CFA_registerDyK DW_CFA_remember_stateDyK DW_CFA_restore_stateDyK DW_CFA_def_cfaDyK DW_CFA_def_cfa_registerDyK DW_CFA_def_cfa_offsetDyK DW_CFA_def_cfa_expressionDyK DW_CFA_expressionDyK DW_CFA_offset_extended_sfDyK DW_CFA_def_cfa_sfDyK DW_CFA_def_cfa_offset_sfDyK DW_CFA_val_offsetDyK DW_CFA_val_offset_sfDyK DW_CFA_val_expression{DyK  DW_XXX_lo_hi{DyK  DW_XXX_lo_hi}DyK _Ref495310701}DyK _Ref516902159DyK bit32_dwarf_formatDyK bit32_dwarf_formatDyK bit64_dwarf_formatDyK bit64_dwarf_format}DyK _Ref483180630wDyK  DW_AT_nameDyK DW_AT_accessibilityDyK DW_AT_address_classDyK DW_AT_allocatedDyK DW_AT_artificialDyK DW_AT_associatedDyK DW_AT_binary_scaleDyK DW_AT_bit_offsetDyK DW_AT_bit_sizeDyK DW_AT_bit_strideDyK DW_AT_byte_sizeDyK DW_AT_bit_strideDyK DW_AT_const_exprDyK DW_AT_const_valueDyK DW_AT_containing_typeyDyK  DW_AT_countDyK DW_AT_data_bit_offsetDyK DW_AT_data_locationDyK DW_AT_data_member_locationDyK DW_AT_decimal_scaleDyK DW_AT_decimal_signDyK DW_AT_default_valueDyK DW_AT_digit_countyDyK  DW_AT_discrDyK DW_AT_discr_listDyK DW_AT_discr_valueDyK DW_AT_encodingDyK DW_AT_enum_classDyK DW_AT_endianityDyK DW_AT_explicitDyK DW_AT_is_optionalDyK DW_AT_locationDyK DW_AT_lower_bound}DyK DW_AT_mutableDyK DW_AT_orderingDyK DW_AT_picture_stringDyK DW_AT_prototypedyDyK  DW_AT_small}DyK DW_AT_segmentDyK DW_AT_string_lengthDyK DW_AT_threads_scaledDyK DW_AT_upper_boundDyK DW_AT_use_locationDyK DW_AT_use_utf8DyK DW_AT_variable_parameterDyK DW_AT_virtualityDyK DW_AT_visibilityDyK DW_AT_vtable_elem_location}DyK DW_FORM_sdata{DyK  DW_FORM_flagDyK DW_FORM_string}DyK DW_FORM_blockDyK DW_TAG_pointer_typeDyK DW_TAG_reference_typeDyK DW_TAG_rvalue_reference_typeDyK DW_TAG_ptr_to_member_type}DyK DW_TAG_friendwDyK  DW_AT_type{DyK  DW_AT_friendwDyK  DW_AT_nameDyK DW_TAG_subprogramDyK DW_AT_specificationDyK DW_AT_declaration}DyK _Ref249150955}DyK _Ref235500877DyK DW_AT_decl_columnDyK DW_AT_decl_fileDyK DW_AT_decl_lineDyK DW_TAG_access_declarationkDyK DECLDyK DW_AT_accessibilityDyK DW_AT_descriptionwDyK  DW_AT_name}DyK DW_AT_siblingDyK DW_TAG_array_typekDyK DECLDyK DW_AT_abstract_originDyK DW_AT_accessibilityDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_bit_sizeDyK DW_AT_stride_sizeDyK DW_AT_byte_sizeDyK DW_AT_data_locationDyK DW_AT_declarationDyK DW_AT_descriptionwDyK  DW_AT_nameDyK DW_AT_ordering}DyK DW_AT_siblingDyK DW_AT_specificationDyK DW_AT_start_scopewDyK  DW_AT_typeDyK DW_AT_visibilityDyK DW_TAG_base_typekDyK DECLDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_binary_scaleDyK DW_AT_bit_offsetDyK DW_AT_bit_sizeDyK DW_AT_byte_sizeDyK DW_AT_data_bit_offsetDyK DW_AT_data_locationDyK DW_AT_decimal_scaleDyK DW_AT_decimal_signDyK DW_AT_descriptionDyK DW_AT_digit_countDyK DW_AT_encodingDyK DW_AT_endianitywDyK  DW_AT_nameDyK DW_AT_picture_string}DyK DW_AT_siblingyDyK  DW_AT_smallDyK DW_TAG_catch_blockkDyK DECLDyK DW_AT_abstract_origin}DyK DW_AT_high_pc{DyK  DW_AT_low_pc{DyK  DW_AT_ranges}DyK DW_AT_segment}DyK DW_AT_siblingDyK DW_TAG_class_typekDyK DECLDyK DW_AT_abstract_originDyK DW_AT_accessibilityDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_bit_sizeDyK DW_AT_byte_sizeDyK DW_AT_data_locationDyK DW_AT_declarationDyK DW_AT_descriptionwDyK  DW_AT_name}DyK DW_AT_siblingDyK DW_AT_signatureDyK DW_AT_specificationDyK DW_AT_start_scopeDyK DW_AT_visibilityDyK DW_TAG_common_blockkDyK DECLDyK DW_AT_declarationDyK DW_AT_descriptionDyK DW_AT_linkage_nameDyK DW_AT_locationwDyK  DW_AT_name}DyK DW_AT_segment}DyK DW_AT_siblingDyK DW_AT_visibilityDyK DW_TAG_common_inclusionkDyK DECLDyK DW_AT_common_referenceDyK DW_AT_declaration}DyK DW_AT_siblingDyK DW_AT_visibilityDyK DW_TAG_compile_unitDyK DW_AT_base_typesDyK DW_AT_comp_dirDyK DW_AT_identifier_case}DyK DW_AT_high_pcDyK DW_AT_language{DyK  DW_AT_low_pcDyK DW_AT_macro_infoDyK !DW_AT_main_subprogram_unit_usagewDyK  DW_AT_nameDyK DW_AT_producer{DyK  DW_AT_ranges}DyK DW_AT_segmentDyK DW_AT_stmt_listDyK DW_AT_use_utf8DyK DW_TAG_conditionkDyK DECLwDyK  DW_AT_name}DyK DW_AT_siblingDyK DW_TAG_const_typeDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_data_locationwDyK  DW_AT_name}DyK DW_AT_siblingwDyK  DW_AT_typeDyK DW_TAG_constantkDyK DECLDyK DW_AT_accessibilityDyK DW_AT_const_valueDyK DW_AT_declarationDyK DW_AT_descriptionDyK DW_AT_endianityDyK DW_AT_externalDyK DW_AT_linkage_namewDyK  DW_AT_name}DyK DW_AT_siblingDyK DW_AT_start_scopewDyK  DW_AT_typeDyK DW_AT_visibilityDyK DW_TAG_dwarf_procedureDyK DW_AT_locationDyK DW_TAG_entry_pointkDyK DECLDyK DW_AT_address_classDyK DW_AT_descriptionDyK DW_AT_frame_baseDyK DW_AT_linkage_name{DyK  DW_AT_low_pcwDyK  DW_AT_nameDyK DW_AT_return_addr}DyK DW_AT_segment}DyK DW_AT_siblingDyK DW_AT_static_linkwDyK  DW_AT_typeDyK DW_TAG_enumeration_typekDyK DECLDyK DW_AT_abstract_originDyK DW_AT_accessibilityDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_bit_sizeDyK DW_AT_bit_strideDyK DW_AT_byte_size{DyK  DW_AT_strideDyK DW_AT_data_locationDyK DW_AT_declarationDyK DW_AT_descriptionDyK DW_AT_enum_classwDyK  DW_AT_name}DyK DW_AT_siblingDyK DW_AT_signatureDyK DW_AT_specificationDyK DW_AT_start_scopewDyK  DW_AT_typeDyK DW_AT_visibilityDyK DW_TAG_enumeratorkDyK DECLDyK DW_AT_const_valueDyK DW_AT_descriptionwDyK  DW_AT_name}DyK DW_AT_siblingDyK DW_TAG_file_typekDyK DECLDyK DW_AT_abstract_originDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_bit_sizeDyK DW_AT_byte_sizeDyK DW_AT_data_locationDyK DW_AT_descriptionwDyK  DW_AT_name}DyK DW_AT_siblingDyK DW_AT_start_scopewDyK  DW_AT_typeDyK DW_AT_visibilityDyK DW_TAG_formal_parameterkDyK DECLDyK DW_AT_abstract_originDyK DW_AT_artificialDyK DW_AT_const_valueDyK DW_AT_default_valueDyK DW_AT_descriptionDyK DW_AT_endianityDyK DW_AT_is_optionalDyK DW_AT_locationwDyK  DW_AT_name}DyK DW_AT_segment}DyK DW_AT_siblingwDyK  DW_AT_typeDyK DW_AT_variable_parameter}DyK DW_TAG_friendkDyK DECLDyK DW_AT_abstract_origin{DyK  DW_AT_friend}DyK DW_AT_siblingDyK DW_TAG_imported_declarationkDyK DECLDyK DW_AT_accessibilityDyK DW_AT_description{DyK  DW_AT_importwDyK  DW_AT_name}DyK DW_AT_siblingDyK DW_AT_start_scopeDyK DW_TAG_imported_modulekDyK DECL{DyK  DW_AT_import}DyK DW_AT_siblingDyK DW_AT_start_scopeDyK DW_TAG_imported_unit{DyK  DW_AT_importDyK DW_TAG_inheritancekDyK DECLDyK DW_AT_accessibilityDyK DW_AT_data_member_location}DyK DW_AT_siblingwDyK  DW_AT_typeDyK DW_AT_virtualityDyK DW_TAG_inlined_subroutineDyK DW_AT_abstract_originDyK DW_AT_call_columnDyK DW_AT_call_fileDyK DW_AT_call_lineDyK DW_AT_const_exprDyK DW_AT_entry_pc}DyK DW_AT_high_pc{DyK  DW_AT_low_pc{DyK  DW_AT_rangesDyK DW_AT_return_addr}DyK DW_AT_segment}DyK DW_AT_siblingDyK DW_AT_start_scopeDyK DW_AT_trampolineDyK DW_TAG_interfacekDyK DECLDyK DW_AT_accessibilityDyK DW_AT_descriptionwDyK  DW_AT_name}DyK DW_AT_siblingDyK DW_AT_start_scope{DyK  DW_TAG_labelkDyK DECLDyK DW_AT_abstract_originDyK DW_AT_description{DyK  DW_AT_low_pcwDyK  DW_AT_name}DyK DW_AT_segmentDyK DW_AT_start_scope}DyK DW_AT_siblingDyK DW_TAG_lexical_blockkDyK DECLDyK DW_AT_abstract_originDyK DW_AT_description}DyK DW_AT_high_pc{DyK  DW_AT_low_pcwDyK  DW_AT_name{DyK  DW_AT_ranges}DyK DW_AT_segment}DyK DW_AT_sibling}DyK DW_TAG_memberkDyK DECLDyK DW_AT_accessibilityDyK DW_AT_bit_offsetDyK DW_AT_bit_sizeDyK DW_AT_byte_sizeDyK DW_AT_data_bit_offsetDyK DW_AT_data_member_locationDyK DW_AT_declarationDyK DW_AT_description}DyK DW_AT_mutablewDyK  DW_AT_name}DyK DW_AT_siblingwDyK  DW_AT_typeDyK DW_AT_visibility}DyK DW_TAG_modulekDyK DECLDyK DW_AT_accessibilityDyK DW_AT_declarationDyK DW_AT_descriptionDyK DW_AT_entry_pc}DyK DW_AT_high_pc{DyK  DW_AT_low_pcwDyK  DW_AT_nameDyK DW_AT_priority{DyK  DW_AT_ranges}DyK DW_AT_segment}DyK DW_AT_siblingDyK DW_AT_specificationDyK DW_AT_visibilityDyK DW_TAG_namelistkDyK DECLDyK DW_AT_abstract_originDyK DW_AT_accessibilityDyK DW_AT_declarationwDyK  DW_AT_name}DyK DW_AT_siblingDyK DW_AT_visibilityDyK DW_TAG_namelist_itemkDyK DECLDyK DW_AT_namelist_item}DyK DW_AT_siblingDyK DW_TAG_namespacekDyK DECLDyK DW_AT_descriptionDyK DW_AT_extensionwDyK  DW_AT_name}DyK DW_AT_siblingDyK DW_AT_start_scopeDyK DW_TAG_packed_typeDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_data_locationwDyK  DW_AT_name}DyK DW_AT_siblingwDyK  DW_AT_typeDyK DW_TAG_partial_unitDyK DW_AT_base_typesDyK DW_AT_comp_dirDyK DW_AT_descriptionDyK DW_AT_identifier_case}DyK DW_AT_high_pcDyK DW_AT_language{DyK  DW_AT_low_pcDyK DW_AT_macro_infoDyK !DW_AT_main_subprogram_unit_usagewDyK  DW_AT_nameDyK DW_AT_producer{DyK  DW_AT_ranges}DyK DW_AT_segmentDyK DW_AT_stmt_listDyK DW_AT_use_utf8DyK DW_TAG_pointer_typeDyK DW_AT_address_classDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_data_locationwDyK  DW_AT_name}DyK DW_AT_siblingwDyK  DW_AT_typeDyK DW_TAG_ptr_to_member_typekDyK DECLDyK DW_AT_abstract_originDyK DW_AT_address_classDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_containing_typeDyK DW_AT_data_locationDyK DW_AT_declarationDyK DW_AT_descriptionwDyK  DW_AT_name}DyK DW_AT_siblingwDyK  DW_AT_typeDyK DW_AT_use_locationDyK DW_AT_visibilityDyK DW_TAG_reference_typeDyK DW_AT_address_classDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_data_locationwDyK  DW_AT_name}DyK DW_AT_siblingwDyK  DW_AT_typeDyK DW_TAG_restrict_typeDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_data_locationwDyK  DW_AT_name}DyK DW_AT_siblingwDyK  DW_AT_typeDyK DW_TAG_rvalue_reference_typekDyK DECLDyK DW_AT_address_class_ptrDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_data_locationwDyK  DW_AT_name}DyK DW_AT_siblingwDyK  DW_AT_typeDyK DW_TAG_set_typekDyK DECLDyK DW_AT_abstract_originDyK DW_AT_accessibilityDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_bit_sizeDyK DW_AT_byte_sizeDyK DW_AT_data_locationDyK DW_AT_declarationDyK DW_AT_descriptionwDyK  DW_AT_nameDyK DW_AT_start_scope}DyK DW_AT_siblingwDyK  DW_AT_typeDyK DW_AT_visibilityDyK DW_TAG_shared_typeDyK DW_AT_allocatedDyK DW_AT_associatedyDyK  DW_AT_countDyK DW_AT_data_locationwDyK  DW_AT_name}DyK DW_AT_siblingwDyK  DW_AT_typeDyK DW_TAG_string_typekDyK DECLDyK DW_AT_abstract_originDyK DW_AT_accessibilityDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_bit_sizeDyK DW_AT_byte_sizeDyK DW_AT_data_locationDyK DW_AT_declarationDyK DW_AT_descriptionwDyK  DW_AT_name}DyK DW_AT_siblingDyK DW_AT_start_scopeDyK DW_AT_string_lengthDyK DW_AT_visibilityDyK DW_TAG_structure_typekDyK DECLDyK DW_AT_abstract_originDyK DW_AT_accessibilityDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_bit_sizeDyK DW_AT_byte_sizeDyK DW_AT_data_locationDyK DW_AT_declarationDyK DW_AT_descriptionwDyK  DW_AT_name}DyK DW_AT_siblingDyK DW_AT_signatureDyK DW_AT_specificationDyK DW_AT_start_scopeDyK DW_AT_visibilityDyK DW_TAG_subprogramkDyK DECLDyK DW_AT_abstract_originDyK DW_AT_accessibilityDyK DW_AT_address_classDyK DW_AT_artificialDyK DW_AT_calling_conventionDyK DW_AT_declarationDyK DW_AT_descriptionDyK DW_AT_elementalDyK DW_AT_entry_pcDyK DW_AT_explicitDyK DW_AT_externalDyK DW_AT_frame_base}DyK DW_AT_high_pc{DyK  DW_AT_inlineDyK DW_AT_linkage_name{DyK  DW_AT_low_pcDyK !DW_AT_main_subprogram_unit_usagewDyK  DW_AT_nameDyK DW_AT_object_pointerDyK DW_AT_prototypedwDyK  DW_AT_pure{DyK  DW_AT_rangesDyK DW_AT_recursiveDyK DW_AT_return_addr}DyK DW_AT_segment}DyK DW_AT_siblingDyK DW_AT_specificationDyK DW_AT_start_scopeDyK DW_AT_static_linkDyK DW_AT_trampolinewDyK  DW_AT_typeDyK DW_AT_visibilityDyK DW_AT_virtualityDyK DW_AT_vtable_elem_locationDyK DW_TAG_subrange_typekDyK DECLDyK DW_AT_abstract_originDyK DW_AT_accessibilityDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_bit_sizeDyK DW_AT_bit_strideDyK DW_AT_byte_size{DyK  DW_AT_strideyDyK  DW_AT_countDyK DW_AT_data_locationDyK DW_AT_declarationDyK DW_AT_descriptionDyK DW_AT_lower_boundwDyK  DW_AT_name}DyK DW_AT_siblingDyK DW_AT_threads_scaledwDyK  DW_AT_typeDyK DW_AT_upper_boundDyK DW_AT_visibilityDyK DW_TAG_subroutine_typekDyK DECLDyK DW_AT_abstract_originDyK DW_AT_accessibilityDyK DW_AT_address_classDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_data_locationDyK DW_AT_declarationDyK DW_AT_descriptionwDyK  DW_AT_nameDyK DW_AT_prototyped}DyK DW_AT_siblingDyK DW_AT_start_scopewDyK  DW_AT_typeDyK DW_AT_visibilityDyK DW_TAG_template_aliaskDyK DECLDyK DW_AT_abstract_originDyK DW_AT_accessibilityDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_data_locationDyK DW_AT_declarationDyK DW_AT_descriptionwDyK  DW_AT_name}DyK DW_AT_siblingDyK DW_AT_signatureDyK DW_AT_start_scopewDyK  DW_AT_typeDyK DW_AT_visibilityDyK DW_TAG_template_type_parameterkDyK DECLDyK DW_AT_descriptionwDyK  DW_AT_name}DyK DW_AT_siblingwDyK  DW_AT_typeDyK  DW_TAG_template_value_parameterkDyK DECLDyK DW_AT_const_valueDyK DW_AT_descriptionwDyK  DW_AT_name}DyK DW_AT_siblingwDyK  DW_AT_typeDyK DW_TAG_thrown_typekDyK DECLDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_data_location}DyK DW_AT_siblingwDyK  DW_AT_typeDyK DW_TAG_try_blockkDyK DECLDyK DW_AT_abstract_origin}DyK DW_AT_high_pc{DyK  DW_AT_low_pc{DyK  DW_AT_ranges}DyK DW_AT_segment}DyK DW_AT_siblingDyK DW_TAG_typedefkDyK DECLDyK DW_AT_abstract_originDyK DW_AT_accessibilityDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_data_locationDyK DW_AT_declarationDyK DW_AT_descriptionwDyK  DW_AT_name}DyK DW_AT_siblingDyK DW_AT_start_scopewDyK  DW_AT_typeDyK DW_AT_visibilityDyK DW_TAG_type_unit_defDyK DW_AT_languageDyK DW_TAG_union_typekDyK DECLDyK DW_AT_abstract_originDyK DW_AT_accessibilityDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_bit_sizeDyK DW_AT_byte_sizeDyK DW_AT_data_locationDyK DW_AT_declarationDyK DW_AT_descriptionwDyK  DW_AT_name}DyK DW_AT_siblingDyK DW_AT_signatureDyK DW_AT_specificationDyK DW_AT_start_scopeDyK DW_AT_visibilityDyK DW_TAG_unspecified_parameterskDyK DECLDyK DW_AT_abstract_originDyK DW_AT_artificial}DyK DW_AT_siblingDyK DW_TAG_unspecified_typekDyK DECLDyK DW_AT_descriptionwDyK  DW_AT_nameDyK DW_TAG_variablekDyK DECLDyK DW_AT_abstract_originDyK DW_AT_accessibilityDyK DW_AT_const_exprDyK DW_AT_const_valueDyK DW_AT_declarationDyK DW_AT_descriptionDyK DW_AT_endianityDyK DW_AT_externalDyK DW_AT_linkage_nameDyK DW_AT_locationwDyK  DW_AT_name}DyK DW_AT_segment}DyK DW_AT_siblingDyK DW_AT_specificationDyK DW_AT_start_scopewDyK  DW_AT_typeDyK DW_AT_visibilityDyK DW_TAG_variantkDyK DECLDyK DW_AT_accessibilityDyK DW_AT_abstract_originDyK DW_AT_declarationDyK DW_AT_discr_listDyK DW_AT_discr_value}DyK DW_AT_siblingDyK DW_TAG_variant_partkDyK DECLDyK DW_AT_abstract_originDyK DW_AT_accessibilityDyK DW_AT_declarationyDyK  DW_AT_discr}DyK DW_AT_siblingwDyK  DW_AT_typeDyK DW_TAG_volatile_typeDyK DW_AT_allocatedDyK DW_AT_associatedDyK DW_AT_data_locationwDyK  DW_AT_type}DyK DW_AT_siblingwDyK  DW_AT_typeDyK DW_TAG_with_stmtDyK DW_AT_accessibilityDyK DW_AT_address_classDyK DW_AT_declaration}DyK DW_AT_high_pcDyK DW_AT_location{DyK  DW_AT_low_pc{DyK  DW_AT_ranges}DyK DW_AT_segment}DyK DW_AT_siblingwDyK  DW_AT_typeDyK DW_AT_visibility}DyK _Ref514566044yDyK  DW_LANG_C89DyK sec_offset_formsDyK DW_ATE_unsigned_charDyK DW_TAG_compile_unitDyK DW_CHILDREN_yeswDyK  DW_AT_nameDyK DW_AT_producerDyK DW_AT_comp_dirDyK DW_AT_language{DyK  DW_AT_low_pc}DyK DW_AT_high_pcDyK DW_AT_stmt_listDyK DW_FORM_stringDyK DW_FORM_stringDyK DW_FORM_string}DyK DW_FORM_data1{DyK  DW_FORM_addr{DyK  DW_FORM_addrDyK DW_FORM_indirectDyK DW_TAG_base_typeDyK DW_CHILDREN_nowDyK  DW_AT_nameDyK DW_AT_encodingDyK DW_AT_byte_sizeDyK DW_FORM_string}DyK DW_FORM_data1}DyK DW_FORM_data1DyK DW_TAG_pointer_typeDyK DW_CHILDREN_nowDyK  DW_AT_type{DyK  DW_FORM_ref4DyK DW_TAG_typedefDyK DW_CHILDREN_nowDyK  DW_AT_namewDyK  DW_AT_typeDyK DW_FORM_stringDyK DW_FORM_ref_addr}DyK _Ref495114265}DyK _Ref514566126DyK DW_AT_data_location}DyK _Ref514566187DyK DW_AT_data_locationDyK DW_AT_byte_strideDyK DW_AT_data_location}DyK _Ref495121448}DyK _Ref514566351DyK DW_AT_data_location}DyK _Ref230668377}DyK _Ref230668591DyK &BM5_5_4_Structure_Data_Member_Entries}DyK _Ref514566514}DyK _Ref514566562}DyK _Ref107913400}DyK _Ref107913440}DyK _Ref514566641}DyK _Ref490448600DyK DW_LNS_advance_pcDyK DW_LNS_advance_pcDyK DW_LNE_end_sequence}DyK _Ref490448653DyK DW_LNS_fixed_advance_pcDyK DW_LNS_fixed_advance_pcDyK DW_LNS_fixed_advance_pcDyK DW_LNS_fixed_advance_pcDyK DW_LNS_fixed_advance_pcDyK DW_LNE_end_sequenceDyK )BM6_4_1_Structure_of_Call_Frame_Informat}DyK _Ref490446932}DyK _Ref514566821}DyK _Ref490446932DyK DW_CFA_def_cfaDyK DW_CFA_same_valueDyK DW_CFA_undefinedDyK DW_CFA_undefinedDyK DW_CFA_undefinedDyK DW_CFA_same_valueDyK DW_CFA_same_valueDyK DW_CFA_same_valueDyK DW_CFA_same_valueDyK DW_CFA_registerwDyK  DW_CFA_nopwDyK  DW_CFA_nopwDyK  DW_CFA_nop}DyK _Ref241040257DyK DW_CFA_advance_locDyK DW_CFA_def_cfa_offsetDyK DW_CFA_advance_loc}DyK DW_CFA_offsetDyK DW_CFA_advance_loc}DyK DW_CFA_offsetDyK DW_CFA_advance_locDyK DW_CFA_def_cfa_registerDyK DW_CFA_advance_loc}DyK DW_CFA_offsetDyK DW_CFA_advance_locDyK DW_CFA_restoreDyK DW_CFA_advance_locDyK DW_CFA_restoreDyK DW_CFA_def_cfa_registerDyK DW_CFA_advance_locDyK DW_CFA_restoreDyK DW_CFA_advance_locDyK DW_CFA_def_cfa_offsetwDyK  DW_CFA_nopwDyK  DW_CFA_nop}DyK _Ref513876858}DyK _Ref513876786}DyK _Ref513876786}DyK _Ref513876858}DyK _Ref513876890}DyK _Ref513876946}DyK _Ref513876786{DyK  DW_AT_inline}DyK _Ref513876946}DyK _Ref513877035}DyK _Ref513877035wDyK  DW_AT_name{DyK  DW_AT_low_pc}DyK _Ref513877090{DyK  DW_AT_low_pc}DyK DW_AT_high_pcDyK DW_AT_location}DyK _Ref513877143}DyK _Ref513877143}DyK _Ref230691077}DyK _Ref230694316}DyK _Ref237948397}DyK _Ref238029801}DyK _Ref241114729}DyK _Ref238036372}DyK _Ref238036419}DyK _Ref511545371}DyK _Ref511545453}DyK _Ref511545555DyK DW_TAG_compile_unitDyK DW_TAG_compile_unitDyK DW_TAG_partial_unitDyK DW_TAG_compile_unitDyK DW_TAG_imported_unit{DyK  DW_AT_importDyK DW_TAG_compile_unitDyK DW_TAG_partial_unitDyK DW_FORM_ref_addr}DyK _Ref511545371}DyK _Ref514567035}DyK _Ref511546481DyK DW_TAG_compile_unitDyK DW_TAG_partial_unit}DyK _Ref514567147}DyK _Ref514567198}DyK _Ref514567250}DyK _Ref514567301}DyK _Ref511545453DyK DW_TAG_partial_unitDyK DW_TAG_imported_unit}DyK _Ref511546481{DyK  DW_AT_import}DyK _Ref230762311}DyK _Ref230753495}DyK _Ref235514031}DyK _Ref235514119}DyK _Ref230753495}DyK _Ref235514187}DyK _Ref235514240}DyK _Ref230753495}DyK _Ref517025593}DyK _Ref235514361}DyK _Ref235514405}DyK _Ref230753495DyK DW_TAG_imported_unit}DyK _Ref109548925DyK yK 8http://fsf.org/yX;H,]ą'cDyK yK Rhttp://www.gnu.org/copyleft/yX;H,]ą'c i8@8 NormalCJ_HaJmH sH tH P@P  Heading 1$ & F<@&5CJKHOJQJH@H  Heading 2$ & F @dd@&5D@D  Heading 3$ & F<@&OJQJL@L  Heading 4$ & F<@&5CJOJQJ<@<  Heading 5 & F<@&CJ@@@  Heading 6 & F<@&6CJD@D  Heading 7 & F<@& CJOJQJH@H  Heading 8 & F<@&6CJOJQJJ @J  Heading 9 & F<@&56CJOJQJ<A@< Default Paragraph Font2O2 Definition Term:O: Definition List h^h(( Definition6*O* H1$@& 5CJ0KH$&O& H2$@&5CJ$&O& H3$@&5CJ"O" H4$@&5&O& H5$@&5CJ&O& H6$@&5CJ&O& Address68O8 Blockquotehh]h^h CITE6$O$ CODE CJOJQJ(X( Emphasis6^J2U@2 Hyperlink>*B*^JphBVB FollowedHyperlink>*B* ^Jph00 Keyboard5CJOJQJ^O^ Preformatted( # ~= z9!v% CJOJQJb]bz-Bottom of Form!$$d1$Na$<CJOJQJaJ\\\ z-Top of Form"$&d1$Pa$<CJOJQJaJ$1$ SampleOJQJ$WA$ Strong5^J0OQ0 Typewriter CJOJQJ$a$ Variable62Oq2 HTML Markup <B*ph"" Comment<FY@F  Document Map)-D M OJQJ,@, Header * !, @, Footer + !*)@* Page Number^J,/@, List-h^h`02@0 List 2.^`40@4 List Bullet/$$666@6 List Bullet 2 0^67@6 List Bullet 3 1 & F >D@"> List Continue2$hx^h>E@2> List Continue 23x^."@. Caption 4xx54B@R4 Body Text,Char5x>C@b> Body Text Indent 6dxJ@JTOC 17$ $ xx5;CJmHnHu.@. TOC 2 8^:CJ.@. TOC 3 9^6CJ*@* TOC 4 :^CJ*@* TOC 5 ;^CJ*@* TOC 6 <^CJ*@* TOC 7 =^CJ*@* TOC 8 >^CJ*@* TOC 9 ?^CJL#@L Table of Figures@ ^` :CJl-@l  Macro Text-A  ` @ dd1$OJQJ_HmH sH tH D>@"D TitleB$<@&a$5CJ KHOJQJ:.@:  TOA HeadingCx 5OJQJP1@BP List Number'D$$ & F]hdd^h`ZOZ Appendix 1E$ & FF <@&5CJKHOJQJ>Ob> listnum1F & F hh^h:'q: Comment ReferenceCJ^J.O. listbullet1H6,O, listbulletI60@0  Comment TextJCJ<T@< Block TextKx]^2Q@2 Body Text 3LxCJHM@QH Body Text First Indent M`ZN@aZ Body Text First Indent 2Nhd^h`JR@J Body Text Indent 2Ohdx^hHS@H Body Text Indent 3Phx^hCJ*?@* Closing Q^L@ DateR0+@20  Endnote TextSCJ\$@B\ Envelope Address!T@ &+D/^@ OJQJ>%@R> Envelope ReturnU CJOJQJ2@b2  Footnote TextVCJ6 @6 Index 1W^`CJ6 @6 Index 2X^`CJ6 @6 Index 3Y^`CJ6 @6 Index 4Z^`CJ6@6 Index 5[^`CJ6@6 Index 6\^`CJ6@6 Index 7]^`CJ6@6 Index 8^^`CJ6@6 Index 9_p^p`CJD!@rD  Index Heading`$xa$5CJ03@0 List 3a8^8`04@"0 List 4b^`05@20 List 5c^`68@B6 List Bullet 4 d & F%69@R6 List Bullet 5 e & F&>F@b> List Continue 3f8x^8>G@r> List Continue 4gx^>H@> List Continue 5hx^.:@. List Number 2i6;@6 List Number 3 j & F6<@6 List Number 4 k & F'6=@6 List Number 5 l & F(I@ Message Headergm8$d%d&d'd-DM NOPQ^8`OJQJ6@6 Normal Indent n^,O@, Note Headingo4Z@4 Plain Textp CJOJQJ(K@( Salutationq.@@". Signature r^:J@2: Subtitles$<@&a$OJQJL,@L Table of Authoritiest^`>OQR> Appendix 2u & FF @&CJ@OQR@ Appendix 3v & FF 5CJ@Or@  Balloon TextwCJOJQJ^JaJ4P@4 Body Text 2 xdx>O> Char CharCJ^J_HaJmH sH tH <&< Footnote ReferenceH*^Je@ HTML Preformatted7{ 2( Px 4 #\'*.25@9CJOJQJ^JaJ6O6  CharCJ^J_HaJmH sH tH LOL List Continue CharCJ_HaJmH sH tH 4[@4 E-mail Signature~2`@2 HTML Address6],^@, Normal (Web)4o"4 License$dda$CJ 8o28 Index$dd@&a$5CJ (8I_l~3HVxL     (8I_l~3HVx   "}gm)Q7Z %1-0;&<wF X X X L .:.w... /W////30j0001F1111#2Z2222:3E @z@z@z @z@z@z@z@z@ z@ z@ z@ z@ z@z@z @z@z@z@z@zBzz z z z z zzzzzzzzzzzzzzzzzzz z!z"z#z$z%z&z'z(z)z*z@+z@,zD-z@.z@/z@0z@1z@2z@3z@4z@5z@6z@7z@8z@9z@:z@;z@<z@=z@>z@?z@@z@Az@Bz@Cz@Dz@Ez@Fz@Gz@Hz@Iz@Jz@Kz@Lz@Mz@Nz@Oz@Pz@Qz@Rz@Sz@Tz@Uz@Vz@Wz@Xz@Yz@Zz@[z@\z@]z@^z@_z@`z@az@bz@cz@dz@ez@fz@gz@hz@iz@jz@kz@lz@mz@nz@oz@pz@qz@rz@sz@tz@uz@vz@wz@xz@yz@zz@{z@|z@}z@~z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@zDzDzDzDzDzDzDzDz@zDzDz@zDzDzDzDz@zDzDzDz@zDzDz@z@z@z@zDzDz@zDzDz@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@zBzz@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@ z@ z@ z@ z@ z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@z@ z@!z@"z@#z@$z@%z@&z@'z@(z@)z@*z@+z@,zB-z.z/z0z1z2z3z4z5z6z7z"%B) ;K P"P\{m8n:nv}x™ӧgwN7<#-9~BJ3PY`Gk@tD~uK !7uLGkm`/+<6@?O['ho)yzqb &4?=H%Q)Q^gqm{21ŽWD#%*7.DN~\inwD57i^xn% &B1:{BK:U+_iqz^-Ѧڿwy$n'42?J4R5Y`7d~k}sz}/b STԷEaXM%2p  $*3;KUZZemLw~ۆ[#b8 2 Cc% %)1-002;&<B^KS]d)lYrziڈf>ȥq~? ]  ^ $ a) /- 2 y7 c: ? uF wF *N TT =^ zc ll rv L{  l x F 7 x ȭ . M h ^   O % #. D7 @ I S X X X Q^ b h n v p~  ; q   A  L uhZYX P  2 !$|& t.Z !"#$d%&'()W*Q+,|-./-0C12345678J9*:;<=>?@cABCDEFGEHIJKLMNOsPQR2STU}VWXY#Zh[\]?^7_v`Gabcdef-g hijkClmno"pqr(sZtuv wxyIz{>|@}~haI,>tO7-*%X+>adOIT[IKZXV]CiyVj: HrI hDdElZ .f~m*ZvEJ`lpA.Y ;  L = .{T  } Mk! !"*#J$%&'(I)*+7,]-./012s3i456O7%89::::;;<<==>> ??'@@AABBCCDDD/1 JN~mn{"4 c w K  e 2 I d*J|X;i v%]$S5S(}/Y !h!!"s""$##$o$$I%%%X&&'q''0(((B))*f**,+++I,,,^--...L///\008112g223333B444g557666S77888>999Y:: ;g;;!<<<5===J>>?f??3@@@uAAyBB\CCDjDDE}EEHFFGG HmHH6III}JJ0KKKFLLMMMONN1OO PPPPPPPPPPPPPPPPPPP P!P2P}PPP=QyQQQ6RwRRR[[[!\s\\&]}]])^|^^_f__ `^`` acaab{bbIccdbdd e^eefTfffEgggh]hhiiiCjjj^kklrll1m{mmnnnnnnnnnnnnnnn n!n"n#n$n%n&n'n(n)n*n+n,n-n.n/n0n1n2n3n4n5n6n7n8n9nCnDnuvvxty|}}}1Yntax@><֕pH8™Ԛ*˛+u4xѥ'çħŧƧǧȧɧʧ˧̧ͧΧϧЧѧҧӧԧէ֧קا٧ڧۧܧݧާߧAȭ]msfgϳг !no´ôjk͵ε$%qr¶ö lm#$tu¸ø%&jkٹڹ9:QRGHѼҼvwŽƽqrȾɾ12\]PQXY &'no7801~)3KL~67eKLz5z{ 5|}'~45Y!"H cdRSVW{tu!ef()W{|cdVW}]^MNx>?y>?eD+z{(de OPpDEo@ijUV<=_CDrBCg12V!bc67]*+M#jkbc 6}~jkMNj]^ hiWX+DE;<~2 9:pHIXKLK8  5  1<ewEU1} o!:"K""M##z$J%&'[( +-x159}<<b>4??@?AA~BDCCIDDeFMG@HaIJJJUKsKK^LMN3PXXYYYZZZ[1[Z[[[[\\\g\\\\\;]d]]]]^8^a^b^^^ _ _!_`acdeQfggKhhjjGkdkll7mnGopqr*sIs@tt7vwwxy {{H}D~|3OP12tͅ΅./dʉ12tHIVAPK{/0Zܦݦ/ $DEklɩʩ\wث٫K^ ѳ*¶+06?@)eļ˼ ?P?V<;!D^^77FK +u9(*LZA[ G[Qd2AklmK  Q,9do<STn  I`aB_`3QRELMYlm,!"h$$$%%N%O%%%%')M*/++--k/0%2]3s3G5<6W67.9H:;X=b>A@i@@@B DE{HDJVJEKN?OORvSTVWIXsXqyqzqqqqrs4uuPww)yzzz{{G{H{{7}~3؀ǁʆPuȋz5=™cl¡E`^zPQ Bpqv!"FwxKL}~ ƺ~xH#15 :b(?ZU=R~       qvqrstuvwxyz{|}~1E !"#r$&'(7)|+D-.y0n147e8u9m<n<9=s>>>>>>>>>?@BBBBBICJCfCCCC%D&DeD4EiFnGk?kakokpkkkkkllJlhlilllllqmnpmrFsvywyz{|~ 5σ؃كZ[߄]^]^7Q4VR)*.78|Ȗɖ ?@FݘșTߚ12iƛJoԝGHs<pZ[k[1DqëīT/E@ܵ'1 "Ž̾'sgkz\s"qg 9&V77f2MR'/0Wt|_1wxGH`MDP x ?  O h     cDc#/!$(%*+-)-4. 00377777A89::"<=h@B.DGDDJEGMHHH(IIK MNQQ[S@UfWXYY5[~\\]_*cdd]efgijklmo|qqqt|vvnwzG|m|||}~ .D:Td$CڋRƔhߕWFwȞ./01234567S-W7߯Q5im*-ʺĻ˽](hI^u ^ a]wiXXhSK^q=i8^# dp!\1x T20E<n~Wz% }{  <ZUUUUU2;Y   "8"""##R$~$7%k%&?&'%)[) +,,-/30B11234W5{56-6S66894:::K;<A== >?MAfA(B{BB E GGWGG"HH0IIIJKMOvPPLQyRR S9SfT:UNUV WwZ \?\\+_B__`ibbd]gXhi)jjj[k"lXm|m'ooooooopqGs`sstuuuv$wzwxKzz{,|>}}}(~~5ׁ`6^j@8@-d@_ό9ōݍŏyWДӘ7eݝi-آɤ4Ѧ vҫ έ1ı!ѻѼvҾڿV|}~G\+v%=jmh!;qw0>rbh ?y  Z v  $\+ 4nD!\!w!!N""9#$9$5&'#)?)**,,H/j/42N24$57~888;?@A&C"DDDG@IJJKMLtL}LLLLLL(M-M.MMMMMMMNNSNTNNNNO O OeOjOkOOOO PPPjPoPpPPPPQ"Q#Q~QQQQQQ.R3R4RRRRRSSHSMSNSSSS TTTbTgThTTTTUUUUUUUUU2V7V8VVVVVVVCWHWIWWWWWWW?XDXEXXXXXXX/Y4Y5Y~YYYYYYJZOZPZZZZ[ [![[[[[[[D\I\J\\\\]] ]a]f]g]]]]'^,^-^^^^^^^?_D_E____` ` `e`j`k````aaamarasaaaaJbObPbbbbbbbc7c8c9cRcXcYccccccc6d7dddsdyddddddde"e6e7eqeve~eeeeeef#fAfBfffffffggegjgrgsgggggh hhhchhhrhshhhhh"i'i1i2i~iiiiiiii4j9jMjNjjjjjkkkk`kek}k~kkkkk?lDlOlPlllllllllJmOmlmmmmmmm nnnnhnmnnnnnnn;o@o^o_ooooo,p1pHI !qv{|̆цֆ׆-29:~χևۇ܇-./9?FGވ16=>ԉى',67}Ίӊڊۊ!&-.qvƋ̋͋ `emn ^cnoQVabŽcd38@A\]rޓB cԚ   "#'.126=@AELOPV^cdΛϛћӛ؛ٛܛ  &,-18;<AKQRɜۜy۞  JOQRS  NSUfg à  bgiz{áš֡ס!23sxz͢ҢԢ#%&'afhij=BDEF}ƤˤͤΤϤ  FKMNO̥ѥӥԥե LQSTUۦ ![`bcdʧ˧   BGIJKըڨܨݨި78otvéȩʩ˩̩ =BDEFz7<>׫ܫޫ߫%*,-.hmoǬȬ   PUWXYPUWXY^_`ab;@BRSįů *+w|~KPRST±ıűƱ  !"afh}~Ʋ˲ͲINPQR/0`efgh͵  "xMy'E289ͻһӻ+01sxy¼chiƽǽ',-8=>X]^7<=VLMdjk!"W\]WXiopEJKotuNSTDEV?TZ[<AB{xGLMTe`aouW^`a `gijhoqrPWYZ   NUWX  OVXY?FGHbghYZw+01qvw  LMZ6GMN_de ^cd)/0puvGDKkZ%%F^VbhiV[\RWXx}~nst  wkpq167}2DDLQRZ_`(  p |            K O X h i j             G I N W X Y       !/01#$VX]opq@BGHIJ |~   tv{y{ []bjrs,.3456|~=^ & !"$5$$%%%(%?%@%R%k%l%~%%%%%%&&!&&'(S**~++,h,,-O---9..."/p//0]001}11(2223]333D444(5p556N66657z77+8|889~99::;;h=?uDKFGJJKMLLMNO2PPQ#RRRSxTUnVdWXYYYYYYYYYYYYYYYYYYYYZZZZZZZZZ1Z\ ^Q^Z^p^q^^` ``ee fkkkmmnrr#suuuKwLww{{||||~~~>?چۆO s \Z[ΘV { Upqѧ"#srsî߲?Kطٷ0ڹ۹@dtu5Ytab!"78  u89c_`P0IN ! "  1 2    hBCJK/bijlnqruwz}  !Z"2#)$%%% %Y%%%&&&-&>&k&&&&&'&'0'H'n'z'|'''N(W(j(((()Q)d)n))))))*"*-*9*;*[*******,+-+R+^+i++++++,A,g,x,z,,,,,,/-0-1-K---D//////////////0+0,0~000m1n1u1111111 2 2222<2=2i2j2k2p2q2r2~2222222H5666T899992:3:4:8;;;;;;;;;%<&<9<<=}=~======>>>>+>H>O>>FABBBTCCCCDD)D6D9DDEHJ#K:KJKWK^K}KKKK9LLL M:MuMMM@NNNOAOOEPPPP-QlQQQR.RPRuRRR)SKSvSSST1TYT~TTT3UXUYUUUV?VmVVV WLWWWWXLX~XXYYYYZkZ[@[x[[[\U\\\\]T]]]]]^.^`^^^^____ ``aa?FGughxL~݁A؂ hij67gڅ XVՇ5sڈۈ7eՉ։.h\ƋNj"Aoߌ4mXq D]ُ<=kҐefx/0}45_`TUUVWɕ23Ûěz{ӜsAB"#=>V34M\ȣ%4m-@yȥ6jATڧQϨ !f٩%^ΪOb_ͬ ?xj"9:;<CM`v|̰-CV\o~ױرHԲ OuvMXY:2Md1qr̾0jϿۿ$Q~uv%*b -f7O}OP&'WYkm23~c{Z  %W Y5p$Z^<{  i69G)\j#R` BPVp9x=zVj|}?mj%2t Om{4VdAcw'1?!Tb T b  D R      M    5 C    E S    E Y k {    - G C  [ ]      a     M k y   ( F T o }    + b    2 r    9 x    ! 1 ? @        -    # 1 s    = K }    G H             ] ^   ! " \$ $ A% \% % % % & & 4& Z& [& o& q& & & ' K' x' ' ' ( =( k( ( ( ( ) ) _) `) a) ) !* "* * * * * * * * + .+ i+ + + + , 2, W, , , , , .- /- @- - - - - - . . . 5. 6. 7. K. M. . . / ./ n/ / / / 0 <0 f0 0 0 1 2 2 2 2 2 2 2 2 3 /3 53 @3 E3 [3 l3 m3 n3 3 3 3 3 E4 e4 4 4 4 5 C5 b5 5 5 5 5 F6 f6 6 6 7 ;7 <7 x7 y7 9 c: {: 2; 3; A; D; e; t; ; ; ; ; ; ; ; ; ; ; ; 3< b< < < = 6= T= = = = = > 7> b> > > > ? %? S? ? ? ? ? ? @ @ @ 2@ S@ u@ @ @ @ @ @ @ A 3A A A A 1B KB B B B B C C C C C C D 7D D D D D E E @E BE {E E E E F 6F 7F uF vF wF xF F ^G G H /J K K L \M *N N N N N O 4O `O O O O P P .P EP P P P P P P P P Q Q 6Q JQ Q R gS S TT _U V VW X X X VY Y [ \ ] L] =^ >^ R^ ^ _ _ _ (` ` ` ,a a 5b 6b Xb c Ec Nc zc c d 2d d e f f g Lg g 1h i i i j ll l n `o p p "p q (s *s Bs t ~t t u rv {v w x y y y uz z z z z z z z z z z z z J{ K{ L{ { { { | | 3| 4| c| | | #} R} } } } G~ w~ ~ ~ 4 v     ˀ   ( ; q ԁ # Y ق  D k l   8 9 W w ʆ   ! " w x % & W X -  B x L ˋ  a b ֌ b ͍  T U D \ g h ϐ А  < o ֑  W ג , f g < U V    A S   / 0 f ̗  Z ʘ ޘ  : r  t ɚ    n o B C M ( F W ֠ V z 7 U   & . ? G Y k } Ʀ ڦ  3 J T \ e V W ި 3 7 o ͩ 3 ] - x ϫ  9 r  D o ǭ ȭ Ү Ӯ  " c m į  : o } ܰ ; S ٱ 3 ^ Dz % m z ݳ  b  ޴ / B ~ ϵ Ե - . W X ߷ 4 8 h Ǹ . X * u º  Q X  T  C x  P Ͽ  / d  P 2 e 6 q ! % Q > B t  : e > y  ' m % G  7 p ~  B Q ^  M y Q i  : L {  Y b  (  Q _ * K b t   / d r 2 J L h * w U z  B ]  + u  ! b } " / k t  H `   H I y  S 3 4 > p q  ' ( 2 l ) * = R ] ^ d ~  $ > ? N [ \ j w x   ( 8 9 @ _ ` f l m 0 Q < ?    - y   & ( * , - Q S U W X x z | ~       = ? A C D j l n p q ' E t ) Z [    e f   n F  ?   #  q r   N O f  u @ N" ## $# 5# $ & V' ' ' K( ) ) ) ~+ =- #. . @/ / / .1 k1 2 4 5 5 5 D7 8 Y9 : : : < = = 8= > 5? @ @ @ @ C D D D E >G ?G H H I I J WK PN QN RN bN cN 'Q (Q pQ Q Q R R S S S S T T U V V W W X X X X X X X X X X X X X X X X X X X X 0Y \ V\ n\ \ \ \ \ \ \ \ ] 5] V] m] |] ] ] ] ] ] -^ 5^ Q^ v^ ^ ^ ^ ^ ^ _ _ *_ ;_ Y_ t_ _ _ _ _ _ ` 2` W` ` ` ` ` ` ` a a 0a Da Qa ia a a a a a a a b 4b Gb _b ~b b b b c c 4c Ic lc c c c c d 0d Xd td d d e e f f +f 8f Of of |f f f f f f f g 7g Kg ng g g g g h 8h _h uh h h h h h h i i 1i Si mi i i i i i j &j ?j Rj oj j j j j j k %k Ck _k vk k k k k k l /l El [l yl l l l l l m *m m m m m m n 9n Rn hn n n n o o ;o Ho ho o o o o p p 0p Bp Tp fp p q q q mr r ,s Rs zs s s Jt et t ju u u u v +v Zv v v v Yw w w x x y -y [y y y /z z { B{ { { | I| u| | | } K} w} } } } ;~ ^~ p~ ~ 0 j   " e w D h 9 ^  - ] y ߅  5 ( ]  g ͈ " I  4 c ˋ B s ی  < O u Ս  4 V r ֎   ; X Џ  3 S f y  # B _  ( H f  ! 8 M b u ȓ  & > V r ֔  - L • ݕ ; W ̖  $ < R ח   E ^ r ۘ  2 J _ ~ ™ ҙ  ( ; W y ؚ  4 P q ϛ ! F h Ԝ  1 C [ s ŝ  - J g } ՞   , A c | ̟   ) ; X i |   ) ; L ^ p ١  a | Ģ ۢ   ( ; Y p ʣ R Ѥ  3 e ץ  8 _ ަ f ҧ 7 Z Ө  -  O r P y ˫  |  i B e ծ 1 ^  % I r Ѱ   5 K k y ݱ   2 H _ u ֲ 4 K i  ͳ  " ; U r   / Z w ֵ  C Z t Ƕ ֶ  - C { з $ @ T d ڸ  P i ֹ  1 J e ź غ  < I a n ˻  ( ? N h ̼  " 9 s ½ ߽  $ 0 F ` о  4 A J V ` j t    . K R a m  " B X w  * C b      * 4 ; F [ n & A ] t  + A W d  5 K a z   : j  D _ x # , ; X {  ; Y  + = _ ~  ; o R e  V k  3 I b h . P f + C V j + @ S d ~   = Q k  8 C m  Q  5 F \ }  = b   : U l   N O P Q R S T U V W x y z {    ! " # $ % & I J K L M N = M B0B0050505050505050000505050505050505050@50C070"70"80"80"80"80"80"80"70"80"80"80"80"80"90"90"80"90"90"80"80"80"80"80"80"80"90"90"80"80"80"80"90"90"90"80"80"80"80"80"70"80"90"90"90"80"90"90"90"90"80"90"90"90"90"90"90"90"90"90"80"80"80"80"70"80"80"80"70"80"80"80"80"80"90"90"90"90"90"90"90"90"90"80"80"80"80"80"80"80"80"80"90"90"80"70"80"90"90"80"90"90"90"90"90"80"90"90"90"90"80"90"90"90"90"70"80"80"90"90"80"80"80"90"90"90"90"80"80"90"90"90"80"80"80"80"80"80"80"80"80"80"80"80"80"80"80"80"80"80"80"80"70"70"70"70"80"80"80"80"80"80"80"80"80"80"80"80"80"80"80"80"80"80"70"80"80"80"80"80"80"80"80"80"80"80"80"80"70"C0"C0"C0"C0"C0"C0"C0"C0"C0"C0"C0"C0"C0"C0"C0"C0"C0"C0"C0"C0"C0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"@0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"*0"50"50"50"`50" 050}50} 0}}505050 0}}50505050 0}}50Y50Y50Y 0}}50xu 50xu 50xu 50xu 50xu 50xu 50xu 50xu 50xu 50xu 50 xu 50 x50xu 50 xu 50 x 0}}50™= -0™= 0™= 0™= 0™= 0™= 0™= 0™= 0™= 0™= 0 ™50™> 0™> 0™> 0™ 0}}5050/0/0/0/0/000000000000000000000000000`0 0 050505050 050]50]50]50]50]`50]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]`40]40]50]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]50]50]0]40]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]40] 05050605050 050 50 50  050e50e50e( 0ee508 050 F0 F0 F0 F0 F0 F08 050 F0 F0 F08 050:" F0:" F0:" F0:" F0:" F0:" F0:" F0:" F0:" F0:" F0 :" F0 :" F0 :" F0 :"8 050}< F0}< F0}< F0}< F0}< F0}< F0}< F0}< F0}< F0}< F0 }< F0 }< F0 }< F0 }< F0 }< F0}<8 050J- F0J, F0J, F0J, F0JF0J- F0J- F0J- F0J8 050X. F0X( 0ee50Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 0Y 050 _50 _i D0 _i D0a _i D0a _i D0 _50 _( 0 _ _50gk 50gk 50g8 0gg50jH 0jj50GkH 0jj50l50l50l50lC 0lC 0l0lH 0jj0*s50*s 0*s 50*sH 0jj50w8 0gg50x50xW F0x20xW 20x20x8 0gg50| 0|0| 0| 0|0| 0| 0|0| 0| 0|0| 0| 0|0| 0| 0|0| 0| 0|0| 0| 0|0|0|0|0|0|0|0|0|0|0|0|0|( 0 _ _505050 F0 F0 F050505050E 50E 5050505050 050 0505000000040 05050000000400 0 50ʩ50ʩ0ʩ0ʩ0ʩ0ʩ0ʩ0ʩ40ʩ 0 50K50K 0 50 50 50 50 50 50 0 0 0 0 0 0 0 0 40 0  0 5050 0 0 0 0 0 0 0 050( 050( 00 0 0  0 5050505050 05050 0000 00DA 0DA 0DA 0D0D0D( 0DD0707( 0DD000( 0DD0 0 0 0 \ 50 \ 50 20 0 0 0 50 ] 50 ] 50 50 0 0  00L0L 050501 501 501 505050 050G50G50G 050Q50Q 0502502502502`502 050m 0mm50( 05050505050p D020p D0p D05050050500505005050050500505005050050500505005050050500505005050050500505005050050500505005050050500505005040p D020p D020p D0p D0p D02002002002004020202020p D02020p D0 p D0 2050( 00]30]3( 050<650<650<650<650<650<650<6 0mm0A@( 0A@A@50@50@50@50@50@( 0A@A@0DJ50DJ50DJ50DJ50DJ50DJ50DJ0DJ0DJ0DJ( 0A@A@50IX50IX50IX50IX50IX50IX50IX( 0A@A@0c0c0c50c50c50c50c50c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c50c50c 0mm50o0o0o0o0o0o0o0o0o0o( 0oo50q50q50q50q50q50q50q0q0q0q0q0q0q40q50q50q50q50q50q50q50q50q50q( 0oo5050( 0oo50P50P50P0P50P50P( 0oo50505050( 0oo50505050 F0 F0000 F0 F050( 0oo50E50E( 0oo50^50^ F0^ F0^ F0^ F0^( 0oo5050000000000000000400008 0505050505050508 05050505050505050505050505050K 50K 50K 508 050 50 50 50  F0  F0 8 00?0?0?L 0?L -0?L 0?L 0?0?( 0oo000B 0B 0B 0B 0R00000 0mm505050505050 0mm50 50 50  0mm50 50 50 50  0mm50v50v50v50v50v50v50v50v50v50v50v50v50v50v50v50v50v50v50v50v50v50v50v50v50v50v50v50v50v`50v 050 0501501501 F01 F01201 F01 F01201201201 F01 F01201201 F01 F01 F01 F0 1201O F01 i01i01 i01201 01 01 01 01 01 01 01 01201201O F0150150101501501015015010150150101401201O F01201O 201F01 050=H 050K50K50K50K50K50K50K50K50K50K50K50K50K50K`50K 050)Q50)Q 0)Q)Q505S505S505S505S505S505S505S505S505S505S505S505S505S505S 505S 505S 505S505S 505S 505S505S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S405S505S505S505S505S505S505S505S505S505S505S505S505S505S505S505S505S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S05S405S 0)Q)Q505050505050505050500000000000000000000000000004050 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)Q)Q50[50[50[ 0)Q)Q50150150101010101401501501501501501501501501 0)Q)Q50ܵ50ܵ50ܵ50ܵ50ܵ( 0ܵܵ50505050505050505050 0 0 0 0 050( 0ܵܵ0\0\0\0\( 0ܵܵ50q50q50q50q50q50q50q50q( 0ܵܵ50505050( 0ܵܵ5050( 0ܵܵ5050505050505050 50 50202050505050 50 505050{0{0{0{0{0{0{05050{0{0{0{0{0{0{0{0{0{0{0{0{0{0{050{0{0{0{0{0{0{0{0{0{0{0{0{0{0{0505050505050 5020 50 50505050 5050 5050 5050 50( 0ܵܵ50505050505050505050( 0ܵܵ50509 09 09 09 09 -0( 0ܵܵ50-50-50-50-50-0-0-0-0-40-50-50- 0)Q)Q0:0:0:0:0: 0)Q)Q50.D50.D50.D50.D50.D 50.D 50.D50.D50.D50.D50.D50.D 0)Q)Q50Q50Q50Q50Q50Q50Q: 0Q: 0Q 0)Q)Q50~\50~\50~\50~\ 0 )Q)Q50d50d50d50d 0 )Q)Q50i50i50i50i50i50i50i50i50i50i50i50i50i50i 0 )Q)Q50m|50m|50m|50m|50m|50m|50m|50m|50m|50m|50m| F0m| F0m| F0m| 0 )Q)Q50505050 0 )Q)Q( 00ڋ0ڋ0ڋ( 0000005000 0)Q)Q50 50 505050505050505050`50 05075078 5078 507 07750505050( 005050) 5050) 5020) 5050) 50505050( 05050 F0F0 F020 F0F0 F0F0 F0F05050 077505050503 I03 I03 I03 I03 I03 I05050( 0505050505050( 050w50w50w50w50w50w50w50w50w50w50w50w50w50w50w 0w 0w 0w 0w 0w 0w 0w 0w 0w 0w 0w0w( 050505050( 05050 F020 F020 F020 F020) 202020) F0202020) F020) F020) F02020) F0 2020) F0 202020) F0 20Q 20Q 20Q 20Q 202020202020( 0508 050n F0n F0n F0n F0n F0n F0n F0n50n50n50n50n 0n 0n50n50n50n50n50n50n50n50n 0n50n50n 0n50n50n{0n{0n{0n{0n{0n{0n{0n{0n{0n{0n{0n{0n{0n{0n{0n{0n{0n{0n{0n{0n{0n{0n{0n{0n{0n50n8 050r F020r F0F0r F020r F020r F020r F020r F020r F02020r F02020r F0 F0F0F0F0r F0 F0F0F0F0D F0F08 0506 F06206 F06206206 F062062 1062 1062 1062 106206206 206206506 07750{B50{B( 0{B{B50 G50 G50 G50 G50 G50 G8 0 G G50I50I50I50I50I8 0 G G50vP50vP8 0 G G50yR8 0 G G50 S50 S( 0{B{B50:U( 0{B{B50V50V( 0{B{B50 \50 \ 07750+_< 0+_< 0+_< 0+_0+_0+_0+_; 0+_; 0+_; 0+_; 0+_; 0+_; 0+_; 0+_( 0+_+_50Xm50Xm 0Xm 0Xm 0Xm 0Xm 0Xm50Xm50Xm50Xm50Xm0Xm0Xm0Xm0Xm0Xm0Xm0Xm0Xm50Xm50Xm0Xm50Xm F0Xm20Xm F0Xm20Xm F0Xm20Xm F0Xm20Xm 10Xm 10Xm20Xm20Xm20Xm 20Xm20Xm 20Xm20Xm F0Xm20Xm F0Xm20Xm F0Xm20Xm F0 Xm20Xm F0 Xm20Xm0Xmz F0Xm20Xmz F0Xm20Xmz F0Xm20Xmz 20Xm20Xmz F0Xm20Xmz F0Xm20Xm( 0+_+_50ō50ō F0ō F0ō F0ōF0ō8 0ōōS F020S F020S F020S F020S F0208 0ōō` F020` F0F0` F020` F020` F020` F0F0F08 0ōōb F0Ѧ20Ѧb F0Ѧ20Ѧb F0Ѧ20Ѧb F0Ѧ20Ѧb F0ѦF0Ѧb F0Ѧ20Ѧb F0ѦF0Ѧb F0Ѧ20Ѧb F0Ѧ20ѦF0Ѧb F0 ѦF0ѦF0Ѧb F0 Ѧ20Ѧb F0 Ѧ20Ѧ8 0ōō0d F0F0d F0F08 0ōōf F020( 0+_+_50U F0U F0U F0U F000( 0+_+_0000000000000000000`0 050 050G50G50G50G50GT F0GT F0GT F0GT F0G 0( 050( 000 05050 0006 F05 05 006 F0006 F0F06 F0F0F0F0F0 05050505050( 08 050t F020t F020t F020t F0208 050 F020 F020 F020 F020 502020 5020( 050Z 50Z ( 050505050505050( 050 50 50 50 50 -0 20 -0 20 00 00 00 00 20 -0 20 20 20 20 20 -0 20 -0 20 -0 20 -0 20 -0 20 0 -0 20 20 20 20 20 20 20 20 -0 20 20 20 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50 40 0 0 0 0 0 0 0 0 0 0 0 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50 40 40  050]50]50]50]50]50]0]50]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]40]40]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]0]40]0] 0( 050ɜ50ɜ50ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ0ɜ50ɜ40ɜ0ɜ( 00 ( 050x50x50x50x 050'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'40'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'40'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'40'0' 050000000000000400 0 50E0E0E0E0E0E0E0E0E0E0E0E0E40E 0 50{0{0{0{0{0{0{0{0{0{0{0{0{40{50{ 0 50T50T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T0T50T40T0T0T 0 50 0 50000000000000000400 050Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z40Z0Z 050M0M0M0M0M0M0M0M0M0M0M0M0M0M0M0M40M0M 050000000000400 050000000000400 050* 5020* 5020* 5020* 502050 050+ 5020+ 5020+ 5020+ 5020+ 502050 050F50F50F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F40F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F40F 050250202020202020202020202020202020202020240202 0505050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400 0005050 050 N 50 7 50 7 50 20 7 50  050$0$0$0$0$0$0$0$0$0$0$0$0$0$0$0$40$0$ 050&50& 50& 50& 50& 50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&20&20&20&20&20& 50& 50& 50&50&50&50&50&50&50&50&50&50&50& 50& 50& 50&50& 50& 50& 50& 50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&50&`0&F E050Z50Z50Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z40Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z`0ZF E004040404040404040404040404040404040404040400000000000000`0F E00 %0 %0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 %40 %0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 %40 %0 %0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 %40 %0 %0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 % 0 %40 %R0 %`0 %F E001-F u01-1-50-50- 0- 0- 0- 0- 0- 0- 0- 0- 0- 0-50-0-`0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-`0-40-40-F`u01-F u01-1-0&<F v0&<1-0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0<40<0<0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0<40<0<0<0<0< 0< 0< 0< 0<0< 0<0<0</ p0</ p0<0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0< 0<40<0<0< 0<50<-0<-0<0 .0<0 .0<30<.0<50<50<50<50<50<-0<20<-0<.0<.0<30<.0<50<50<50<F v0&<1-0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l40)l0)l0)l0)l0)l.0)l4 .0)l4 .0)l0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l 0)l40)l0)lF v0&<1-50h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h40h{0h{0h50h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h{0h40h50hF u01-1-50f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f40f50f50f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f40f0fF u01-1-50>50>50>50>40>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>0>40>0>F u01-1-5050 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0405050 0 0 0 0 050505004005050040F u01-1-50? 50? 50? 50? 50? 5000@ 50@ 505050 0 0 0 0 0 0 0 0 0 0 0 0 0 0 040R05000050 0 0 0 0 0 0 0 0 0 0 0400004000 0 0 0000400F u01-1-50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 04005050M 50M 5020M 50205050p0p050F v01-50505050 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0400 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 040F v01-50?50?50?50?50?50? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0?40?50?50? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0? 0?40?F v01-50 50 50 50 50 50 50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40 p0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40 F u01-1-50 {0 {0 {0 {0 40 50 50 50 50 50 50 50 40 F u01-1-50A% {0A% {0A% {0A% {0A% {0A% {0A% {0A% {0A% {0A% {0A% {0A% {0A% {0A% {0A% {0A% {0A% {0A% {0A% {0A% {0A% {0A% {0A% {0A% {0A% 40A% 40A% 0A% F u0 1-1-50a) 50a) 50a) {0a) {0a) {0a) {0a) {0a) {0a) {0a) {0a) {0a) {0a) {0a) {0a) {0a) {0a) {0a) {0a) {0a) {0a) 0a) 40a) 0a) F u0 1-1-0/- 0/- 0/- 0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- 40/- {0/- 50/- 50/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- {0/- 40/- 0/- 50/- 50/- F u0 1-1-50c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: 40c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: {0c: 40c: 0c: `0c: 50c: F E050xF 50xF 50xF 50xF 50xF F u0xF xF F v0K xF 50K 50K 50K 0K 0K 0K 0K 0K 0K 50K 0K 0K 0K 0K 0K 0K 50K 0K 0K 0K 0K 0K 0K 0K 0K 0K 0K 0K 50K 50K ^ 50K ^ 50K 50K 50K 50K 50K I 50K I 50K I 50K I 50K I 50K 50K F v0K xF 50[ 50[ 50[ 50[ 50[ 50[ 0[ 50[ 0[ G 50[ G 50[ J 50[ J 50[ 50[ 50[ 50[ 50[ 50[ 0[ 50[ 0[ 50[ H 50[ H 50[ H 50[ 50[ 50[ 50[ 50[ 0[ 50[ 50[ 50[ 50[ 50[ 50[ 50[ 50[ 50[ 50[ 50[ 50[ 50[ 50[ 50[ 50[ 50[ 50[ 50[ 0[ 50[ 50[ F v0K xF 50rv 50rv 50rv 50rv 50rv 50rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 40rv 0rv 0rv 50rv 50rv 50rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 40rv 0rv 50rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 40rv 50rv 50rv 50rv 50rv 50rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 40rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 40rv 50rv 50rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 40rv 0rv 50rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 40rv 50rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 0rv 40rv 50rv 50rv 50rv 50rv 50rv 50rv F u0xF xF 50F 50F {0F {0F {0F {0F 50F {0F {0F 50F F v0F xF 507 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 407 507 507 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 407 507 507 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 407 507 507 507 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 407 507 507 507 {07 507 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 407 507 507 507 {07 {07 {07 {07 {07 {07 {07 {07 {07 {07 407 F v0F xF 50 50 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 {0 40 50 F u0xF xF F v0 xF 50 50 50 F v0 xF 500 500 500 F v0 xF 50 50 50 50 50 F v0 xF 50 50 F v0 xF 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 `0 F E050 50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40 50 50 50 50 50 50 50 `50 0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 {0 {0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 p0 R p0 R p0 R p0 R p0 R p0 R p0 R p0 R p0 R p0 R p0 R p0 R p0 R p0 R p0 R p0 p0p0p0p0p0p0p0p0p0p0p0p0p0p0p0p0p0p0p0p0p0p0p0p0p0p0p0p0{0{0{0{0{0p0p0p0p0{0{0{0{0{0{0{0{0{0{0{0{0p0p0p0p0p0p0p0p0p0p0p0p0p0p0p0p0p0p0p0p0p00p000 0 0@.0W0W0W0X0W0W0X0W0X0W0W0W0W0W0W0W0W0W0W0W0W0W0W0X0X0W0X0X0W0W0W0W0W0X0X0W0W0X0W0W0W0X0X0X0X0W0W0X0W0X0X0W0X0X0W0W0W0X0X0X0W0W0W0W0W0W0W0X0X0X0X0W0X0W0W0W0W0W0W0X0W0X0X0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0X0X0W0W0X0W0W0W0W0W0W0W0W0W0X0W0W0W0W0W0W0W0W0W0W0W0X0X0X0X0X0W0W0W0X0X0W0W0W0W0X0X0W0W0W0W0W0W0W0W0W0W0W0W0X0W0W0W0W0W0W0W0W0W0X0X0W0W0W0W0W0W0X0W0W0W0W0W0W0W0W0W0W0W0W0W0X0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0X0X0X0X0W0X0X0X0X0X0X0X0X0W0W0W0W0W0W0W0W0X0W0X0X0W0W0W0W0X0X0X0X0W0W0W0W0X0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0X0X0W0W0X0X0X0X0W0W0W0W0W0W0W0W0W0W0X0W0X0W0W0W0W0W0W0W0W0W0W0W0W0W0W0X0W0X0W0X0W0X0W0W0W0W0W0W0W0W0W0X0X0X0X0X0W0W0W0W0W0X0X0W0W0W0W0W0W0W0W0X0W0W0X0X0X0X0X0X0W0X0W0W0X0X0X0W0W0W0X0X0W0X0W0X0W0X0W0W0W0W0W0W0W0W0W0W0X0W0W0W0W0W0X0W0W0W0W0W0W0W0X0X0W0X0X0X0X0X0X0X0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0X0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0X0W0W0W0X0X0W0W0W0W0X0W0W0W0W0X0W0X0X0X0X0W0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0X0W0X0X0W0W0W0W0W0W0W0W0W0W0W0W0W0W0X0W0W0W0W0W0W0W0W0X0X0X0W0X0W0W0W0X0W0W0W0X0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0X0X0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0X0W0W0W0W0X0W0W0W0W0W0W0W0W0X0X0W0W0W0W0W0W0X0W0W0W0X0X0X0X0X0W0X0W0X0W0W0W0W0W00.00*0*0*00*0*0*00+0+0+00*0*0*00*0*0*00+0+0+00+0+0+00*0*0*00*0*0*00+0+0+00*0*0*00*0*0*00*0*0*00*0*0*00*0*0*00*0*0*00*0*0*00*0*0*00 Ostttx::::::::::::```       e q jDQB+# !"#$i%3&B'h(h)Q*7+),--./0}1y2k3T4W5_6R788/:;<<=>?@AiB^CRDmEFGHIJKLMNOgPQnRmST2VXY[+]7_$a_caehjlAnpX}O-"D;fX]W2k DrlR)A>sV4E6iWr%}!' 29DGNVY_~fp>|ӈX2Q\S ;02߿vb H$)f05CJNUF]gqw<{UTYl"kZ$EX  3#(-2j9ByHLPXa\^flswї ԫ!ֹ"0WVO V ',6<9DHcPWg_cei?mpvze~1ȑI7׷WZ@h  Z7n%(+$1[8>MHWNS^kc*G,i<q=RLn  !'16;?FNRUW3Z\F_sadfhkm2psuQx/{}]Y'\ݔrs;̰LVR1aj^{KewA{  )7*[ #+25<79;=?FHzO\egikwmoprvtvxz=|p~؅LJ7@[ג͖Ә&̨ͬѮմ׶ŸrV0="+ 8bK,y6" |be\]L;Z o g tR" #(/7{9U;=r>:@AqDSPV]Tc\ku%~L;•(Fkv ؿ,+$\N&    " ' * - 0 4 =8 = 1B L ^ e Kq w \| u ܇ '  8 S : 6  U * & G =p m } L      !"#$&'()*+,-./023456789:<=?@ABDEFGHJKLMPSUWXZ[]^`acdeghjkmoprsuwxz{}     !#$%'*,-.123689;<=@ABCDFGHJKLNPRSTVWXY\]^_abcdefgijkmnoprsuvwyz}~         # ) , 0 4 7 : > D J M P T V X [ ] ` c e g i l o q t v x z }                        ! " # $ % ' ) * + , / 0 3 6 : ; < > ? @ B D F H J L O P R T V X Z \ ^ _ a c e g i j l n o p r s t u v y { }   " X*4g?HJTV^bhr.rHxҫqڽv'6 |CDe&G\al}22l? !0 Iiu)~cq}R y'CG4JVlnapqrțHTzx"<>f^|}whT $--= L:\[r{d4>)FSTeVXY[]_ad?fgiXjkkmn"pqrmtuw0yz9|} dwfOI֍ێFِڑ^bc A΢ R  K cI7߲-dz XX PaRx8jotEAahZbL/G^  I~v{].,!-(9An]aeyۍ\p"? N  !z#,W/13+7 9k9=BIRuY^`emt-ڃ~V4xW>C  B{ 1  9 =" ' k/ 23 n6 : {A D 3H L 4V _\ g n {}  w U ʟ T r ! $  U    p   n + A RU _ a -e g j n oq t x - "  - ) ʪ - ^   I S Q L  L  %1;>CINOQRTVY\_bfilnqtvy|~ "&()+/0457:>?EIMOQUZ[`hlqtx{|                  ! " $ % & ' ( * + - . / 1 2 3 5 6 8 9 ; < = ? @ A B C E F G H I K L N O Q R S U W Y Z \ ^ _ a b d f h j k m n p r s u w y { | ~     & ( - . 1 2 4 5 7 8 9 = A C E G I K M N Q S U W Y [ ] ` b d f h k m q w x z | ~                 K 1Y4IJj  +B^`ac - V r t u w  * F H I K k  / D ` b c e  , / 0 2 R i  ' C F G I i    ,B^abd$'(*Jj(DGHJj8Zvyz|6RUVXx=]y|}589;[Gcfgi @Tpstv"#%Ex;WZ[]}!"$D]y|}1MPQSs/235U4n1MPQSs"%&(H[wz{} ),-/Ok 7 S V W Y y ! !!!0!F!b!e!f!h!!!!!!!!! """"3"Q"m"p"q"s""""""""##!#"#$#D#|####### $ $ $$/$M$i$l$m$o$$$$$$$ %'%C%F%G%I%i%x%%%%%%%%%%%&6&R&U&V&X&x&&&&&&&&''''8'O'k'n'o'q''''''''(*(-(.(0(P(i((((((((((() )<)?)@)B)b)))))))))***%*C*_*c*d*f******** +%+)+*+,+L+i+++++++++++,&,B,F,G,I,i,,,,,,,,,,,,-;-W-[-\-^-~--------....6.^.z.~......... /)/E/I/J/L/l////////////090U0Y0Z0\0|0000000111516181X1t11111111222%2D2`2d2e2g222222223,3031333S3j33333333333 44;4?4@4B4b4v444444444445D5`5d5e5g55555555606465676W6k66666666666707L7P7Q7S7s777777778 8 88.8_8{88888888888979;9<9>9^9t99999999999:6:R:V:W:Y:y::::::::; ; ; ;-;D;`;d;e;g;;;;;;;;;<<<!<A<d<<<<<<<<<<<<=.=2=3=5=U=n=========== >'>C>G>H>J>j>>>>>>>>>???&?C?_?c?d?f????????@,@0@1@3@S@v@@@@@@@@@@@ARAnArAsAuAAAAAAABVBrBvBwByBBBBBBBC9CUCYCZC\C|CCCCCCCC DDDD4DGDcDgDhDjDDDDDDDDDEEEE=EZEvEzE{E}EEEEEEEF%FAFEFFFHFhFFFFFFFFGGGG8GmGGGGGGGHHH H)HJHfHjHkHmHHHHHHHHI/I3I4I6IVImIIIIIIIIIIIJZJvJzJ{J}JJJJJJJJ K)K-K.K0KPKwKKKKKKKKKKK L#L?LCLDLFLfLLLLLLLLMMMM;MbM~MMMMMMMMMMN,NHNLNMNONoNNNNNNNO*O.O/O1OQOlOOOOOOOP P P P2PHP]PyP{PPPPPPPQ8Q;QXQtQwQQQQQQQR1R4RVRrRuRRRRRRRS7S:SaS}SSSSSST T%TATDTpTTTTTTTUU6URUVU|UUUUUU Vcu.Wu$OT+Pz9> )LruBhDou    / 3 5S`#005.Y`fq<w{ " .!N!]!"#-####B$Z$c$h$$$$$$%&%6%O%w%%%%%&&&1+S+d++++,,--.@.(/a/g/k222R4r44:<:E:b>c>d>e>f>g>h>i>j>k>ABB>DZDeD9EWEdEEEEF'F4FG>GCGZG|GGGHrHwHHHH@I[IeIALdLLMN8N~PPPXBXFXZZZ9[T[^[[[\Rlllooopppar}rrsss t-t?ttttu,u1uuuuJytyyyzzLztz~zzzzzzz{%{2{O{f{i{~(+M^Áσބυ:Vaň"hd݊Ë݋Ch|@Pϔ2MW1TfoARٛ  .@ 0B`*M_ =Nk "ƫլѯ"EW<Zgɲڲ":blSjm_}yYyɾJjyEhze8Vc&3 5:mCns+;q*D %V4Dil5Wg<v~/7a)Mu]|JjwIty      "hh#0`2a !&!l!!!!!!!"#####$%%%%&j&&&(/(=(((())*W*r*|**+#++++,-7-d---.. /e/{//////{000011i1j1k1l1p11122^2y2244466V6p6w6666666g888@9A9j;;;=.=5=@A4ABBB-DDDGD F F F FFFFpGGGGG H4H9H(IDIOIPJ{JJJJJMMMOP1PPPP^RRRRSSTUUV9VHVVWWAWaWpWWWWWX!XuXXX7YZYjYYYY>ZiZnZn[[[$]O]T]_ `&`bbbdddHhhhlllpppmqqqqrrrJsqssvvvo*e|ߊ SWk\xǐԑ1RВ -@g9PSRuԜ=QHpן>Rà 1:Va)EPħΨ=Wh/WaѪ˫nEhyѮ/0Pv #7ZjմLw|ӵٵ"-u 2)TX0:Jv1F8L*5*Oc,t'r3GVw*t,4UvP{/dhx#NS#NSVyZ*L]=BUpzEj~= f |    _"""#1#<#$6$A$%%&&& ''''E,p,,Y/v/////{000&2I2m234146'696-7G7X7777888c888889:9\9m99=W=s=E>h>>>>>>??@@@@@AAAAEEEFFFG4GEGGGG&MBMMMN@NRNP&Q+QuTTTUUUfXXXXXXZ0ZHZZZZ[[[^ ____``a#abaaaabbuccccddjddd$f@fKfgg(ghhhhi)i|iiikl$llm mnnnno.oooopBprp r,r>rxrrr3sVshssssttt{{{m|n|~7~B~~%u,PcHlNr܄1UhԈˉ։bȊMx}ˌ+JdTVy7Hוܕ̚Л =\]PuPTĤߤ$3S~εٵ`|ܹƺ&Q\qNw2MXTz{ 0D|!!"(((,+O+a+ ,/,A,7771BLBPB;EfElEWG|GGGGG"HKHaHHHH0IYIIT1U5UhUUUUUUVVVVVV"WEWWWuWWW;X^XpXuXXXY Z2Z8ZZZkZZZZZZ[g[[[Svwvvvww{{||||||m}}}F~~~B]ëׇU@\ggA|ŏ$0Hjyy̒Ɠ(:X}ƚ3F7Xhʥ@}h)Qrϲ&ci-3ȹ .A]}߿4Tc8Xg<wx=DGflo 5<?^di%@`o.2F[j>bu BQ:B'(z5imIT$8d6:j%Y]:E1ab\      . R V   #'Dg    *:*>*f***I.f.z.... /@/D/1:1N11111223404b444444667:7W7k7777>??L?r?????????BBCXF~FFFGG;GOGPGGGGGG HKL$L,LDLHLLLLLLM.MRMeMMMMMN.NTNNNNNN O3OHOkOOOOOOP6PLPpPPPPPQ#QJQ`QQQQQRR4RWRiRRRRS"S1SNSsSSSSST4TGThTTTTTUUIUcUUUUUVV8VZVkVVVVVW*WIWmWWWWWWX'XEXhXzXXXXX YY5YVYfYYYYYZ/ZPZsZZZZZ![R[r[[[[[\+\J\o\\\\\ ]/]D]g]]]]] ^-^Q^g^^^^^ _ _E_p_____ `3`H`k`````aaAaiasaaaab*bPbpbbbbb c#c&cYcyccccccddddddde7eSe^eeeeeefBfdfuffffg=gMgsggggggh=hLhshhhhhi2iTieiiiiijjNjvjjjjjk4kFk~kkkkl#lPlnl{lllllm0mmmmmmmmn]k7Wfۊ .M[͋ >Kn<Ioލ/<bŽ Y_d Ag|ʐ&=@BjtABҙܙ)3ckYpsȞ *6SrΟܟ *8gà>L{ס3Q^ 'CNjɣԣ*FakϤ*4Ojtե0:Upɦ!=Hd˧ &0Kgèި8S]̩ #,F`iڪ$Tr}ī.JUȬ0<Yvȭ0<bƮѮ'Sp|ů+M^Ӱ/9TƱ"AM~*Rzس0X<JhԵ#pͺ9[jӻ1Q^y¼;Kiǽ-V6>eĿ&V^| ]tw+?Ik"Ng7d{~ &JTp!C<P$5T{&) [y#I`cBL)My!W'1?a6Fj>Or0<Z{ ,8Xx-9Yv'Hhx$BO Bjt>Lh"9<EO1O\w),Nr;e<ds4Ed?P0N[v)Ms<@!QRx+Qe/cgy\"]xIoMi&:\}$7X@X~#=tAis=Pq7Wf   2Rt*>`AU      9 C     ' 5 j       ! 0 Y ~     1Vj$Me*<q "JpD\ 8R WF_)Ys6Ve#NU%K_   """$$$%%%~++++++,8,f,h,,,,,,-%-M-O-u------.7.9.]....... /"/F/n/p/////00=0[0]0000011?1{1}11111&2(2O2}222222 3333[3]33333334B4D4g4444444&5(5J5n5p5555566(6L6N6v66666673757V7x7z77777)8+8P8z8|8888899D9|9~99999::H::>>>>? ?6?X?g?????@#@@@i@@@@@A>AXA~AAAABB$BDBQBwBBBCCC$HKH_HHHHJJKYYY7]Z]l]]]]]]^q^^^^^^^ _4_P_u_______` `C`U````````a3aOaraaaaaa bb0bSbdb}bbbbbcc@cRclcccccccd&d=d\d~dddddd e'eCeNeaeeeeee f%f*f,fOf_fwffffffg;gLgegggggggh3hQhxhhhhhh%i8iSixiiiiiij$j;j^jnjjjjjjjk9kGk]k|kkkkkklllRn 1C]Ȁ׀@B^i|*5Hj{ׂ'?cv5Gaӄ,A]h{ʅ ,:PsƆۆOglnɇAQiو#4Mn~ȉ 9\nي'CNaNj׋*Gj|Ҍ CUsǍ2NYlӎ !&(OeΏ>MdԐ);Uq|ґ!=H[}Ғ/46]sēߓ0Ui֔ !DVpҕݕ3R`vږ5C\ty{֗5C[Θ&Bgyә ,:Ps˚!#CPeϛ$9VvМ 4HdΝ-8Km~Ğޞ 4Jhܟ'7OsΠ(FSh͡ߡ&<[i΢BX{ӣ&@\gz,9Umrtϥ >K`|Ǧݦ,KYqѧ-Kpɨߨ ;FYyȩީ #BPs˪ 3Sby«Kfج)JXnǭխ%GXsîۮ7Zlׯ>Lbɰܰ "BOdƱ%Bdu߲@rt˳6RTsʴ  ?W\^ҵ-Kchj޶$/Bcqٷ0Sc{ɸ >I\{ƹ۹@bsҺ #J`~%2GizǼݼ"5Ud{޽$4Ln}ξ)Ehxſ޿5S^q5d|3Vf~ 'Nb~:EXw 'IZu+N^v9DWv5Xh %CNaPYqvxBSk-Cal3Qv&?ap 'J\v$6Po}ATt ,JLs%CNb<au+M\s6Hb 0Se"I_+?[~%<]m+Pb|,Dk 9\n$I]yD]~AQi+Bdu7ce )4Go )IVk$2Hgu/Rd~(9Rt 0Eu(Dgw%IZs%1El"<_q0Eb~ 9axDXt8Ib-?Yu "EWq"Tc{2Ue}"EWq)?br5F`0Jfq4T&@\gz0Phmo/C_~0HMOv -MZo&Iafh;Kc+=W|%HZt$5Np ;Qo3[])Ehz >Lb'9Su / 4 6 ] s       " M e          2 S c        - A ]        / I n      +Q},Bao)EPcAUq=`y 2Fh8[m#.Ci~ 9`+6Ko1Mp%CPe -ITg&&&)))***,,--.".0001;1N111122 3%3F3V3n33333334444T4c4z44444445.5K5k5z555555556 666T6a6v66666667*7C7c7r7777777 8*8:8W8w8888888 99;9O9k9999999::6:V:e:|:::::::;#;;;[;j;;;;;;;H=p=z=V>m>p>AAA@DWDZDH$IRILLL^^^aabd"eLeiij?lglqlmnn$rLrVr%sLszs!8;$;>-369ёۑ˔Δ9C;RUĢ΢AX[-7ӵ"TknĶζHqٸAYչAX[!8;/9"m(Z}+M^v2D]*\x >UX2Ew.BaoDh{)5Tb'K^j)5Udp#Eal1Yc^BLdNv5]gtz     * u         ~ G ^ a     6 9    $ % % % % % ") 9) <) ) * * , - - - - - m0 0 0 q2 2 2 C7 Z7 ]7 : : : : &; 0; ? ? ? >F UF XF ] ] ] ] ] ] ^ 3^ 9^ j 7j Kj Wk ~k k m 1m Em mm m m $p Lp ap p p p p "q Pq Uq |q q Fs js s y z z { { { L{ t{ ~{     ' 1  / ]  F l m n o   ) @ C x ď & 0 ] t w ϔ  ϖ   6 9 ֛  N i Ɲ 9 d h  / 4 ۥ  l ! I S v S ~ Ů Ϯ ۵ " J T  ; E  " + 0 s ) Q f   ) H X K 7K TK X X L XX X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%̕ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X X XXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXX XXXXXXXXXX XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXĕ̕XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXĕXXXXXĕXXĕXXXXĕXX%%%XXXXXĕX%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXX XXXX XXXX XXXX XXXX XXXXXXXXXXXXXXXXXXXXXXXX XXXXXX XXXXXX XXXXX XXX XXX XXXXXXĕXXXĕXXXXXXĕXXXXXXXXXXXX XXXXXX XXXXXX XXXĕXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   X XXX X        XXX XXXXXX   XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX    XXX  XXX          XXXXXXXXX   XX     XXX       X XX?Lelp%'+So !!!  !@   @H 0(  2(  2  6 ?#" ? 2  6 ?#" ?   6 ?#" ? 2  6 ?#" ? B  B D? #" ?    6  ?#" ? 2   <  ?#" ?    6  ?#" ?    6  ?#" ?     6  ?#" ?  B @ < D?#" ? 2  < ?#" ? 2  6 ?#" ?   6 ?#" ?   6 ?#" ?   6 ?#" ? B  B D? #" ? B  B D? #" ? B  B D? #" ? B   B D? #" ?  \B  C D#" ? hB  c $D #" ? hB  c $D #" ? \2  # #" ? 2  <  ?#" ?    6  ?#" ?  \B  C D#" ? B  B D? #" ? 2   <  ?#" ?  2  <  ?#" ?   B S  ?cdefgjlnorsuwxz{}~L k!tp ` t Pt0!Pt Pt;` tk)k t K ,t 0!Pt $rt K t 0@! tK tCt tHTt/ bt$;(tK tK t  t t[0tK $dt0!tX ted tt ktL t0 !pt? _Toc105561644 _Toc106530854 _Toc107975676 _Toc109123222 _Toc109551368 _Toc110766435 _Toc111370544 _Toc111452566 _Toc114546718 _Toc114559683 _Toc114626786 _Toc122857541 _Toc202066806 _Toc202083711 _Toc202084004 _Toc203893649 _Toc211125962 _Toc230674627 _Toc230758049 _Toc230763991 _Toc230777711 _Toc235516434 _Toc235517060 _Toc235517164 _Toc235517460 _Toc235517756 _Toc235518052 _Toc238037156 _Toc238088232 _Toc238088735 _Toc238089040 _Toc241147613 _Toc242012401 _Toc242319420 _Toc242319723 _Toc242335675 _Toc242349134 _Toc249096008 _Toc249156868 _Toc249157242 _Toc249157354 _Toc249157465 _Toc249159858 _Toc105561646 _Toc106530856 _Toc107975678 _Toc109123224 _Toc109551370 _Toc110766437 _Toc111370546 _Toc111452568 _Toc114546720 _Toc114559685 _Toc114626788 _Toc122857543 _Toc202066808 _Toc202083713 _Toc202084006 _Toc203893651 _Toc211125964 _Toc230674629 _Toc230758051 _Toc230763993 _Toc230777713 _Toc235516436 _Toc235517062 _Toc235517166 _Toc235517462 _Toc235517758 _Toc235518054 _Toc238037158 _Toc238088234 _Toc238088737 _Toc238089042 _Toc241147615 _Toc242012403 _Toc242319422 _Toc242319725 _Toc242335677 _Toc242349136 _Toc249096010 _Toc249156870 _Toc249157244 _Toc249157356 _Toc249157467 _Toc249159860 _Toc105561647 _Toc106530857 _Toc107975679 _Toc109123225 _Toc109551371 _Toc110766438 _Toc111370547 _Toc111452569 _Toc114546721 _Toc114559686 _Toc114626789 _Toc122857544 _Toc202066809 _Toc202083714 _Toc202084007 _Toc203893652 _Toc211125965 _Toc230674630 _Toc230758052 _Toc230763994 _Toc230777714 _Toc235516437 _Toc235517063 _Toc235517167 _Toc235517463 _Toc235517759 _Toc235518055 _Toc238037159 _Toc238088235 _Toc238088738 _Toc238089043 _Toc241147616 _Toc242012404 _Toc242319423 _Toc242319726 _Toc242335678 _Toc242349137 _Toc249096011 _Toc249156871 _Toc249157245 _Toc249157357 _Toc249157468 _Toc249159861 _Toc105561651 _Toc106530861 _Toc107975683 _Toc109123229 _Toc109551375 _Toc110766442 _Toc111370551 _Toc111452573 _Toc114546725 _Toc114559690 _Toc114626793 _Toc122857548 _Toc202066813 _Toc202083718 _Toc202084011 _Toc203893656 _Toc211125969 _Toc230674634 _Toc230758056 _Toc230763998 _Toc230777718 _Toc235516441 _Toc235517067 _Toc235517171 _Toc235517467 _Toc235517763 _Toc235518059 _Toc238037163 _Toc238088239 _Toc238088742 _Toc238089047 _Toc241147620 _Toc242012408 _Toc242319427 _Toc242319730 _Toc242335682 _Toc242349141 _Toc249096015 _Toc249156875 _Toc249157249 _Toc249157361 _Toc249157472 _Toc249159865 _Toc105561652 _Toc106530862 _Toc107975684 _Toc109123230 _Toc109551376 _Toc110766443 _Toc111370552 _Toc111452574 _Toc114546726 _Toc114559691 _Toc114626794 _Toc122857549 _Toc202066814 _Toc202083719 _Toc202084012 _Toc203893657 _Toc211125970 _Toc230674635 _Toc230758057 _Toc230763999 _Toc230777719 _Toc235516442 _Toc235517068 _Toc235517172 _Toc235517468 _Toc235517764 _Toc235518060 _Toc238037164 _Toc238088240 _Toc238088743 _Toc238089048 _Toc241147621 _Toc242012409 _Toc242319428 _Toc242319731 _Toc242335683 _Toc242349142 _Toc249096016 _Toc249156876 _Toc249157250 _Toc249157362 _Toc249157473 _Toc249159866 _Toc105561653 _Toc106530863 _Toc107975685 _Toc109123231 _Toc109551377 _Toc110766444 _Toc111370553 _Toc111452575 _Toc114546727 _Toc114559692 _Toc114626795 _Toc122857550 _Toc202066815 _Toc202083720 _Toc202084013 _Toc203893658 _Toc211125971 _Toc230674636 _Toc230758058 _Toc230764000 _Toc230777720 _Toc235516443 _Toc235517069 _Toc235517173 _Toc235517469 _Toc235517765 _Toc235518061 _Toc238037165 _Toc238088241 _Toc238088744 _Toc238089049 _Toc241147622 _Toc242012410 _Toc242319429 _Toc242319732 _Toc242335684 _Toc242349143 _Toc249096017 _Toc249156877 _Toc249157251 _Toc249157363 _Toc249157474 _Toc249159867 _Toc105561654 _Toc106530864 _Toc107975686 _Toc109123232 _Toc109551378 _Toc110766445 _Toc111370554 _Toc111452576 _Toc114546728 _Toc114559693 _Toc114626796 _Toc122857551 _Toc202066816 _Toc202083721 _Toc202084014 _Toc203893659 _Toc211125972 _Toc230674637 _Toc230758059 _Toc230764001 _Toc230777721 _Toc235516444 _Toc235517070 _Toc235517174 _Toc235517470 _Toc235517766 _Toc235518062 _Toc238037166 _Toc238088242 _Toc238088745 _Toc238089050 _Toc241147623 _Toc242012411 _Toc242319430 _Toc242319733 _Toc242335685 _Toc242349144 _Toc249096018 _Toc249156878 _Toc249157252 _Toc249157364 _Toc249157475 _Toc249159868 _Ref483181045 _Ref478370314Title _Toc263955183Table_of_ContentsList_of_Figures _Toc477678749FOREWORD _Toc477601260 _Toc477675519 _Toc477675657 _Toc477678750 _Ref477746610 _Ref477746668 _Ref478376631BM1__INTRODUCTION _Toc255141097 _Toc263955184BM1_1_Purpose_and_Scope _Toc477601261 _Toc477675520 _Toc477675658 _Toc477678751 _Toc263955185BM1_2_Overview _Toc477601262 _Toc477675521 _Toc477675659 _Toc477678752 _Toc263955186BM1_3_Vendor_Extensibility _Toc477601263 _Toc477675522 _Toc477675660 _Toc477678753 _Toc263955187 _Toc263955188 _Toc263955189 _Toc263955190 _Toc477601265 _Toc477675524 _Toc477675662 _Toc477678755BM2__GENERAL_DESCRIPTION _Toc263955191%BM2_1_The_Debugging_Information_Entry _Toc477601266 _Toc477675525 _Toc477675663 _Toc477678756 _Toc263955192 _Toc263955193 _Hlt478797830 _Hlt477687600 _Hlt477687591 _Hlt477687592 _Hlt478798381 _Hlt478798096 _Hlt477687779 _Hlt480096382 _Hlt477687595 _Hlt478807124 _Hlt478807181 _Hlt478795936 _Hlt477687602 _Hlt478795931 _Hlt477687604 _Hlt477687605 _Hlt477687606 _Hlt479418531 _Hlt513519098 _Hlt488573740 _Hlt488574489 _Hlt480016718 _Hlt480016734 _Hlt480016712 _Hlt480016710 _Hlt480016451 _Hlt478807791 _Hlt478807559 _Ref477601563 _Toc477599868 _Toc477600730 _Toc477601267 _Toc477675526 _Toc477675664 _Toc477678757 _Ref517025593 _Ref114556188 _Toc263955372DW_AT_abstract_origin _Hlt521983625 _Hlt480096663 _Hlt477659669 _Hlt477687615 _Hlt480075354 _Hlt480075365 _Hlt480097102 _Hlt521983648DW_AT_accessibility _Hlt480015201 _Hlt480096411 _Hlt477687627 _Hlt478796615 _Hlt478795955 _Hlt477659509 _Hlt480075973 _Hlt480096418 _Hlt478796643 _Hlt478796671 _Hlt478797465DW_AT_address_class _Hlt480097091 _Hlt480097098 _Hlt480012855DW_AT_allocated _Hlt480096807 _Hlt480077491 _Hlt480096917 _Hlt480096935 _Hlt480077875DW_AT_artificial _Hlt480097109 _Hlt478285975 _Hlt478286047 _Hlt478285942DW_AT_associated _Hlt480096871 _Hlt480096879DW_AT_base_types _Hlt480096705DW_AT_binary_scaleDW_AT_bit_offset _Hlt480096709 _Hlt478795888 _Hlt480096739DW_AT_bit_size _Hlt480013140 _Hlt478796404 _Hlt480096742 _Hlt480096745DW_AT_bit_strideDW_AT_byte_size _Hlt483713859DW_AT_byte_strideDW_AT_call_columnDW_AT_call_fileDW_AT_call_lineDW_AT_calling_convention _Hlt480096779DW_AT_common_reference _Hlt480096460DW_AT_comp_dir _Hlt480096783DW_AT_const_value _Hlt480084587 _Hlt480084591 _Hlt480084623 _Hlt480084627DW_AT_const_exprDW_AT_containing_type _Hlt480096787 DW_AT_count _Hlt480096790DW_AT_data_bit_offsetDW_AT_data_location _Hlt480096795DW_AT_data_member_location _Hlt480097118 _Hlt480097121DW_AT_decimal_scaleDW_AT_decimal_signDW_AT_decl_column _Hlt480097126 _Hlt480097855DW_AT_decl_file _Hlt480097129 _Hlt480097864DW_AT_decl_line _Hlt480097850 _Hlt480097132DW_AT_declaration _Hlt512248335DW_AT_default_value _Hlt480097724 _Hlt480097136DW_AT_descriptionDW_AT_digit_count DW_AT_discr _Hlt480096697DW_AT_discr_list _Hlt480096694 _Hlt480097595DW_AT_discr_value _Hlt480096690DW_AT_elementalDW_AT_encoding _Hlt480096683DW_AT_endianityDW_AT_entry_pc _Hlt487458956DW_AT_enum_classDW_AT_explicitDW_AT_extensionDW_AT_external _Hlt480096679 _Hlt480097606 _Hlt480096675DW_AT_frame_base _Hlt480097313 _Hlt480096671 _Hlt511036940 _Hlt480097341 _Hlt480097331 DW_AT_friend _Hlt480096668 DW_AT_high_pcDW_AT_identifier_case _Hlt480097159 DW_AT_import _Hlt480097162 DW_AT_inline _Hlt480097166 _Hlt480097169DW_AT_is_optional _Hlt480097173DW_AT_language _Hlt480097178DW_AT_linkage_nameDW_AT_location DW_AT_low_pcDW_AT_lower_bound _Hlt480096532DW_AT_macro_info _Hlt480096537DW_AT_main_subprogram DW_AT_mutable DW_AT_name _Hlt480096422 _Hlt480097231 _Hlt480096427 _Hlt480097532DW_AT_namelist_item _Hlt480096435 _Hlt480097547DW_AT_object_pointerDW_AT_ordering _Hlt480096440 _Hlt480097750DW_AT_picture_stringDW_AT_priority _Hlt480097602 _Hlt480096444DW_AT_producer _Hlt480096448DW_AT_prototyped _Hlt480096452 _Hlt480097705 _Hlt480097774 DW_AT_pure DW_AT_ranges _Hlt495372453 _Hlt495372475 _Hlt495372512DW_AT_recursiveDW_AT_return_addr _Hlt480096455 _Hlt480097740 DW_AT_segment _Hlt480097392 _Hlt480097794 _Hlt480097401 _Hlt480096464 _Hlt480097387 DW_AT_sibling _Hlt480097823 _Hlt480093244 DW_AT_smallDW_AT_signatureDW_AT_specification _Hlt512248649 _Hlt480096468DW_AT_start_scope _Hlt480096541 _Hlt480096545DW_AT_static_link _Hlt480097325 _Hlt480097337 _Hlt480096549DW_AT_stmt_list _Hlt480097810 _Hlt480096554DW_AT_string_length _Hlt480096610DW_AT_threads_scaled _Hlt253669560 _Hlt253669561DW_AT_trampoline DW_AT_type _Hlt480096614 _Hlt480097365 _Hlt480097790 _Hlt480096617DW_AT_upper_bound _Hlt480096621DW_AT_use_location _Hlt480096625DW_AT_use_utf8DW_AT_variable_parameter _Hlt480096630 _Hlt480097763DW_AT_virtuality _Hlt480096635 _Hlt480096638DW_AT_visibility _Hlt480096642DW_AT_vtable_elem_location _Hlt480096645 _Ref477659467 _Toc477599869 _Toc477600731 _Ref241122105 _Toc263955373address _Hlt480018204 _Hlt480014283block _Hlt480018182constant _Hlt480018227 _Hlt481820971exprlocflag _Hlt477687805 _Hlt480018243lineptrloclistmacptr rangelist reference _Hlt480018081 _Hlt480017979 _Hlt480017957string _Hlt480018130 _Hlt480018018 _Ref479512005 _Ref479511992 _Toc263955374(BM2_3_Relationship_of_Debugging_Informat _Toc477601268 _Toc477675527 _Toc477675665 _Toc477678758 _Toc263955194DW_AT_sibling_relation _Hlt480093228 _Hlt480093247 _Toc263955195 _Toc114546484 _Toc114559448 _Toc114626551DWARF_expression _Toc263955196BM2_4_3_Addressing_Operations _Toc477601272 _Toc477675531 _Toc477675669 _Toc477678762 _Toc263955197BM2_4_3_1_Literal_Encodings _Toc477601273 _Toc477675532 _Toc477675670 _Toc477678763 DW_OP_lit0 DW_OP_lit1 DW_OP_lit31 DW_OP_litN _Hlt477679576 DW_OP_addr DW_OP_const1u DW_OP_const2u DW_OP_const4u DW_OP_const8u DW_OP_const1s DW_OP_const2s DW_OP_const4s DW_OP_const8s DW_OP_constu DW_OP_consts#BM2_4_3_2_Register_Based_Addressing _Toc477601274 _Toc477675533 _Toc477675671 _Toc477678764 DW_OP_fbreg _Hlt511037074 _Hlt511036936 DW_OP_breg0 DW_OP_breg1 DW_OP_breg31 DW_OP_bregN _Hlt477681068 DW_OP_bregxBM2_4_3_3_Stack_Operations _Toc477601275 _Toc477675534 _Toc477675672 _Toc477678765 DW_OP_dup DW_OP_drop DW_OP_pick DW_OP_over DW_OP_swap DW_OP_rot DW_OP_derefDW_OP_deref_size _Hlt480010003 DW_OP_xderef _Hlt480010020DW_OP_xderef_size _Hlt480010029 _Hlt480010035DW_OP_push_object_addressDW_OP_form_tls_addressDW_OP_call_frame_cfa(BM2_4_3_4_Arithmetic_and_Logical_Operati _Toc477601276 _Toc477675535 _Toc477675673 _Toc477678766 DW_OP_abs DW_OP_and DW_OP_div DW_OP_minus DW_OP_mod DW_OP_mul DW_OP_neg DW_OP_notDW_OP_or DW_OP_plus _Hlt480010115DW_OP_plus_uconst _Hlt480010182 _Hlt480010174 DW_OP_shl DW_OP_shr _Hlt477681204 DW_OP_shra DW_OP_xor!BM2_4_3_5_Control_Flow_Operations _Toc477601277 _Toc477675536 _Toc477675674 _Toc477678767DW_OP_leDW_OP_geDW_OP_eqDW_OP_ltDW_OP_gtDW_OP_nerelational_operators _Hlt479418230 DW_OP_skip DW_OP_bra DW_OP_call2 DW_OP_call4DW_OP_call_ref _Hlt480008413 _Hlt480008429 _Hlt480008469DW_AT_location_call _Hlt480097186 _Hlt480097224BM2_4_3_6_Special_Operations _Toc477601278 _Toc477675537 _Toc477675675 _Toc477678768 DW_OP_nopBM2_4_4_Sample_Stack_Operations _Toc477601279 _Toc477675538 _Toc477675676 _Toc477678769 _Toc263955198 _Hlt481206750 _Hlt480010347 _Hlt480010381 _Hlt480010398 _Hlt480010403 _Hlt480010407 _Hlt480010411BM2_4_Location_Descriptions _Toc477601269 _Toc477675528 _Toc477675666 _Toc477678759 _Toc263955199location_expression _Hlt480097281 location_list _Toc263955200BM2_4_2_Register_Name_Operators _Toc477601271 _Toc477675530 _Toc477675668 _Toc477678761 DW_OP_reg0 DW_OP_reg1 DW_OP_reg31 DW_OP_regN _Hlt477682543 _Hlt480009388 DW_OP_regxDW_OP_implicit_valueDW_OP_stack_value _Toc202066586 _Toc202083784 DW_OP_pieceDW_OP_bit_piece$BM2_4_5_Example_Location_Expressions _Toc477601280 _Toc477675539 _Toc477675677 _Toc477678770 _Hlt476479139 _Hlt480009682 _Hlt480009692 _Hlt480009698 _Hlt480010464 _Hlt480010482 _Hlt480097309 _Hlt480010492 _Hlt480010502 _Hlt480010513 _Hlt480009712 _Hlt480010525 _Hlt480009728 _Hlt480010536BM2_4_6_Location_Lists _Toc477601281 _Toc477675540 _Toc477675678 _Toc477678771 _Toc263955201BM2_5_Types_of_Declarations _Toc477601282 _Toc477675541 _Toc477675679 _Toc477678772 _Toc263955202DW_AT_type_of_decl _Hlt480096615 _Hlt480097368 _Hlt477604415#BM2_6_Accessibility_of_Declarations _Toc477601283 _Toc477675542 _Toc477675680 _Toc477678773 _Toc263955203DW_AT_accessibility_decl _Hlt480096413 _Hlt478795822DW_ACCESS_public _Hlt479758068 _Hlt477688601DW_ACCESS_privateDW_ACCESS_protected _Ref477604457 _Toc477599870 _Toc477600732 _Toc477601284 _Toc477675543 _Toc477675681 _Toc477678774 _Toc263955375 BM2_7_Visibility_of_Declarations _Toc263955204DW_AT_visibility_usage _Hlt480096644 DW_VIS_localDW_VIS_exportedDW_VIS_qualified _Ref488719756Figure_4__Visibility_codes _Toc477601285 _Toc477675544 _Toc477675682 _Toc477678775 _Toc263955376 _Ref477604525 _Toc477599871 _Toc477600733 BM2_8_Virtuality_of_Declarations _Toc263955205DW_AT_virtuality_usage _Hlt480095512DW_VIRTUALITY_noneDW_VIRTUALITY_virtualDW_VIRTUALITY_pure_virtual _Ref477604545 _Toc477599872 _Toc477600734 _Toc477601286 _Toc477675545 _Toc477675683 _Toc477678776 _Toc263955377BM2_9_Artificial_Entries _Toc263955206DW_AT_artificial_decl _Hlt480097111(BM2_10_Target_Specific_Addressing_Inform _Toc477601287 _Toc477675546 _Toc477675684 _Toc477678777 _Toc263955207DW_AT_segment_addr _Hlt480093272 _Hlt480096466DW_AT_low_pc_gen _Hlt480097566DW_AT_high_pc_gen _Hlt480097795 _Hlt480097385 _Hlt480097390 _Hlt480097393 _Hlt480097399 _Hlt480097408 _Hlt480097838 DW_ADDR_noneDW_ADDR_near16 DW_ADDR_far16DW_ADDR_huge16DW_ADDR_near32 DW_ADDR_far32 _Toc477599873 _Toc477600735 _Toc477601288 _Toc477675547 _Toc477675685 _Toc477678778 _Toc263955378 BM2_11_Non_Defining_Declarations _Toc263955208 _Toc263955209DW_AT_declaration_non_def _Hlt512248282 _Hlt512248347 _Hlt480097146 _Toc263955210DW_AT_specification_defBM2_12_Declaration_Coordinates _Toc477601289 _Toc477675548 _Toc477675686 _Toc477678779 _Toc263955211declaration_coordinates _Hlt480097847 _Hlt480097852 _Hlt480097861DW_AT_decl_file_usage _Hlt480097131DW_AT_decl_line_usage _Hlt480097134DW_AT_decl_column_usage _Hlt480097127BM2_13_Identifier_Names _Toc477601290 _Toc477675549 _Toc477675687 _Toc477678780 _Toc263955212DW_AT_name_decl _Hlt480092075 _Hlt480096425 _Toc263955213data_object_locationDW_TAG_dwarf_procedure _Ref495373534 _Toc263955214code_address_or_range _Toc263955215 _Toc263955216 _Ref495310701 _Toc263955217 _Ref495374861 _Toc263955218 _Ref519589220 _Toc263955219 _Toc263955220DW_AT_description_usage _Ref230675141 _Toc263955221 _Ref237860526 _Toc263955222DW_AT_linkage_name_usageBM3__PROGRAM_SCOPE_ENTRIES _Toc477601291 _Toc477675550 _Toc477675688 _Toc477678781 _Toc263955223 _Toc263955224 _Ref516902159 _Toc263955225DW_TAG_compile_unitDW_TAG_partial_unitAppendix_E__Dwarf_CompressionDW_AT_low_pc_unit _Hlt480096483DW_AT_high_pc_unit _Hlt480096509 _Hlt481825105DW_AT_name_path _Hlt480096431DW_AT_language_usage _Hlt477604719 _Hlt480097180 DW_LANG_Ada83 DW_LANG_Ada95 DW_LANG_C DW_LANG_C89 DW_LANG_C99DW_LANG_C_plus_plusDW_LANG_Cobol74DW_LANG_Cobol85 DW_LANG_DDW_LANG_Fortran77DW_LANG_Fortran90DW_LANG_Fortran95 DW_LANG_JavaDW_LANG_Modula2 DW_LANG_ObjCDW_LANG_ObjC_plus_plusDW_LANG_Pascal83 DW_LANG_PLIDW_LANG_Python DW_LANG_UPC _Toc477599874 _Toc477600736 _Ref477604659 _Ref249157670 _Ref249087665 _Toc263955379DW_AT_stmt_list_usage _Hlt480096575DW_AT_macro_info_usage _Hlt477604821 _Hlt480096539DW_AT_comp_dir_unit _Hlt480096785DW_AT_producer_usage _Hlt480096450DW_AT_identifier_case_usage _Hlt480097161 _Hlt480017938 _Hlt480017940 _Hlt480017944 _Hlt480017949 _Ref249157629 _Toc263955380DW_ID_case_sensitive _Hlt480097545 DW_ID_up_caseDW_ID_down_caseDW_ID_case_insensitiveDW_AT_base_types_usage _Hlt477681966 _Hlt477605212 _Hlt480096707 _Hlt480017953DW_AT_use_utf8_comp_unit DW_AT_main_subprogram_unit_usage _Ref510511675 _Toc263955226DW_TAG_imported_unitDW_AT_import_unit _Ref235444914 _Toc263955227separate_type_unit_entriesDW_TAG_type_unit_def _Toc230757813 _Toc230763760 _Toc230777480 _Toc263955228BM3_2_Module_Entries _Toc477601293 _Toc477675552 _Toc477675690 _Toc477678783 _Toc263955229 DW_TAG_module _Hlt480097800DW_AT_entry_pc_mod_initDW_AT_priority_module _Hlt480096446 _Toc263955230DW_TAG_namespaceDW_AT_extension_usage"BM4_3_Imported_Declaration_Entries _Toc477601313 _Toc477675572 _Toc477675710 _Toc477678803 _Toc263955231DW_TAG_imported_declarationDW_AT_import_usage _Hlt480090096 _Hlt480097732DW_AT_import_namespaceDW_AT_import_using _Toc263955232DW_TAG_imported_moduleDW_AT_import_using_directive(BM3_3_Subroutine_and_Entry_Point_Entries _Toc477601294 _Toc477675553 _Toc477675691 _Toc477678784 _Ref516898420 _Toc263955233DW_TAG_subprogram _Hlt480097611DW_TAG_entry_point(BM3_3_1_General_Subroutine_and_Entry_Poi _Toc477601295 _Toc477675554 _Toc477675692 _Toc477678785 _Toc263955234 _Hlt480097820 _Hlt480097608DW_AT_external_subr _Hlt480096681 _Hlt481206921 DW_AT_main_subprogram_subp_usageDW_AT_calling_convention_subr _Hlt480096782 _Ref483709616 _Ref483709602 _Toc263955381 DW_CC_normal DW_CC_nocall DW_CC_program _Hlt480006826DW_AT_elemental_usageDW_AT_pure_usageDW_AT_recursive_usage _Toc242335489 _Toc242348946(BM3_3_2_Subroutine_and_Entry_Point_Retur _Toc477601296 _Toc477675555 _Toc477675693 _Toc477678786 _Toc263955235DW_AT_type_of_return _Hlt480096619(BM3_3_3_Subroutine_and_Entry_Point_Locat _Toc477601297 _Toc477675556 _Toc477675694 _Toc477678787 _Toc263955236DW_AT_entry_pc_subr _Hlt480097571 _Hlt480097792DW_AT_address_class_subr _Hlt480097100(BM3_3_4_Declarations_Owned_by_Subroutine _Toc477601298 _Toc477675557 _Toc477675695 _Toc477678788 _Toc263955237DW_TAG_unspecified_parametersDW_TAG_common_inclusionDW_AT_common_reference_usage _Hlt480096458BM3_3_5_Low_Level_Information _Toc477601299 _Toc477675558 _Toc477675696 _Toc477678789 _Toc263955238DW_AT_return_addr_subr _Hlt480096462DW_AT_frame_base_subr _Hlt480096673 _Hlt480097315 _Hlt477605458 _Hlt477605472 _Hlt477605360 _Hlt477605404 _Hlt480097318 _Hlt480097322 _Hlt477668527 _Hlt477605481 _Hlt480097334 _Hlt480097346DW_AT_static_link_usage _Hlt480096552 _Hlt480097339 _Hlt480097326 _Hlt480097354"BM3_3_6_Types_Thrown_by_Exceptions _Toc477601300 _Toc477675559 _Toc477675697 _Toc477678790 _Toc263955239DW_TAG_thrown_type _Hlt480097363(BM3_3_7_Function_Template_Instantiations _Toc477601301 _Toc477675560 _Toc477675698 _Toc477678791 _Toc263955240 _Hlt480097694DW_TAG_template_type_parameter _Hlt480097748 _Hlt480097786BM3_3_8_Inline_Subroutines _Toc477601302 _Toc477675561 _Toc477675699 _Toc477678792 _Toc263955241 _Hlt480097893DW_AT_inline_subr _Hlt480097171 _Hlt480097912DW_INL_not_inlinedDW_INL_inlinedDW_INL_declared_not_inlinedDW_INL_declared_inlined _Ref478443568 _Toc477599876 _Toc477600738 _Toc477601303 _Toc477675562 _Toc477675700 _Toc477678793 _Toc263955382BM3_3_8_1_Abstract_InstancesDW_AT_inline_abstract _Hlt480097168$BM3_3_8_2_Concrete_Inlined_Instances _Toc477601304 _Toc477675563 _Toc477675701 _Toc477678794DW_TAG_inlined_subroutineDW_AT_entry_pc_inl_subrDW_AT_call_file_defDW_AT_call_line_defDW_AT_call_column_def _Hlt512252033DW_AT_const_expr_inline _Hlt480097663 _Hlt480097659 _Hlt480097617 _Hlt480097614DW_AT_abstract_origin_inline _Hlt480014938 _Hlt521983646 _Hlt480099987(BM3_3_8_3_Out_of_Line_Instances_of_Inlin _Toc477601305 _Toc477675564 _Toc477675702 _Toc477678795DW_AT_abstract_origin_outline _Hlt480097105 _Hlt480076285 _Toc263955242trampoline_subprogram_entrytrampoline_attributeBM3_4_Lexical_Block_Entries _Toc477601306 _Toc477675565 _Toc477675703 _Toc477678796 _Toc263955243DW_TAG_lexical_block _Hlt480097600BM3_5_Label_Entries _Toc477601307 _Toc477675566 _Toc477675704 _Toc477678797 _Toc263955244 DW_TAG_labelDW_AT_low_pc_label _Hlt480096489 _Hlt480097758BM3_6_With_Statement_Entries _Toc477601308 _Toc477675567 _Toc477675705 _Toc477678798 _Toc263955245DW_TAG_with_stmtDW_AT_location_with _Hlt480097195!BM3_7_Try_and_Catch_Block_Entries _Toc477601309 _Toc477675568 _Toc477675706 _Toc477678799 _Toc263955246DW_TAG_try_blockDW_TAG_catch_block _Hlt480097577 _Hlt480097674 _Toc477601310 _Toc477675569 _Toc477675707 _Toc477678800 _Toc242348961(BM4__DATA_OBJECT_AND_OBJECT_LIST_ENTRIES _Toc263955247BM4_1_Data_Object_Entries _Toc477601311 _Toc477675570 _Toc477675708 _Toc477678801 _Toc263955248DW_TAG_variableDW_TAG_formal_parameterDW_TAG_constant _Hlt480097578 _Hlt480096529DW_AT_declaration_object _Hlt480085978DW_AT_location_obj _Hlt480097191 _Hlt480097593 _Hlt512246433 _Hlt480096473 _Ref479475074DW_AT_endianity_usageDW_END_default DW_END_big DW_END_little _Ref111361081 _Toc263955383BM4_2_Common_Block_Entries _Toc477601312 _Toc477675571 _Toc477675709 _Toc477678802 _Toc263955249DW_TAG_common_block _Hlt480097229DW_AT_location_common_block _Hlt480097183BM4_4_Namelist_Entries _Toc477601314 _Toc477675573 _Toc477675711 _Toc477678804 _Toc263955250DW_TAG_namelist _Hlt480097550DW_TAG_namelist_itemDW_AT_namelist_item_usage _Hlt480096437 _Toc477601315 _Toc477675574 _Toc477675712 _Toc477678805BM5__TYPE_ENTRIES _Toc263955251DW_AT_start_scope_type _Hlt480096547BM5_1_Base_Type_Entries _Toc477601316 _Toc477675575 _Toc477675713 _Toc477678806 _Toc263955252DW_TAG_base_type _Hlt480097772DW_AT_encoding_base_typeDW_AT_data_bit_offset_baseDW_ATE_addressDW_ATE_boolean _Hlt480006157DW_ATE_complex_float DW_ATE_floatDW_ATE_imaginary_float DW_ATE_signedDW_ATE_signed_charDW_ATE_unsignedDW_ATE_unsigned_charDW_ATE_packed_decimalDW_ATE_numeric_string DW_ATE_editedDW_ATE_signed_fixedDW_ATE_unsigned_fixedDW_ATE_decimal_float DW_ATE_utf _Ref478443608 _Toc477599877 _Toc477600739 _Toc263955384DW_AT_decimal_sign_usageDW_AT_digit_count_usageDW_AT_decimal_scale_usageDW_AT_picture_string_usageDW_AT_binary_scale_usageDW_AT_small_usageDW_DS_unsignedDW_DS_leading_overpunchDW_DS_trailing_overpunchDW_DS_leading_separateDW_DS_trailing_separate _Ref104351054 _Toc263955385 _Toc263955253DW_TAG_unspecified_type _Toc249159686BM5_2_Type_Modifier_Entries _Toc477601317 _Toc477675576 _Toc477675714 _Toc477678807 _Hlt480094732DW_AT_address_class_ptr _Hlt480076854 _Hlt480097096shared_qualified_typeDW_TAG_const_typeDW_TAG_packed_typeDW_TAG_pointer_typeDW_TAG_reference_typeDW_TAG_restrict_typeDW_TAG_rvalue_reference_typeDW_TAG_shared_typeDW_TAG_volatile_type _Ref478443641Figure_11__Type_modifier_tags _Toc477599878 _Toc477600740 _Toc263955386 _Hlt480097415 _Hlt480097421 _Hlt480097430 _Hlt480097435BM5_3_Typedef_Entries _Toc477601318 _Toc477675577 _Toc477675715 _Toc477678808 _Toc263955254DW_TAG_typedef _Hlt480097528BM5_4_Array_Type_Entries _Toc477601319 _Toc477675578 _Toc477675716 _Toc477678809 _Toc263955255DW_TAG_array_typeDW_AT_ordering_usage _Hlt480096442 _Hlt480097752 _Hlt478276695DW_ORD_col_majorDW_ORD_row_major _Ref478443672Figure_12__Array_ordering _Toc477599879 _Toc477600741 _Toc263955387DW_AT_byte_stride_array_usageDW_AT_bit_stride_arrayDW_AT_bit_stride_array_usage _Hlt479421957 _Hlt481227873 _Hlt480964517(BM5_5_Structure__Union__and_Class_Type_E _Toc477601320 _Toc477675579 _Toc477675717 _Toc477678810 _Toc263955256%BM5_5_1_General_Structure_Description _Toc477601321 _Toc477675580 _Toc477675718 _Toc477678811 _Toc263955257DW_TAG_structure_type _Hlt510518753DW_TAG_union_typeDW_TAG_class_typeDW_AT_declaration_incompl _Hlt480097143 _Hlt480086381DW_AT_declaration_spec _Hlt480097150 _Hlt480086210 _Toc263955258DW_TAG_interface&BM5_5_2_Derived_Classes_and_Structures _Toc477601322 _Toc477675581 _Toc477675719 _Toc477678812 _Toc263955259DW_TAG_inheritance"DW_AT_data_member_location_derived _Hlt480097124 _Hlt481829692DW_AT_accessibility_base_class _Hlt480096416DW_AT_virtuality_inherited _Hlt480096636 _Toc263955260DW_TAG_access_declaration _Hlt480096420$DW_AT_accessibility_inherited_member _Hlt480096407 _Hlt480076124BM5_5_3_Friends _Toc477601323 _Toc477675582 _Toc477675720 _Toc477678813 _Toc263955261 DW_TAG_friendDW_AT_friend_usage _Hlt480096669%BM5_5_4_Structure_Data_Member_Entries _Toc477601324 _Toc477675583 _Toc477675721 _Toc477678814 _Toc263955262 DW_TAG_memberDW_AT_mutable_usagemutable_storage_class_specifierDW_AT_data_bit_offset_member _Toc230674197 _Toc230674432 _Toc230757850 _Toc230763797 _Toc230777517 _Toc230674222 _Toc230674457 _Toc230757875 _Toc230763822 _Toc230777542 _Toc230674230 _Toc230674465 _Toc230757883 _Toc230763830 _Toc230777550 _Toc230674243 _Toc230674478 _Toc230757896 _Toc230763843 _Toc230777563(BM5_5_5_Structure_Member_Function_Entrie _Toc477601325 _Toc477675584 _Toc477675722 _Toc477678815 _Toc263955263DW_AT_virtuality_subr _Hlt480096640DW_AT_explicit_usage DW_AT_vtable_elem_location_usage _Hlt480096647DW_AT_object_pointer_usage%BM5_5_6_Class_Template_Instantiations _Toc477601326 _Toc477675585 _Toc477675723 _Toc477678816 _Toc263955264DW_TAG_template_value_parameter _Hlt478789518DW_AT_const_value_templ_param _Hlt480084632BM5_5_7_Variant_Entries _Toc477601327 _Toc477675586 _Toc477675724 _Toc477678817 _Toc263955265DW_TAG_variant_partDW_AT_discr_variant _Hlt480088479 _Hlt480096699DW_TAG_variantDW_AT_discr_value_usage _Hlt480096692DW_AT_discr_list_usage _Hlt480096695 _Hlt480097597 DW_DSC_label _Hlt478277117 _Hlt480007106 DW_DSC_range _Ref478443711 _Toc477599880 _Toc477600742(Figure_13__Discriminant_descriptor_value _Toc263955388BM5_6_Enumeration_Type_Entries _Toc477601328 _Toc477675587 _Toc477675725 _Toc477678818 _Toc263955266DW_TAG_condition _Toc263955267DW_AT_stride_enumDW_TAG_enumeration_typeDW_AT_byte_size_enum _Hlt480096764DW_AT_enum_class_usageDW_TAG_enumeratorDW_AT_const_value_enum _Hlt480084625"DW_AT_byte_stride_array_enum_usage!DW_AT_bit_stride_array_enum_usageBM5_7_Subroutine_Type_Entries _Toc477601329 _Toc477675588 _Toc477675726 _Toc477678819 _Toc263955268DW_TAG_subroutine_typeDW_AT_prototyped_entry _Hlt480096454 _Hlt480097707 _Hlt480097776BM5_8_String_Type_Entries _Toc477601330 _Toc477675589 _Toc477675727 _Toc477678820 _Toc263955269DW_TAG_string_typeDW_AT_string_length_type _Hlt480096612DW_AT_byte_size_string _Hlt480096774BM5_9_Set_Entries _Toc477601331 _Toc477675590 _Toc477675728 _Toc477678821 _Toc263955270DW_TAG_set_typeDW_AT_byte_size_set _Hlt480096771BM5_10_Subrange_Type_Entries _Toc477601332 _Toc477675591 _Toc477675729 _Toc477678822 _Toc263955271DW_TAG_subrange_typeDW_AT_byte_subrange _Hlt480096778DW_AT_threads_scaled_usagethreads_scaled_attributeDW_AT_lower_bound_subrange _Hlt480096534DW_AT_upper_bound_subrange _Hlt480096623DW_AT_count_subrange _Hlt480096793&DW_AT_byte_stride_array_subrange_usage%DW_AT_bit_stride_array_subrange_usage _Toc114559528 _Toc114626631%BM5_11_Pointer_to_Member_Type_Entries _Toc477601333 _Toc477675592 _Toc477675730 _Toc477678823 _Toc263955272DW_TAG_ptr_to_member_typeDW_AT_containing_type_usage _Hlt480096789DW_AT_use_location_ptr_mem _Hlt480096628BM5_12_File_Type_Entries _Toc477601334 _Toc477675593 _Toc477675731 _Toc477678824 _Toc263955273DW_TAG_file_typeDW_AT_byte_size_file _Hlt480096768 _Ref480964299 _Ref480964356BM5_13_Dynamic_Type_Entries _Toc263955274 _Toc263955275DW_AT_data_location_type _Hlt480010552 _Toc263955276DW_AT_allocated_type _Hlt480097074 _Hlt480096904 _Hlt480097089 _Hlt480096798DW_AT_associated_type _Hlt480096874 _Toc263955277DW_TAG_template_alias _Toc477601335 _Toc477675594 _Toc477675732 _Toc477678825 BM6__OTHER_DEBUGGING_INFORMATION _Toc263955278BM6_1_Accelerated_Access _Toc477601336 _Toc477675595 _Toc477675733 _Toc477678826 _Toc263955279BM6_1_1_Lookup_by_Name _Toc477601337 _Toc477675596 _Toc477675734 _Toc477678827 _Toc263955280BM6_1_2_Lookup_by_Address _Toc477601338 _Toc477675597 _Toc477675735 _Toc477678828 _Toc263955281BM6_2_Line_Number_Information _Toc477601339 _Toc477675598 _Toc477675736 _Toc477678829 _Toc263955282BM6_2_1_Definitions _Toc477601340 _Toc477675599 _Toc477675737 _Toc477678830 _Toc263955283state_machine_linestatement_programsequenceBM6_2_2_State_Machine_Registers _Toc477601341 _Toc477675600 _Toc477675738 _Toc477678831 _Toc263955284filelinecolumnis_stmt basic_block end_sequence prologue_end epilogue_endisa discriminator _Toc105561509 _Toc106530718 _Toc107975539 _Toc109123085 _Toc109551230 _Toc110766297 _Toc111370404 _Toc111452426 _Toc114546577 _Toc114559542 _Toc114626645&BM6_2_3_Statement_Program_Instructions _Toc477601342 _Toc477675601 _Toc477675739 _Toc477678832 _Toc263955285special_opcodesstandard_opcodes _Hlt480019189extended_opcodes&BM6_2_4_The_Statement_Program_Prologue _Toc477601343 _Toc477675602 _Toc477675740 _Toc477678833 _Toc263955286 _Hlt480018791BM6_2_5_The_Statement_Program _Toc477601344 _Toc477675603 _Toc477675741 _Toc477678834 _Toc263955287BM6_2_5_1_Special_Opcodes _Toc477601345 _Toc477675604 _Toc477675742 _Toc477678835BM6_2_5_2_Standard_Opcodes _Toc477601346 _Toc477675605 _Toc477675743 _Toc477678836 DW_LNS_copyDW_LNS_advance_pcDW_LNS_advance_lineDW_LNS_set_fileDW_LNS_set_columnDW_LNS_negate_stmtDW_LNS_set_basic_blockDW_LNS_const_add_pc _Hlt480018888DW_LNS_fixed_advance_pc _Hlt480018935 _Hlt480018970DW_LNS_set_prologue_endDW_LNS_set_epilogue_beginDW_LNS_set_isaBM6_2_5_3_Extended_Opcodes _Toc477601347 _Toc477675606 _Toc477675744 _Toc477678837DW_LNE_end_sequenceDW_LNE_set_addressDW_LNE_define_file _Hlt480018705DW_LNE_set_discriminatorBM6_3_Macro_Information _Toc477601348 _Toc477675607 _Toc477675745 _Toc477678838 _Toc263955288BM6_3_1_Macinfo_Types _Toc477601349 _Toc477675608 _Toc477675746 _Toc477678839 _Toc263955289 _Hlt480020009 _Hlt480020014 _Hlt480020019 _Hlt480020026 _Hlt480020033%BM6_3_1_1_Define_and_Undefine_Entries _Toc477601350 _Toc477675609 _Toc477675747 _Toc477678840DW_MACINFO_defineDW_MACINFO_undefBM6_3_1_2_Start_File_Entries _Toc477601351 _Toc477675610 _Toc477675748 _Toc477678841DW_MACINFO_start_fileBM6_3_1_3_End_File_Entries _Toc477601352 _Toc477675611 _Toc477675749 _Toc477678842DW_MACINFO_end_file"BM6_3_1_4_Vendor_Extension_Entries _Toc477601353 _Toc477675612 _Toc477675750 _Toc477678843DW_MACINFO_vendor_extBM6_3_2_Base_Source_Entries _Toc477601354 _Toc477675613 _Toc477675751 _Toc477678844 _Toc263955290(BM6_3_3_Macinfo_Entries_for_Command_Line _Toc477601355 _Toc477675614 _Toc477675752 _Toc477678845 _Toc263955291 _Hlt480019745 _Hlt480019755 _Hlt480019766 _Hlt480019776 _Hlt480019786 _Hlt480019794 _Hlt480019801 _Hlt480019808 _Hlt480019814&BM6_3_4_General_Rules_and_Restrictions _Toc477601356 _Toc477675615 _Toc477675753 _Toc477678846 _Toc263955292BM6_4_Call_Frame_Information _Toc477601357 _Toc477675616 _Toc477675754 _Toc477678847 _Toc263955293(BM6_4_1_Structure_of_Call_Frame_Informat _Toc477601358 _Toc477675617 _Toc477675755 _Toc477678848 _Toc263955294 undefined same_value offset_N_ register_R expression_E architecturalCIE_idversion augmentationcode_alignment_factordata_alignment_factorreturn_address_registerinitial_instructionspadding _Hlt480020796length CIE_pointerinitial_location address_range instructionsBM6_4_2_Call_Frame_Instructions _Toc477601359 _Toc477675618 _Toc477675756 _Toc477678849 _Toc263955295 _Ref249090505DW_CFA_set_locDW_CFA_advance_locDW_CFA_advance_loc1DW_CFA_advance_loc2DW_CFA_advance_loc4DW_CFA_def_cfaDW_CFA_def_cfa_sfDW_CFA_def_cfa_registerDW_CFA_def_cfa_offsetDW_CFA_def_cfa_offset_sfDW_CFA_def_cfa_expressionDW_CFA_undefinedDW_CFA_same_value DW_CFA_offsetDW_CFA_offset_extended _Hlt480020150DW_CFA_restore_extended_sfDW_CFA_val_offsetDW_CFA_val_offset_sfDW_CFA_registerDW_CFA_expressionDW_CFA_val_expressionDW_CFA_restoreDW_CFA_restore_extended _Hlt480020160DW_CFA_remember_stateDW_CFA_restore_state DW_CFA_nop _Toc105561521 _Toc106530730 _Toc107975551 _Toc109123097 _Toc109551242 _Toc110766309 _Toc111370416 _Toc111452438 _Toc114546589 _Toc114559554 _Toc114626657 _Toc105561524 _Toc106530733 _Toc107975554 _Toc109123100 _Toc109551245 _Toc110766312 _Toc111370419 _Toc111452441 _Toc114546592 _Toc114559557 _Toc114626660 _Toc105561528 _Toc106530737 _Toc107975558 _Toc109123104 _Toc109551249 _Toc110766316 _Toc111370423 _Toc111452445 _Toc114546596 _Toc114559561 _Toc114626664 _Toc105561529 _Toc106530738 _Toc107975559 _Toc109123105 _Toc109551250 _Toc110766317 _Toc111370424 _Toc111452446 _Toc114546597 _Toc114559562 _Toc114626665 _Toc105561531 _Toc106530740 _Toc107975561 _Toc109123107 _Toc109551252 _Toc110766319 _Toc111370426 _Toc111452448 _Toc114546599 _Toc114559564 _Toc114626667 _Toc105561533 _Toc106530742 _Toc107975563 _Toc109123109 _Toc109551254 _Toc110766321 _Toc111370428 _Toc111452450 _Toc114546601 _Toc114559566 _Toc114626669$BM6_4_3_Call_Frame_Instruction_Usage _Toc477601360 _Toc477675619 _Toc477675757 _Toc477678850 _Toc263955296 _Hlt480020204 _Hlt480020233 _Hlt480020302 _Hlt477670490 _Hlt480020313 _Hlt480020327 _Toc263955297 _Toc477601361 _Toc477675620 _Toc477675758 _Toc477678851 _Ref478433930BM7__DATA_REPRESENTATION _Toc263955298BM7_1_Vendor_Extensibility _Toc477601362 _Toc477675621 _Toc477675759 _Toc477678852 _Toc263955299 DW_XXX_lo_hi _Hlt480001600 _Hlt480001272 _Hlt480001604 _Hlt528994881 _Hlt479998729 _Hlt480001611 _Hlt480001615 _Hlt480001619 _Hlt528995744 _Hlt479998747 _Hlt480001622 _Hlt480001624 _Hlt480020463 _Hlt480001629 _Hlt480001632BM7_2_Reserved_Error_Values _Toc477601363 _Toc477675622 _Toc477675760 _Toc477678853 _Toc263955300 _Toc263955301 _Ref519667129 _Toc263955302initial_length_field(BM7_3_Executable_Objects_and_Shared_Obje _Toc477601364 _Toc477675623 _Toc477675761 _Toc477678854 _Toc263955303BM7_4_File_Constraints _Toc477601365 _Toc477675624 _Toc477675762 _Toc477678855 _Toc263955304bit32_dwarf_formatbit64_dwarf_formatsection_offsetsection_length%BM7_5_Format_of_Debugging_Information _Toc477601366 _Toc477675625 _Toc477675763 _Toc477678856 _Toc263955305 _Toc263955306BM7_5_1_Compilation_Unit_Header _Toc477601367 _Toc477675626 _Toc477675764 _Toc477678857type_unit_header _Toc230757941 _Toc230763888 _Toc230777608#BM7_5_2_Debugging_Information_Entry _Toc477601368 _Toc477675627 _Toc477675765 _Toc477678858 _Toc263955307BM7_5_3_Abbreviation_Tables _Toc477601369 _Toc477675628 _Toc477675766 _Toc477678859 _Toc263955308DW_CHILDREN_yesDW_CHILDREN_noDW_FORM_indirectBM7_5_4_Attribute_Encodings _Toc477601370 _Toc477675629 _Toc477675767 _Toc477678860 _Toc263955309sec_offset_forms address_forms DW_FORM_addr block_formsDW_FORM_block1DW_FORM_block2DW_FORM_block4 DW_FORM_blockconstant_forms DW_FORM_data1 DW_FORM_data2 DW_FORM_data4 DW_FORM_data8 _Hlt477599075 DW_FORM_sdata DW_FORM_udata exprloc_forms flag_forms DW_FORM_flagflag_present_forms lineptr_forms loclist_forms macptr_formsrangelist_formsreference_forms DW_FORM_ref1 DW_FORM_ref2 DW_FORM_ref4 DW_FORM_ref8DW_FORM_ref_udataDW_FORM_ref_addr string_formsDW_FORM_string _Hlt477599271 DW_FORM_strpDW_TAG_lo_user DW_TAG_lo_hi _Hlt479999491 _Hlt480001630DW_TAG_hi_user _Hlt479998389 _Hlt479998372 _Hlt480001634 _Hlt480001603 _Hlt479998358 _Ref478443787 _Toc477599882 _Toc477600744 _Ref478375226 _Toc477599883 _Toc477600745 _Ref519657692 _Ref249091570 _Toc263955389Figure_15__Tag_encodings _Hlt480007006 _Hlt480007012 _Ref478443886 _Ref478375250 _Toc477599884 _Toc477600746 _Toc263955390 _Hlt480093102 _Hlt480090648 _Hlt480092041 _Hlt480092335 _Hlt480093968 _Hlt480091316 _Hlt480089521 _Hlt480095668 _Hlt480094542 _Hlt480084585 _Hlt480092526 _Hlt480092884 _Hlt480093637 _Hlt480094881 _Hlt480075672 _Hlt480076862 _Hlt480091777 _Hlt480092428 _Hlt480093018 _Hlt480093397 _Hlt480093847 _Hlt480095013 _Hlt480095159 _Hlt480095353 _Hlt480095793 DW_AT_lo_hi _Hlt479475337 _Hlt480001328 _Hlt528994971 _Hlt480001324 _Hlt480001322 _Hlt480001609 _Toc477599885 _Toc477600747 _Ref478375354 _Ref482420874 _Toc477599886 _Toc477600748 _Ref519657762 _Ref235518114 _Ref249091658 _Toc263955391 _Hlt480007747 _Hlt480007764 _Hlt480007775 _Hlt480007785 _Hlt480007794 _Hlt480007801 _Hlt480007810 _Hlt480007816 _Hlt480007828 _Hlt480007836 _Hlt480007844 _Hlt480007851 _Hlt480007859 _Hlt480007865 _Hlt480007871 _Hlt478284391 _Hlt480007878 _Hlt480007887 _Hlt480007896 _Hlt480007902 _Hlt480007910 _Hlt480007919 _Ref478443974 _Ref478375530 _Toc477601371 _Toc477675630 _Toc477675768 _Toc477678861 _Ref235518113 _Ref249091480 _Toc263955392 _Ref478434289BM7_6_Variable_Length_Data _Toc263955310 _Ref478444053 _Toc477599887 _Toc477600749 _Ref478375666 _Toc477599888 _Toc477600750(Figure_20__Examples_of_unsigned_LEB128_e _Toc263955393 _Ref478376471 _Ref478375798 _Toc477599889 _Toc477600751 _Toc263955394BM7_7_Location_Descriptions _Toc477601372 _Toc477675631 _Toc477675769 _Toc477678862 _Toc263955311BM7_7_1_Location_Expressions _Toc477601373 _Toc477675632 _Toc477675770 _Toc477678863 _Toc263955312 _Hlt480010608 _Hlt480010620 _Hlt480010628 _Hlt480010637 _Hlt480010644 _Hlt480010652 _Hlt480010661 _Hlt480010670 _Hlt480010680 _Hlt480010688 _Hlt480010695 _Hlt480010702 _Hlt480010709 _Hlt480010716 _Hlt480010725 _Hlt480010735 _Hlt480010745 _Hlt480010754 _Hlt480010764 _Hlt480010773 _Hlt480010781 _Hlt480010788 _Hlt480010796 _Hlt480010806 _Hlt480010816 _Hlt480010827 _Hlt480010880 _Hlt480010893 _Hlt480010904 _Hlt480010916 _Hlt480010926 _Hlt480010941 _Hlt480010952 _Hlt480010964 _Hlt480010977 _Hlt480010989 _Hlt480011006 _Hlt480011020 _Hlt480011034 _Hlt480011048 _Hlt480011061 _Hlt480011073 _Hlt480011091 _Hlt480011258 _Hlt480011120 _Hlt480011140 _Hlt480011163 _Hlt480011184 _Hlt480011212 _Hlt480011239 _Hlt480011296 _Hlt480011317 _Hlt480011347 _Hlt480011373 _Hlt479416053 _Hlt480011557 _Hlt480011574 _Hlt480011589 _Hlt480011607 _Hlt480011626 _Hlt480011641 _Hlt480011654 _Hlt480011672 _Hlt480011686 DW_OP_lo_hi _Hlt479415402 _Hlt480001546 _Hlt480011702 _Hlt480011710 _Hlt480001616 _Ref478376752 _Toc477599891 _Toc477600753 _Toc477601374 _Toc477675633 _Toc477675771 _Toc477678864 _Ref519657898 _Toc263955395 _Toc263955313BM7_7_2_Location_Lists _Toc263955314BM7_8_Base_Type_Encodings _Toc477601375 _Toc477675634 _Toc477675772 _Toc477678865 _Toc263955315 _Hlt480096688 _Hlt480088828 _Hlt480006584 _Hlt480006419 _Hlt480006479 _Hlt480006534 _Hlt480006525 _Hlt480006541 _Hlt480006548 _Hlt480006554 _Hlt480006563 DW_ATE_lo_hi _Hlt480001432 _Hlt480006578 _Hlt480001613 _Ref249092653$Figure_24__Base_type_encoding_values _Toc477601376 _Toc477675635 _Toc477675773 _Toc477678866 _Toc263955396 _Ref264184383 _Ref249093022BM7_9_Accessibility_Codes _Toc263955397 DW_END_lo_hi _Ref249093271 _Toc263955398 _Toc263955316 _Hlt480076508 _Hlt480076519 _Hlt480076527 _Ref478376859 _Toc477599893 _Toc477600755 _Toc477601377 _Toc477675636 _Toc477675774 _Toc477678867 _Toc263955399BM7_10_Visibility_Codes _Toc263955317 _Hlt480012091 _Hlt480012098 _Hlt480012102 _Ref478376876 _Toc477599894 _Toc477600756Figure_26__Visibility_encodings _Toc477601378 _Toc477675637 _Toc477675775 _Toc477678868 _Toc263955400BM7_11_Virtuality_Codes _Toc263955318 _Hlt480011948 _Hlt480011956 _Hlt480011961 _Ref478376892 _Toc477599895 _Toc477600757Figure_27__Virtuality_encodings _Toc477601379 _Toc477675638 _Toc477675776 _Toc477678869 _Toc263955401BM7_12_Source_Languages _Toc263955319 _Hlt480008859 _Hlt480008866 _Hlt480008886 _Hlt480008892 _Hlt480009062 _Hlt480009064 _Hlt480009065 _Hlt480009254 _Hlt480009262 _Hlt480009267 DW_LANG_lo_hi _Hlt480001574 _Hlt480792521 _Hlt480009272 _Hlt480009276 _Hlt480001620 _Ref478376909 _Toc477599896 _Toc477600758 _Toc477601380 _Toc477675639 _Toc477675777 _Toc477678870 _Ref519658001Figure_28__Language_encodings _Toc263955402BM7_13_Address_Class_Encodings _Toc263955320 _Hlt480018430BM7_14_Identifier_Case _Toc477601381 _Toc477675640 _Toc477675778 _Toc477678871 _Toc263955321 _Hlt480017912 _Hlt480017852 _Hlt480017921 _Hlt480017926 _Hlt480017931 _Ref478376968 _Toc477599897 _Toc477600759'Figure_30__Calling_convention_encodings _Toc477601382 _Toc477675641 _Toc477675779 _Toc477678872 _Toc263955403#BM7_15_Calling_Convention_Encodings _Toc263955322 _Hlt480006834 _Hlt480006843 _Hlt480006850 DW_CC_lo_hi _Hlt479998766 _Hlt479998763 _Hlt480006861 _Hlt480006865 _Hlt480001623 _Ref478376989 _Toc477599898 _Toc477600760 _Toc477601383 _Toc477675642 _Toc477675780 _Toc477678873 _Toc263955404BM7_16_Inline_Codes _Toc263955323 _Hlt480008632 _Hlt480008639 _Hlt480008644 _Hlt480008649 _Ref478377006 _Toc477599899 _Toc477600761Figure_31__Inline_encodings _Toc477601384 _Toc477675643 _Toc477675781 _Toc477678874 _Toc263955405BM7_17_Array_Ordering _Toc263955324 _Hlt480011821 _Hlt480011826 _Ref478377021 _Toc477599900 _Toc477600762Figure_32__Ordering_encodings _Toc477601385 _Toc477675644 _Toc477675782 _Toc477678875 _Toc263955406BM7_18_Discriminant_Lists _Toc263955325 _Hlt480007175 _Hlt480007180 _Ref478377046 _Toc477599901 _Toc477600763(Figure_33__Discriminant_descriptor_encod _Toc477601386 _Toc477675645 _Toc477675783 _Toc477678876 _Toc263955407BM7_19_Name_Lookup_Table _Ref249090119 _Toc263955326BM7_20_Address_Range_Table _Toc477601387 _Toc477675646 _Toc477675784 _Toc477678877 _Toc263955327BM7_21_Line_Number_Information _Toc477601388 _Toc477675647 _Toc477675785 _Toc477678878 _Toc263955328 _Hlt480019027 _Hlt480019039 _Hlt480019047 _Hlt480019057 _Hlt480019066 _Hlt480019071 _Hlt480019077 _Hlt480019084 _Hlt479665900 _Hlt480019092 _Hlt480019098 _Hlt480019108 _Ref478377141 _Ref519658061 _Toc477599902 _Toc477600764 _Toc263955408 _Hlt480018723 _Hlt480018732 _Hlt480018739 DW_LNE_lo_hi _Ref478377176 _Toc477599903 _Toc477600765 _Toc477601389 _Toc477675648 _Toc477675786 _Toc477678879 _Ref528997817&Figure_34_Line_Number_Extended_Opcodes _Toc263955409BM7_22_Macro_Information _Toc263955329 _Hlt480019827 _Hlt480019834 _Hlt480019840 _Hlt480019847 _Hlt480019853 _Hlt480019859 _Ref478377193!Figure_36__Macinfo_Type_Encodings _Toc477599904 _Toc477600766 _Toc477601390 _Toc477675649 _Toc477675787 _Toc477678880 _Toc263955410BM7_23_Call_Frame_Information _Toc263955330 _Hlt480020340 _Hlt480020346 _Hlt480020353 _Hlt480020360 _Hlt480020368 _Hlt480020376 _Hlt480020381 _Hlt480020387 _Hlt480020391 _Hlt480020396 _Hlt480020402 _Hlt480020409 _Hlt480020414 _Hlt480020419 _Hlt480020425 _Hlt480020430 _Hlt480020438 _Hlt480020448 DW_CFA_lo_hi _Hlt480001595 _Hlt480020456 _Hlt480001626 _Hlt480020461 _Ref478377258 _Ref519658101 _Toc477599905 _Toc477600767 _Toc477601391 _Toc477675650 _Toc477675788 _Toc477678881 _Toc263955411 _Toc263955331BM7_24_Dependencies _Toc263955332 _Ref483181048 _Toc263955333 _Ref483180630 _Toc263955412 _Ref230753495 _Toc263955334 _Toc477675652 _Toc477675790 _Toc477678883(Appendix_1__Current_Attributes_by_Tag_Va _Toc235516353 _Toc235516979 _Toc235517379 _Toc235517675 _Toc235517971 _Toc238037072 _Toc238088148 _Toc238088454 _Toc238088651 _Toc238088957 _Toc238089262 _Toc235516354 _Toc235516980 _Toc235517380 _Toc235517676 _Toc235517972 _Toc238037073 _Toc238088149 _Toc238088455 _Toc238088652 _Toc238088958 _Toc238089263 _Toc235516355 _Toc235516981 _Toc235517381 _Toc235517677 _Toc235517973 _Toc238037074 _Toc238088150 _Toc238088456 _Toc238088653 _Toc238088959 _Toc238089264 _Toc263955335DECL _Hlt479475701 _Hlt478798370 _Hlt521925531 _Hlt480075682 _Hlt480075689 _Hlt480014791 _Hlt480075695 _Hlt512249048 _Hlt493056165 _Hlt483720673 _Hlt479477394 _Hlt480075702 _Hlt480075708 _Hlt483720971 _Hlt480075714 _Hlt480014854 _Hlt480075720 _Hlt480075730 _Hlt480090069 _Hlt483721361 _Hlt480075739 _Hlt480075748 _Hlt480075768 _Hlt480075780 _Hlt519501365 _Hlt480092180 _Toc477675653 _Toc477675791 _Toc477678884 _Ref478443385 _Toc263955413 _Toc263955336 _Toc105561642 _Toc106530852 _Toc107975674 _Toc109123220 _Toc109551366 _Toc110766433 _Toc111370542 _Toc111452564 _Toc114546715 _Toc114559680 _Toc114626783 _Toc122857538 _Toc202066803 _Toc202083708 _Toc202084001 _Toc203893646 _Toc211125959 _Toc230674624 _Toc230758046 _Toc230763988 _Toc230777708 _Toc235516431 _Toc235517057 _Toc235517161 _Toc235517457 _Toc235517753 _Toc235518049 _Toc238037153 _Toc238088229 _Toc238088732 _Toc238089037 _Toc241147610 _Toc242012398 _Toc242319417 _Toc242319720 _Toc242335672 _Toc242349131 _Toc249096005 _Toc249156865 _Toc249157239 _Toc249157351 _Toc249157462 _Toc249159855 _Toc253989208 _Toc255140883 _Toc255141329 _Toc255145516 _Toc263954795 _Toc263955414 _Toc114546716 _Toc114559681 _Toc114626784 _Toc122857539 _Toc202066804 _Toc202083709 _Toc202084002 _Toc203893647 _Toc211125960 _Toc230674625 _Toc230758047 _Toc230763989 _Toc230777709 _Toc235516432 _Toc235517058 _Toc235517162 _Toc235517458 _Toc235517754 _Toc235518050 _Toc238037154 _Toc238088230 _Toc238088733 _Toc238089038 _Toc241147611 _Toc242012399 _Toc242319418 _Toc242319721 _Toc242335673 _Toc242349132 _Toc249096006 _Toc249156866 _Toc249157240 _Toc249157352 _Toc249157463 _Toc249159856 _Toc253989209 _Toc255140884 _Toc255141330 _Toc255145517 _Toc263954796 _Toc263955415 _Toc105561643 _Toc106530853 _Toc107975675 _Toc109123221 _Toc109551367 _Toc110766434 _Toc111370543 _Toc111452565 _Toc114546717 _Toc114559682 _Toc114626785 _Toc122857540 _Toc202066805 _Toc202083710 _Toc202084003 _Toc203893648 _Toc211125961 _Toc230674626 _Toc230758048 _Toc230763990 _Toc230777710 _Toc235516433 _Toc235517059 _Toc235517163 _Toc235517459 _Toc235517755 _Toc235518051 _Toc238037155 _Toc238088231 _Toc238088734 _Toc238089039 _Toc241147612 _Toc242012400 _Toc242319419 _Toc242319722 _Toc242335674 _Toc242349133 _Toc249096007 _Toc249156867 _Toc249157241 _Toc249157353 _Toc249157464 _Toc249159857 _Toc253989210 _Toc255140885 _Toc255141331 _Toc255145518 _Toc263954797 _Toc263955416 _Toc253989211 _Toc255140886 _Toc255141332 _Toc255145519 _Toc263954798 _Toc263955417 _Toc105561645 _Toc106530855 _Toc107975677 _Toc109123223 _Toc109551369 _Toc110766436 _Toc111370545 _Toc111452567 _Toc114546719 _Toc114559684 _Toc114626787 _Toc122857542 _Toc202066807 _Toc202083712 _Toc202084005 _Toc203893650 _Toc211125963 _Toc230674628 _Toc230758050 _Toc230763992 _Toc230777712 _Toc235516435 _Toc235517061 _Toc235517165 _Toc235517461 _Toc235517757 _Toc235518053 _Toc238037157 _Toc238088233 _Toc238088736 _Toc238089041 _Toc241147614 _Toc242012402 _Toc242319421 _Toc242319724 _Toc242335676 _Toc242349135 _Toc249096009 _Toc249156869 _Toc249157243 _Toc249157355 _Toc249157466 _Toc249159859 _Toc253989212 _Toc255140887 _Toc255141333 _Toc255145520 _Toc263954799 _Toc263955418 _Toc253989213 _Toc255140888 _Toc255141334 _Toc255145521 _Toc263954800 _Toc263955419 _Toc253989214 _Toc255140889 _Toc255141335 _Toc255145522 _Toc263954801 _Toc263955420 _Toc105561648 _Toc106530858 _Toc107975680 _Toc109123226 _Toc109551372 _Toc110766439 _Toc111370548 _Toc111452570 _Toc114546722 _Toc114559687 _Toc114626790 _Toc122857545 _Toc202066810 _Toc202083715 _Toc202084008 _Toc203893653 _Toc211125966 _Toc230674631 _Toc230758053 _Toc230763995 _Toc230777715 _Toc235516438 _Toc235517064 _Toc235517168 _Toc235517464 _Toc235517760 _Toc235518056 _Toc238037160 _Toc238088236 _Toc238088739 _Toc238089044 _Toc241147617 _Toc242012405 _Toc242319424 _Toc242319727 _Toc242335679 _Toc242349138 _Toc249096012 _Toc249156872 _Toc249157246 _Toc249157358 _Toc249157469 _Toc249159862 _Toc253989215 _Toc255140890 _Toc255141336 _Toc255145523 _Toc263954802 _Toc263955421 _Toc105561649 _Toc106530859 _Toc107975681 _Toc109123227 _Toc109551373 _Toc110766440 _Toc111370549 _Toc111452571 _Toc114546723 _Toc114559688 _Toc114626791 _Toc122857546 _Toc202066811 _Toc202083716 _Toc202084009 _Toc203893654 _Toc211125967 _Toc230674632 _Toc230758054 _Toc230763996 _Toc230777716 _Toc235516439 _Toc235517065 _Toc235517169 _Toc235517465 _Toc235517761 _Toc235518057 _Toc238037161 _Toc238088237 _Toc238088740 _Toc238089045 _Toc241147618 _Toc242012406 _Toc242319425 _Toc242319728 _Toc242335680 _Toc242349139 _Toc249096013 _Toc249156873 _Toc249157247 _Toc249157359 _Toc249157470 _Toc249159863 _Toc253989216 _Toc255140891 _Toc255141337 _Toc255145524 _Toc263954803 _Toc263955422 _Toc105561650 _Toc106530860 _Toc107975682 _Toc109123228 _Toc109551374 _Toc110766441 _Toc111370550 _Toc111452572 _Toc114546724 _Toc114559689 _Toc114626792 _Toc122857547 _Toc202066812 _Toc202083717 _Toc202084010 _Toc203893655 _Toc211125968 _Toc230674633 _Toc230758055 _Toc230763997 _Toc230777717 _Toc235516440 _Toc235517066 _Toc235517170 _Toc235517466 _Toc235517762 _Toc235518058 _Toc238037162 _Toc238088238 _Toc238088741 _Toc238089046 _Toc241147619 _Toc242012407 _Toc242319426 _Toc242319729 _Toc242335681 _Toc242349140 _Toc249096014 _Toc249156874 _Toc249157248 _Toc249157360 _Toc249157471 _Toc249159864 _Toc253989217 _Toc255140892 _Toc255141338 _Toc255145525 _Toc263954804 _Toc263955423 _Toc253989218 _Toc255140893 _Toc255141339 _Toc255145526 _Toc263954805 _Toc263955424 _Toc253989219 _Toc255140894 _Toc255141340 _Toc255145527 _Toc263954806 _Toc263955425 _Toc253989220 _Toc255140895 _Toc255141341 _Toc255145528 _Toc263954807 _Toc263955426 _Toc253989221 _Toc255140896 _Toc255141342 _Toc255145529 _Toc263954808 _Toc263955427 _Toc263955428 _Toc477675655 _Toc477675793 _Toc477678886 _Ref478376678(Appendix_4__Encoding_and_decoding_variab _Toc263955337Encode_a_signed_integer_ _Toc263955429Decode_unsigned_LEB128_number_ _Toc263955430 _Toc263955431 _Toc263955432 _Toc263955338 _Ref493924693 _Toc263955339 _Hlt480009286 _Hlt480006601 _Hlt478463582 _Hlt480007022 _Hlt480008277 _Hlt480008292 _Hlt480008300 _Hlt480008320 _Hlt480008326 _Hlt480008335 _Hlt480008344 _Hlt480007032 _Hlt480008354 _Hlt480008362 _Hlt480008370 _Hlt480007042 _Hlt480008378 _Hlt480007051 _Hlt480008392 _Ref514566044 _Toc263955433 _Ref513880569 _Ref513880859 _Toc263955340 _Ref513880723 _Ref513880807 _Toc263955341 _Ref495114265 _Toc263955434 _Ref514566126 _Toc263955435 _Ref514566187 _Toc263955436 _Toc263955342 _Ref495121448 _Toc263955437 _Ref495121210 _Ref514566351 _Toc263955438 _Toc263955343 _Ref230668377 _Toc263955439 _Ref230668591 _Toc263955440 _Ref513880648 _Toc263955344 _Ref514566514 _Toc263955441 _Ref514566562 _Toc263955442member_function_example _Ref483963451 _Toc263955345 _Ref107913400 _Toc263955443 _Ref107913440 _Toc263955444 _Ref249153948 _Toc263955346 _Ref514566641 _Toc263955445 _Hlt490448772 _Hlt477687377 _Hlt480019119 _Hlt480019130 _Hlt480018761 _Ref490448600 _Toc263955446 _Hlt480019141 _Hlt480019150 _Hlt480019169 _Hlt480019177 _Hlt480019161 _Hlt480018771 _Ref490448653 _Toc263955447(Appendix_5____Call_Frame_Information_Exa _Toc477675656 _Toc477675794 _Toc477678887 _Toc263955347 _Toc263955448 _Ref490446932 _Ref490446894 _Toc263955449 _Hlt481210289 _Hlt480020471 _Hlt480020480 _Hlt480020489 _Hlt480020496 _Hlt480020507 _Hlt480020515 _Hlt480020524 _Hlt480020531 _Hlt480020539 _Hlt480020548 _Hlt480020558 _Toc477599906 _Ref514566821 _Toc263955450 _Hlt480020569 _Hlt480020585 _Hlt480020598 _Hlt480020617 _Hlt481211318 _Hlt480020639 _Hlt480020669 _Hlt480020676 _Hlt480020685 _Hlt480020693 _Hlt480020700 _Hlt480020710 _Hlt480020720 _Hlt480020715 _Hlt480020724 _Hlt480020730 _Hlt480020736 _Hlt480020742 _Hlt480020750 _Hlt480020768 _Hlt480020773 _Hlt480020759 _Ref241040257 _Toc263955451 _Ref211071638 _Toc263955348 _Ref513876858 _Toc263955452 _Toc263955349 _Ref513876786 _Toc263955453 _Ref513876890 _Toc263955454 _Toc263955350 _Ref513876946 _Toc263955455 _Ref513877035 _Toc263955456 _Ref513879102 _Toc263955351 _Ref513877090 _Toc263955457 _Ref513877143 _Toc263955458 _Toc242349068 _Toc263955352 _Toc263955459 _Ref230691077 _Ref230691062 _Toc263955460 _Toc263955353 _Ref230694316 _Toc263955461 _Toc263955354 _Ref237948397 _Toc263955462 _Toc263955355 _Ref238029801 _Toc263955463 _Ref241114729 _Toc263955464 _Toc263955356 _Ref238036372 _Toc263955465 _Ref238036419 _Toc263955466 _Ref517022901 _Toc263955357 _Ref230762311 _Toc263955358 _Toc263955359 _Toc263955360 _Ref511545555 _Toc263955361 _Ref511546128 _Ref511545371 _Toc263955467 _Ref514567035 _Toc263955468 _Ref511546481 _Toc263955469 _Ref514567147 _Toc263955470 _Ref514567198 _Toc263955471 _Ref514567250 _Toc263955472 _Ref514567301 _Toc263955473 _Ref511545453 _Toc263955474 _Ref235500877 _Toc263955362 _Toc263955363 _Ref235514031 _Toc263955475 _Ref235514119 _Toc263955476 _Ref235514187 _Toc263955477 _Ref235514240 _Toc263955478 _Ref255140324 _Toc263955479 _Ref235514361 _Toc263955480 _Ref249150955 _Toc263955364 _Ref235514405 _Toc263955481 _Toc263955365 _Toc263955366 _Toc263955367 _Toc263955368 _Toc263955369 _Toc263955370 _Toc235516389 _Toc235517015 _Toc235517415 _Toc235517711 _Toc235518007 _Toc238037111 _Toc238088187 _Toc238088493 _Toc238088690 _Toc238088996 _Toc238089301 _Ref114543352 _Toc263955371Appendix_Version_Numbers _Ref109548925 _Toc263955482"Pn:n}}}}}}}}}}YYYYYYy™ȧȧȧȧ]LMNQ)лTTUVcFNL&7e7;=BDL `bjmr{ eh}+58>"HdSHWOcuXf)f|d9DWQ^N/?2?{HSSeEP=Ej9V=),DC2OU[c 7+xy{|}k=c hix~VkNK^iKXEij<df:Z[ILqrs$MO eeeeeUr1;^@O}z   !#!o!:":":":":""M##z$J%&'[(( +:+--.x159}<}<}<}<}<b>4??@?AA~BDCCIDqDDFKFeFMGmG@HaIJJJJJJJJJKK:KLMN3PRPqPTT/UV)VWXXXXXYYYYYYYYZ[B\]]^ _ _ _ _ _ _abeglllllppppqqqt7vxx{D~|||||tτYGU? G‰WgZ_`ݦݦݦݦݦݦݦݦ`h$Elʩʩw٫KKn      9BY ip@`ʹ oozny[mDD~7  LLGQQ33mmmmmm  T]T a`RMmmm  O!X!"'#$$/%%%%%&')M*1+U+[+a++-m/]3]33R4<6<66*8A@A@A@A@@@@@@@ACcDZGHHDJKALIXIXIXIXIXIXYZZ\_acehiiiiiooZppzqqqqqqqr7tttu vuyyH{H{H{{|~$W^PPPPPP Ck!8ʔU_H 6;<=NUEEEEEEE\^^^^^^ ëݬU[c "xLLLLLLLL;mq@      )                -vvvvvvqCCCC111111J# ### %j&)4@BJCC&D&D=H=H=H=H=H=HHKIJJKKKKKKMMNP&P&Q&Q&Q&Q)Q)QRR5S5S5S5S5S5STU:V\ghhh"iaiii6jvjjj?kpkklilllllpqrJsv\~oك[^^^mmmmmm}ВΓ8ɖ@22222ٜG[[[[[[\111111qqīīīīīEk"Lܵܵܵܵܵܵѻ!)+\pqqqqqqKw|Eo2*XZ )jV8MNU%[%''-------w/{/0W1J2i24456777777777::::::&<.DFDDFFSILANJNOGPQQQQQQSXX;Z[~\~\~\~\~\~\:^``aaddddddehhiiiiii`knnpp-r0rrrssz!{o|o|o|o|o|o|o|o|p}QX^ڋYVA_777777awwwwwwXXh8^nnnnn;  ""#R$7%&(%)Z+7,,B1W566666S68:@MA{B{B{B{B{B{B G G G G G GGGQHH^IIIIIII JvPvPvPvPvPPyRyRyRyRyRR S S S S S;S:U:U:U:U:U:UVVVVVVSWWkXX-ZcZZ[[ \ \ \ \ \ \+_+_+_+_+_+_XmXmXmXmXmXm`sstuu$w>}}~ׁj-@ōōōōōōД7ivҫѻѼ7Y^||||GGGGGG?AGij:`bl/mZ Z Z Z Z Z Z Z Z o      & D!!'""#$$$%+%%%%#)**(+,H/424~8a::::K;"=D^E`E/FPbPbubwbbbbbbbbbbbbbccc)ccccccccde[eeCggg]i j=kmInnoppvwwNxxlyyCzz:\^e܇܇܇܇܇܇pÈd\VEC5]]]ddddddddRRRRRɜɜɜɜɜɜƞ3|ӟ3HV Kѣ'd2q4sĦD*oW cݪ | N7z3ɮ#vyQ̰5F>@E͵͵ xx''''''e[?======VV]]]K0EEBBBBBBBBB{{&TT7@JnoGIZZXw        MM-@XFFFFFF2.Q2J722(8 1   &   _X.sH `a  $$%%&&ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\^^3_`Dl7nqnr{|}Yafݞ:Jcccccccccccccccccccccccccccccccccccccccccccccccccjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjlllllllllllllllllllllllllllllllllllllllllllllllllnnnnnnrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrruuuuuuwwwwwwzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} % % % % % %&&))*,1---013T3v5556[666p7}8899::g;;;&<&<&<<<<O>O>9D9D^^)lmmriff>>>44::͵MMT::fff%X?!677='isZZ \g}}?    @ @      $ $ $ B% ) ) a) , , /- f0 f0 <7 <7 c: ? ? 7F 7F xF xF K K K [ rv rv y z z   " " V V   F F 7 e e o o Ե Ե l l 0 M , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V                     ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPSTVWXYQRUZ[\]^_`abcfdeghnijklmopqrstuvwxyz{|}~      !"#$%&'@(@)*+,-./0123456789:;<=>@A?BECDGFIHJKNLMOPQRVSTUYWXZ[\]^_`abecdfghijklmnopqrstuvwxy{z|}~      !"#$%&'(*)+,-./0125348679:;<=?@AB>CDFEGHIJOPQRSLKMNTUWVXYZ[\]_`ab^cdfeghijklnmoqpsrtuvwxyz{|}~     ! "#$%&'()*+-,./0123456789:;<=>?@ABCDEGFHIKJLMNOPQRSTUVWXYZ[\]_^`abcdefghjiklmnopqrtsuvwxyz|{~}      !"#$%'&()*+,-./021345678:9;<=>?@ABCDEGFHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnorpqstuvwxyz{|}~      !"#$&%)*+,-'(./0213465789:;<=>?A@BCDEFGHIJLKNMOPQRSTUWVXYZ[\]^`_abdcfehgijklmnopqrsutwvxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`bacfmdelghijknpqrvwostuxyz{}~|      !"#)$%&'(*,-0123+./456789:;<=>?@ABCDEFJGHIKNTUVWMLOXPQRSYZ[\]^_abcd`efghijklnopqrmstuvwxyz|}~{                           ! " # $ % & ' ( ) + , - . * / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B G C D E F H I J K N O P Q L M R S T U V W X Y { | } ~ Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z                            ! " # $ % & ' ( ) * + W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        A B C D E F G H I J K L M O N Q P R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 ; < : = > #.31PBnBn}}}}}}}}}}mmmmmmlMNOR*ѻTUVWdGOa 'J8<>CDI_ acknsfi ,9?C1skIePdY{<gu:EfRq_0a3N-ITTrF\>V&{:kJ*-WQ@ PV\m !F8yz|}~z>tijyWXLpLr jknegg[\]uCrstwJJJJJJNPS0eeevv_|;%H*M\{   $!%!z!J"J"J"J"J""W##$T% &'k((+;+--.1-5:<<<<<k>=??@HABBMCCSDqDDFLFnFVGnGJHjIJJJJJJJJJ K"KOKLMN>P]PPTT0U*V+VWXXXXXYYYYYYY-ZZ[C\]]^ _ _ _ _ _ _abeglllllpppqqqquHvxx{S~uЄZHV@ HÉ%X......`aj......ip0T|ȩȩȩʩê8JJJ]]]]]]CFZjq`ʹ(>p{~z}\]]E**YYZcc@@JJ  ^`%].p)qh-X " Y!]!(#.#$$0%%%%%&')c*V+\+b+e+++./r3r344V6V66:8A@A@A@h@@@@@@@NCdDGHHUJKLrXrXrXrXrXrXYZZ\_adehoooooookppqrrrrrrr8tttu=vyyj{{{{|~%߃߅ɆɆɆɆɆɆ_atttttt l444444>O˔ϔ`fI 7<=>V_F______n~~~~~~ >īެVdg!0n|||     T;A.99999w                =rDDDDDD Y #### %&)7ABTCCHDdDQHQHQHQHQHQHHLIJJKKKKKK"MMN'P1P5Q5Q5Q5Q5Q5QRRFSFSFSFSFSFSTUHV\ghhh.iwii jEjjjkLkkk,lslllllprsvn~su͇m~%IۖSΗ:TdhhhڜHjjjjjj]CCCCCC#'kz#}!(*,2r]}Fh3Y[*,w5MO](\%t%''(-(-(-(-(-(--|//0e1j2m2414667777 8@8@8@8A8:6<FDFDFDFDFDFDFD EFFcI#LKNRNPWPQQQQQQSXXrrrssz1{o|o|||||||}Ycn؋؋؋ًߌZBHtRRRRRR))))))''''''      n$\%dt*Gn}}}}}F ""#d$M%$&(<)[+8,,[1e5,6,6,6,6,6f68:@eABBBBBBGGGGGGGGRHH_IIIIIIIJPPPPPPRRRRRR8S8S8S8S8SPSMUMUMUMUMUMUWWWWWWTWWlXX.ZdZZ[[>\>\>\>\>\>\A_A_A_A_A_A_{m{m{m{m{m{misstuu1wD}}~ƒ-'=M܍܍܍܍܍܍ϔӘeݝ-آɤ έ1ıɸۼ8Z_[[[[[[@Bjkm;acmbB      Z Z Z u u u u u u 3333332 I!!5"""##$$$%8%%%%*)*+<+,O/:258m::::\;2=DaElE;Fvbxbbbbbbbbb'c'c6c6c6c6c6c6c9c9cccd5d5dddddde\eeDggg^i j>kmJnnoppvwwOxxmyyDzz]_f܇,,-----//qĈe ]WFD6A[[qqqqqqqtȜȜȜȜȜȜڜڜڜڜڜڜǞ4}ԟ4IW Lң(e3r5tŦE+pX-dު!} O8{4ʮ$wzRͰ6G?AF   !DDDDDDf\@=xx]1*CCCUUUUUUdzzz{'Tdddddd8AKopHJ=XXXXvvvvvvY -KKKYYYYYY.AY]]]]]]3/RY3   K  1111CCCCCC)9 2   '   `Y/tI ab%%%%%%4$4$%& & &ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"Z"Z"Z"Z0Z\^^4_`El8nrnr{|T~Zbgޞ;K.hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmppppppppppppppppppppppppppppppppppppppppppppppppptttttttttttttttttttttttttttttttttttttttttttttttttvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy|||||||||||||||||||||||||||||||||||||||||||||||||7%7%7%7%7%X%'&')*++.-J---013U3w5556\666q7~8899::h;;$<8<8<8<===q>>[DD^_>ln-n<<fw?g:dwwϔ<UVV\ֱεoU\t&Y@"Y>(jt [[!]h1>l    b      \ % @% @% [% =) ^) ~) - -- ?- 0 0 ^7 w7 z: ? ? YF tF F F K K L \ zv zv y { I{   D v ŏ x : m V V T ƭ ,  P      M - - m0 0 q2 2 C7 ^7 : : : 1; ? ? >F YF ] ] ] ] ^ :^ y z { { L{ {    2  ) D x ŏ 1 ] x ϔ  ϖ   : i 9 i  5 ۥ  l ! T v S Ю ۵ " U  F # 1 s    \ h  : F  " + A J L Z b l o z |      ' ) 7 ; H J M - - m0 0 q2 2 C7 ^7 : : : 1; ? ? >F YF ] ] ] ] ^ :^ y z { { L{ {    2  ) D x ŏ 1 ] x ϔ  ϖ   : i 9 i  5 ۥ  l ! T v S Ю ۵ " U  F # 1 s    \ h  : F M ϔ  ϖ  i 9 i  5 ۥ  l ! T v S Ю ۵ " U  F # 1 s     Q Q \ h i i j w {  4 : F M  Michael Eager~C:\Documents and Settings\Administrator\Application Data\Microsoft\Word\AutoRecovery save of DWARF4-draft9-100613-Approved.asd Michael Eager.G:\doc\Dwarf\DWARF4-draft9-100613-Approved.doc Michael Eager.G:\doc\Dwarf\DWARF4-draft9-100613-Approved.doc Michael Eager.G:\doc\Dwarf\DWARF4-draft9-100613-Approved.doc Michael Eager.G:\doc\Dwarf\DWARF4-draft9-100613-Approved.doc|l}HJk~Fj 6e%*d|B1DIJ0L|tS/C~P+_)gk \ PG<04S']@kT@wV|%dd"& V|4 yM  5@ bHwW.K:Fk+f%W +hvHA }rg s  RJ v.Z!bHjul!*b*5"  "*b,>#@ϸPg# W# S#Fk $=W~% TZB&P-?y&`b &IV,4nXu, #M-d"U <.* ).n?.`lV%m/ 4NY2#2@12(Aw3e܇6ƟrV7 *; dI= TR@4nXZoeBgd=B*GKC,## ^D =D@5(PFE)F ~Gjp{V{(G=F'=cH `$r8H 0,FJHdM~>^M@fMV2gM \M:|$O8c/PdJP..jPƟrFP$_)90R`R |TFkTP vzV)XL7V YHV *YX 4|\0YPsZ"`s,[P+][ F[P+* \ '.P\ D!].Hgf]F5^ ?_8yj_4nXt`ŪPSmaYa0~]rFb `$r5d8I0O*eHlw "w$_),w Bx  lx:2z X4{}0~]yu} jw~Y ^`^J.^`^J.88^8`^J.h^`^J) ^`OJQJo( ^`OJQJo( 88^8`OJQJo( ^`OJQJo( hh^h`6^Jo(.@@^@`^J.0^`0^J..``^``^J... ^`^J .... ^`^J ..... ^`^J ...... `^``^J....... 00^0`^J........ hh^h`OJQJo(^J* hh^h`OJQJo(^`^J.^`^J.pLp^p`L^J.@ @ ^@ `^J.^`^J.L^`L^J.^`^J.^`^J.PLP^P`L^J.hh^h`^J.h ^`OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo(^`^Jo()hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J. hh^h`o(hH. ^`hH. pLp^p`LhH. @ @ ^@ `hH. ^`hH. L^`LhH. ^`hH. ^`hH. PLP^P`LhH.h^`^J.h^`^J.hpLp^p`L^J.h@ @ ^@ `^J.h^`^J.hL^`L^J.h^`^J.h^`^J.hPLP^P`L^J. hh^h`^Jo(.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J. hh^h`^Jo(.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J. hh^h`OJQJo(hhh^h`^J.@@^@`^J.0^`0^J..``^``^J... ^`^J .... ^`^J ..... ^`^J ...... `^``^J....... 00^0`^J........ hh^h`^J.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J. hh^h`OJQJo(P^`P^Jo(@@^@`^Jo(.0^`0^Jo(..``^``^Jo(... ^`^Jo( .... ^`^Jo( ..... ^`^Jo( ...... `^``^Jo(....... 00^0`^Jo(........hh^h`^Jo(.^`^J.pLp^p`L^J.@ @ ^@ `^J.^`^J.L^`L^J.^`^J.^`^J.PLP^P`L^J.h ^`OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo(hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J. ^`OJQJo(h   ^ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h | | ^| `OJQJo(h LL^L`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh ^`OJQJo(hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.h hh^h`OJQJo(h^`^J.hL^`L^J.hpp^p`^J.h@ @ ^@ `^J.hL^`L^J.h^`^J.h^`^J.hL^`L^J.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.h ^`OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo(hh^h`^J.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J. hh^h`OJQJo(hh^h`^J. hh^h`OJQJo(  ^ `56OJQJo( ^`OJQJo(o pp^p`OJQJo( @ @ ^@ `OJQJo( ^`OJQJo(o ^`OJQJo( ^`OJQJo( ^`OJQJo(o PP^P`OJQJo(hhh^h`^J.@@^@`^J.0^`0^J..``^``^J... ^`^J .... ^`^J ..... ^`^J ...... `^``^J....... 00^0`^J........P^`P^Jo(@@^@`^Jo(.0^`0^Jo(..``^``^Jo(... ^`^Jo( .... ^`^Jo( ..... ^`^Jo( ...... `^``^Jo(....... 00^0`^Jo(........hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.P^`P^Jo(@@^@`^Jo(.0^`0^Jo(..``^``^Jo(... ^`^Jo( .... ^`^Jo( ..... ^`^Jo( ...... `^``^Jo(....... 00^0`^Jo(........hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J. hh^h`OJQJo(hh^h`^J.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.^`^J.h ^`OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo(hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.hh^h`^J.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.h^`^J.h^`^J.hpLp^p`L^J.h@ @ ^@ `^J.h^`^J.hL^`L^J.h^`^J.h^`^J.hPLP^P`L^J.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.P^`P^Jo(@^@`^Jo(.0^`0^Jo(..``^``^Jo(... ^`^Jo( .... ^`^Jo( ..... ^`^Jo( ...... `^``^Jo(....... 00^0`^Jo(........h^`^J.^`^J.pLp^p`L^J.@ @ ^@ `^J.^`^J.L^`L^J.^`^J.^`^J.PLP^P`L^J. ^Jo( Appendix @@^@`^Jo(.0^`0^Jo(..``^``^Jo(... ^`^Jo( .... ^`^Jo( ..... ^`^Jo( ...... `^``^Jo(....... 00^0`^Jo(........hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.h^`^J.^`^J.pLp^p`L^J.@ @ ^@ `^J.^`^J.L^`L^J.^`^J.^`^J.PLP^P`L^J.h^`^J.h^`^J.hpLp^p`L^J.h@ @ ^@ `^J.h^`^J.hL^`L^J.h^`^J.h^`^J.hPLP^P`L^J.h88^8`^Jo(.h   ^ `OJQJo(oh   ^ `OJQJo(h xx^x`OJQJo(h HH^H`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh ^`OJQJo(hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.h ^`OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo(hh^h`^Jo(.^`^J.pLp^p`L^J.@ @ ^@ `^J.^`^J.L^`L^J.^`^J.^`^J.PLP^P`L^J.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J. ^`OJQJo( ^`OJQJo(o pp^p`OJQJo( @ @ ^@ `OJQJo( ^`OJQJo(o ^`OJQJo( ^`OJQJo( ^`OJQJo(o PP^P`OJQJo(h 88^8`OJQJo(h ^`OJQJo(oh   ^ `OJQJo(h   ^ `OJQJo(h xx^x`OJQJo(oh HH^H`OJQJo(h ^`OJQJo(h ^`OJQJo(oh ^`OJQJo(hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.P^`P^Jo(@@^@`^Jo(.0^`0^Jo(..``^``^Jo(... ^`^Jo( .... ^`^Jo( ..... ^`^Jo( ...... `^``^Jo(....... 00^0`^Jo(........hh^h`56OJQJo( ^`OJQJo(o pp^p`OJQJo( @ @ ^@ `OJQJo( ^`OJQJo(o ^`OJQJo( ^`OJQJo( ^`OJQJo(o PP^P`OJQJo( hh^h`OJQJo(hh^h`^J.hh^h`^J.h^`^J.^`^J.pLp^p`L^J.@ @ ^@ `^J.^`^J.L^`L^J.^`^J.^`^J.PLP^P`L^J.h^`^J.h^`^J.hpLp^p`L^J.h@ @ ^@ `^J.h^`^J.hL^`L^J.h^`^J.h^`^J.hPLP^P`L^J.h ^`OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo(h ^`OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo(h^`^J.h 88^8`OJQJo(h ^`OJQJo(oh   ^ `OJQJo(h   ^ `OJQJo(h xx^x`OJQJo(oh HH^H`OJQJo(h ^`OJQJo(h ^`OJQJo(oh ^`OJQJo(^`^J.^`^J.pLp^p`L^J.@ @ ^@ `^J.^`^J.L^`L^J.^`^J.^`^J.PLP^P`L^J. hh^h`OJQJo(^`^Jo()hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.h^`^J.h^`^J.hpLp^p`L^J.h@ @ ^@ `^J.h^`^J.hL^`L^J.h^`^J.h^`^J.hPLP^P`L^J.hh^h`^J.@@^@`^J.0^`0^J..``^``^J... ^`^J .... ^`^J ..... ^`^J ...... `^``^J....... 00^0`^J........hh^h`^Jo(.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.P^`P^J@@^@`^J.0^`0^J..``^``^J... ^`^J .... ^`^J ..... ^`^J ...... `^``^J....... 00^0`^J........ hh^h`o(hH. ^`hH. pLp^p`LhH. @ @ ^@ `hH. ^`hH. L^`LhH. ^`hH. ^`hH. PLP^P`LhH.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.hh^h`^J.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.h^`^J.h^`^J.hpLp^p`L^J.h@ @ ^@ `^J.h^`^J.hL^`L^J.h^`^J.h^`^J.hPLP^P`L^J.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.hh^h`6OJQJo(hH. ^`hH. pLp^p`LhH. @ @ ^@ `hH. ^`hH. L^`LhH. ^`hH. ^`hH. PLP^P`LhH.hh^h`56OJQJo( ^`OJQJo(o pp^p`OJQJo( @ @ ^@ `OJQJo( ^`OJQJo(o ^`OJQJo( ^`OJQJo( ^`OJQJo(o PP^P`OJQJo(hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.^`^J.^`^J.pLp^p`L^J.@ @ ^@ `^J.^`^J.L^`L^J.^`^J.^`^J.PLP^P`L^J.hh^h`^J.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.h^`^J.h^`^J.hpLp^p`L^J.h@ @ ^@ `^J.h^`^J.hL^`L^J.h^`^J.h^`^J.hPLP^P`L^J.^`^J.^`^J.pLp^p`L^J.@ @ ^@ `^J.^`^J.L^`L^J.^`^J.^`^J.PLP^P`L^J.h 88^8`OJQJo(h ^`OJQJo(oh   ^ `OJQJo(h   ^ `OJQJo(h xx^x`OJQJo(oh HH^H`OJQJo(h ^`OJQJo(h ^`OJQJo(oh ^`OJQJo( hh^h`OJQJo(hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J. ^`OJQJo( ^`OJQJo( pp^p`OJQJo( @ @ ^@ `OJQJo( ^`OJQJo(o ^`OJQJo( ^`OJQJo( ^`OJQJo(o PP^P`OJQJo(hhh^h`^Jo(.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J. hh^h`OJQJo( hh^h`OJQJo( hh^h`OJQJo( hh^h`OJQJo( hh^h`OJQJo( ^J Appendix @@^@`^J.0^`0^J..``^``^J... ^`^J .... ^`^J ..... ^`^J ...... `^``^J....... 00^0`^J........h   ^ `OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo(hh^h`^J.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.h^`^J.^`^J.pLp^p`L^J.@ @ ^@ `^J.^`^J.L^`L^J.^`^J.^`^J.PLP^P`L^J.h^`^J.h^`^J.hpLp^p`L^J.h@ @ ^@ `^J.h^`^J.hL^`L^J.h^`^J.h^`^J.hPLP^P`L^J.h^`^J.h^`^J.hpLp^p`L^J.h@ @ ^@ `^J.h^`^J.hL^`L^J.h^`^J.h^`^J.hPLP^P`L^J.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.hh^h`^J.@@^@`^J.0^`0^J..``^``^J... ^`^J .... ^`^J ..... ^`^J ...... `^``^J....... 00^0`^J........hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.h hh^h`OJQJo(h^`^J.hL^`L^J.hpp^p`^J.h@ @ ^@ `^J.hL^`L^J.h^`^J.h^`^J.hL^`L^J. hh^h`OJQJo( ^`OJQJo(o pp^p`OJQJo( @ @ ^@ `OJQJo( ^`OJQJo(o ^`OJQJo( ^`OJQJo( ^`OJQJo(o PP^P`OJQJo(h88^8`^Jo(.h   ^ `OJQJo(oh   ^ `OJQJo(h xx^x`OJQJo(h HH^H`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh ^`OJQJo(P^`P^Jo(@@^@`^Jo(.0^`0^Jo(..``^``^Jo(... ^`^Jo( .... ^`^Jo( ..... ^`^Jo( ...... `^``^Jo(....... 00^0`^Jo(........hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J. hh^h`OJQJo(h   ^ `OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo(hh^h`^J.^`^J.P^`P^Jo(@@^@`^Jo(.0^`0^Jo(..``^``^Jo(... ^`^Jo( .... ^`^Jo( ..... ^`^Jo( ...... `^``^Jo(....... 00^0`^Jo(........ hh^h`OJQJo(hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J. hh^h`OJQJo(^`^J.h^`^J.h^`^J.hpLp^p`L^J.h@ @ ^@ `^J.h^`^J.hL^`L^J.h^`^J.h^`^J.hPLP^P`L^J. hh^h`OJQJo(hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J. hh^h`OJQJo(hhh^h`^J.h88^8`^J.hL^`L^J.h  ^ `^J.h  ^ `^J.hxLx^x`L^J.hHH^H`^J.h^`^J.hL^`L^J.~}|M  *~ 0DM 9PM ,!\M hM "tM %M :M  M M M 0M .wyu}AM ?U&wW*;%t+* \`s,[`RSoWBxW~%2z@wF[C~8H*5"V{(Gj;k,>#\7o?y&sZsZM fM44 X4{}*YXV%m/"<+"wFPb'0O*e7zV lxFlPn                                            l2                          n                          n        n                                   n                                                                                                  n        .O        n                          n                                   l2                                   .F        F~                          n                 .On       Hb        n                                                                                        fgϳг !no´ôjk͵ε$%qr¶ö lm#$tu¸ø%&jkٹڹ9:QRGHѼҼvwŽƽqrȾɾ12\]PQXY &'no7801~)3KL~67eKLz5z{ 5|}'~45Y!"H cdRSVW{tu!ef()W{|cdVW}]^MNx>?y>?eD+z{(de OPpDEo@ijUV<=_CDrBCg12V!bc67]*+M#jkbc 6}~jkMNj]^ hiWX+DE;<~ 9:pHIXKLZܦݦ$DEklwث٫¶+06?@<STn  I`aB_`3QRELMYlm"c$h$$$%%N%O%%%E:ooZpppp>qyqzqqqq~zzzz{{G{H{lpqv!"FwxKLBBBBBBICJCfCCCC%D&Dggggg hhhhhhh!i"iBi`iaiiiiiii#j5j6j\jujvjjjjjjj/k>k?kakokpkkkkkllJlhlillllqmr5σ؃كZ[߄]^]^)*.78|Ȗɖ ?@FݘșTߚ12aqëī0777777MLtL}LLLLLL(M-M.MMMMMMMNNSNTNNNNO O OeOjOkOOOO PPPjPoPpPPPPQ"Q#Q~QQQQQQ.R3R4RRRRRSSHSMSNSSSS TTTbTgThTTTTUUUUUUUUU2V7V8VVVVVVVCWHWIWWWWWWW?XDXEXXXXXXX/Y4Y5Y~YYYYYYJZOZPZZZZ[ [![[[[[[[D\I\J\\\\]] ]a]f]g]]]]'^,^-^^^^^^^?_D_E____` ` `e`j`k````aaamarasaaaaJbObPbbbbbbb7c8c9cRcXcYccccccc7dddsdyddddddde"e6e7eqeve~eeeeeef#fAfBfffffffggegjgrgsgggggh hhhchhhrhshhhhh"i'i1i2i~iiiiiiii4j9jMjNjjjjjkkkk`kek}k~kkkkk?lDlOlPlllllllllJmOmlmmmmmmm nnnnhnmnnnnnnn;o@o^o_ooooo,p1pHI !qv{|̆цֆ׆-29:~χևۇ܇-./9?FGވ16=>ԉى',67}Ίӊڊۊ!&-.qvƋ̋͋ `emn ^cnoQVabŽcd38@A3Ԛ   "#'.126=@AELOPV^cdΛϛћӛ؛ٛܛ  &,-18;<AKQRy۞  JOQRS  NSUfg à  bgiz{áš֡ס!23sxz͢ҢԢ#%&'afhij=BDEF}ƤˤͤΤϤ  FKMNO̥ѥӥԥե LQSTUۦ ![`bcdʧ˧   BGIJKըڨܨݨި78otvéȩʩ˩̩ =BDEFz7<>׫ܫޫ߫%*,-.hmoǬȬ   PUWXYPUWXY^_`ab;@BRSįů *+w|~KPRST±ıűƱ  !"afh}~Ʋ˲ͲINPQR/0`efgh289ͻһӻ+01sxy¼chiƽǽ',-8=>X]^7<=ILMdjk!"W\]WXiopEJKotuNST?TZ[<ABLxGLM!`aouW^`a `gijhoqrPWYZ   NUWX  OVXY?FGHtbghO+01qvw  6GMN_de ^cd)/0puvVbhiV[\RWXx}~nstswkpq167}LQRZ_`C p |            K O X h i j             G I N W X Y       !/01#$VX]opq@BGHIJ |~   tv{y{ []bjrs,.3456|~5$$%%%(%?%@%R%k%l%~%%%%%%\ ^Q^Z^p^q^^` ``ee fkkkmmnrr#suuuKwLww{{||||~~~>?چۆO s \Z[ΘV { Upqѧ"#srsî߲?Kطٷ0ڹ۹@dtu5Ytab!"78  u89c_`P0IN ! "  1 2    hBCJK".D//0+0,0~000m1n1u1111111 2 2222<2=2i2j2k2p2q2r2~2222222H5666T899992:3:4:8;;;;;;;  - y   & ( * , - Q S U W X x z | ~       = ? A C D j l n p q M )U)U-)U----cc+shY}Y}I77777AYYYYYYYYYYQVQVQVQVQVQV@X X ,X X @;=L @@@@|@@@@@Unknown Ron BrenderGz Times New Roman5Symbol3& z Arial3z Times?5 z Courier New5& zaTahoma;WingdingsA& Trebuchet MS#AhQj2efE< E!$d ,  2QHP%DWARF Debugging Information Format V4 Ron Brender Michael EagerOh+'0 4@ \ h t &DWARF Debugging Information Format V4t WAR Ron Brenderon on  Normal.dotMichael Eagerg 7chMicrosoft Word 9.0o@<@^2 @f @D3wE՜.+,D՜.+,x4 hp  +DWARF Debugging Format Standards Committeet  &DWARF Debugging Information Format V4 Title 8@ _PID_HLINKSA3J"http://www.gnu.org/copyleft/&#"http://fsf.org/ /"DW_TAG_imported_unit$?! DW_AT_import /!DW_TAG_imported_unit@!DW_TAG_partial_unit@!DW_TAG_partial_unitGz!DW_TAG_compile_unit(!DW_FORM_ref_addr@~!DW_TAG_partial_unitGz{!DW_TAG_compile_unit$?x! DW_AT_import /u!DW_TAG_imported_unitGzr!DW_TAG_compile_unit@o!DW_TAG_partial_unitGzl!DW_TAG_compile_unitGzi!DW_TAG_compile_unit[@$!DW_AT_location8!!DW_AT_high_pc$! DW_AT_low_pc$! DW_AT_low_pcLM! DW_AT_name$+! DW_AT_inlinemk  DW_CFA_nopmk  DW_CFA_nop DW_CFA_def_cfa_offsetTf DW_CFA_advance_loca~ DW_CFA_restoreTf DW_CFA_advance_locyv DW_CFA_def_cfa_registera~ DW_CFA_restoreTf DW_CFA_advance_loca~ DW_CFA_restoreTf DW_CFA_advance_loc DW_CFA_offsetTf DW_CFA_advance_locyv DW_CFA_def_cfa_registerTf DW_CFA_advance_loc DW_CFA_offsetTf DW_CFA_advance_loc DW_CFA_offsetTf DW_CFA_advance_loc DW_CFA_def_cfa_offsetTf DW_CFA_advance_locmk  DW_CFA_nopmk  DW_CFA_nopmk  DW_CFA_nopzv DW_CFA_register  DW_CFA_same_value  DW_CFA_same_value  DW_CFA_same_value  DW_CFA_same_value DW_CFA_undefined DW_CFA_undefined| DW_CFA_undefined y DW_CFA_same_value^uv DW_CFA_def_cfaE{^ DW_LNE_end_sequence`~[ DW_LNS_fixed_advance_pc`~X DW_LNS_fixed_advance_pc`~U DW_LNS_fixed_advance_pc`~R DW_LNS_fixed_advance_pc`~O DW_LNS_fixed_advance_pcE{F DW_LNE_end_sequence3C DW_LNS_advance_pc3@ DW_LNS_advance_pcg] DW_AT_data_locationg]DW_AT_data_location0DW_AT_byte_strideg]DW_AT_data_locationg]DW_AT_data_location(DW_FORM_ref_addrVFDW_FORM_stringKU DW_AT_typeLM DW_AT_nameMLDW_CHILDREN_no|bDW_TAG_typedef-m DW_FORM_ref4KU DW_AT_typeMLDW_CHILDREN_noGDW_TAG_pointer_type)<DW_FORM_data1)<DW_FORM_data1VFDW_FORM_stringo\DW_AT_byte_sizeCFDW_AT_encodingLM DW_AT_nameMLDW_CHILDREN_no6DW_TAG_base_type%*DW_FORM_indirect<* DW_FORM_addr<* DW_FORM_addr)<DW_FORM_data1VFDW_FORM_stringVFDW_FORM_stringVFDW_FORM_stringgVDW_AT_stmt_list8DW_AT_high_pc$ DW_AT_low_pc_KDW_AT_languagew@DW_AT_comp_dir@NDW_AT_producerLM DW_AT_nameZF}DW_CHILDREN_yesGzzDW_TAG_compile_unit2wDW_ATE_unsigned_char!<tsec_offset_forms^q DW_LANG_C8900YDW_AT_visibilityKUV DW_AT_type7"SDW_AT_sibling>/PDW_AT_segment6<M DW_AT_ranges$J DW_AT_low_pc[@GDW_AT_location8DDW_AT_high_pc!)ADW_AT_declaration^l>DW_AT_address_classWF;DW_AT_accessibility88DW_TAG_with_stmtKU5 DW_AT_type7"2DW_AT_siblingKU/ DW_AT_typeg],DW_AT_data_location:,)DW_AT_associatedUN&DW_AT_allocated%#DW_TAG_volatile_typeKU  DW_AT_type7"DW_AT_siblingXC DW_AT_discr!)DW_AT_declarationWFDW_AT_accessibility%DW_AT_abstract_origin DECL]w DW_TAG_variant_part7"DW_AT_sibling0DW_AT_discr_value5DW_AT_discr_list!)DW_AT_declaration%DW_AT_abstract_originWFDW_AT_accessibility DECLcuDW_TAG_variant00DW_AT_visibilityKU DW_AT_type5DW_AT_start_scopeQDDW_AT_specification7"DW_AT_sibling>/DW_AT_segmentLM DW_AT_name[@DW_AT_locationJwDW_AT_linkage_nameMVDW_AT_externalFTDW_AT_endianity3=DW_AT_description!)DW_AT_declaration,DW_AT_const_value#DW_AT_const_exprWFDW_AT_accessibility%DW_AT_abstract_origin DECLomDW_TAG_variableLM DW_AT_name3=DW_AT_description DECL]gDW_TAG_unspecified_type7"DW_AT_sibling>>DW_AT_artificial%DW_AT_abstract_origin DECL$ DW_TAG_unspecified_parameters00DW_AT_visibility5DW_AT_start_scopeQDDW_AT_specificationOHDW_AT_signature7"DW_AT_siblingLM DW_AT_name3=DW_AT_description!)DW_AT_declarationg]DW_AT_data_locationo\DW_AT_byte_sizePs~DW_AT_bit_size:,{DW_AT_associatedUNxDW_AT_allocatedWFuDW_AT_accessibility%rDW_AT_abstract_origin oDECL"lDW_TAG_union_type_KiDW_AT_language?'fDW_TAG_type_unit_def00cDW_AT_visibilityKU` DW_AT_type5]DW_AT_start_scope7"ZDW_AT_siblingLMW DW_AT_name3=TDW_AT_description!)QDW_AT_declarationg]NDW_AT_data_location:,KDW_AT_associatedUNHDW_AT_allocatedWFEDW_AT_accessibility%BDW_AT_abstract_origin ?DECL|b<DW_TAG_typedef7"9DW_AT_sibling>/6DW_AT_segment6<3 DW_AT_ranges$0 DW_AT_low_pc8-DW_AT_high_pc%*DW_AT_abstract_origin 'DECL'$DW_TAG_try_blockKU! DW_AT_type7"DW_AT_siblingg]DW_AT_data_location:,DW_AT_associatedUNDW_AT_allocated DECLhVDW_TAG_thrown_typeKU  DW_AT_type7" DW_AT_siblingLM DW_AT_name3=DW_AT_description,DW_AT_const_value DECLpq DW_TAG_template_value_parameterKU DW_AT_type7"DW_AT_siblingLM DW_AT_name3=DW_AT_description DECLOODW_TAG_template_type_parameter00DW_AT_visibilityKU DW_AT_type5DW_AT_start_scopeOHDW_AT_signature7"DW_AT_siblingLM DW_AT_name3=DW_AT_description!)DW_AT_declarationg]DW_AT_data_location:,DW_AT_associatedUNDW_AT_allocatedWFDW_AT_accessibility%DW_AT_abstract_origin DECL7DW_TAG_template_alias00DW_AT_visibilityKU DW_AT_type5DW_AT_start_scope7"DW_AT_sibling#/DW_AT_prototypedLM DW_AT_name3=DW_AT_description!)DW_AT_declarationg]DW_AT_data_location:,DW_AT_associatedUNDW_AT_allocated^lDW_AT_address_classWFDW_AT_accessibility%DW_AT_abstract_origin DECLCDW_TAG_subroutine_type00DW_AT_visibility/DW_AT_upper_boundKU DW_AT_type,DW_AT_threads_scaled7"|DW_AT_siblingLMy DW_AT_name1vDW_AT_lower_bound3=sDW_AT_description!)pDW_AT_declarationg]mDW_AT_data_locationYHj DW_AT_count*1g DW_AT_strideo\dDW_AT_byte_size<aDW_AT_bit_stridePs^DW_AT_bit_size:,[DW_AT_associatedUNXDW_AT_allocatedWFUDW_AT_accessibility%RDW_AT_abstract_origin ODECL 0LDW_TAG_subrange_type~lIDW_AT_vtable_elem_location&%FDW_AT_virtuality00CDW_AT_visibilityKU@ DW_AT_type(5=DW_AT_trampoline(:DW_AT_static_link57DW_AT_start_scopeQD4DW_AT_specification7"1DW_AT_sibling>/.DW_AT_segment2+DW_AT_return_addrE\(DW_AT_recursive6<% DW_AT_rangesMY" DW_AT_pure#/DW_AT_prototyped%DW_AT_object_pointerLM DW_AT_name6!DW_AT_main_subprogram_unit_usage$ DW_AT_low_pcJwDW_AT_linkage_name$+  DW_AT_inline8 DW_AT_high_pc< DW_AT_frame_baseMVDW_AT_externalZJDW_AT_explicitWiDW_AT_entry_pc^GDW_AT_elemental3=DW_AT_description!)DW_AT_declaration=DW_AT_calling_convention>>DW_AT_artificial^lDW_AT_address_classWFDW_AT_accessibility%DW_AT_abstract_origin DECLDW_TAG_subprogram00DW_AT_visibility5DW_AT_start_scopeQDDW_AT_specificationOHDW_AT_signature7"DW_AT_siblingLM DW_AT_name3=DW_AT_description!)DW_AT_declarationg]DW_AT_data_locationo\DW_AT_byte_sizePsDW_AT_bit_size:,DW_AT_associatedUNDW_AT_allocatedWFDW_AT_accessibility%DW_AT_abstract_origin DECL$DW_TAG_structure_type00DW_AT_visibility}EDW_AT_string_length5DW_AT_start_scope7"DW_AT_siblingLM DW_AT_name3=DW_AT_description!)DW_AT_declarationg]DW_AT_data_locationo\DW_AT_byte_sizePsDW_AT_bit_size:,DW_AT_associatedUNDW_AT_allocatedWFDW_AT_accessibility%DW_AT_abstract_origin DECL{H}DW_TAG_string_typeKUz DW_AT_type7"wDW_AT_siblingLMt DW_AT_nameg]qDW_AT_data_locationYHn DW_AT_count:,kDW_AT_associatedUNhDW_AT_allocatedPeDW_TAG_shared_type00bDW_AT_visibilityKU_ DW_AT_type7"\DW_AT_sibling5YDW_AT_start_scopeLMV DW_AT_name3=SDW_AT_description!)PDW_AT_declarationg]MDW_AT_data_locationo\JDW_AT_byte_sizePsGDW_AT_bit_size:,DDW_AT_associatedUNADW_AT_allocatedWF>DW_AT_accessibility%;DW_AT_abstract_origin 8DECLFg5DW_TAG_set_typeKU2 DW_AT_type7"/DW_AT_siblingLM, DW_AT_nameg])DW_AT_data_location:,&DW_AT_associatedUN#DW_AT_allocated]G DW_AT_address_class_ptr DECLDW_TAG_rvalue_reference_typeKU DW_AT_type7"DW_AT_siblingLM DW_AT_nameg]DW_AT_data_location:, DW_AT_associatedUNDW_AT_allocated 7DW_TAG_restrict_typeKU DW_AT_type7"DW_AT_siblingLM DW_AT_nameg]DW_AT_data_location:,DW_AT_associatedUNDW_AT_allocated^lDW_AT_address_class% DW_TAG_reference_type00DW_AT_visibilityKlDW_AT_use_locationKU DW_AT_type7"DW_AT_siblingLM DW_AT_name3=DW_AT_description!)DW_AT_declarationg]DW_AT_data_location1DW_AT_containing_type:,DW_AT_associatedUNDW_AT_allocated^lDW_AT_address_class%DW_AT_abstract_origin DECL<DW_TAG_ptr_to_member_typeKU DW_AT_type7"DW_AT_siblingLM DW_AT_nameg]DW_AT_data_location:,DW_AT_associatedUNDW_AT_allocated^lDW_AT_address_classGDW_TAG_pointer_typeL)DW_AT_use_utf8gVDW_AT_stmt_list>/DW_AT_segment6< DW_AT_ranges@NDW_AT_producerLM DW_AT_name6!DW_AT_main_subprogram_unit_usage!DW_AT_macro_info$ DW_AT_low_pc_KDW_AT_language8DW_AT_high_pc !DW_AT_identifier_case3=DW_AT_descriptionw@~DW_AT_comp_dir:{DW_AT_base_types@xDW_TAG_partial_unitKUu DW_AT_type7"rDW_AT_siblingLMo DW_AT_nameg]lDW_AT_data_location:,iDW_AT_associatedUNfDW_AT_allocatedoQcDW_TAG_packed_type5`DW_AT_start_scope7"]DW_AT_siblingLMZ DW_AT_nameYHWDW_AT_extension3=TDW_AT_description QDECLNDW_TAG_namespace7"KDW_AT_siblingx\HDW_AT_namelist_item EDECL>BDW_TAG_namelist_item00?DW_AT_visibility7"<DW_AT_siblingLM9 DW_AT_name!)6DW_AT_declarationWF3DW_AT_accessibility%0DW_AT_abstract_origin -DECLhx*DW_TAG_namelist00'DW_AT_visibilityQD$DW_AT_specification7"!DW_AT_sibling>/DW_AT_segment6< DW_AT_rangesPDDW_AT_priorityLM DW_AT_name$ DW_AT_low_pc8DW_AT_high_pcWi DW_AT_entry_pc3= DW_AT_description!)DW_AT_declarationWFDW_AT_accessibility DECLDW_TAG_module00DW_AT_visibilityKU DW_AT_type7"DW_AT_siblingLM DW_AT_name41DW_AT_mutable3=DW_AT_description!)DW_AT_declarationazDW_AT_data_member_location#3DW_AT_data_bit_offseto\DW_AT_byte_sizePsDW_AT_bit_size5DW_AT_bit_offsetWFDW_AT_accessibility DECLDW_TAG_member7"DW_AT_sibling>/DW_AT_segment6< DW_AT_rangesLM DW_AT_name$ DW_AT_low_pc8DW_AT_high_pc3=DW_AT_description%DW_AT_abstract_origin DECL8DW_TAG_lexical_block7"DW_AT_sibling5DW_AT_start_scope>/DW_AT_segmentLM DW_AT_name$ DW_AT_low_pc3=DW_AT_description%DW_AT_abstract_origin DECL DW_TAG_label5DW_AT_start_scope7"DW_AT_siblingLM DW_AT_name3=DW_AT_descriptionWFDW_AT_accessibility DECL DW_TAG_interface(5DW_AT_trampoline5|DW_AT_start_scope7"yDW_AT_sibling>/vDW_AT_segment2sDW_AT_return_addr6<p DW_AT_ranges$m DW_AT_low_pc8jDW_AT_high_pcWigDW_AT_entry_pc#dDW_AT_const_exprvFaDW_AT_call_linevN^DW_AT_call_file&[DW_AT_call_column%XDW_AT_abstract_origin#UDW_TAG_inlined_subroutine&%RDW_AT_virtualityKUO DW_AT_type7"LDW_AT_siblingazIDW_AT_data_member_locationWFFDW_AT_accessibility CDECLeh@DW_TAG_inheritance$?= DW_AT_import /:DW_TAG_imported_unit57DW_AT_start_scope7"4DW_AT_sibling$?1 DW_AT_import .DECLrJ+DW_TAG_imported_module5(DW_AT_start_scope7"%DW_AT_siblingLM" DW_AT_name$? DW_AT_import3=DW_AT_descriptionWFDW_AT_accessibility DECLyUDW_TAG_imported_declaration7"DW_AT_sibling.:  DW_AT_friend% DW_AT_abstract_origin DECLDW_TAG_friend/DW_AT_variable_parameterKU DW_AT_type7"DW_AT_sibling>/DW_AT_segmentLM DW_AT_name[@DW_AT_location/DW_AT_is_optionalFTDW_AT_endianity3=DW_AT_descriptionVjDW_AT_default_value,DW_AT_const_value>>DW_AT_artificial%DW_AT_abstract_origin DECLpNDW_TAG_formal_parameter00DW_AT_visibilityKU DW_AT_type5DW_AT_start_scope7"DW_AT_siblingLM DW_AT_name3=DW_AT_descriptiong]DW_AT_data_locationo\DW_AT_byte_sizePsDW_AT_bit_size:,DW_AT_associatedUNDW_AT_allocated%DW_AT_abstract_origin DECL -DW_TAG_file_type7"DW_AT_siblingLM DW_AT_name3=DW_AT_description,DW_AT_const_value DECLDW_TAG_enumerator00DW_AT_visibilityKU DW_AT_type5DW_AT_start_scopeQDDW_AT_specificationOHDW_AT_signature7"DW_AT_siblingLM DW_AT_name;DW_AT_enum_class3=DW_AT_description!)}DW_AT_declarationg]zDW_AT_data_location*1w DW_AT_strideo\tDW_AT_byte_size<qDW_AT_bit_stridePsnDW_AT_bit_size:,kDW_AT_associatedUNhDW_AT_allocatedWFeDW_AT_accessibility%bDW_AT_abstract_origin _DECLIs\DW_TAG_enumeration_typeKUY DW_AT_type(VDW_AT_static_link7"SDW_AT_sibling>/PDW_AT_segment2MDW_AT_return_addrLMJ DW_AT_name$G DW_AT_low_pcJwDDW_AT_linkage_name< ADW_AT_frame_base3=>DW_AT_description^l;DW_AT_address_class 8DECLGa5DW_TAG_entry_point[@2DW_AT_locationXm/DW_TAG_dwarf_procedure00,DW_AT_visibilityKU) DW_AT_type5&DW_AT_start_scope7"#DW_AT_siblingLM  DW_AT_nameJwDW_AT_linkage_nameMVDW_AT_externalFTDW_AT_endianity3=DW_AT_description!)DW_AT_declaration,DW_AT_const_valueWF DW_AT_accessibility DECLxsDW_TAG_constantKU DW_AT_type7"DW_AT_siblingLM DW_AT_nameg]DW_AT_data_location:,DW_AT_associatedUNDW_AT_allocated?DW_TAG_const_type7"DW_AT_siblingLM DW_AT_name DECLDW_TAG_conditionL)DW_AT_use_utf8gVDW_AT_stmt_list>/DW_AT_segment6< DW_AT_ranges@NDW_AT_producerLM DW_AT_name6!DW_AT_main_subprogram_unit_usage!DW_AT_macro_info$ DW_AT_low_pc_KDW_AT_language8DW_AT_high_pc !DW_AT_identifier_casew@DW_AT_comp_dir:DW_AT_base_typesGzDW_TAG_compile_unit00DW_AT_visibility7"DW_AT_sibling!)DW_AT_declarationwHDW_AT_common_reference DECLDDW_TAG_common_inclusion00DW_AT_visibility7"DW_AT_sibling>/DW_AT_segmentLM DW_AT_name[@DW_AT_locationJwDW_AT_linkage_name3=DW_AT_description!)DW_AT_declaration DECLdUDW_TAG_common_block00DW_AT_visibility5DW_AT_start_scopeQD~DW_AT_specificationOH{DW_AT_signature7"xDW_AT_siblingLMu DW_AT_name3=rDW_AT_description!)oDW_AT_declarationg]lDW_AT_data_locationo\iDW_AT_byte_sizePsfDW_AT_bit_size:,cDW_AT_associatedUN`DW_AT_allocatedWF]DW_AT_accessibility%ZDW_AT_abstract_origin WDECL<TDW_TAG_class_type7"QDW_AT_sibling>/NDW_AT_segment6<K DW_AT_ranges$H DW_AT_low_pc8EDW_AT_high_pc%BDW_AT_abstract_origin ?DECLW}<DW_TAG_catch_block]H9 DW_AT_small7"6DW_AT_sibling#3DW_AT_picture_stringLM0 DW_AT_nameFT-DW_AT_endianityCF*DW_AT_encoding.'DW_AT_digit_count3=$DW_AT_description]|!DW_AT_decimal_sign[tDW_AT_decimal_scaleg]DW_AT_data_location#3DW_AT_data_bit_offseto\DW_AT_byte_sizePsDW_AT_bit_size5DW_AT_bit_offsetaO DW_AT_binary_scale:, DW_AT_associatedUNDW_AT_allocated DECL6DW_TAG_base_type00DW_AT_visibilityKU DW_AT_type5DW_AT_start_scopeQDDW_AT_specification7"DW_AT_siblingXPDW_AT_orderingLM DW_AT_name3=DW_AT_description!)DW_AT_declarationg]DW_AT_data_locationo\DW_AT_byte_size8DW_AT_stride_sizePsDW_AT_bit_size:,DW_AT_associatedUNDW_AT_allocatedWFDW_AT_accessibility%DW_AT_abstract_origin DECL0 DW_TAG_array_type7"DW_AT_siblingLM DW_AT_name3=DW_AT_descriptionWFDW_AT_accessibility DECL*DW_TAG_access_declaration~BDW_AT_decl_line~JDW_AT_decl_file "DW_AT_decl_column!)DW_AT_declarationQDDW_AT_specificationDW_TAG_subprogramLM DW_AT_name.: DW_AT_friendKU DW_AT_typeDW_TAG_friend<DW_TAG_ptr_to_member_typeDW_TAG_rvalue_reference_type% DW_TAG_reference_typeGDW_TAG_pointer_type43DW_FORM_blockVFDW_FORM_string>7| DW_FORM_flag+,yDW_FORM_sdata~lvDW_AT_vtable_elem_location00sDW_AT_visibility&%pDW_AT_virtuality/mDW_AT_variable_parameterL)jDW_AT_use_utf8KlgDW_AT_use_location/dDW_AT_upper_bound,aDW_AT_threads_scaled}E^DW_AT_string_length>/[DW_AT_segment]HX DW_AT_small#/UDW_AT_prototyped#RDW_AT_picture_stringXPODW_AT_ordering41LDW_AT_mutable1IDW_AT_lower_bound[@FDW_AT_location/CDW_AT_is_optionalZJ@DW_AT_explicitFT=DW_AT_endianity;:DW_AT_enum_classCF7DW_AT_encoding04DW_AT_discr_value51DW_AT_discr_listXC. DW_AT_discr.+DW_AT_digit_countVj(DW_AT_default_value]|%DW_AT_decimal_sign[t"DW_AT_decimal_scaleazDW_AT_data_member_locationg]DW_AT_data_location#3DW_AT_data_bit_offsetYH DW_AT_count1DW_AT_containing_type,DW_AT_const_value# DW_AT_const_expr< DW_AT_bit_strideo\DW_AT_byte_size<DW_AT_bit_stridePsDW_AT_bit_size5DW_AT_bit_offsetaODW_AT_binary_scale:,DW_AT_associated>>DW_AT_artificialUNDW_AT_allocated^lDW_AT_address_classWFDW_AT_accessibilityLM DW_AT_name4,bit64_dwarf_format4,bit64_dwarf_format2)bit32_dwarf_format2)bit32_dwarf_format- DW_XXX_lo_hi- DW_XXX_lo_hi,DW_CFA_val_expression.:DW_CFA_val_offset_sf)DW_CFA_val_offset DW_CFA_def_cfa_offset_sfDW_CFA_def_cfa_sf&(DW_CFA_offset_extended_sfDW_CFA_expressionDW_CFA_def_cfa_expressionDW_CFA_def_cfa_offsetyvDW_CFA_def_cfa_register^uDW_CFA_def_cfa> DW_CFA_restore_state=DW_CFA_remember_statezvDW_CFA_register DW_CFA_same_valueDW_CFA_undefinedGdDW_CFA_restore_extendedy[DW_CFA_offset_extendedTfDW_CFA_advance_loc4TfDW_CFA_advance_loc2TfDW_CFA_advance_loc1W}DW_CFA_set_locmk DW_CFA_nopa~DW_CFA_restore}DW_CFA_offsetTfzDW_CFA_advance_loc4,pbit64_dwarf_formatFunbit64_safe_DWARF_description2)kbit32_dwarf_format(eDW_MACINFO_vendor_extRsbDW_MACINFO_end_file:_DW_MACINFO_start_file\DW_MACINFO_undefYDW_MACINFO_define(SDW_MACINFO_vendor_ext-M DW_XXX_lo_hi-J DW_XXX_lo_hi4GDW_LNE_set_discriminatoriADDW_LNE_define_fileUjADW_LNE_set_addressE{>DW_LNE_end_sequenceCg5DW_LNS_set_isa+*2DW_LNS_set_epilogue_beginI[/DW_LNS_set_prologue_end`~,DW_LNS_fixed_advance_pcrd)DW_LNS_const_add_pch{&DW_LNS_set_basic_blockuJ#DW_LNS_negate_stmt*  DW_LNS_set_columnYeDW_LNS_set_fileZvDW_LNS_advance_line3DW_LNS_advance_pce{ DW_LNS_copy4,bit64_dwarf_formatFubit64_safe_DWARF_description2)bit32_dwarf_format4,bit64_dwarf_format2)bit32_dwarf_format))initial_length_field4,bit64_dwarf_formatFubit64_safe_DWARF_description2)bit32_dwarf_format4,bit64_dwarf_formatFubit64_safe_DWARF_description2)bit32_dwarf_format4,bit64_dwarf_format2)bit32_dwarf_format))initial_length_field  DW_DSC_range DW_DSC_label5DW_AT_discr_list(DW_ORD_col_major( DW_ORD_row_major!DW_AT_ordering_usage~LDW_INL_declared_inlinedd|DW_INL_declared_not_inlinedh}DW_INL_inlinedXgDW_INL_not_inlined$+ DW_AT_inline- DW_XXX_lo_hi- DW_XXX_lo_hi9) DW_CC_nocall5?DW_CC_program%% DW_CC_normal=DW_AT_calling_conventionjT{DW_ID_case_insensitiverPxDW_ID_down_case!uDW_ID_up_case=rDW_ID_case_sensitive !lDW_AT_identifier_case-'i DW_ADDR_none-c DW_XXX_lo_hi-` DW_XXX_lo_hiVU]DW_LANG_Python=*Z DW_LANG_DHZW DW_LANG_UPC}nTDW_LANG_ObjC_plus_plus8+Q DW_LANG_ObjCMFN DW_LANG_PLI=wHDW_LANG_Ada95^E DW_LANG_C99!*B DW_LANG_JavaXQ?DW_LANG_Modula2gw<DW_LANG_Pascal835i9DW_LANG_Fortran905g6DW_LANG_Fortran77P3DW_LANG_Cobol85P0DW_LANG_Cobol74ho-DW_LANG_C_plus_plus=v*DW_LANG_Ada83=*' DW_LANG_C^$ DW_LANG_C89 0!DW_TAG_subrange_typeBNDW_AT_lower_bound_subrange_KDW_AT_languagevLDW_VIRTUALITY_pure_virtual&= DW_VIRTUALITY_virtualWK DW_VIRTUALITY_none&%DW_AT_virtualityDW_VIS_qualifiednpDW_VIS_exported DW_VIS_local00DW_AT_visibility6)DW_ACCESS_private@YDW_ACCESS_protected5#DW_ACCESS_publicWFDW_AT_accessibilityDW_END_littlecs DW_END_bigbuDW_END_defaultFTDW_AT_endianitye\DW_DS_trailing_separateN|DW_DS_leading_separate%DW_DS_trailing_overpunch_nDW_DS_leading_overpunchLADW_DS_unsigned]|DW_AT_decimal_sign- DW_XXX_lo_hi- DW_XXX_lo_hid` DW_ATE_utf/DW_ATE_decimal_float$DW_ATE_unsigned_fixedmQDW_ATE_signed_fixedDW_ATE_edited+DW_ATE_numeric_string7DW_ATE_packed_decimalTwDW_ATE_imaginary_float2DW_ATE_unsigned_charywDW_ATE_unsignedqGDW_ATE_signed_charDW_ATE_signed DW_ATE_float8DW_ATE_complex_floatruDW_ATE_booleanu`|DW_ATE_addressCFvDW_AT_encoding-m DW_XXX_lo_hi-j DW_XXX_lo_hi(gDW_OP_stack_value.dDW_OP_implicit_valueH{aDW_OP_bit_piece=*^DW_OP_call_frame_cfaVQ[DW_OP_form_tls_address~^XDW_OP_call_refDJU DW_OP_call4DJR DW_OP_call2ODW_OP_push_object_address%(L DW_OP_nop>IDW_OP_xderef_size2FDW_OP_deref_size^MC DW_OP_pieceLR@ DW_OP_bregx_@= DW_OP_fbreg^Z: DW_OP_regxLR7 DW_OP_bregNLR4 DW_OP_bregNLR1 DW_OP_bregNLR. DW_OP_bregN^L+ DW_OP_regN^L( DW_OP_regN^% DW_OP_reg0^L" DW_OP_regNS@ DW_OP_litNS@ DW_OP_litNS DW_OP_lit0S@ DW_OP_litN%" DW_OP_ne'3 DW_OP_lt'"  DW_OP_le,3  DW_OP_gt," DW_OP_ge.6 DW_OP_eq)5 DW_OP_braQ\ DW_OP_skip3( DW_OP_xorJN DW_OP_shra8/ DW_OP_shr8/ DW_OP_shl1DW_OP_plus_uconstNX DW_OP_plus$5 DW_OP_or%( DW_OP_not%" DW_OP_neg&2 DW_OP_mul&( DW_OP_modH[ DW_OP_minus/. DW_OP_div*) DW_OP_and*% DW_OP_abs37 DW_OP_xderef9( DW_OP_rotY@ DW_OP_swapXE DW_OP_pickAC DW_OP_over@E DW_OP_drop/2 DW_OP_dup2( DW_OP_consts2. DW_OP_constu2cDW_OP_const8s2cDW_OP_const8u2oDW_OP_const4s2oDW_OP_const4u2iDW_OP_const2s2iDW_OP_const2u2jDW_OP_const1s2jDW_OP_const1u]G DW_OP_derefNQ DW_OP_addr9WqDW_FORM_ref_sig8jhnflag_present_forms8kexprloc_forms!<hsec_offset_forms%*bDW_FORM_indirect9_DW_FORM_ref_udata-a\ DW_FORM_ref8-mY DW_FORM_ref4-kV DW_FORM_ref2-hS DW_FORM_ref1(PDW_FORM_ref_addr-,MDW_FORM_udata88J DW_FORM_strp+,GDW_FORM_sdata>7D DW_FORM_flag)<ADW_FORM_data1_>DW_FORM_block143;DW_FORM_blockVF8DW_FORM_string)<5DW_FORM_data8)<2DW_FORM_data4)</DW_FORM_data2_,DW_FORM_block4_)DW_FORM_block2<*& DW_FORM_addr-  DW_XXX_lo_hi- DW_XXX_lo_hiJwDW_AT_linkage_name;DW_AT_enum_class#DW_AT_const_expr#3DW_AT_data_bit_offset #DW_AT_main_subprogramOH DW_AT_signatureE\DW_AT_recursiveMY DW_AT_pure^GDW_AT_elementalFTDW_AT_endianity%DW_AT_object_pointerZJDW_AT_explicit,DW_AT_threads_scaled41DW_AT_mutable#DW_AT_picture_string.DW_AT_digit_count]|DW_AT_decimal_sign]H DW_AT_small[tDW_AT_decimal_scaleaODW_AT_binary_scale3=DW_AT_descriptionvFDW_AT_call_linevNDW_AT_call_file&DW_AT_call_column(5DW_AT_trampoline6< DW_AT_rangesYHDW_AT_extensionL)DW_AT_use_utf8WiDW_AT_entry_pc*1 DW_AT_strideg]DW_AT_data_location:,DW_AT_associatedUNDW_AT_allocated~lDW_AT_vtable_elem_location&%DW_AT_virtuality/DW_AT_variable_parameterKlDW_AT_use_locationKU DW_AT_type(DW_AT_static_linkQDDW_AT_specification>/DW_AT_segmentPDDW_AT_priorityx\DW_AT_namelist_item!DW_AT_macro_info !DW_AT_identifier_case.: DW_AT_friend< DW_AT_frame_baseMVDW_AT_externalCFDW_AT_encoding5DW_AT_discr_list!)DW_AT_declaration~BDW_AT_decl_line~J~DW_AT_decl_file "{DW_AT_decl_columnazxDW_AT_data_member_locationYHu DW_AT_count=rDW_AT_calling_convention:oDW_AT_base_types>>lDW_AT_artificial^liDW_AT_address_classWFfDW_AT_accessibility%cDW_AT_abstract_origin/`DW_AT_upper_bound<]DW_AT_bit_stride5ZDW_AT_start_scope2WDW_AT_return_addr#/TDW_AT_prototyped@NQDW_AT_producer1NDW_AT_lower_bound/KDW_AT_is_optional$+H DW_AT_inlineVjEDW_AT_default_value1BDW_AT_containing_type,?DW_AT_const_valuew@<DW_AT_comp_dirwH9DW_AT_common_reference}E6DW_AT_string_length$?3 DW_AT_import000DW_AT_visibility0-DW_AT_discr_valueXC* DW_AT_discr_K'DW_AT_language8$DW_AT_high_pc$! DW_AT_low_pcgVDW_AT_stmt_listPsDW_AT_bit_size5DW_AT_bit_offseto\DW_AT_byte_sizeXPDW_AT_orderingLM DW_AT_name[@ DW_AT_location7" DW_AT_siblingZFDW_CHILDREN_yesMLDW_CHILDREN_no- DW_XXX_lo_hi- DW_XXX_lo_hi7DW_TAG_template_aliasDW_TAG_rvalue_reference_type?'DW_TAG_type_unit_defPDW_TAG_shared_typeDW_TAG_condition /DW_TAG_imported_unit@DW_TAG_partial_unit]gDW_TAG_unspecified_typerJDW_TAG_imported_moduleDW_TAG_namespace DW_TAG_interface 7DW_TAG_restrict_typeXmDW_TAG_dwarf_procedure%DW_TAG_volatile_typeomDW_TAG_variable]wDW_TAG_variant_part'DW_TAG_try_blockhVDW_TAG_thrown_typepq DW_TAG_template_value_parameterOODW_TAG_template_type_parameterDW_TAG_subprogramoQDW_TAG_packed_type>DW_TAG_namelist_itemhxDW_TAG_namelistDW_TAG_friend -DW_TAG_file_typeDW_TAG_enumeratorxsDW_TAG_constant?DW_TAG_const_typeW}DW_TAG_catch_block6DW_TAG_base_type*DW_TAG_access_declaration8DW_TAG_with_stmt 0DW_TAG_subrange_typeFgDW_TAG_set_type<DW_TAG_ptr_to_member_typeDW_TAG_module#DW_TAG_inlined_subroutineehDW_TAG_inheritanceDDW_TAG_common_inclusiondU|DW_TAG_common_blockcuyDW_TAG_variant$ vDW_TAG_unspecified_parameters"sDW_TAG_union_type|bpDW_TAG_typedefCmDW_TAG_subroutine_type$jDW_TAG_structure_type{HgDW_TAG_string_typeGzdDW_TAG_compile_unit% aDW_TAG_reference_typeG^DW_TAG_pointer_type[DW_TAG_member8XDW_TAG_lexical_blockU DW_TAG_labelyURDW_TAG_imported_declarationpNODW_TAG_formal_parameterIsLDW_TAG_enumeration_typeGaIDW_TAG_entry_point<FDW_TAG_class_type0 CDW_TAG_array_typeL):DW_AT_use_utf84,3bit64_dwarf_formatFu1bit64_safe_DWARF_description2).bit32_dwarf_format4,!bit64_dwarf_format2)bit32_dwarf_format4,bit64_dwarf_format2)bit32_dwarf_format4,bit64_dwarf_formatFubit64_safe_DWARF_description2)bit32_dwarf_format4,bit64_dwarf_format2)bit32_dwarf_format2)bit32_dwarf_format4,bit64_dwarf_formatFubit64_safe_DWARF_description2)bit32_dwarf_format{@section_offset4,bit64_dwarf_format2)bit32_dwarf_format2)bit32_dwarf_format))initial_length_field~^DW_OP_call_ref88 DW_FORM_strp!<sec_offset_forms(DW_FORM_ref_addr))yinitial_length_field|RoDW_TAG_hi_userzVlDW_TAG_lo_user/i DW_CFA_lo_hikLf DW_CC_lo_hi $c DW_LNE_lo_hi-`DW_LANG_lo_hix@] DW_OP_lo_hi)Z DW_ATE_lo_hi ,W DW_END_lo_hi|NT DW_AT_lo_hi>Q DW_TAG_lo_hiW}IDW_CFA_set_locW}FDW_CFA_set_locTfCDW_CFA_advance_locW}@DW_CFA_set_locTf=DW_CFA_advance_loca~:DW_CFA_restore$1DWARF_expression43.DW_FORM_blocky[+DW_CFA_offset_extended(DW_CFA_offset$"DWARF_expression43DW_FORM_blockDW_CFA_def_cfa_offset^uDW_CFA_def_cfaTfDW_CFA_advance_locTfDW_CFA_advance_locTfDW_CFA_advance_loc, DW_CFA_val_expression DW_CFA_expressionDW_CFA_def_cfa_expression=*DW_OP_call_frame_cfaDW_OP_push_object_address~^DW_OP_call_refDJ DW_OP_call4DJ DW_OP_call2mk DW_CFA_nop))initial_length_fieldmk DW_CFA_nop))initial_length_field$DWARF_expression$DWARF_expression:DW_MACINFO_start_fileDW_MACINFO_undefDW_MACINFO_defineDW_MACINFO_undefDW_MACINFO_defineDW_MACINFO_undefDW_MACINFO_defineDW_MACINFO_undefDW_MACINFO_defineRsDW_MACINFO_end_file:DW_MACINFO_start_file(DW_MACINFO_vendor_extRsDW_MACINFO_end_file:DW_MACINFO_start_fileDW_MACINFO_undefDW_MACINFO_define3DW_LNS_advance_pc3DW_LNS_advance_pc3}DW_LNS_advance_pciAsDW_LNE_define_filerOpdeclaration_coordinates4,jbit64_dwarf_format2)ebit32_dwarf_format2)cbit32_dwarf_format2)abit32_dwarf_format))Xinitial_length_field`~UDW_LNS_fixed_advance_pc-Iinitial_locationLMF DW_AT_nameLMC DW_AT_name))6initial_length_field,*DW_AT_const_valuepq' DW_TAG_template_value_parameterOO$DW_TAG_template_type_parameterKU! DW_AT_typeLM DW_AT_name:,DW_AT_associatedUNDW_AT_allocated DW_OP_push_object_address[e location_expressiong]DW_AT_data_locationPsDW_AT_bit_sizeo\DW_AT_byte_sizeKU DW_AT_typeLM DW_AT_nameKlDW_AT_use_locationKlDW_AT_use_locationKlDW_AT_use_locationKlDW_AT_use_locationKlDW_AT_use_location reference1DW_AT_containing_typeKU DW_AT_typeLM DW_AT_nameYH DW_AT_count/DW_AT_upper_bound/DW_AT_upper_bound1DW_AT_lower_bound,DW_AT_threads_scaledPsDW_AT_bit_sizeo\DW_AT_byte_sizeKU DW_AT_typeLM DW_AT_namePsDW_AT_bit_sizeo\DW_AT_byte_sizeKU DW_AT_typeLM DW_AT_namePsDW_AT_bit_sizeo\DW_AT_byte_sizePsDW_AT_bit_sizeo\DW_AT_byte_size}EDW_AT_string_lengthLM DW_AT_name$ DW_TAG_unspecified_parametersKU DW_AT_typepNDW_TAG_formal_parameter flag#/DW_AT_prototypedKU} DW_AT_typeLMz DW_AT_name,tDW_AT_const_valueLMq DW_AT_nameKUn DW_AT_type k constanto\hDW_AT_byte_sizeLMe DW_AT_nameKUb DW_AT_type 0_DW_TAG_subrange_typexs\DW_TAG_constantpNYDW_TAG_formal_parameterVDW_TAG_memberomSDW_TAG_variableLMP DW_AT_name5MDW_AT_discr_list5JDW_AT_discr_list0GDW_AT_discr_value > constant0;DW_AT_discr_value58DW_AT_discr_list05DW_AT_discr_valueKU2 DW_AT_type/ referenceXC, DW_AT_discrrO)declaration_coordinates,&DW_AT_const_valueKU# DW_AT_typeLM  DW_AT_nameKU DW_AT_typeLM DW_AT_nameOODW_TAG_template_type_parameter"DW_TAG_union_type$DW_TAG_structure_type<DW_TAG_class_typeQD DW_AT_specification referenceQDDW_AT_specification>>DW_AT_artificial% DW_AT_object_pointer~l DW_AT_vtable_elem_locationZJ DW_AT_explicit&% DW_AT_virtualityWF DW_AT_accessibility DW_TAG_subprogramPs DW_AT_bit_sizeo\ DW_AT_byte_size DW_OP_push_object_address[v BM2_4_Location_Descriptionsaz DW_AT_data_member_location41 DW_AT_mutableWF DW_AT_accessibilityKU  DW_AT_typeLM  DW_AT_name  reference.:  DW_AT_friendWF DW_AT_accessibilityLM  DW_AT_name&% DW_AT_virtualityWF DW_AT_accessibility[v BM2_4_Location_Descriptionsaz DW_AT_data_member_location  referenceKU  DW_AT_typeLM  DW_AT_name!) DW_AT_declarationQD DW_AT_specificationQD DW_AT_specificationOH DW_AT_signature!) DW_AT_declarationLM|  DW_AT_nameg]s DW_AT_data_location:,p DW_AT_associatedUNm DW_AT_allocatedIsj DW_TAG_enumeration_type 0g DW_TAG_subrange_type8\ DW_AT_stride_sizeKUY  DW_AT_type_KS DW_AT_language M  constantXPJ DW_AT_orderingLMG  DW_AT_nameKUD  DW_AT_typeLMA  DW_AT_name6> DW_TAG_base_type%; DW_TAG_volatile_typeG8 DW_TAG_pointer_type?5 DW_TAG_const_type 72 DW_TAG_restrict_typeom/ DW_TAG_variable6, DW_TAG_base_type?) DW_TAG_const_typeG& DW_TAG_pointer_type%# DW_TAG_volatile_typeom DW_TAG_variableYH  DW_AT_countP DW_TAG_shared_type^l DW_AT_address_class DW_TAG_rvalue_reference_type%  DW_TAG_reference_typeG DW_TAG_pointer_type  referenceKU  DW_AT_typeLM  DW_AT_nameLM  DW_AT_namexs DW_TAG_constantxs DW_TAG_constant]H  DW_AT_small# DW_AT_picture_string[t DW_AT_decimal_scale. DW_AT_digit_count]| DW_AT_decimal_sign DW_ATE_signedPs DW_AT_bit_sizeo\ DW_AT_byte_sizeFT DW_AT_endianityCF DW_AT_encoding   constantCF DW_AT_encodingLM  DW_AT_name5 DW_AT_start_scope  referencex\ DW_AT_namelist_itemLM  DW_AT_name[@ DW_AT_locationLM  DW_AT_nameJw DW_AT_linkage_nameKU  DW_AT_typeFTx DW_AT_endianity5m DW_AT_start_scope j block g  constantozd string,_ DW_AT_const_value\  referenceVjW DW_AT_default_value P flag/M DW_AT_is_optional F flag/C DW_AT_variable_parameterQD@ DW_AT_specificationMV= DW_AT_externalQD: DW_AT_specification7 DW_TAG_member4  referenceQD1 DW_AT_specificationKU.  DW_AT_type>/+ DW_AT_segment!)" DW_AT_declaration[@ DW_AT_location!) DW_AT_declaration  flagMV DW_AT_externalLM  DW_AT_namexs DW_TAG_constant$  DW_TAG_unspecified_parameterspN DW_TAG_formal_parameter6<  DW_AT_ranges8 DW_AT_high_pc$  DW_AT_low_pc[@ DW_AT_locationKU  DW_AT_type6<  DW_AT_ranges8 DW_AT_high_pc$  DW_AT_low_pcLM  DW_AT_name$  DW_AT_low_pcLM  DW_AT_name6<  DW_AT_ranges8 DW_AT_high_pc$  DW_AT_low_pc>> DW_AT_artificial(5 DW_AT_trampoline# DW_TAG_inlined_subroutine DW_TAG_subprogram# DW_TAG_inlined_subroutine DW_AT_abstract_origin_inline% DW_AT_abstract_origin% DW_AT_abstract_originLM  DW_AT_name% DW_AT_abstract_origin DW_TAG_subprogram# DW_TAG_inlined_subroutineom DW_TAG_variableom DW_TAG_variable% DW_AT_abstract_originrO declaration_coordinates  reference% DW_AT_abstract_origin# DW_TAG_inlined_subroutine# DW_TAG_inlined_subroutine, DW_AT_const_value, DW_AT_const_value& DW_AT_call_columnvF| DW_AT_call_linevNy DW_AT_call_fileWis DW_AT_entry_pc6<m  DW_AT_ranges8j DW_AT_high_pc$g  DW_AT_low_pc>/a DW_AT_segment5^ DW_AT_start_scope2[ DW_AT_return_addr[@X DW_AT_locationL}U DW_AT_entry_pc_inl_subr6<R  DW_AT_ranges8O DW_AT_high_pc$L  DW_AT_low_pc$+I  DW_AT_inline$+F  DW_AT_inline$+=  DW_AT_inline :  constant$+7  DW_AT_inline4 DW_TAG_subprogramrO1 declaration_coordinatesKU.  DW_AT_typeLM+  DW_AT_name( DW_TAG_subprogram%  referenceKU"  DW_AT_type( DW_AT_static_link<  DW_AT_frame_base<  DW_AT_frame_base( DW_AT_static_link<  DW_AT_frame_base( DW_AT_static_link( DW_AT_static_link<  DW_AT_frame_base<  DW_AT_frame_base<  DW_AT_frame_base2 DW_AT_return_addr  referencewH DW_AT_common_reference^l DW_AT_address_class^l DW_AT_address_class>/ DW_AT_segment$  DW_AT_low_pcWi DW_AT_entry_pc6<  DW_AT_ranges8 DW_AT_high_pc$  DW_AT_low_pcKU  DW_AT_typeE\ DW_AT_recursiveMY  DW_AT_pure^G DW_AT_elemental  flag#/ DW_AT_prototyped5? DW_CC_program9)  DW_CC_nocall5? DW_CC_program%%  DW_CC_normal   constant= DW_AT_calling_convention  flagMV DW_AT_external DW_TAG_subprogramLM  DW_AT_name# DW_TAG_inlined_subroutineLM  DW_AT_name  reference$?  DW_AT_importQD DW_AT_specificationLM  DW_AT_nameYH DW_AT_extension}  referencePDz DW_AT_priorityWit DW_AT_entry_pc6<n  DW_AT_ranges8k DW_AT_high_pc$h  DW_AT_low_pcLMe  DW_AT_name!)b DW_AT_declaration$?R  DW_AT_import$O  DW_AT_low_pcL)I DW_AT_use_utf8C  reference:@ DW_AT_base_typesLM=  DW_AT_namejT7 DW_ID_case_insensitiverP4 DW_ID_down_case!1 DW_ID_up_case=. DW_ID_case_sensitive (  constant !% DW_AT_identifier_case@N" DW_AT_producerw@ DW_AT_comp_dir! DW_AT_macro_infogV DW_AT_stmt_list   constant_K DW_AT_languageLM  DW_AT_name6<  DW_AT_ranges8 DW_AT_high_pc$  DW_AT_low_pc6l  Appendix Eom DW_TAG_variable DW_TAG_subprogramGa DW_TAG_entry_pointxs DW_TAG_constantdU DW_TAG_common_block< DW_AT_bit_stride0 DW_AT_byte_stride3= DW_AT_descriptionLM  DW_AT_name/ DW_AT_upper_bound< DW_AT_bit_stride0 DW_AT_byte_stride1 DW_AT_lower_boundYH  DW_AT_counto\ DW_AT_byte_sizePs DW_AT_bit_size5 DW_AT_bit_offset:, DW_AT_associatedUN DW_AT_allocated$ DWARF_expressionye exprloc  reference   constant5 DW_AT_start_scope6<  DW_AT_rangesWi DW_AT_entry_pc$  DW_AT_low_pc5 DW_AT_start_scope6<  DW_AT_ranges8 DW_AT_high_pc$}  DW_AT_low_pc$z  DW_AT_low_pc~^t DW_OP_call_refDJq  DW_OP_call4DJn  DW_OP_call2[@k DW_AT_location[@e DW_AT_locationLM_  DW_AT_nameLM\  DW_AT_name "Y DW_AT_decl_column~BV DW_AT_decl_line~JP DW_AT_decl_file M  constant "J DW_AT_decl_column~BG DW_AT_decl_line~JD DW_AT_decl_fileQDA DW_AT_specificationQD> DW_AT_specification ; flag!)8 DW_AT_declaration-'2  DW_ADDR_none /  constant^l, DW_AT_address_class>/) DW_AT_segment>/& DW_AT_segment>/# DW_AT_segment>/ DW_AT_segmentWi DW_AT_entry_pc6<  DW_AT_ranges8 DW_AT_high_pc$  DW_AT_low_pc>/ DW_AT_segment>/ DW_AT_segment  flag>> DW_AT_artificial&%DW_AT_virtuality00DW_AT_visibilityWFDW_AT_accessibilityKU DW_AT_typeKU DW_AT_type^M DW_OP_piece(DW_OP_stack_valueNX DW_OP_plusLR DW_OP_breg1LR DW_OP_breg1^M DW_OP_piece(DW_OP_stack_valueS DW_OP_lit1(DW_OP_stack_valueNX DW_OP_plusLR DW_OP_breg1LR DW_OP_breg1^M DW_OP_piece_@ DW_OP_fbreg^M DW_OP_piece^M DW_OP_piece^ DW_OP_reg0^M DW_OP_piece^L DW_OP_regN^M DW_OP_piece^L DW_OP_regN1DW_OP_plus_uconst]G DW_OP_derefLR DW_OP_bregx< DW_AT_frame_base_@ DW_OP_fbregLR DW_OP_bregNNQ DW_OP_addr^Z DW_OP_regx^L DW_OP_regN^M DW_OP_piecefplloclistyeiexprloc$fDWARF_expression9(c DW_OP_rotY@` DW_OP_swapAC] DW_OP_overXEZ DW_OP_pick@EW DW_OP_drop/2T DW_OP_dup[@NDW_AT_location[@KDW_AT_location(EDW_FORM_ref_addr-mB DW_FORM_ref4-k? DW_FORM_ref2NX9 DW_OP_plusS@6 DW_OP_litN< 3DW_AT_frame_baseaz*DW_AT_data_member_location37' DW_OP_xderef]G$ DW_OP_derefLR! DW_OP_bregx< DW_AT_frame_base_@ DW_OP_fbreg[elocation_expression7"DW_AT_sibling2 string_formsy[reference_formspDrangelist_forms' macptr_forms-loclist_forms%lineptr_formsZl flag_forms8exprloc_formsJnconstant_formsrR block_forms8address_forms5!DW_AT_vtable_elem_location_usage{ADW_AT_visibility_usage 4DW_AT_virtuality_subr~FDW_AT_virtuality_inheritedmTDW_AT_virtuality_usageR^DW_AT_variable_parameter_usagebDW_AT_use_utf8_comp_unitZnDW_AT_use_location_ptr_mem\QDW_AT_upper_bound_subrangeDW_AT_type_of_returnulDW_AT_type_of_decl(trampoline_attribute,DW_AT_threads_scaledDW_AT_string_length_typeDW_AT_stmt_list_usage}cDW_AT_static_link_usageT@DW_AT_start_scope_type6/DW_AT_start_scope_object[~DW_AT_specification_def%DW_AT_small_usageU~DW_AT_sibling_relationOfDW_AT_segment_addrcjDW_AT_return_addr_subr4DW_AT_recursive_usage /code_address_or_range(DW_AT_pure_usage`GDW_AT_prototyped_entry ?DW_AT_producer_usage!DW_AT_priority_modulehrDW_AT_picture_string_usage!DW_AT_ordering_usageYTDW_AT_object_pointer_usageDW_AT_namelist_item_usagerI|DW_AT_name_pathvJyDW_AT_name_declEzvDW_AT_mutable_usage6s!DW_AT_main_subprogram_unit_usage;p!DW_AT_main_subprogram_subp_usagejumDW_AT_macro_info_usageBNjDW_AT_lower_bound_subrange /gcode_address_or_range(0ddata_object_locationaDW_AT_linkage_name_usage:^DW_AT_language_usage`p[DW_AT_is_optional_param:XDW_AT_inline_subr (UDW_AT_inline_abstract7=RDW_AT_import_using_directivefDODW_AT_import_usinglKLDW_AT_import_namespace#IDW_AT_import_unitoNFDW_AT_import_usage{jCDW_AT_identifier_case_usage /@code_address_or_rangeeK=DW_AT_friend_usage:DW_AT_frame_base_subrpS7DW_AT_external_objgG4DW_AT_external_subrYH1DW_AT_extension;.DW_AT_explicit_usageTJ+DW_AT_enum_class_usageL}(DW_AT_entry_pc_inl_subr}x%DW_AT_entry_pc_subrV`"DW_AT_entry_pc_mod_init+DW_AT_endianity_usage3=BM7_8_Base_Type_Encodings& DW_AT_elemental_usageACDW_AT_discr_value_usage~pDW_AT_discr_list_usageOzDW_AT_discr_variantN\ DW_AT_digit_count_usageIv DW_AT_description_usage15DW_AT_default_value_param+#DW_AT_declaration_non_def DW_AT_decl_line_usageDW_AT_decl_file_usagewiDW_AT_decl_column_usage DW_AT_decimal_sign_usage*?DW_AT_decimal_scale_usageW~#DW_AT_data_member_location_derived<"DW_AT_data_member_location_normal DW_AT_data_location_type2DW_AT_data_bit_offset_memberjLDW_AT_bit_offset_base_type:DW_AT_count_subrangetzDW_AT_containing_type_usage{kDW_AT_const_expr_inline{fDW_AT_const_expr_object> DW_AT_const_value_templ_paramYBDW_AT_const_value_enum/2DW_AT_const_value_objectF\DW_AT_comp_dir_unit<9DW_AT_common_reference_usageDW_AT_calling_convention_subrw|DW_AT_call_line_defwtDW_AT_call_file_defDW_AT_call_column_defOQ#DW_AT_byte_stride_array_enum_usageH^'DW_AT_byte_stride_array_subrange_usage7DW_AT_byte_stride_array_usage=DW_AT_byte_size_base_type86"DW_AT_bit_stride_array_enum_usage71&DW_AT_bit_stride_array_subrange_usage;DW_AT_bit_stride_array_usageDW_AT_bit_size_member!DW_AT_bit_size_base_typem{DW_AT_bit_offset_memberjLDW_AT_bit_offset_base_type*>DW_AT_binary_scale_usageVKDW_AT_base_types_usage(DW_AT_associated_type9DW_AT_artificial_decl5 DW_AT_allocated_type<4DW_AT_address_class_subr]GDW_AT_address_class_ptr(4%DW_AT_accessibility_inherited_memberlDW_AT_accessibility_base_class)DW_AT_accessibility_decl }DW_AT_abstract_origin_outlinezDW_AT_abstract_origin_inline8tDW_TAG_with_stmt%qDW_TAG_volatile_type]wnDW_TAG_variant_partcukDW_TAG_variantomhDW_TAG_variable]geDW_TAG_unspecified_type$ bDW_TAG_unspecified_parameters"_DW_TAG_union_type?'\DW_TAG_type_unit_def|bYDW_TAG_typedef'VDW_TAG_try_blockhVSDW_TAG_thrown_typepqP DW_TAG_template_value_parameterOOMDW_TAG_template_type_parameterOOJDW_TAG_template_type_parameter7GDW_TAG_template_aliasCDDW_TAG_subroutine_type 0ADW_TAG_subrange_type>DW_TAG_subprogram$;DW_TAG_structure_type{H8DW_TAG_string_typeP5DW_TAG_shared_typeFg2DW_TAG_set_type/DW_TAG_rvalue_reference_type 7,DW_TAG_restrict_type% )DW_TAG_reference_type<&DW_TAG_ptr_to_member_typeG#DW_TAG_pointer_type@ DW_TAG_partial_unitoQDW_TAG_packed_typeDW_TAG_namespace>DW_TAG_namelist_itemhxDW_TAG_namelistDW_TAG_moduleDW_TAG_member8 DW_TAG_lexical_block DW_TAG_label DW_TAG_interface#DW_TAG_inlined_subroutineehDW_TAG_inheritance /DW_TAG_imported_unitrJDW_TAG_imported_moduleyUDW_TAG_imported_declarationDW_TAG_friendpNDW_TAG_formal_parameter -DW_TAG_file_typeDW_TAG_enumeratorIsDW_TAG_enumeration_typeGaDW_TAG_entry_pointXmDW_TAG_dwarf_procedurexsDW_TAG_constant?DW_TAG_const_typeDW_TAG_conditionGzDW_TAG_compile_unitDDW_TAG_common_inclusiondUDW_TAG_common_block<DW_TAG_class_typeW}DW_TAG_catch_block6DW_TAG_base_type0 DW_TAG_array_type*DW_TAG_access_declaration3=DW_AT_descriptionqBM2_12_Declaration_Coordinates>>DW_AT_artificialJOhttp://www.dwarfstd.org/7p_Toc2639553717j_Toc2639553707d_Toc2639553697^_Toc2639553687X_Toc2639553677R_Toc2639553667L_Toc2639553657F_Toc2639553647@_Toc2639553637:_Toc26395536274_Toc2639553617._Toc2639553607(_Toc2639553597"_Toc2639553587_Toc2639553577_Toc2639553567_Toc2639553557 _Toc2639553547_Toc2639553537_Toc2639553527_Toc2639553517_Toc2639553507_Toc2639553497_Toc2639553487_Toc2639553477_Toc2639553467_Toc2639553457_Toc2639553447_Toc2639553437_Toc2639553427_Toc2639553417_Toc2639553407_Toc2639553397_Toc2639553387_Toc2639553377_Toc2639553367_Toc2639553357_Toc2639553347_Toc2639553337_Toc2639553327_Toc2639553317z_Toc2639553307t_Toc2639553297n_Toc2639553287h_Toc2639553277b_Toc2639553267\_Toc2639553257V_Toc2639553247P_Toc2639553237J_Toc2639553227D_Toc2639553217>_Toc26395532078_Toc26395531972_Toc2639553187,_Toc2639553177&_Toc2639553167 _Toc2639553157_Toc2639553147_Toc2639553137_Toc2639553127_Toc2639553117_Toc2639553107_Toc2639553097_Toc2639553087_Toc2639553077_Toc2639553067_Toc2639553057_Toc2639553047_Toc2639553037_Toc2639553027_Toc2639553017_Toc2639553006_Toc2639552996_Toc2639552986_Toc2639552976_Toc2639552966_Toc2639552956_Toc2639552946_Toc2639552936_Toc2639552926_Toc2639552916_Toc2639552906_Toc2639552896~_Toc2639552886x_Toc2639552876r_Toc2639552866l_Toc2639552856f_Toc2639552846`_Toc2639552836Z_Toc2639552826T_Toc2639552816N_Toc2639552806H_Toc2639552796B_Toc2639552786<_Toc26395527766_Toc26395527660_Toc2639552756*_Toc2639552746$_Toc2639552736_Toc2639552726_Toc2639552716_Toc2639552706 _Toc2639552696_Toc2639552686_Toc2639552676_Toc2639552666_Toc2639552656_Toc2639552646_Toc2639552636_Toc2639552626_Toc2639552616_Toc2639552606_Toc2639552596_Toc2639552586_Toc2639552576_Toc2639552566_Toc2639552556_Toc2639552546_Toc2639552536_Toc2639552526_Toc2639552516_Toc2639552506_Toc2639552496_Toc2639552486_Toc2639552476_Toc2639552466|_Toc2639552456v_Toc2639552446p_Toc2639552436j_Toc2639552426d_Toc2639552416^_Toc2639552406X_Toc2639552396R_Toc2639552386L_Toc2639552376F_Toc2639552366@_Toc2639552356:_Toc26395523464_Toc2639552336._Toc2639552326(_Toc2639552316"_Toc2639552306_Toc2639552296_Toc2639552286_Toc2639552276 _Toc2639552266_Toc2639552256_Toc2639552246_Toc2639552236_Toc2639552226_Toc2639552216_Toc2639552206_Toc2639552196_Toc2639552186_Toc2639552176_Toc2639552166_Toc2639552156_Toc2639552146_Toc2639552136_Toc2639552126_Toc2639552116_Toc2639552106_Toc2639552096_Toc2639552086_Toc2639552076_Toc2639552066_Toc2639552056_Toc2639552046_Toc2639552036z_Toc2639552026t_Toc2639552016n_Toc2639552005h_Toc2639551995b_Toc2639551985\_Toc2639551975V_Toc2639551965P_Toc2639551955J_Toc2639551945D_Toc2639551935>_Toc26395519258_Toc26395519152_Toc2639551905,_Toc2639551895&_Toc2639551885 _Toc2639551875_Toc2639551865_Toc2639551855_Toc2639551845_Toc263955183JOhttp://www.dwarfstd.org/JOhttp://www.dwarfstd.org/  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOxRoot Entry Fp_wzData  Z1Table WordDocumentq3SummaryInformation(DocumentSummaryInformation8XCompObjjObjectPoolp_wp_w  FMicrosoft Word Document MSWordDocWord.Document.89q